V9: Features descriptions and details

Having read the recent documentation on themes and features, I’m struggling to understand what features actually do, what each particular feature does programmatically so to speak.

The asset list (A list of all assets and asset groups defined by Concrete5) sort of showed what assets were available and you could often guess what they did. What about the features? Could anyone please explain:

  • have features replaced assets?
  • which block requires which feature?
  • what does each feature provide?
  • in block controller, do I have to only getRequiredFeatures or registerViewAssets too?
  • what loads assets? e.g. jquery, bootstrap, font-awesome etc.
  • which features provide Bootstrap functionality? e.g. tooltips
  • do pages use features or only blocks?
  • why do all features have the same file name ‘frontend’?

For example, there’s a BASICS feature. What does it do and where is it used in? Does it provide jquery? Or font-awesome? Do I have to require it on a single page?

When I compile theme js and scss, does it combine all features into one skin css file? Then how are they supposed to be loaded separately?

These are fantastic questions, might be one for @andrew to summarise in one go when he has the chance.