I have a few ideas I'd like to throw out there for the future direction of Drupal. I decided against separate issues for each item for the sole purpose of collecting the thoughts in one place and branching out from here. (Some ideas might mature, others might not)
Entities
The more I deal with data within Drupal from a content management standpoint, the more apparent it becomes that Drupal needs to make a bit of a shift in how it presents entities.
Currently, we have the primary core entities: Node, User, Taxonomy, Comments, Forms and Blocks.
My issue with is that the demand for data structure is beginning to overpower the use cases of the core entities. There are times that I need to house a bundle of data without a public URL, so I don't need a node, but I don't need the entity exposed to the entire site, only a specific content type which means blocks don't fit either. Taxonomies don't fit the bill because the data needs to be more than just a tagging system. I don't program, so "creating my own custom entity module" is out of the question. The only current solution for a GUI based entity? ECK.
What I would like to suggest is a move away from the "old" way of doing things, and think about moving towards an ECK style approach to content within Drupal. "everything" is now (finally) an entity which brings us to a pivotal point of potentially doing away with the hard-coded core entities and moving towards an entity profile system that takes the entity as a base, and builds on it based on the desired profile. Make all entities modular, including the core entities. Obviously, certain things like users, or taxonomies will still need some core TLC and those profiles can still exist out-of-the box, but instead of having this huge elaborate block system, or node system that is baked into Drupal, a person chooses to enable the "block entity" profile, or "node entity" profile. A singular place to manage "entities" instead of segregating the entities. This would also empower module creators to leverage an import function for an entity instead of having to hard code the entity within their module. Entities could then be re-used among various modules. Import and export entities at will, regardless of the entity. There could be a repository of various entity profiles floating around where a person could look through custom defined entity templates, find the entity profile (template) that suits their needs and import it. Extend it to bundles and fields. A person finds an entity with a pre-defined bundle and fields that they can simply import into their own project, then tweak accordingly. This would also help move away from the distraction of things going everywhere... With a single place to deal with "entities", users would theoretically have an easier time dealing with entities as a whole, especially new Drupalers. Where it sits now, each and every module maintainer creates a custom entity, and it sits who-knows-where for the user to first find it, then deal with it, then remember how to create that particular entity later. I can see why new content managers have such a hard time understanding Drupal because content creation is everywhere and until you "know the lingo", you don't really understand why you use one thing over another. D8 does a better job of housing the core entities under "structure", but there are other things in there too that aren't entities and it's currently too early to tell if contribs will conform to a standard practice or go off and do their own thing.
Drupal is all about customization from the ground up. I believe it's time to remove some of the things that are still being held onto from the past, and move towards a direction where literally, anything goes. Entities should be the top of the food chain, then you create your bundles underneath it. It could even go as far as exposing properties to the user that allows the user to define "how" that entity will be used within the system. Instead of a hard coded entities like blocks, or nodes, you create an entity and tell the entity what to do, like be a node, or a block, or a term, or a form. In short, core needs to define entities, not dictate them.
URL Field
Drupal does a fantastic job of internal URL's, but I think it's time to de-couple the hard-coded public facing URL from entities, and convert it into a regular field. The URL as a field, with the above thoughts on entities, and you are now presented with endless possibilities of data structure for a website. For existing entities like blocks, maybe a person wants to convert a block into a public facing page that also shows up as a regular block on other pages. Add the URL field. Maybe a person wants to create a content type that is used internally only. Remove the URL field. Extend this to Drupal handling fully custom entities, and a person could essentially create any combination of setup they need for their use-case scenario.
Convert Hard-Coded Fields
In addition to the hard-coded URL field becoming a regular field, I personally would love to see all hard-coded fields, become a regular field. Do away with hard-coded fields altogether unless they absolutely have to be hard-coded. I realize this is a tall order, but it goes back to the initial "entity profile" suggestion of starting with a base entity, and building any and all entities from there, all within Drupal. I have countless sites where the "author" field is completely unnecessary. Why not make it a field that can be added or removed? Why not make the "menu" a field, which can be exposed on any entity? Like I said earlier about blocks, if a person wanted a block as a page, they could add a URL field, then they could add a menu field and expose that block type as a page with its own menu link. "That's not what blocks are intended for." Since when did Drupal become dictator on how a person structures their site? Ideally, move Drupal away from the mindset of hard-coded fields, into the mindset of modular fields. Set the standard practice that hard-coded fields should only be present when absolutely necessary on very rare use-case scenarios.
A situation I ran into recently, is the Profile2 module. While great in theory, it lacks usable hard-coded fields to really pull it together. Since the author hasn't added the hard-coded field "publish", there's no way to deal with security of a particular profile or, give the convenience to the user to show or hide certain information. It has been requested that the "publish" field be added to Profile2, but this hasn't been done. If hard-coded fields became modular in nature, entities could easily become more of a template shell as opposed to a completely customized entity where the community is at the mercy of the maintainer or a coding guru.
Internal Taxonomy URL
The current implementation of the internal taxonomy URL is /taxonomy/term/[id]. Is this really still necessary now that terms are entity bundles? Vocabularies don't have an internal URL of /taxonomy/[id] and since vocabularies are technically entities and entities use the machine name instead of an ID number, there's really no reason (that I see) to have /taxonomy preceding the internal URL. The best example I can give is: Vocabs are at the same level as Content Types. Nodes don't need a special preceding URL structure like /content/node/[id], so why do taxonomy terms?
The proposal is to drop /taxonomy and simply have /term/[id]. It might also simplify things with contextual filters in views.
There might be more going on under the hood than what I understand, so forgive me if this is off base. It just seems like it's more of a backwards compatibility or legacy thing, than something that still has a valid reason.
Include Field Group In Core
Fieldgroup is probably one of my single most favorite modules for structuring data on a form page. However, my biggest complaint is that Drupal fiercely controls the internal properties of the core entities and forces those properties to layout in a specific place. So annoying...
I should be able to move URL within a vertical tab, or fieldset of my choosing. I should be able to do the same with menus, or promotion or any of the hard coded properties, but alas, this is impossible, even in D8, not to mention the hard-coded entity like content type, doesn't even expose the hard-coded fields to the field manager. So, this feature request really is a two-parter, 1) include field group into core and 2) make the core entity properties, actually play nice with field group. I have a feeling if hard-coded fields became regular fields, this would be easier for field group to accomplish.
Conclusion
In conclusion, I want to say that I feel like Drupal could be so much more, but it's still holding onto a lot of the mindsets of the past. I think it's time to break free from the "Drupal is a Blogging Platform" and recognize it for being a full on custom content management and creation platform. I hear people say "Drupal isn't a CMS, it's a CMF" except, a lot of the things Drupal still does, is more like a CMS than a CMF... Let's break the mold.