Screens, Research and Hypertext

Powered by 🌱Roam Garden

On the Ambiguity of "Content Type"

Content type means something different to software engineers and authors.

Conversations often run aground on problems of definitions. Indeed, What is a content type? has generated approximately 1743839754 Slack posts at Soapbox and prompted many a long Twitter conversation. (Have I mentioned how much I love my job?)

If you’re an author, content type refers to the types of things you create. For think tanks, that means stuff like reports and briefs and working papers. If you’re someone who builds think tank websites, then content type is a term of art, one that revolves around particular collections of fields and permissions.

In the interest of preserving our company Slack as something other than a single-issue message board, I’m going to avoid using the term //content type// through the rest of this piece.

Also note that the discussion of attributes and entities that follow is adapted Deane Barker’s excellent Real World Content Modeling. If you’re already familiar with Deane’s book, you can skip to the next entry or scroll on down to the bottom and choose where you'd like to go next.


An attribute is the most basic level of stuff that a CMS database holds. It consists most fundamentally of two things:

A piece of data.

A label for that data.

In practice, attributes hold a bunch of other information (e.g., an internal name, a user-facing label, a datatype, and a UI interface). All those things are important for how your website is built, but they aren’t as important here, so we’re going to ignore them.

What matters for our purposes is that an attribute is a data point together with the full set of things stored with that data point (datatype, internal name, user-facing label, etc.).


An entity is a set of attributes that forms a logically independent piece of content.

An entity acts as a wrapper for a particular set of attributes. The entity itself does not store data—the information is contained in the attributes. The entity simply defines an object as a particular set of attributes.

(Okay, technically, an entity is a sort of super attribute that contains a machine name, a human name, and some validation and permission rules. Again, this is important for developing a CMS, but not so important here.)

What makes an entity type unique?

Leibnitz’s principle of the identity of indiscernibles applies to entity types. That means entities P and Q are the same entity type if every attribute possessed by P is also possessed by Q.

For more context

The average think tank CMS hasn't quite come to grip with entities.

What to read next

Most think tanks have adopted a hacky solution to rhetoric and CMSs.

Other items of interest

Why does it matter what terms we use to describe this stuff?

What's wrong with PDFs?