NPR logo Clean Content = Portable Content


Clean Content = Portable Content

As discussed in my earlier post about the strategy of building the API, one of the most important things for content producers is to remain relevant to their users. With content becoming more readily available to these users through distribution channels, it is up to these content producers to make sure the content is where the users are. That does not diminish the need for continued development and maintenance of the Web site, it just means that it is equally important to distribute the content to other places. In order for that to happen, the content has to be portable. So, what does it mean for content to be portable? For NPR Digital Media, one of the primary philosophies driving our systems, is Create Once, Publish Everywhere (COPE). To achieve COPE, here are some key principles that we adhere to:

Develop Content Management Tools, not Web Publishing Tools
Most content management systems for the online world are used to create Web pages. That said, the Web page is just one possible output for the content (albeit, an important one). In building our CMS at NPR, our goal was to make sure the tool could publish to anything, including If our focus did not consider other platforms, we could have ended up with a Web publishing system that binds the content too closely to the Web site itself.

Separate Content from Display
As mentioned above, if the content is too closely tied to a specific display, it cannot easily be pushed out to other platforms. Good separation, in addition to facilitating content portability, also makes redesigns of the Web site or alternate presentations of the content of the site easier. For example, because our content is separate from our display, we were able to to launch the NPR Music site without refactoring the system architecture or our presentation layer code.

Eliminate markup from content
Because we do not know where the content will ultimately end up, it is important to not have platform-specific markup embedded in the content. For example, iPods cannot parse HTML, so we need to make sure our content gets distributed to iPods without tags in it, while the same content must contain the tags for

Like many other content management systems, ours captures and stores content in a central database that is completely independent from any presentation layer (I discuss our architecture in this earlier post). For the content to really be portable, however, it needs to work on any platform, including browsers, RSS readers, iPods, radio displays, mobile devices, TVs, etc., which means we must eliminate markup from content, as described above. To solve this problem, we introduced some functionality to our system that we call "HTML Addressing", which will be the topic of my next post.