Question: I try to find bare soil areas. Those which are bare over the whole year and those which are fresh harvest and remain bare over a certain time. I try to do this with sentinel-2 data. But the Problem is that the cloud cover does not allow a sufficient detection. What kind of Satellite Products and/or Indices can help me out with this problem. Can anyone give me a hint in which direction I have to look?

Answer: 
You may want to try spectral unmixing. Here's an example to get you started [link to script](https://code.earthengine.google.com/a4836c34dc1cb33df523405b2adf3422):

```
// Function to mask clouds using the Sentinel-2 QA band.
function maskS2clouds(image) {
  var qa = image.select('QA60')

  // Bits 10 and 11 are clouds and cirrus, respectively.
  var cloudBitMask = 1 << 10;
  var cirrusBitMask = 1 << 11;

  // Both flags should be set to zero, indicating clear conditions.
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and(
             qa.bitwiseAnd(cirrusBitMask).eq(0))

  // Return the masked and scaled data, without the QA bands.
  return image.updateMask(mask).divide(10000)
      .select("B.*")
      .copyProperties(image, ["system:time_start"])
}

// Map the function over one year of data and take the median.
// Load Sentinel-2 TOA reflectance data.
var collection = ee.ImageCollection('COPERNICUS/S2')
    .filterDate('2016-01-01', '2016-12-31')
    // Pre-filter to get less cloudy granules.
    .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
    .map(maskS2clouds)

// First, let's find a cloud free scene in our area of interest.
var image = collection.median()

// Use the reflective bands.
var bands = ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9'];

// Now, delineate polygons of 'pure' regions.  Click +New Layer for 
// each polygon.  Name the imports 'bare', 'vegetation' and 'water'.
// Get the mean spectrum in each of the endmember polygons.
var bareMean = image.reduceRegion(ee.Reducer.mean(), bare, 30).values(bands);
var waterMean = image.reduceRegion(ee.Reducer.mean(), water, 30).values(bands);
var vegMean = image.reduceRegion(ee.Reducer.mean(), vegetation, 30).values(bands);

// Constrained:
var constrained = image.select(bands).unmix([bareMean, vegMean, waterMean], true, true);

```
Sentinel-2 is best for this, stick at it. You need to use multiple scenes and periods to get around the cloud cover. Landsat, Spot, Aster still all have clouds. Basically, clouds exist so you must overcome them.