In reply to Ionut.

The accepted and most widely used solution by themes with the same focus is to create a ‘companion’/’extensions’ plugin and throw all of those plugin-teritorry things there, how is this better ? Isn’t the content still locked in the db ?

Exactly. In the end, users will still lose some kind of content or customisation when they change theme.

A solution for WordPress would be to allow modular building blocks. Let theme designers use them or not. There is a balance in consistency when you allow some themes to use more functions than others. It's actually how tumblr themes work: some have a lot of options, other don't. Content and function are still kept separated, with some exception. Maybe WordPress could borrow from that and be more flexible. Maybe allowing CPT in themes would not be so bad. As long as you have good documentation, standards and guidelines in place it can work. Users are not idiots. You can inform users about what content they'll be able to keep when switching themes. From a user's perspective, it makes more sense to pick a theme that has specific features than to chose between a few thousand themes and then pick maybe a dozen plugins to get specific features to work...