In versions prior to Drupal 8, contributed and custom modules and themes were supposed to be placed into the sites/all/* directories only. Most novice users were not aware of the separation, since the top-level directories were directly visible.
Starting from Drupal 8, all of the core code has been moved into the top-level /core directory. This opened the door for using the top-level directories for contributed and custom extensions in an intuitive way.
The change is best explained with a directory structure:
Drupal 7
/modules # Drupal core modules only. (!)
/themes # Drupal core themes only. (!)
/profiles # Drupal installation profiles. (mixed)
/sites/all/modules # Contributed and custom modules.
/sites/all/themes # Contributed and custom themes.
Drupal 8
/core/modules # Drupal core modules only.
/core/themes # Drupal core themes only.
/core/profiles # Drupal core installation profiles only.
/modules # Contributed and custom modules.
/themes # Contributed and custom themes.
/profiles # Contributed and custom profiles.
/sites/all/modules # Contributed and custom modules*.
/sites/all/themes # Contributed and custom themes*.
/sites/all/profiles # Contributed and custom profiles*.
* sites/all/* directories remain intact and even have precedence over top-level directories (in case the same extension appears in both locations) for legacy/historical reasons.
Drupal 8 ships with the top-level directories by default and encourages users to use them. The sites/all/* directories no longer exist by default (but remain to be functional, if existent).
In addition of making the directory structure much more intuitive for all users, this change also includes the separation of installation profiles provided by Drupal core in /core/profiles vs. contributed and custom installation profiles in /profiles, which helps with updating the code-base.
Comments
What about multi-site stacks?
What about multi-site stacks? Will D7 multi-site stacks migrate well into D8? What changes will be required, if any, to make the migration path smooth?
They will work like before.
They will work like before. No changes there :). This is just to improve single site experience.
Hi, I'm too precious to answer right now. Please email me later.
Clarification on modules themes available inside profiles.
Am curious if the following has been verified to be true now?
All *profiles* in
/profilesand in/sites/all/profilesare available to all sites at install time. However *modules* and *themes* inside a profile -- either inside/profiles/$profile/[modules|themes]or/sites/all/profiles/$profile/[modules|themes]-- are only available to sites installed with that specific profile.(jmiccolis brought this up in: #562042-16: Search for install profiles in sites/[all|site]/profiles folders, and move core profiles into /core/profiles)