Real World Content Modeling
In late 2019, I published my second book: Real World Content Modeling: A Field Guide to CMS Features and Architecture.
It started as a blog post, but quickly got out of hand. The goal was to reveal and evaluate every possible content modeling feature I could think of that I have seen in 25 years working in CMS. My hope was that readers would be able to better evaluate the modeling capabilities of a CMS if they had a clear baseline with which to compare.
The paperback or ebook is available on Amazon.
In May 2021, I published the book here. The list of chapters linked below is the entire text of the book.
I will likely modify this text in the future to expand or clarify some points. I’ll add to the “Revision Notes” section at the bottom of this page. (However, I doubt I’ll ever update the purchasable book – that’s more of a hassle than you’d think.)
There are 23 specific evaluation criteria defined. They’re numbered in the list below. Each criteria also has one or more evaluation questions at the end of the chapter to cover some of the nuances of the specific functionality.
You can click into any chapter below, and move forward and backwards through chapters.
Less Theory, More Reality • Why Content Modeling Matters
About this Guide
Who This Book is For • Web vs. Other Channels • On Definitions • Adjacent Disciplines • How This Book is Structured
How a CMS Helps (Or Hinders) Your Content Model
The Theoretical Basis for Content Modeling • The Benefits a Content Model Offers
The Anatomy of a Content Model
Attributes • Types • Types vs. Objects
What is the built-in content model?
The Default Editorial UI Often Reflects the Model
- What's the difference between built-in and custom?
Can the built-in model be extended with custom content types?
Content vs. Metadata
- Opinionated Software
What built-in attribute types are available?
Types and Editor Experience • Common Attribute Settings • Editorial Elements
- How Content Is Stored
How is content represented in the API?
Object Oriented Programming • Attribute Typing • Programming Logic
How can attribute values be validated?
Required Attributes • What Is No Value? • Logical Validation Rules • Regular Expressions • The Timing of Validation • Default Values • Rule Precedence and Conflicts
How is the model supported in the editorial interface?
Element Labeling • Interface Elements • UI Organization • Error Messages • Element Suppression • Content Findability
Can an attribute value be a reference to another object?
Referential Integrity • Uni-directional vs Bi-directional References • Relational Content Modeling UI • Content Selection and Permissions • Type Limitations • Composite Modeling
- Let's Evaluate the Current Level of Functionality
Can an attribute value be an embedded content object?
Validation and Repetition • Typed vs. Custom Attributes
Can custom validation rules be built?
Server vs. Client Validation • Custom Validation Needs
Can custom attribute types be created?
A Custom Attribute Example • API Support for Custom Attributes
Can attribute values repeat?
Repeating Attribute Values • The Universality of Repeating Values • Repetition Validation • Ordering and Ordinal Manipulation
Can types be formed through inheritance or composition?
Type Inheritance • Limitations of Hierarchical Inheritance • Type Composition • Type Dependencies and Abstract Types
Can content objects be organized into a hierarchy?
Objects vs. Folders • Editorial UI and Object Trees • Multi-Positional Content Trees • Typed Trees • Hierarchical-Based Functionality • Cascading Values • Content Trees and Websites
Can content objects inherit from other content objects?
Channel-Specific Derived Objects • Localization and Personalization • Voiding Values in Derived Objects • Hacking Object Inheritance
What is the relationship between "pages" and "content"?
The Operative Content Object • Pages vs Content • Coupling Models • Non-Addressable Content
Can access to types and attributes be limited by user permissions?
Singleton Types • Type Permissions • Attribute Permissions • Attribute Permissions and Templating
How can rich text fields be structured?
Using Structured Rich Text to Limit Types • Stacking vs. Embedding • Structured Elements vs. HTML Structures
What options are available for dynamic page composition?
Zones and Elements • Zone Placement • Page Composition and the Page Model • Template Composition
What aggregation structures are available to organize content?
Internal vs. External Structure • Categories and Taxonomies • Categories As Content • Tagging • Menus, Lists, and Collections
- What Is and Isn't Considered "Content"?
How can types be changed after object creation?
Common Type Changes • Type Conversions • Metadata Retention and Type Conversions
How does the system model file assets?
Assets as Content • Assets as Attribute Values • The Utility of Modeling Assets as Content • Assets and Delivery Contexts • Usage and Access Patterns of Assets • Digital Asset Management Systems
By what method is the content model actually defined?
UI vs. Code Model Definitions • Model Definition and Development Operations • Propagating Model Changes
How does the system's API support the model?
Event-Based Programming • Webhooks • Event Programming and Versioning • Supplemental Indexing • Repository Abstraction • Content Synchronization • Content Model Reflection • Recursive Content Models
- Postscript: Thoughts on Model Interoperability
- About the Author
- The biggest edit was to add section titles to all the chapters. In the original version, sections were delineated by horizontal rules, with no title. I added titles to all the sections, and I think the text is better for it, but it did require me to summarize the contents of the section in a title, with varying degrees of success. I might consolidate some in the future, since the difficulty in coming up with a title was indicative of some editing needs.
- I fixed a few typos that somehow got through the original editing process.