Content Management is huge in enterprise software, and thus the Content Manager Pattern is one of the most important high-level Product Patterns. Content management is the primary function of most software described as a platform, server, or online service. It’s not just limited to the realm of official “Content Management Systems (CMS),” and what I mean by “content” is much broader
To “manage content”, software platforms/servers/services usually offer some subset of the functionality described below.
The Content Manager product pattern
What is it?
- Stores, secures, shares, organizes, and searches content.
- The content might be user-generated or from an external system.
- Example: Gmail’s content is both user-generated (messages created by Gmail users) and from external systems (messages sent to Gmail users from outside Gmail)
Where to find it?
- 99% of products described as “servers” or “online services” have the Content Manager pattern at their core.
- Most multi-user software products have the Content Manager pattern at their core, even if they are desktop clients or mobile apps.
- Users need to share content with other users (example: Salesforce.com Sales Cloud users share data about prospects and opportunities, Craigslist displays user-created advertisements to other users)
- Users want to store their content online so that they can access it from anywhere or use it with other online tools. (example: Dropbox, Shutterfly, Facebook, Gmail)
- An “engine” (see the upcoming Content Generator pattern) needs a place to find source content and to store result content (example: for a business intelligence (BI) system, a report design is source content and the result content might be a report with the data for the day 4/30/2012).
There is obviously a slew of user stories underneath each of the following functionality buckets, but in this post I’m only going to cover typical functionality at a very high level:
1. Storing content
This lets users put content into the system, and provides the baseline functionality everyone typically expects.
- Basic “CRUD” (create, read, update, delete) functionality, plus copy
- Ways for users to publish/deploy/import content into the system. This might include the concept of content statuses like “drafts”, “pending review” and “published”
- Ways to move content to a different location within the system
- Way to unpublish (but not delete) content
- Export content to an external system or file
- Ways for users to “link” to or refer to the content from elsewhere
2. Finding content
Once you have more than a few pieces of content stored in a system, you need to provide ways for users to find both specific pieces of content as well as discover relevant content they might not have been explicitly searching for. Typical functionality includes:
- Content properties (such as date modified, author)
- Quick search, advanced (property-based, wildcard-enabled) search
- Content listings – filterable and sortable
3. Organizing content
Users like to organize their content in ways that make personal sense to them, mainly so they can quickly find their content again. However, the desire to organize is still there even if you provide a top-notch, all powerful search. To this point, when Gmail was first introduced, it did not support folders nor a way to quickly keep messages but move them out of the inbox. Google quickly introduced those features based on user feedback. Typical organizing functionality includes:
- “Home location” for each user – where s/he can quickly find his/her own content immediately after logging in.
- Ways for users to provide and change user-friendly names and descriptions to content, author-provided and user-provided tagging, categorization/folders
- Favorites & bookmarks
4. Securing content and providing access
These Content Management features ensure users can only access the content to which they are authorized. It assumes a user management system (a different Product Pattern that I will hopefully cover in the future).
- Administrators can decide what users are allowed to access what content, including which users are allowed to share with others.
- Users can choose to share content with specified other users, and specify the “proper level” of sharing for that user
- Privileges / permissions on content
- Content Ownership, and differences in ownership versus authorship
5. Sharing / Social
These features primarily let users provide some information to others about WHY they are sharing content and how to use it. Also, single users may use these to remind just his/her “future self”, and no other users, of important things about the content.
- Discussion: comments / threaded discussions
- Popularity measures: followers/friends/fans on the content, likes on the content, most read, etc
- Quality measures: ratings, reviews, vote ups / vote downs
- Suggest related content: similar content, recommended based on your ratings of this piece
- Share with others: Email, Facebook / LinkedIn / Twitter / Google+, other
6. Advanced Content Management
- Editor-designated “Featured” content
- Versioning of multiple revisions
- Managing dependencies between content
- Content expiration (useful for job posts, ads, etc)
- Archive & purge of content in system
- Backups of all content in system