<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Technology of Content &#187; content</title>
	<atom:link href="http://blog.technologyofcontent.com/tag/content/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.technologyofcontent.com</link>
	<description>Ramblings on the technology of content management</description>
	<lastBuildDate>Sun, 29 Jan 2012 16:38:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Towards a comparison of content repositories</title>
		<link>http://blog.technologyofcontent.com/2010/09/towards-a-comparison-of-content-repositories/</link>
		<comments>http://blog.technologyofcontent.com/2010/09/towards-a-comparison-of-content-repositories/#comments</comments>
		<pubDate>Sun, 19 Sep 2010 11:57:07 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[data modelling]]></category>
		<category><![CDATA[jcr]]></category>
		<category><![CDATA[modelling]]></category>
		<category><![CDATA[properties]]></category>
		<category><![CDATA[repositories]]></category>

		<guid isPermaLink="false">http://blog.technologyofcontent.com/?p=237</guid>
		<description><![CDATA[I am a bit behind on my blog at the moment, with a lot of unfinished posts. While I was writing about Lily CMS, I got distracted with an issue that I have been working on in the background for a long time. There was a comment saying &#8220;The Lily content model has been academically [...]]]></description>
			<content:encoded><![CDATA[<p>I am a bit behind on my blog at the moment, with a lot of unfinished posts. While I was writing about <a href="http://www.lilycms.org/">Lily CMS</a>, I got distracted with an issue that I have been working on in the background for a long time. There was a comment saying <a href="http://outerthought.org/blog/426-ot.html">&#8220;The Lily content model has been academically validated and accommodates data mapped from various domains, such as rich hypermedia, HTML5, NewsML, MXF, CMIS, RDF and many more&#8221;</a> which reminded me of the work I have been doing on classification of content models, as after all how you can validate a content model without a metamodel? And no one seems to have described the space of possible models, or the scope of choices. So here is my attempt.</p>

<p>The basic model is that we have resources, which may have some content and metadata attached. We are mainly interested here in the properties that can be attached to a resource, and the fact that some of those properties are relations to other resources. We are less concerned about what goes inside the structured body of a resource, although there are some issues about how many &#8220;bodies&#8221; a resource can have. So we have a model that has resources, each of which has key-value pairs, some of the values may be links to other resources, which presumably have referential integrity support</p>

<h2>Properties of properties</h2>

<ul>
<li><p><strong>STRING</strong>. Resources can have string valued properties.</p>

<p>This is a basic starting point; I don&#8217;t think I know of a CMS that does not support this. You can store any other type in a string if necessary, though binary values are more efficient in some cases.</p></li>
<li><p><strong>VALID</strong>. Property values can be validated.</p>

<p>Many core repositories do not validate property values at all, it is just a validation proxy layer that does, so as a repository principle this is fairly rare, although a small number of types (numbers, dates) might have native validated representations.</p></li>
<li><p><strong>TYPE</strong>. Property names can be validated.</p>

<p>Many systems have a typing facility that restricts the set of property names a resource can have. Others are unstructured, and any property can be added to any resource. There may be type composition mechanisms, such as mixins or type inheritance. Unlike value VALID this is more often tied to the core repository model, rather than a proxy layer, if the repository is typed for internal performance or indexing reasons, that is tied to dense rather than sparse storage.</p></li>
<li><p><strong>BINARY</strong>. Resources can have at most one binary property.</p>

<p>I have split this property as some content management systems can only have one binary property (such as an image file) on a particular resource, and multiple ones have to be constructed from multiple linked resources. This is not generally a huge limitation in an otherwise flexible system, but in a weaker system could be annoying.</p></li>
<li><p><strong>N-BINARY</strong>. Resources can have any number of binary properties.</p>

<p>This is the fully flexible version; one may still be a distinguished value in some way, but you can store all the sizes of an image (say) as properties of one resource, which makes managing them easier, although it may actually make things more difficult if it is not easy to iterate over properties (STRUCTPROP), and using multiple resources could be easier.</p></li>
<li><p><strong>STRUCTPROP</strong>. Properties can be structured.</p>

<p>Some systems have structured properties, for example some systems have a JSON representation for properties, rather than the flat key-value namespace of other systems. JSON supports arrays that can be iterated over, and structures that can be repeated. To make this sort of structure with only key-value properties you may need to use more resources. Structured properties though add a lot more complexity, and perfectly useful, but different, systems can be made with or without this model type. Structured properties often have partial update interfaces, which adds complexity, so that one subproperty can be modified at a time. Note while technically JCR does not have structured properties, you can use the distinguished tree below any resource as a tree of properties, so it is rather similar to this model. Note also that property naming can informally add structure, such as in the way slashes denote URI hierarchy, they can denote property hierarchy in a technically flat namespace.</p></li>
<li><p><strong>MULPROP</strong>. Properties can have multiple values.</p>

<p>Structured properties can usually have multiple values (JSON array for example), but not all systems with key-value type properties allow the same key to be set multiple times with different values. This is the model with say HTML metadata, where each property (key) can be set multiple times; however some key value systems only allow a key to hold a single value, and so the user would have to make a structured value to hold the multiple data items instead, by some encoding scheme without the system providing support directly. Having multiple properties complicates the simple set and get interfaces that single valued properties have.</p></li>
<li><p><strong>TREE</strong>. Resources can be in exactly one tree structure.</p>

<p>Another split one. Many systems have one distinguished tree structure that content items must be in, and that tree has special operations, like fast access to parents and children; other trees might be constructed by other means, like using a general relation, but the operations on them might be difficult. Children in a tree are almost always ordered and can be reordered, although some systems might not have this property.</p></li>
<li><p><strong>N-TREE</strong>. Resources can be in any number of trees.</p>

<p>The distinguished tree is very common (although Lily for example does not have one); but I do not think I know of any system with multiple named trees that share a common tree interface (like a parent function). You can make a tree with general relations, but you will not get help in making it acyclic for example. So while this is a possible design, it is complex to implement, although arguably useful as a modeling tool. Generally you will have to manage general relations yourself to do this.</p></li>
<li><p><strong>CLONE</strong>. A resource can be cloned.</p>

<p>This means that the same item can appear as more than one resource at the same time, each of which will update in the same way. This is similar to say a Unix hard link. This is the usual way of turning a TREE into a <a href="http://en.wikipedia.org/wiki/Directed_acyclic_graph">dag</a>, which adds some flexibility. Different tree locations of the cloned resources may affect properties such as permissions in some systems, or inheritance so this property can add a fair amount of modeling flexibility; conversely without these it is of less use.</p></li>
<li><p><strong>RENAME</strong>. A resource can be renamed or moved.</p>

<p>Many content management systems provide this operation in their model, but it is not a native operation in others at the repository level, as the end user visible name just be a property for example. HTTP does not provide a rename operation, but WebDAV does.</p></li>
<li><p><strong>REL</strong>. General relations between resources can be created.</p>

<p>This is the basic relation (named by the key name) between two items. It corresponds to the HTML <link> metadata element, or an RDF triple. It turns the resources into a directed graph with named edges. It is certainly essential for any content management system; I will talk more  about how you want to be able to use and query it later.</p></li>
<li><p><strong>RELNS</strong>. Relations have a different namespace from properties.</p></li>
</ul>

<p>This is a distinguishing feature between XML, which has attributes and child elements (relations) syntactically distinguished, versus JSON that does not. Non child relations in XML are still attributes though. Generally seems a pointless distinction, and using a single namespace is simpler.</p>

<ul>
<li><p><strong>RELPROP</strong>. Relations can have properties.</p>

<p>This is an interesting one. Adding a value to the relationship triple to make it a quad, means that a number (or other value) can be assigned to a relation, making each relation a weighted directed graph (or you can view the system as a matrix). The general model of the <a href="http://arxiv.org/abs/1006.2361">property graph</a> has properties for edges, but for example the RDF model does not, although they are often what blank nodes are used to model, although of course blank nodes can have relations as well as properties. You can make up for a lack of properties on edges/relations by adding extra nodes like this, but they may proliferate and need managing, so allowing properties may help. It is also worth noting that a system without MULPROP can use naming of properties to implement RELPROP, as a relation could have a naming convention for its properties; similarly STRUCTPROP generally allows storing the extra information in the property structure.</p></li>
<li><p><strong>REFINT</strong>. Referential integrity is preserved for relations.</p>

<p>Preserving referential integrity at the repository layer is a fair amount of work, relational databases can do this, but not all content repositories do, for example over delete operations.</p></li>
<li><p><strong>ORDREL</strong>. Properties are ordered.</p>

<p>True key-value models do not tend to have an ordering for properties. As with many of these things, ordering adds interface complexity. Structured properties may however be ordered, and if the model supports a distinguished tree (TREE) this almost certainly has ordered children. If you have to build an ordered tree simple from basic relations it is quite complex. A sort order on a relation is another relation property that seems to be rarely supported for general relations, like weights.</p></li>
<li><p><strong>REIFY</strong>. Properties can have properties.</p>

<p>RDF in principle lets properties themselves be resources (reification), so that they can in turn have properties. This allows me to add information about the properties, such as where they came from. This rarely seems to be useful in common models. Giving different properties different permissions might be a more useful side effect.</p></li>
<li><p><strong>EXTREL</strong>. Relations can be defined externally to their subject.</p>

<p>HTML originally had a rev relation, which defined a relation backwards from object to subject, and RDF triples can be stored in any document, divorced from subject and object referants. This causes all sorts of issues with updates and managing (even finding) relations, while adding no descriptive ability except potentially REIFY.</p></li>
<li><p><strong>INHERIT</strong>. Relations can inherit properties.</p>

<p>The inheritance tree might be set from other properties, or from a distinguished tree, but one model is that properties not explicitly set can be inherited from another resource, or a prototype. This often makes models simpler, as rather than explicitly walking a tree, you can implicitly do it though inheritance. Seems surprisingly uncommon in content repositories.</p></li>
<li><p><strong>MINHERIT</strong>. Multiple inheritance.</p>

<p>Allow inheritance from multiple resources, not just for example based on the primary distinguished tree. More complex.</p></li>
<li><p><strong>NAMESPACE</strong>. Namespacing on properties.</p>

<p>Some systems have a type of namespacing on properties, often used for multiple language variants for example, so that a property may differ across these namespaces. This can also be implemented with multiple resources, structured properties or inheritance. Usually not all properties are namespaced at once; some may not vary, which makes the set and get interface more complex.</p></li>
<li><p><strong>ATOMIC</strong>. All the properties of a resource must be updated together.</p>

<p>A resource and all its properties are all updated at once to a complete new state (this will also be the versioning state). Other than for versioning, this also affects how concurrent access works. The alternative is that each property can be updated independently. Atomic updates are the HTTP resource update model.</p></li>
<li><p><strong>RVERSION</strong>. Resources may be versioned.</p>

<p>An entire resource may be versioned; this is a similar namespacing operation, where a namespace is available to retrieve the old values of a resource.</p></li>
<li><p><strong>PVERSION</strong>. Properties may be individually versioned.</p>

<p>Some systems (such as Lily) allow versioning to be turned on or off on a per property basis. This property generally implies that ATOMIC is not true.</p></li>
<li><p><strong>DELVERSION</strong>. Versions are deleted when a resource is deleted.</p>

<p>This is surprisingly common, if versions are namespaced properties, then they are often deleted along with the resource when it is deleted. The better solution is not to delete versioned resources, just give them a tombstone (whiteout) marker.</p></li>
<li><p><strong>SNAPSHOT</strong>. The versioning namespace is whole system state not resource state based.</p>

<p>Although versioning of the total state of a system is now common in source code control systems, many content management systems only let individual ressources be versioned (hence creating issues such as DELVERSION). The main issue here is that you cannot apply or undo a set of changes together, only individually. Apart from the difficulty in making easy user interfaces, whole system versioning is superior in every way to versioning of individual resources or properties and no one should be designing a system that does not behave like this.</p></li>
<li><p><strong>TREEVERSION</strong>. Versioning supports branching and merging.</p>

<p>A full versioning model like git or subversion, rather than just a linear series of checkpoints is another model. It generally simplifies the concurrent updates (ie can avoid both CAS and LOCK in theory). Although these provide the richest model of versioning, it is the hardest to present to the non technical user. Note also that this is one clear area where the content model for delivery can differ from the one for authoring; for authoring there are much more complex operations that are useful, while for delivery performance is key, and versioning may not be required at all, depending on how updates are applied.</p></li>
<li><p><strong>CAS</strong>. A <a href="http://en.wikipedia.org/wiki/Compare-and-swap">CAS</a>-type operation is supported on resource updates.</p>

<p>Some type of atomic update-if-unchanged since this version operation is supported, for lockless updates. HTTP Etags are the canonical example. This is the simplest choice for API access, and simple for users too. The unit of atomicity is usually the whole resource here, making it the unit of transactions; atomic update only of individual properties does not let two properties be updated in a single transaction so is not so useful.</p></li>
<li><p><strong>LOCK</strong>. A locking operation is supported.</p>

<p>The traditional alternative to CAS is a locking operation, that disables write operations while the operation is locked. Some administrative or time based unlock operations are required as well. Less suited than other methods to automated APIs, due to issues like deadlock. As multiple locks can potentially be obtained, cross resource transactions are possible, although this could impact concurrency.</p></li>
<li><p><strong>TRANSACTION</strong>. Transactions across multiple resources are supported.</p>

<p>Generally individual resources are the unit of transaction, or possibly individual properties. Some systems however allow a transaction in which multiple resources are updated together. JCR is probably the main example of these. A system with snapshots may also have this property if moving between versions is atomic. HTTP deliberately does not have this sort of transaction, as it does not work well if the resources are distributed, and system design for HTTP should ensure that resources model the right things so that transactions across resources are not needed.</p></li>
</ul>

<h2>Queries</h2>

<p>With the property model above, you can retrieve resources, and read and modify their properties. There may also be some additional maybe slightly different properties (the ones that TREE might expose for example, parent and child relations). We can traverse between resources by following their links. However we do generally want to make more complex queries, either about global questions, or more complex traversals based on properties. There are a lot of query models we should really explore, particularly we need to focus on how properties are indexed. I suspect that the analysis below is just a starting point.</p>

<ul>
<li><p><strong>PINDEX</strong>. Property values are indexed.</p>

<p>This is not necessarily essential, as for most interesting properties one would create a node rather than a value, and use relations, though you need reverse relation indexes anyway.</p></li>
<li><p><strong>REV</strong>. Relations have a reverse index.</p>

<p>This lets me find the opposite direction of a relation. This is a key property, as relations are directional, and important properties are in the other direction, such as finding all the resources tagged with a particular tag value.</p></li>
</ul>

<h2>Interfaces to properties</h2>

<p>I mentioned above that some of the property models have differing interface complexities, and I think it probably helps to show what some of the interfaces look like.</p>

<p>The canonical interface in web content management is that one exposed by HTTP. Resources and all their properties have to be updated atomically (ATOMIC) &#8211; <a href="http://blog.technologyofcontent.com/2009/12/smart-resources-or-why-you-should-care-about-http-patch/">PATCH</a> is just an optimization. CAS is available (Etags or last update). No versioning is specially supported (although the system could create resources for old versions and add properties to access them). Other property behaviours depend on the document types, so HTML for example supports a meta and link flat property namespace, but other schemes are possible. A resource TREE is very loosely defined by &#8216;/&#8217; in URLs, but does not provide any properties, so it is barely a tree.</p>

<p><a href="http://blog.technologyofcontent.com/2009/12/the-bottom-10-things-of-2009/">WebDAV</a> changed the HTTP data model to push it much more close to one traditional content model, supporting LOCK, RENAME, and TREE on top of HTTP, and an explicit property model independent of the resources in question. The property model is flat, with no STRUCTPROP although extending it is mentioned in the <a href="http://www.webdav.org/specs/rfc2518.html">RFC</a>, and no MULPROP. CLONE is allowed, as resources can have more than one URI. Updates to properties are not ATOMIC, as the PROPPATCH method can update some properties without others. The main HTTP resource is the body, which allows storage of one BINARY property, as the other properties are XML strings. This is pretty much the standard document management style set of properties.</p>

<p>As I was looking at Lily CMS recently, it is pretty different. There is no TREE, you have to construct it yourself. There is TYPE, no STRUCTPROP, there is NAMESPACE and PVERSION. There is no CAS or LOCK, conflicts are resolved by time of modification alone. It is an interestingly different model which I will look at in more detail in another post, as it chooses complexity in some areas and simplicity in others.</p>

<p>One of the common themes of the NoSQL movement is saying things along the lines of if you only give up this one feature we can make the storage layer that much simpler and faster, push some more work up to higher layers to resolve, issues like conflict resolution say, or referential integrity, or tree structures. This is the path of a simpler core repository which does not implement all common usage patterns for a CMS application, with some layering and conventions on top to build the next level. This is not so different from the relational model, with a low level relational algebra and a set of database management tools, then the application. What is still unclear is exactly where to make that split, but certainly large monolithic repository models that try to do everything listed above end up very large and complex to use.</p>

<p>There is definitely a case for moving some of these properties out of the repository into the authoring tools. Referential integrity at the repository level is actually quite hard to work with, as you cannot refer to something you are about to create, for example, but the authoring layer can provide tooling to help the user here.</p>

<p>I will post some follow-ups about some of the other issues arising from this, and what I think the best set of constraints to work in is, and more on the CMIS and JCR models.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.technologyofcontent.com/2010/09/towards-a-comparison-of-content-repositories/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Wave experiment: Things We Hate About Content Management</title>
		<link>http://blog.technologyofcontent.com/2009/10/wave-experiment-things-we-hate-about-content-management/</link>
		<comments>http://blog.technologyofcontent.com/2009/10/wave-experiment-things-we-hate-about-content-management/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 13:33:49 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[Wave]]></category>

		<guid isPermaLink="false">http://blog.technologyofcontent.com/?p=135</guid>
		<description><![CDATA[Experiment with writing in the wave.]]></description>
			<content:encoded><![CDATA[<p>Well, that was the story, six people in content management writing a blog about stuff using Google Wave. Mostly for the first time I think; something to do with those fresh invites.</p>

<p>Other links are here: <a href="http://jonontech.com/2009/10/23/a-collaborative-google-wave-blog-post/">Jon Marks</a>, <a href="http://irinaguseva.wordpress.com/2009/10/23/things-we-hate-about-content-management/">Irina Guseva</a>, <a href="http://www.persuasivecontent.com/i-predict-a-cms-riot-1-hour-6-people-1-wave">Ian Truscott</a>; other participants Adriaan Bloem, Andrew Liles, <a href="http://contentedmanagement.net/blog/bove-the-contentious-waves-he-kept/">Philippe Parker</a> (first use of Wave over GotoMeeting?)</p>

<p>Well it was fun. Technical difficulties, lost sync and crashed a few browsers, some people lost whole machines though. Safari coped better than Firefox. It took a while to realize what was happening here, hey but this is in beta!</p>

<p>As a brainstorming tool at worked pretty well. I thought it scaled pretty well. The named cursors indicate who is in the bit you are in, but for brainstorming you can look, write another point, move, continue, not edit much. After half an hour of getting to bulletted lists, a bit of moving around the heavy writing started (after a discussion at the top in our proxy process section; we should have split the thing up a bit).</p>

<p>There is a great tendancy to write temporary notes about the discussion and then just delete them. Which feels odd, data and metadata together of course. The editing process was odd, you would find orphaned bits, move things, try to join stuff up to make it flow, while it was all changing around you. Pretty chaotic. Bits that no one expanded into prose got junked (quite a good edit method, as they couldnt stand up themselves).</p>

<p>Here is the &#8220;finished&#8221; article&#8230; which cannot be attributed to anyone individually of course&#8230; the subject was chosen about 10 minutes in, just as something people would have something they could easily contribute into this situation, there are some good points in there though!</p>

<p><strong>Things We Hate About Content Management</strong></p>

<p><em>- By The Motley Crew</em></p>

<p>It was a lovely Friday morning/afternoon, and we were Waving. The experiment initiated by McBoof (yes, that one) brought together 6 CMS folks from around the world. The event gathered together analysts, journalists, vendors, system integrators to Wave on a topic that was decided at that very moment. We had one hour (in between conference calls and other job thingys) to pick a topic and Wave it.</p>

<p>A little collab on what exactly to Wave about later, we decided to do &#8220;a mindmap of things we find annoying in CMSs.&#8221; To up the ante, we also decided to take the original bullet points (deemed &#8220;too easy&#8221;) and convert the whole thing to prose. Was the tool given really up to the task? Were our minds flexible enough to wrap around this kind of realtime collaboration?</p>

<p>In the beginning &#8212; we blame the tool <img src='http://blog.edge3.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  &#8212; we were Drowning, not Waving. We (almost) didn&#8217;t fight about edits. We almost didn&#8217;t step on each other&#8217;s toes. All in all, it turned out to be a fun and productive collaborative exercise. Read on to see for yourself.</p>

<p><strong>Cosmetic Issues</strong></p>

<p>There really should be a CMS UI fashion police. As there should be a Magic Quadrant for shoes and handbags. Why? Well, there&#8217;s a couple of issues.</p>

<p>For instance, sloppy, non-designed design. You know the kind of thing that has not been thought about and reworked and made to feel right. The sort of thing coders do if you don&#8217;t force them. But at the same time, over-designed interfaces can be just as bad: the designers and developers really need to be on speaking terms.</p>

<p>When building a system that works, you can&#8217;t have the development team in the basement on a sustenance of Jolt coding away into the night, and the designers in the penthouse in turtleneck sweaters sipping espressos. Too many CMS designs end up being programmer vs. end-user friendly. And this is not the best way to charm away those marketing and web content folks.</p>

<p>Developers and designers need to talk to each other and essentially, both should talk to users &#8211; not just eat your own dogfood &#8211; but listen to what dogs like to eat. A developer or UI designer are not content editors, marketers or knowledge and information workers.</p>

<p>Some vendors say that the agonizingly and depressingly black UI backgrounds are hip and modern. Well, they are not, really. Who told you that? Especially if you add a Star Trek theme to it and sprinkle in some stars and cosmic swirls, because if Apple does it, it must be cool right? Not pointing any fingers, but I would quit if I were a content manager having to spend my 9-5 staring into the &#8220;black hole&#8221; of some of the CMS UIs that are out there on the market.</p>

<p>Even pop-ups seem less annoying when compared to dark UIs. Which brings us onto&#8230;</p>

<p><strong>Interface Issues</strong></p>

<p>Interfaces need a comfortable lived in feel. Content management is something people work with every day, it is their interface to their job. You meet people who hate the interface, and that makes their work a heap of pain. I have seen people who describe the 44 clicks it takes to insert an image. You have a responsibility to these people, to make them love the content and make the tool disappear.</p>

<p>We all hate it when the interface does something on its own that ruins your context. E.g. a page refresh, or in Wave the jumping around of the scrolled window in some cases <img src='http://blog.edge3.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Or the lack of an easy way to bookmark, so you can reference someone to the content. Remember people will be collaborating and need to send links around. Make sure the UI is a proper web application with URLs. And why do tasks that are easy to describe and often repeated in exactly the same way still take more than a few clicks? (Or maybe even dozens of clicks.) With bonus points for forcing users to use dialogs or tabs to enter mandatory information. Remember people do not have all the information in the right order.</p>

<p>Also, we need sane conflict merges. Check in and check out is too extreme for most uses. But people want to edit offline still. Of course Wave doesn&#8217;t have an offline: Google thinks this problem is going away, it&#8217;s real time so there are never conflicts (that&#8217;s defined in the XML protocol; it&#8217;s quite interesting if you are that way geeky). Does Google have the right answer here? Well, the Motley Crew is struggling here, and some browsers lost sync during this experiment.</p>

<p>&#8220;Power users&#8221; (those who use it all day long) of CMSs needed to have a &#8220;Desktop&#8221; experience. What does Desktop Experience mean? Well, it doesn&#8217;t really have to be on the desktop &#8212; these days it is perfectly possible to get very close to a hitherto Desktop experience in a browser or similar. these are qualities: very low latency from action to response, no page refreshes, modal and modal-less dialog boxes as appropriate, &#8220;push&#8221; notification.</p>

<p><strong>Architectural Issues</strong></p>

<p>Architectural issues of the wave overtook any architectural issues of Content Management Systems. The fact that we authored this entire article in a single blip didn&#8217;t help, and slowed everything down enormously. McBoof learned the hard way that he really need a new laptop and spent most of the session giving his machine CPR. Next time we&#8217;ll do each paragraph in its own blip to stop FireFox going down like a Led Zeppelin.</p>

<p>Monolithic systems. Build it out of pieces that the client can not use all of. Obviously your pieces may work together better, but there should be components. Do not try to reinvent all kinds of wheel. &#8220;Best of breed,&#8221; though, is just another weasel marketing idea, as if systems are pinnacles not about meeting requirements.</p>

<p>Marketeers are adroit at using the term Best Practice to position Their Way as the only way that a particular matter can be solved. (Many of us live in that netherland of having to pedal that point of view, but it is a falsehood that the careful buyer should try to see through.) I think this devalues genuine best practice, vendors should cite references</p>

<p>Most often a marketeer&#8217;s Best Practice view is the only one they subscribe to as their product development has paddled up the wrong stream and cannot or won&#8217;t reverse their architectural design (probably because of the cost of doing so). This intransigence most often causes a product to doom itself. (Think of IBM and The Mainframe Is The Only Way To Do Serious Business).</p>

<p>Who really still believes that there is a place in this world for Flash or Java Applet based Rich Text Editors? TinyMCE, FCKeditor and others are filling the gap left by Ektron when they bit the hand that feeds and entered the CMS market. Ephox is trying to spread, but I find it difficult to come up with an excuse to use an Applet over HTML with javascript these days. Stick with the standard.</p>

<p><strong>Business Issues</strong></p>

<p>Where you are buying into something that you may very well need to change or integrate with there is strong benefit in considering Open Source. Open Source used to frighten commercial software companies but we have come along way on that road to understand that commercial organisation can operate in an Open Source world and benefit. This does not necessarily mean that their prized system needs to be fully opened up, but taking the spirit of it to mean that you are completely open to people seeing and learning from your code how it operates.</p>

<p>Exactly what you need to see opened up varies. In a CMS there may be a subsystem that stores the content or one that allows a Rich Text Editor. These arguably don&#8217;t need to be opened up, but when a CMS ships with modules for, for example, an RSS feed widget, calendaring tool, prebuilt webforms, users who then want a variation on this module can benefit from seeing how the &#8220;pros&#8221; did it, they can then use it as a starting point for their own different implementation.</p>

<p>We really don&#8217;t need vendors that pay lip service to the buzzwords. When they think the new CMS buzzword &#8220;engagement&#8221; is just a screenshot of Google Analytics. Or when they add an image picker and call it DAM. And a cross-over between WCM and ECM? Don&#8217;t think WCM is like ECM and it&#8217;s about organizing content, not about effectively communicating with the audience. And don&#8217;t think that if you organize the content, you can automatically communicate effectively.</p>

<p>Completely different, but equally frustrating, is procurement (and the procedures that go with it.) Procurement folk don&#8217;t recognise the importance of user adoption to the success of the project &#8212; of the black background and all the UI issues pointed out previously. If a CMS is procured according to procedure, the selection is a success to them. But those same rules are often a recipe for ignoring what the users really need.</p>

<p>At the same time, budgets that aren&#8217;t transparent are an issue &#8211; customer and vendor should be able to have a sensible grown up conversation. As a customer, of course you want good value, but how cheap are you? But to vendors: many licensing models don&#8217;t make any sense, and force you to do stupid things. People are scared to have that conversation &#8211; the best architectural fit first I say, lets figure out an appropriate license around that.</p>

<p><strong>Conclusion</strong></p>

<p>So much hatred rolled up into a tight little ball of anti-CMS rage. Who would have expected it from such a respected bunch of CMS folk. We hate the designs, the interfaces, the architectures and the business. Time for a beer/wine? Wave good bye!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.technologyofcontent.com/2009/10/wave-experiment-things-we-hate-about-content-management/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Content enabled vertical applications (composite content applications) &#8211; executive briefing</title>
		<link>http://blog.technologyofcontent.com/2009/10/content-applications-briefing/</link>
		<comments>http://blog.technologyofcontent.com/2009/10/content-applications-briefing/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 21:39:29 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[CEVA]]></category>
		<category><![CDATA[content]]></category>

		<guid isPermaLink="false">http://blog.technologyofcontent.com/?p=124</guid>
		<description><![CDATA[Content enabled vertical applications (composite content applications) - executive briefing]]></description>
			<content:encoded><![CDATA[<p>I noticed that content enabled vertical application recently became the top search entry point to my blog. Now as I have only written one article about this, and it rapidly rose up the Google rankings, I reckon there must be a dearth of content on this subject. I guess that may not be too surprising, as it was initially a Gartner attempt to describe a path people wanted to follow rather than a generally used description. Gartner have also decided that the content enabled vertical application (CEVA) is now called the composite content application (CCA), possible to confuse everyone even further. But they do matter to your content strategy.</p>

<p>So what are these, why do you want them, and what do they mean for your content strategy?</p>

<p>Toby Bell at Gartner says</p>

<blockquote>
  <p>Smart companies have begun linking more of their content to industry-specific, human-centric
  processes, such as insurance claims handling, or supporting research on new drug development.
  This approach usually means building or modifying the content-enabled vertical applications
  (CEVAs) on top of ECM environments. CEVAs typically help to automate complex processes that
  previously required workers to manually sort through paper documents and other forms of content
  (in effect, a way to manage down costs of exception handling) and optimize the remainder of the
  work.</p>
</blockquote>

<p>This seems to be not a great summary though. Look at it from another view. Your enterprise content was disorganized, living on network shares, random websites, legacy systems, all over the place. Your ECM strategy was to first to consolidate to reduce costs of multiple systems, and to improve findability, get to a base enterprise content management position. But what next? Where is the next value?</p>

<p>Content strategy starts here. There are many parts to this, covering creation, lifecycle and reuse, audit, consolidation quality and so on. The CEVA part is about the delivery and interaction with content within other non content focussed areas of the business. Content management often seems to be about specific content focussed parts of a business, such as, historically, technical documentation and, more recently, online marketing material. Plus a load of unstuctured stuff like emails and generic office documents. The areas such as technical documentation have had high value often for legal and regulatory reasons, so structured processes were created early; these effectively created the content management industry initially. Web content historically had different solutions because it turned up and became important when the general purpose tools (Word!) could not usefully author it.</p>

<p>But all the stuff classified as &#8220;other&#8221; does have underlying processes, content processes. Some are formalized in systems, the original paperless office systems, the roots of the document management industry in forms and scanned paperwork processing. This stuff generally sits more on the &#8220;data&#8221; not &#8220;content&#8221; side of business processes. Long term this distinction is not such a useful one, and data and content resources will merge together into a single enterprise resource architecture. The majority of processes with content though take place through informal channels, particularly email with Microsoft Office documents. These are the document types you tried to take control of through ECM.</p>

<p>So ECM took the documents that were behind many processes and made them findable and organized them. But at the base level a content repository is just that, a repository. It deals with basic issues such as versioning and permissions, search and findability, and some organization, but it does not really deal with process and processing.</p>

<p>Process and processing are the valuable parts in the lifetime of most content. Imagine the lifetime of an insurance contract say, with payments and claims and disputes, or an employees personnel file, or a technical manual over the lifetime of a product. A CEVA or CCA is an application to support these lifetime processes.</p>

<p>It is also an application to support the relation of a document&#8217;s lifetimes processes to other systems. Your CRM system may need to know about insurance claims, your sales department may need to know about expiry, your website may need to know about new documentation releases, content changes do not happen in a vacuum.</p>

<p>One class of CCA that is common but is rarely perceived as that is a software application with embedded content. Once that was just embedded &#8220;help screens&#8221; with content tools to manage them, then came internationalization, with a different set of tools. But these desktop applications are being rapidly replaced by web applications. Web applications are much more content driven, they may live in an SEO facing world, they may live in a customer facing world that may consider usability, they may be multilingual, and they are not driven by the developer-centric ideas of help screens and manuals. Content and application can live together, but this requires new ways of using, reusing and versioning content, and pulling content out of application release cycles so it can reflect non application changes, such as the marketing environment, usability improvements, corrections and enhancements. These applications were historically development led but as they mature the content aspects become key business drivers, needing content management integration.</p>

<p>So what do you need to build this type of application, and what should your decision criteria on platforms be?</p>

<p><a href="http://stephanecroisier.jahia.com/from-content-composite-to-content-solutions">Stéphane Croisier says in a good survey</a> &#8220;So rapid raw composite assembly, fast integration and ease of use are the three new pillars of next generation content solutions.&#8221;</p>

<p>The first thing to bear in mind is that you need more than a repository, you are looking for an application platform too. The ease of use issue is important. Long term you need to be looking for something that staff can build simple tools from, even if you are hiring specialists for the complex projects. Ease of use is a two way thing, as you need an easy to use platform that lets you build easy to use applications. And ease of modification and maintenance is equally important as these applications may need to be fluid. You are likely to need external support to build more complex applications on the same platform, so availability of this is important too. Ignore the jargon of portlets, widgets and mashups: none of these so called standardisations have much traction; we are talking application development, use what you have or can hire developers to do. Ask the vendors what their platform strategy is.</p>

<p>Stéphane identifies a trend towards solutions, ready to go solutions for common problems; these may be useful but I would not choose a development platform on the basis of the availability of particular solutions or you may end up buying a platform for every solution. A longer term view of the viability of a platform for other solutions is necessary too.</p>

<p>Long term, remember that content application strategy is part of content strategy, and comes after that. You need to know what your content applications are and will be, and have built an underlying respository, authoring and reuse strategy first. Applications are where developers need to interact with this to achieve the long term goals.</p>

<p><a href="http://xkcd.com/388/"><img src="http://imgs.xkcd.com/comics/fuck_grapefruit.png" alt="fruit magic quadrant" width="450"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.technologyofcontent.com/2009/10/content-applications-briefing/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Content Delivery Network via Amazon Web Services: CloudFront: blog.edge3.org

Served from: blog.technologyofcontent.com @ 2012-02-04 14:04:20 -->
