We have seen four years and Drupal 8's first release since the accepted answer was written for the question "When is it appropriate to create an Entity versus just adding a new content type?" And, entities are more central to Drupal 8 than they were in Drupal 7.(RefB, RefC, RefD)
In this new Drupal 8 world, what is the decision tree for creating a new content entity type versus a new Content Type for the content entity of type "Node"?
As you consider a response, please consider the following:
- Is a new Content Type for the content entity type of "Node" still appropriate in 99% situations versus a new content entity type?
- Does the decision tree now include more, better, or clearer reasons to veer away from using the "Node" content entity type and instead create a new content entity type? And if yes, what are they? Do they include:
- Performance?
- Security/permissions?
- The number of modules that work with Node-entity-type Content-Types and do not work with other content entity types?
- Perhaps -- based on the previous accepted answer that is referenced above -- the only general reason to do a custom content entity type is if you want to group Node data, e.g. with taxonomy terms, or otherwise annotate Node, e.g. with comments?
Module compatibility seems like a particularly interesting consideration for a decision tree. At present, few of the most-installed modules have a release for 8.x that is not merely alpha, beta, or rc (a release candidate). And it seems difficult to identify how many of them will work out-of-the-box with a new custom entity type versus a new Node-entity content type. There does not appear to be a project attribute to distinguish between those that are "written for entities" versus "written for node entity content types".
Take a look at pathauto, which is currently the fourth-most installed module of those that have any kind of 8.x release. Folks are working hard on a 8.x version that generally supports entities and not just Node-entity-type Content Types. But what about all the other modules? And will modules that support entities going to generally require custom content entity types to have module-specific "hooks" before the module will work with them? (Versus how the modules may just work straight out of the box with new Content Types?) That appears to be the kind of challenge the pathauto team is working with, and perhaps it is a reason to veer away from a custom content entity type?
It might also be worth mentioning that Drupal 8 core contains a UI for creating new Content Types for the content entity of type "Node", but it does not currently contain a UI for creating new content entity types. (RefX, RefY, RefZ)