<?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>Jon On Tech &#187; cmis</title>
	<atom:link href="http://jonontech.com/tag/cmis/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonontech.com</link>
	<description>Just a nerd trying to save the publishing industry. Again.</description>
	<lastBuildDate>Fri, 29 Jul 2011 17:07:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>An Incomplete Directory of Open Standards</title>
		<link>http://jonontech.com/2010/01/10/an-incomplete-directory-of-open-standards/</link>
		<comments>http://jonontech.com/2010/01/10/an-incomplete-directory-of-open-standards/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 15:04:58 +0000</pubDate>
		<dc:creator>Jon Marks</dc:creator>
				<category><![CDATA[Future of CMS]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Application Layer]]></category>
		<category><![CDATA[cmis]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Hypertext Transfer Protocol]]></category>
		<category><![CDATA[Internet protocols]]></category>
		<category><![CDATA[JCP]]></category>
		<category><![CDATA[OASIS]]></category>
		<category><![CDATA[Open standard]]></category>
		<category><![CDATA[portal]]></category>
		<category><![CDATA[Standard]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[WebDAV]]></category>
		<category><![CDATA[World Wide Web Consortium]]></category>

		<guid isPermaLink="false">http://jonontech.com/?p=1445</guid>
		<description><![CDATA[During the panel discussion at the recent British Computer Society Open Source event, there was discussion (and confusion) about Open Source versus Open Standards. I was asked "So, can you give us some examples of Open Standards". I rattled off a few, but I thought I'd add a few more here. ]]></description>
			<content:encoded><![CDATA[<blockquote class="dylan"><p>Through this open world I&#8217;m about to ramble,<br />
Through ice and snows, sleet and rain,<br />
I&#8217;m about to ride that mornin&#8217; railroad,<br />
P&#8217;raps I&#8217;ll die on that train.<br />
- MAN OF CONSTANT SORROW</p></blockquote>
<p>During the panel discussion at the recent <a href="http://jonontech.com/2010/01/07/bcs-open-source-presentation/">British Computer Society Open Source event</a>, there was discussion (and confusion) about Open Source versus Open Standards. I was asked &#8220;So, can you give us some examples of Open Standards&#8221;. I rattled off a few, but I thought I&#8217;d add a few more here. There is a lot more to be said on the topic, but a good place to start is to list the standards that I think are important.</p>
<p>If I get the time, I plan to turn this into a nice diagram that is much more easily digestible. If there are important standards that I&#8217;ve forgotten about that anyone interested in web sites should know about, please let me know in the comments. I&#8217;d avoided worrying about file formats (e.g. PNG, MPEG, PDF). And REST isn&#8217;t a standard &#8211; it is an architectural style that was developed in parallel with the HTTP/1.1 protocol. I&#8217;m sure there are many many important ones I&#8217;ve left out though.</p>
<p>This is a long and boring post with a record-breaking number of acronyms. So maybe you should stop reading now.</p>
<h2>The Internet Plumbing</h2>
<p>These standards are the plumbing of the Internet. Like the sewers under a big city, they are impossible to change and will be there forever. They&#8217;re infrastructure. Some people are saying Twitter has already become infrastructure, but I&#8217;m not convinced about that yet. These standards are split into layers &#8211; the link layer is about physical connection to a network and include standards such as Ethernet. The Internet layer routes packets of information across one or more network using the <a title="Internet protocol" href="http://en.wikipedia.org/wiki/Internet_protocol">Internet protocol (IP)</a>. The Transport Layer is responsible for the reliable delivery of messages, and uses standards such as TCP or UDP. Finally, the Application Layer provides higher level application specific protocols such as DNS, HTTP (and <a title="WebDav" href="http://en.wikipedia.org/wiki/WebDAV">WebDAV</a>) for web servers, FTP, SMTP for mail servers, NTP for time servers, <a title="LDAP" href="http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol">LDAP</a> for user directories and so on. But I&#8217;m not here to talk about any of these. I want to talk about the standards that sit on top of these, specifically for web pages.</p>
<h2>Making Web Pages</h2>
<div id="attachment_1449" class="wp-caption aligncenter" style="width: 391px"><a href="http://jonontech.com/wp-content/uploads/2010/01/w3ctimeline-4500x1796.png"><img class="size-medium wp-image-1449" title="First 10 Years of the W3C" src="http://jonontech.com/wp-content/uploads/2010/01/w3ctimeline-4500x1796-300x119.png" alt="" width="381" height="151" /></a><p class="wp-caption-text">First 10 Years of the W3C - Click for large version</p></div>
<p>Let&#8217;s start with the standards we know and love that make up web pages. Of course we have <a href="http://www.w3.org/TR/1999/REC-html401-19991224">HTML 4</a>, <a href="http://www.w3.org/TR/2008/REC-xhtml-basic-20080729">XHTML</a> and the eagerly awaited <a title="status is WD" href="http://www.w3.org/TR/2009/WD-html5-20090825/">HTML 5</a>. We make our HTML pretty using <a href="http://www.w3.org/TR/2008/REC-CSS1-20080411/">Cascading Style Sheets (CSS)</a> and we interact with the page using the <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113">Document Object Model (DOM)</a>, which has a large number of associated standards. Note AJAX is not a standard, despite what you might hear. The <a title="status is LCWD" href="http://www.w3.org/TR/2009/WD-XMLHttpRequest-20091119/">XMLHttpRequest</a> DOM API (which can be used to implement AJAX) is currently a last call working draft and may be a W3C standard soon. Another client side standard, <a href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">Scalable Vector Graphics (SVG)</a> never really took off and probably never will.</p>
<p>So we have standards to make interactive web pages that may or may not be semantically rich. But the world would be a better place if these pages can be accessed by as many people as possible. So we have accessibility standards as part of the Web Accessibility Initiative (<a title="WAI" href="http://www.w3.org/WAI/">WAI</a>). These include <a title="status is REC" href="http://www.w3.org/TR/2008/REC-WCAG20-20081211/">Web Content Accessibility Guidelines (WCAG)</a> for your web page and the imminent <a title="status is WD" href="http://www.w3.org/TR/2009/WD-wai-aria-20091215/">Accessible Rich Internet Applications (WAI-ARIA)</a>.</p>
<p>Excellent! Our HTML is neat, we&#8217;ve styled it, and all humans can interact with it. But what about the machines? They don&#8217;t understand our badly structured markup. If we want machines to be able to understand the content, we need to engage with the semantic web standards and <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">Resource Description Framework (RDF)</a>. The UK public sector is keen on <a title="status is WD" href="http://www.w3.org/TR/2009/WD-rdfa-in-html-20091015/">HTML+RDFa</a> although this is not a W3C standard yet. You can query your RDF data set using <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/">SPARQL</a> and define your ontology (formal representation of concepts and relations between them) using the <a href="http://www.w3.org/TR/2009/REC-owl2-primer-20091027/">Web Ontology Language (OWL, not WOL)</a>. While we&#8217;re at it, a related and very succesful standard which touches my world is the <a title="Dublin Core Metadata Standard" href="http://en.wikipedia.org/wiki/Dublin_Core">Dublin Core Metadata Standard</a>, which is an <a title="ISO standard" href="http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=52142">ISO standard</a>. I like this <a id="u.9y" title="good introduction to Semantic Web standards" href="http://blogs.techrepublic.com.com/tech-manager/?p=2716">good introduction to Semantic Web standards</a> if you want to read more.</p>
<h2>The Biggest Standard of the Naughties</h2>
<p><a href="http://www.w3.org/TR/2008/REC-xml-20081126/">Extensible Markup Language (XML)</a> is a hugely successful standard. If you judge the success of a standard by its adoption (which I do), it was the Hit of the Decade. <a href="http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/">XML Schema (XSD)</a> has replaced the ill-thought-out DTD standard for defining XML structures. Other child standards include the node selection language <a href="http://www.w3.org/TR/2007/REC-xpath20-20070123/">XPath</a> and query language <a href="http://www.w3.org/TR/2007/REC-xquery-20070123/">XQuery</a>. <a href="http://www.w3.org/TR/1999/REC-xslt-19991116">XSL Transformations (XSLT)</a> is my favourite templating language. <a href="http://www.w3.org/TR/2006/REC-xinclude-20061115/">XML Inclusions (XInclude)</a> joins XML documents together. They&#8217;ve also given us <a href="http://www.w3.org/TR/2009/REC-xforms-20091020/">XForms</a> to collect data &#8211; sadly it hasn&#8217;t taken off as I&#8217;d have liked.</p>
<p>Also XML related, the Web Services Standards have given us a wonderful way to make remote services play together. The Holy Trinity behind Web Services are <a href="http://www.w3.org/TR/2007/REC-soap12-part0-20070427/">SOAP</a> (previously Simple Object Access Protocol) to define the message formats, <a href="http://www.w3.org/TR/2007/REC-wsdl20-primer-20070626">Web Services Description Language (WSDL)</a> to give service descriptions and <a title="Universal Description, Discovery and Integration (UDDI)" href="http://en.wikipedia.org/wiki/UDDI">Universal Description, Discovery and Integration (UDDI)</a> to find the services. UDDI is actually an OASIS specification, not W3C, but it fits better here.</p>
<h2>OASIS standards</h2>
<div>All of the standards mentioned so far are open, and unless otherwise stated, are looked after by the <a href="http://www.w3.org/">World Wide Web Consortium (W3C)</a> and the <a title="Internet Engineering Task Force (IETF)" href="http://www.ietf.org/">Internet Engineering Task Force (IETF)</a>. These guys look after the Web as we know it. However, there are other standards bodies that create open standards that are more application specific, and some bodies that create standards which might not be considered truly open. Below are some of the important ones.</div>
<p><a title="OASIS" href="http://www.oasis-open.org/who/">OASIS</a> (Organization for the Advancement of Structured Information Standards), in their own words, &#8220;drives the development, convergence and adoption of open standards for the global information society&#8221;. The OASIS standards that touch my world include, in no particular order:</p>
<div>
<ul>
<li><a href="http://xml.coverpages.org/cmis.html">Content Management Interoperability Services (CMIS)</a> &#8211; Okay, so this isn&#8217;t actually a standard yet, but it is well on the way. It will allow for interoperability between Content Repositories</li>
<li><a href="http://www.oasis-open.org/specs/#wsrpv2.0">Web Services for Remote Portlets (WSRP)</a> &#8211; Allows portals to include remote portlets. This is probably going to lose to the newer, simpler portlet/widget ideas.</li>
<li>
<div><a href="http://www.oasis-open.org/specs/#uddiv3.0.2">Universal Description, Discovery and Integration (UDDI)</a> &#8211; mentioned earlier. The third pillar of Web Services</div>
</li>
<li><a href="http://www.oasis-open.org/specs/#samlv2.0">Security Assertion Markup Language (SAML)</a> &#8211; Used for exchanging authentication and authorization data between security domains. I think this will also lose to newer protocols.</li>
<li>
<div><a href="http://www.oasis-open.org/specs/#ditav1.1">Darwin Information Typing Architecture (DITA)</a> &#8211; A presentation neutral component-oriented XML content standard, which competes with another OASIS standard, <a href="http://www.oasis-open.org/specs/#dbv5.0">DocBook</a>, which I know very little about.</div>
</li>
<li>
<div><a title="eXtensible Resource Descriptor Sequence (XRDS)" href="http://docs.oasis-open.org/xri/2.0/specs/cd02/xri-resolution-V2.0-cd-02.html">eXtensible Resource Descriptor Sequence (XRDS)</a> &#8211; An XML format for discovery of metadata about a resource. Actually part of another standard, but that&#8217;s just details.</div>
</li>
</ul>
<p><a href="http://jonontech.com/wp-content/uploads/2010/01/StandardsBodies.jpg"><img class="aligncenter size-medium wp-image-1471" title="StandardsBodies" src="http://jonontech.com/wp-content/uploads/2010/01/StandardsBodies-300x98.jpg" alt="" width="300" height="98" /></a></p>
<div>
<h2>Authentication and Private Data Portability</h2>
</div>
<div>OASIS tends to focus on fairly large, complex standards which are always at risk from smaller standards which are often easier to implement so have less of a barrier to adoption. The standards that I think will beat SAML include <a title="OpenID" href="http://en.wikipedia.org/wiki/Openid">OpenID</a> which has taken the web by storm recently and <a title="OAuth" href="http://en.wikipedia.org/wiki/OAuth">OAuth</a>. OpenID (under the <a title="OpenID Foundation" href="http://openid.net/foundation/">OpenID Foundation</a>) is a web single sign-on protocol similar to SAML. OAuth (now under the IETF) allows a site to request private user data from another site. Both OpenID and OAuth above rely of XRDS. While we&#8217;re talking about users and social networks, other important not-quite-standards are listed below. A great article to learn more about these is the &#8220;<a href="http://sites.google.com/site/oauthgoog/Overlap">Overlap of identity technologies</a>&#8221; worked example from Google.</div>
<ul>
<li>
<div><a title="OpenSocial" href="http://www.opensocial.org/">OpenSocial</a> (Google) &#8211; for building social applications (widgets) and share data across networks</div>
</li>
<li>
<div><a id="ntxr" title="Friend of a Friend" href="http://www.foaf-project.org/">Friend of a Friend</a> (FOAF) &#8211; defines an open technology for connecting social Web sites and the people in them. It uses RDF and OWL.</div>
</li>
<li>
<div><a id="hmsa" title="Portable Contents" href="http://portablecontacts.net/draft-spec.html">Portable Contents</a> &#8211; for moving your social graph around the internet with you</div>
</li>
</ul>
<h2>Content Repository Access, and Java Community Standards</h2>
<div>CMIS is a Content Repository access standard. Another very successful repository standard you all know well is SQL, which has been a standard with both the <a title="American National Standards Institute" href="http://en.wikipedia.org/wiki/American_National_Standards_Institute">American National Standards Institute</a> (ANSI) and the <a title="International Organization for Standardization" href="http://en.wikipedia.org/wiki/International_Organization_for_Standardization">International Organization for Standardization</a> (ISO) for over 20 years. File system standards haven&#8217;t seen the same joy, with most major operating systems using their own standard.</div>
<div>Another open content repository standard is the <a id="vv90" title="Java Content Repository" href="../2009/11/26/cmis-jcr-and-osgi-for-idiots/">Java Content Repository</a> (JCR) from the <a id="v-xy" title="Java Community Process" href="../2009/11/26/cmis-jcr-and-osgi-for-idiots/">Java Community Process</a> (JCP) Programme. Now while these standards are Java language focussed, they are still open. JCP standards are defined in Java Specification Requests (JSRs), of which there are other 300. Some important, well adopted JCP standards include:</div>
<ul>
<li>
<div>JSR 170 and 283 for the Java Content Repository</div>
</li>
<li>
<div>JSR 168 and 286 for Java Portlet Specification</div>
</li>
<li>JSR 53, 152 and 245 for various versions of <a title="Java Servlet" href="http://en.wikipedia.org/wiki/Java_Servlet">Java Servlet</a> and <a title="JavaServer Pages" href="http://en.wikipedia.org/wiki/JavaServer_Pages">JavaServer Pages</a> (JSP)</li>
<li>
<div>
<div>JSR 314 for <a title="JavaServer Faces" href="http://en.wikipedia.org/wiki/JavaServer_Faces">JavaServer Faces</a> (JSF)</div>
</div>
</li>
<li>
<div>
<div>JSR 255 for <a title="Java Management Extensions" href="http://en.wikipedia.org/wiki/Java_Management_Extensions">Java Management Extensions</a> (JMX)</div>
</div>
</li>
</ul>
<h2>Syndication</h2>
<div>
<div>For syndication we have <a id="g5d5" title="RSS" href="http://en.wikipedia.org/wiki/RSS">RSS</a>, which is looked after by the <a title="RSS Advisory Board" href="http://en.wikipedia.org/wiki/RSS_Advisory_Board">RSS Advisory Board</a> (the guy that fixes my boiler is on it) and <a id="gafp" title="AtomPub" href="http://www.ietf.org/rfc/rfc4287.txt">AtomPub</a>, which is an IETF standard. An extension to these, <a id="vuoy" title="PubSubHubbub" href="http://code.google.com/p/pubsubhubbub/">PubSubHubbub</a>, is a Google project which added near-realtime notification to RSS and AtomPub. My boiler guy thinks this <a id="vsym" title="specification has holes" href="http://www.xn--8ws00zhy3a.com/blog/2009/11/pubsubhubbub-security-concerns">specification has holes</a>. For outlines, we have OPML (Outline Processor Markup Language). For example, here is <a href="http://jonontech.com/opml.xml">my blogroll as OPML</a>.</div>
</div>
<h2>Things that start with Open</h2>
<p>I thought I&#8217;d end with some things I like that aren&#8217;t actually standards, but use the word Open in their title.</p>
<ul>
<li><a id="l_:r" title="OpenSearch" href="http://www.opensearch.org/Home">OpenSearch</a> &#8211; A set of formats designed to make sharing search results easier</li>
<li><a href="http://www.openstreetmap.org/">OpenStreetMap</a> &#8211; Creates and provides free geographic data such as street maps to anyone who wants them. This is more about Open Data than Open Standards, but anyway.</li>
<li><a id="zo9o" title="OpenCalais" href="http://www.opencalais.com/">OpenCalais</a>- A service that semantically parses your content and identifies people, events, places and more. I used the WordPress plugin <a id="oa.:" title="Tagaroo" href="http://tagaroo.opencalais.com/">Tagaroo</a> on this blog for fun. Only basic use is free, though. Probably doesn&#8217;t really belong here. However, below is a screenshot that shows Tagaroo suggesting tags and images for this blog post. The power of semantic analysis.</li>
</ul>
<p><a href="http://jonontech.com/wp-content/uploads/2010/01/tagaroo.jpg"><img class="aligncenter size-full wp-image-1447" title="Tagaroo WordPress Plugin" src="http://jonontech.com/wp-content/uploads/2010/01/tagaroo.jpg" alt="" width="709" height="525" /></a><span class="status action"><strong> </strong></span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jonontech.com/2010/01/10/an-incomplete-directory-of-open-standards/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>CMIS, JCR and OSGi for Idiots</title>
		<link>http://jonontech.com/2009/11/26/cmis-jcr-and-osgi-for-idiots/</link>
		<comments>http://jonontech.com/2009/11/26/cmis-jcr-and-osgi-for-idiots/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 15:42:42 +0000</pubDate>
		<dc:creator>Jon Marks</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Beer]]></category>
		<category><![CDATA[chemistry]]></category>
		<category><![CDATA[cmis]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[felix]]></category>
		<category><![CDATA[jackrabbit]]></category>
		<category><![CDATA[jcr]]></category>
		<category><![CDATA[osgi]]></category>
		<category><![CDATA[sling]]></category>

		<guid isPermaLink="false">http://jonontech.com/?p=1302</guid>
		<description><![CDATA[I had the chance to drink beer and talk shit with the great David Nüscheler, which inspired me to draw a picture all about JCR, CMIS and OSGi. ]]></description>
			<content:encoded><![CDATA[<blockquote class="dylan"><p>The empty-handed painter from your streets<br />
Is drawing crazy patterns on your sheets.<br />
- IT&#8217;S ALL OVER NOW, BABY BLUE</p></blockquote>
<p>Every now and again, certain tumultuous events coincide that makes us feel insignificant. A bit like a total solar eclipse, which is a rare and humbling thing. This week three seemingly unconnected occurances came to pass which made me stop and think. Firstly, <a href="http://www.nytimes.com/external/idg/2009/11/23/23idg-momentum-builds-for-open-content-management-standard-91825.html">CMIS was mentioned in the New York Times</a>. Yes, <em>the </em>New York Times. Secondly, Jeff Potts released his &#8220;<a href="http://ecmarchitect.com/archives/2009/11/23/1094">Getting Started with CMIS</a>&#8221; tutorial. And, finally, I had the chance to drink beer and talk shit with the great <a href="http://jcp.org/en/press/news/specLeadStars/commFocus_stars_nuescheler">David Nüscheler</a>.</p>
<p>So, to honour all of this, I drew a picture.</p>
<p>Why, you may ask. Well, after chatting to David, I felt inspired to think (and blog) more about the <a href="http://wiki.apache.org/jackrabbit/JcrLinks">JCR</a>, <a href="http://wiki.alfresco.com/wiki/CMIS">CMIS </a>and <a href="http://en.wikipedia.org/wiki/OSGi">OSGi</a>. But while doing my cursory research (that&#8217;s a strong word for what I do, but anyway), I discovered that there were quite a few things I knew nothing about, and a few products that I&#8217;d never heard of. I also coined the word Dignorance in honour of my newly found knowledge gaps.</p>
<p><a href="http://jonontech.com/wp-content/uploads/2009/11/Dignorance.jpg"><img class="aligncenter size-medium wp-image-1304" title="Dignorance" src="http://jonontech.com/wp-content/uploads/2009/11/Dignorance-300x134.jpg" alt="Dignorance" width="300" height="134" /></a></p>
<p>So here is a small version of the picture. Click for a large one, or <a href="http://jonontech.com/wp-content/uploads/2009/11/JCRCMISOverview_v1.4.pdf">download it as PDF</a>. Do whatever you want to with it. If you think it is useful, or think it needs fixing, leave comments here or get in touch. I&#8217;m sure it&#8217;s completely wrong all over the place. If you want the original Visio drawing to play with, let me know.</p>
<p><a href="http://jonontech.com/wp-content/uploads/2009/11/JCRCMISOverview_v1.4.jpg"><img class="aligncenter size-medium wp-image-1349" title="JCRCMISOverview_v1.4" src="http://jonontech.com/wp-content/uploads/2009/11/JCRCMISOverview_v1.4-205x300.jpg" alt="JCRCMISOverview_v1.4" width="205" height="300" /></a></p>
<p>Next time I come to your office, I except to see this printed as A3 and stuck on your wall.</p>
<p><strong>UPDATE 18 Dec 2009</strong>: I&#8217;ve written an article on CMS Wire which explains some of this. Have a look:</p>
<p><a href="http://www.cmswire.com/cms/web-cms/wcm-field-notes-the-skinny-on-jcr-cmis-and-osgi-006279.php">http://www.cmswire.com/cms/web-cms/wcm-field-notes-the-skinny-on-jcr-cmis-and-osgi-006279.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jonontech.com/2009/11/26/cmis-jcr-and-osgi-for-idiots/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>The Cloud &#8211; A Crock of Shit</title>
		<link>http://jonontech.com/2009/04/21/the-cloud-a-crock-of-shit/</link>
		<comments>http://jonontech.com/2009/04/21/the-cloud-a-crock-of-shit/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 22:21:22 +0000</pubDate>
		<dc:creator>Jon Marks</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cmis]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[pluck]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://jonontech.com/?p=570</guid>
		<description><![CDATA[Oracle have bought SUN and some people are wondering if it was a Cloud-Play. They cite Larry's well-reported outburst against the cloud. Well, Larry, you've got a friend in me. The Cloud is a Crock of Shit.]]></description>
			<content:encoded><![CDATA[<blockquote class="dylan"><p>Mama, put my guns in the ground<br />
I can&#8217;t shoot them anymore.<br />
That long black cloud is comin&#8217; down<br />
I feel like I&#8217;m knockin&#8217; on heaven&#8217;s door.<br />
- KNOCKIN&#8217; ON HEAVEN&#8217;S DOOR</p></blockquote>
<div>It&#8217;s happened. Oracle have bought SUN. Some people are wondering if it was a <a id="smnk" title="Cloud-Play" href="http://asserttrue.blogspot.com/">Cloud-Play</a> and cite <a id="s2qp" title="Larry's well-reported outburst" href="http://news.cnet.com/8301-13953_3-10052188-80.html">Larry&#8217;s well-reported outburst</a> against the cloud. For those that haven&#8217;t seen it, he says:</div>
<blockquote>
<div>The interesting thing about cloud computing is that we’ve redefined cloud computing to include everything that we already do. I can’t think of anything that isn’t cloud computing with all of these announcements. The computer industry is the only industry that is more fashion-driven than women’s fashion. Maybe I’m an idiot, but I have no idea what anyone is talking about. What is it? It’s complete gibberish. It’s insane. When is this idiocy going to stop?</div>
</blockquote>
<div>Well, I&#8217;m with Larry on this one. I think the Cloud is a crock of shit. I understand all the words people are using, but I don&#8217;t understand what&#8217;s new here. I&#8217;m even a member of the <a id="bg41" title="LinkedIn Cloud Networking Group" href="http://www.linkedin.com/groups?gid=1099017">LinkedIn Cloud Networking Group</a> &#8217;cause all the cool kids are there. But I don&#8217;t get it. Maybe Wikipedia, the infallible source of all knowledge, will clarify things. Here&#8217;s their picture:</div>
<div>
<div id="attachment_572" class="wp-caption aligncenter" style="width: 649px"><a href="http://jonontech.com/wp-content/uploads/2009/04/thecloud.jpg"><img class="size-full wp-image-572" title="The Cloud" src="http://jonontech.com/wp-content/uploads/2009/04/thecloud.jpg" alt="Okay, I see. It all makes sense now." width="639" height="447" /></a><p class="wp-caption-text">Okay, I see. It all makes sense now.</p></div>
</div>
<p>Right, that settles it. Let&#8217;s dig a bit deeper. Which services and applications currently live in the Cloud (again, from Wikipedia, which is really a good a place as any for this):</p>
<ul>
<li>SaaS Applications such as Google Apps, Salesforce &#8211; they&#8217;re in monster data centers.</li>
<li>Hosted Social Networking Platforms, such as FaceBook &#8211; okay, another monster data center.</li>
<li>Storage, such as Amazon S3 or Mobile me &#8211; more big data centers.</li>
<li>Operating systems, such as Azure &#8211; Okay, so we can host our OS in monster data centers too and access it remotely. Hold on. Are we just going back to the dumb terminal/thin client model? Did we have The Cloud many moons ago and let it slip when we installed big fat operating systems on our home computers?</li>
</ul>
<p>At least we&#8217;re seeing a pattern here. Excellent, we can make a definition &#8211; <em>The cloud consists of big data centers with virtualisation.</em> But these also allegedy live in the cloud:</p>
<ul>
<li>Peer-to-peer applcations, such as Skype or BitTorrent &#8211; now these are the opposite. Not centralised at all. In this case, we&#8217;re The Cloud.</li>
<li>Open services such as OpenID &#8211; this is allegedly a &#8220;Cloud Service&#8221;. It&#8217;s distributed too. I can pick my provider.</li>
<li>Proprietory services such as Google Maps or PayPal &#8211; again, &#8220;Cloud Services&#8221;. Sounds like a Cloud Service is anything that is accessed directly from a client&#8217;s browser as part of a mash-up. Server-to-server communication isn&#8217;t sexy enough for The Cloud.</li>
<li>Google Analytics / Omniture / WebTrends &#8211; Yep, they must be Analytics in The Cloud. Client side JavaScript integration. Tick.</li>
<li>What about Social Community in the Cloud, for example from <a id="rn98" title="Pluck" href="http://www.pluck.com/">Pluck</a> ? JavaScript integration. Tick. But wait. Each Pluck client has their own hardware. It isn&#8217;t shared at all. Sorry, Pluck. You ain&#8217;t got no Cloud. Just racks and racks of tin.</li>
</ul>
<p>Shock! Horror! It&#8217;s starting to sound like The Cloud is just another word for The Internet. You&#8217;ll be glad to know that many others are as confused as Larry and me. <a id="k2m9" title="Richard Stallman" href="http://www.theinquirer.net/inquirer/news/035/1046035/stallman-warns-against-cloud">Richard Stallman</a> , founder of the Free Software Foundation doesn&#8217;t get it. And <a id="j2:p" title="Joel on Software" href="http://discuss.joelonsoftware.com/default.asp?joel.3.656786.16">Joel on Software</a>, who rocks, doesn&#8217;t get it either. Get this, even the <a id="wjk5" title="Cloud Computing Journal" href="http://cloudcomputing.sys-con.com/node/723424">Cloud Computing Journal</a> (CCJ) says it is all hype and agrees with Larry. They say:</p>
<blockquote><p>The current fad of butchering the term &#8220;Cloud Computing&#8221; to bring sexy back to the *aaS (anything as a service) model is embarrassing. More embarrassing is the fact that I agree with Larry Ellison &#8230;</p></blockquote>
<p>As <a href="http://twitter.com/kasthomas/statuses/1577656819">Kas jokingly said to me on Twitter</a>: You have to have a constant flow of new buzzwords in this business. Otherwise analysts can&#8217;t write&#8221;XYZ IsDead&#8221; articles 2 yrs later. Well I don&#8217;t want hype and buzzwords. I want standards. Maybe any protocol or standard with an HTTP binding is a Cloud Protocol? <a id="is-x" title="Wikipedia's list of &quot;Cloud Standards&quot;" href="http://en.wikipedia.org/wiki/Cloud_computing#Standards">Wikipedia&#8217;s list of &#8220;Cloud Standards&#8221;</a> is a joke at the time of writing. A mix of existing web standards and, well, nonsense: HTTP, XMPP, SSL, Atom, AJAX (what!?!), HTML 5, LAMP (somebody shoot me), XML, JSON, WebServices/REST (like they&#8217;re the same thing). What a mess that is. Maybe, just maybe, <a id="c23v" title="CMIS" href="../2009/04/09/cmis-is-xpath-just-a-bit-too-tricksy/">CMIS</a> is going to give us Content In The Cloud.</p>
<div id="attachment_581" class="wp-caption aligncenter" style="width: 482px"><a href="http://jonontech.com/wp-content/uploads/2009/04/cloud-computing-simply-explained-cartoon.jpg"><img class="size-full wp-image-581" title="Cloud Computing Simply Explained" src="http://jonontech.com/wp-content/uploads/2009/04/cloud-computing-simply-explained-cartoon.jpg" alt="Get it yet?" width="472" height="390" /></a><p class="wp-caption-text">Get it yet?</p></div>
<p>You may ask yourself, is anyone working on Cloud Computing standards? The same CCJ article states that:</p>
<blockquote><p>C&#8217;mon, people. Don&#8217;t give into the generalist hype.  <strong>Cloud computing is real</strong>.  &#8220;THE Cloud?&#8221;  Not so much.</p></blockquote>
<p>Now I hear what he is saying, and there is some real work going on behind the scenes, but I don&#8217;t get what Cloud Computing really is either. The recent <a id="i8:o" title="Open Cloud Manifesto" href="http://www.opencloudmanifesto.org/opencloudmanifesto1.htm">Open Cloud Manifesto</a> seems very vague to me. It is by its own admission &#8220;meant to begin the conversation, not define it.&#8221; But what is the conversation it is meant to be starting?  The <a id="tl38" title="Open Cloud Consortium" href="http://www.opencloudconsortium.org/about.html">Open Cloud Consortium</a> is trying to do something but their website doesn&#8217;t explain much to me. They even have a testbed, but I don&#8217;t know what they&#8217;re testing. The <a id="w2uo" title="Unified Cloud Interface Project" href="http://code.google.com/p/unifiedcloud/">Unified Cloud Interface Project</a> is real and seems to be trying to merge Cloud Computing with the Semantic Web. I haven&#8217;t <a id="a1mh" title="grokked" href="http://en.wikipedia.org/wiki/Grok">grokked</a> this yet but it seems to me that if the Semantic Web standards (RDF/OWL/SPARQL) are losing out in the real world to <a id="l:ie" title="Microformats" href="http://microformats.org/">Microformats</a> , it&#8217;s going to be a while before any standards come out of this. There are many other <a id="m7-x" title="expert groups" href="http://www.fcw.com/Articles/2009/03/23/web-cloud-computing.aspx">expert groups</a> that are putting their heads together and telling us that Cloud Computing is in its infancy and needs standards. But I&#8217;ve yet to find the detail outlining exactly what we&#8217;re trying to standardise. Whatever it is must be a pretty touchy subject, though, as different groups are already <a id="gatc" title="falling out with one another" href="http://news.cnet.com/8301-19413_3-10206741-240.html">falling out with one another</a> and refusing to endorse things.</p>
<p>It&#8217;s all too much for little old me. Doesn&#8217;t seem like The Cloud is going to help me much in the short term at all. So, what am I going to do about it? Absolutely nothing. I&#8217;m going to sit back and ignore The Cloud until some draft specifications start to emerge. Then I&#8217;m going to read them, fail to understand them, but understand what I&#8217;m failing to understand. And that&#8217;ll be a step in the right direction.</p>
<p>In this country, you gotta make the buzzwords first. Then when you get the buzzwords, you get the power. <a id="jbqi" title="Then when you get the power, then you get the women." href="http://www.imdb.com/title/tt0086250/quotes">Then when you get the power, then you get the women.</a></p>
<p><strong>UPDATE 24 April</strong>: Since posting this, some helpful experts have helped me enormously by helping to separate the wheat from the crap. The useful stuff is hard to find, so read the comments below. And follow <a href="http://www.twitter.com/stevecla ">@stevecla</a> and <a href="http://www.twitter.com/jamesurquhart ">@jamesurquhart</a> on Twitter.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonontech.com/2009/04/21/the-cloud-a-crock-of-shit/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>CMIS &#8211; Is XPath Just A Bit Too Tricksy?</title>
		<link>http://jonontech.com/2009/04/09/cmis-is-xpath-just-a-bit-too-tricksy/</link>
		<comments>http://jonontech.com/2009/04/09/cmis-is-xpath-just-a-bit-too-tricksy/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 13:08:43 +0000</pubDate>
		<dc:creator>Jon Marks</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[cmis]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[ECM]]></category>
		<category><![CDATA[jcr]]></category>
		<category><![CDATA[jsr-170]]></category>

		<guid isPermaLink="false">http://jonontech.com/?p=445</guid>
		<description><![CDATA[The Content Management Interoperability Services is gaining in popularity. This posts gives a quick overview of CMIS, the underlying virtual relational database model, and asks a few questions about why SQL was chosen over XPath.]]></description>
			<content:encoded><![CDATA[<blockquote class="dylan"><p>Sara, Sara,<br />
Whatever made you want to change your mind?<br />
Sara, Sara,<br />
So easy to look at, so hard to define.<br />
- SARA</p></blockquote>
<h3><strong>So What Is CMIS?</strong></h3>
<div>CMIS (or the <a id="mc0u" title="Content Management Interoperability Services" href="http://en.wikipedia.org/wiki/Content_Management_Interoperability_Services">Content Management Interoperability Services</a> ) looks pretty sweet and, according to the general buzz, is going to do well. The recent <a href="http://aiim-iecm.org/CMISDemoe/">demo at AIIM</a>, and the examples created by various vendors have made the effort feel very alive. For the uninitiated, CMIS is a lowest common denominator API which can sit on top of any Enterprise Content Management repository. It has many practical uses, including a search across multiple ECM repositories, workflows and processes that span repositories and, my favourite, an ECM Mashup.  I&#8217;m not going to go into the detail, as that has been done better than I ever could in other places. For those that don&#8217;t like detail, however, I&#8217;m going to try to summarise over 150 pages of specification in a paragraph. Look at the picture below, then take a deep breath.</div>
<div><a href="http://jonontech.com/wp-content/uploads/2009/04/cmis-diagram-460.jpg"><img class="aligncenter size-full wp-image-446" title="Overview of CMIS architecture" src="http://jonontech.com/wp-content/uploads/2009/04/cmis-diagram-460.jpg" alt="Overview of CMIS architecture" width="471" height="319" /></a></div>
<div>CMIS provides a logical data model to represent an ECM repository with four base types: documents (versionable content objects with an optional binary attachment), folders (which contain other folders or documents), a relationship (between folders and documents) and policies (for security, retention, workflow or anything else). Content objects are strongly typed, and a repository can specify its own types by subtyping (adding properties to) one of the four basic types. The folders form a directed acyclic graph and a document can live in zero (unfiled), one or many (multi-filed) folders. The API provides basic create, read, update and delete (CRUD) operations, the ability to navigate the relationships in the graph, and the ability to search the repository using a combination of structured property searches and unstructured full text searches. The query language is based on <a id="yezt" title="SQL" href="http://en.wikipedia.org/wiki/Sql">SQL</a>. Not all implementations need to support all of the CMIS features, and the API provides a means for a client application to interrogate a repository to discover the features which it supports. CMIS aims to be independent of transport mechanisms for the interrogating clients. For the first release, the implementation must support both <a id="ls44" title="SOAP based Web Services" href="http://en.wikipedia.org/wiki/Simple_Object_Access_Protocol">SOAP based Web Services</a> and <a id="yfwa" title="REST/AtomPub" href="http://en.wikipedia.org/wiki/Atom_%28standard%29">REST/AtomPub</a> (<a href="http://www.ietf.org/internet-drafts/draft-ietf-atompub-protocol-15.txt">APP</a>). <a id="q3d1" title="WebDAV" href="http://en.wikipedia.org/wiki/Webdav">WebDAV</a> was not included.</div>
<div>If you&#8217;re new to CMIS and want more than a paragraph explaining what it is, I&#8217;d recommend the following starting points:</div>
<ul>
<li>Dr David Choy from EMC (who really knows his stuff!) gives an friendly overview on YouTube: <a id="dnry" title="Part I" href="http://www.youtube.com/watch?v=83tt0LgZudA">Part I</a> and <a id="mp85" title="Part II" href="http://www.youtube.com/watch?v=yhoTOTl6phc&amp;feature=related">Part II</a></li>
<li>The Alfresco CMIS wiki &#8211; <a href="http://wiki.alfresco.com/wiki/CMIS">http://wiki.alfresco.com/wiki/CMIS</a></li>
<li>Kas Thomas from <a id="j_sk" title="CMS Watch on CMIS" href="http://www.cmswatch.com/Trends/1361-CMIS:%C2%A0the-new-Lingua-Franca-of-ECM">CMS Watch on CMIS</a></li>
<li>The <a id="sp9n" title="EMC CMIS Page" href="https://community.emc.com/community/labs/cmis">EMC CMIS Page</a></li>
<li>The <a href="http://www.slideshare.net/johnnewton/cmis-and-interoperability-aiim-2009">CMIS and Interoperability &#8211; AIIM 2009 presentatio</a>n from Alfresco on SlideShare &#8211; very useful</li>
<li>Laurence Hart&#8217;s <a href="http://wordofpie.com/tag/cmis/">Word of Pie blog</a></li>
<li>[<strong>13 Apr 2009 UPDATED VERSION</strong>] Read <a href="http://www.oasis-open.org/committees/document.php?document_id=31580">version 0.6 of the specification</a> (it&#8217;s longer than you think but a lot of prose)</li>
</ul>
<p>I should also mention here that there is a fair bit of debate about whether CMIS is really RESTful. It&#8217;s hard to argue with <a id="feni" title="Roy Fielding" href="http://roy.gbiv.com/untangled/2008/no-rest-in-cmis">Roy Fielding</a> who defined the term. But a misuse of the term REST hasn&#8217;t stopped <a id="l_ei" title="other APIs" href="http://www.flickr.com/services/api/request.rest.html">other APIs</a> from gaining enormous popularity. This posting is only going to talk about Part I of the specification (the Domain Model), not Part II (the SOAP and APP bindings).</p>
<h3><strong>CMIS and the Java Content Respository</strong></h3>
<p>The CMIS goal has a lot in common with the <a id="yr6x" title="Java Content Repository" href="http://en.wikipedia.org/wiki/Java_Content_Repository">Java Content Repository</a> (<a id="o4_i" title="JSR 170" href="http://jcp.org/aboutJava/communityprocess/maintenance/jsr170/index.html">JSR 170</a>/283). The main difference that everyone cites is the fact the JCR interface is Java only, while CMIS allows access to any implementation. CMIS is much simpler, which may give it the <a id="bacs" title="kiss" href="http://en.wikipedia.org/wiki/KISS_principle">kiss</a> of life that the more functionally rich JCR seems to lack. CMIS is accessed via a remote API, while the JCR is accessed via Java methods, but I don&#8217;t think this difference is fundamental. The CMIS specification <em>could</em> have added a remote HTTP access protocol on top of the JCR to overcome the differences mentioned. Most of the contributors to the CMIS specification were also involved in the JCR, so the fact that this didn&#8217;t happen suggests to me that they felt something else was amiss. Get your chainsaws out &#8217;cause I&#8217;m going to go out on a limb here and suggest that the <em><strong>main difference between CMIS and the JCR API lies in the query language choice &#8211; XPath versus SQL</strong></em>. Note that SQL is an optional extra in the JCR spec, while XPath currently isn&#8217;t an option in CMIS.</p>
<p>Below are some of my thoughts based on my limited understanding of the standard. I&#8217;m positive that the points I&#8217;m going to raise have been discussed in the CMIS committee meetings, and equally positive that I&#8217;m completely wrong on all of this. I&#8217;ve probably missed something obvious too. But I would be extremely grateful if those in the know could point me to any resources that answer the questions I have. My googling skills didn&#8217;t unearth anything.</p>
<h3><strong>The CMIS Relational View</strong></h3>
<p>In order to understand the choice of query language, one must first understand the virtual relational view of a CMIS repository. This consists of a collection of virtual tables. A virtual table exists for every queryable object type (content type if you prefer) in the repository. Each row in these virtual tables correspond to an instance of the corresponding object type (or of one of its subtypes). A column exists for every property that the object type has. The figure below, taken from the specification, tries to explain this. Someone needs to draw a prettier version of this.</p>
<p><a href="http://jonontech.com/wp-content/uploads/2009/04/cmisrelationalmodel.jpg"><img class="aligncenter size-full wp-image-447" title="cmisrelationalmodel" src="http://jonontech.com/wp-content/uploads/2009/04/cmisrelationalmodel.jpg" alt="cmisrelationalmodel" width="534" height="380" /></a></p>
<p><em><strong>Aside for another posting:</strong></em> One thing worth thinking about would have been the benefit of implementing an <a id="ql60" title="entity-attribute" href="http://en.wikipedia.org/wiki/Entity-Attribute-Value_model">entity-attribute</a> (or &#8220;skinny table&#8221;) relational view instead of a table per object. While the SQL queries against such a repository are dog-ugly, they would have many of the benefits of XPath I think.</p>
<h3><strong>So Why not XPath?</strong></h3>
<p>When reading the spec, I kept asking myself why the query language chosen is based on SQL (called CMIS SQL or CQL), not XPath like the JCR. The only reference I found to XPath and CMIS was in <a id="yxmf" title="Russ Danner's blog" href="http://blogs.rivetlogic.com/rdanner/2008/10/11/alfresco-community-conference/">Russ Danner&#8217;s excellent blog</a> . He says:</p>
<blockquote><p>CMIS also specifies a SQL like query language. Unlike previously proposed standards that pushed XQUERY and XPATH, CMIS is adopting a well understood paradigm which I believe will only encourage its adoption.</p></blockquote>
<p>So this is the opposite view to mine. My instinct screams XPath to me for the following reasons:</p>
<ul>
<li>XPath is a more natural way to search a hierarchy. ANSI SQL doesn&#8217;t provide this functionality although extensions like Oracle CONNECT BY and SQL Server&#8217;s Common Table Expressions make it possible. Most implementations would involve creating a denormalised table which flattened the graph. The CMIS specification adds 2 extensions (IN_FOLDER and IN_TREE) which I find <a href="http://en.wikipedia.org/wiki/Code_smell">slightly smelly</a>.</li>
<li>An XPath result set can naturally contain content of different types. In the SQL model, each content type needs to be added to the result set which would usually mean a whole lot of UNIONS and ensure that the columns selected from each virtual table are the same. Except that CSQL doesn&#8217;t do UNIONS. For example, if I want to find all objects that are green, I far prefer<br />
<em><strong>XPATH:</strong> /root//*[@color='green']</em><br />
to<br />
<em><strong>SQL:</strong> SELECT * FROM OBJ_TYPE_ONE WHERE ( IN_TREE( , ‘ID000XXXXXXXX) ) AND ( ‘green’ = ANY COLOR)<br />
</em>which I&#8217;d have to issue for every object type as UNIONS are not supported. If I am querying multiple types I need to send multiple queries, and I can&#8217;t use ORDER BY across the types.</li>
<li>With the standard as it is, I can achieve content of different types in the same SQL resultset, but only if they are sub-types. I&#8217;m not a big fan of deep type inheritance trees. And most of the content repositories that I deal with don&#8217;t support content type inheritance natively.</li>
<li>I don&#8217;t need to change my XPath Queries if a new content type is added to the repository. Using SQL, I could dynamically generate the queries by using reflection (getTypes and getTypeDefinition) on the repository, but that&#8217;s an extra step.</li>
<li>The Navigation Services API calls could probably be replaced with more XPath queries. Calls such as getChildren, getDescendants, getObjectParents, getFolderParents,</li>
<li>Once I retrieve a document, I&#8217;d like to get the &#8220;folder breadcrumb&#8221;. I didn&#8217;t see an obvious way to do this. I think a multi-filed document might need the concept of a &#8220;primary folder&#8221; or, at least, an ordering of the folder-document containment relationship.</li>
<li>The pagination functionality feels slighlty unwieldy, sending SKIPCOUNT and MAXCOUNT as optional parameters to the query function. Not that this is solved by XPath, but I thought I&#8217;d mention it anyway.</li>
</ul>
<h3><strong>Maybe XPath is just too hard for the vendors?</strong></h3>
<p>So why didn&#8217;t they go with XPath? I think the biggest hint comes from the design goal is the CMIS specification:</p>
<blockquote><p>However, it is an explicit goal that CMIS will NOT require major product changes or significant data model changes like other standards such as JSR 170 have required.</p></blockquote>
<p>Wearing my developer hat, I think the API would be more useful if I could interogate it using XPath. However, from the point of view of the ECM vendor based on a relational database, <strong><em>maybe implementing an XPath search on their respository is just too damn hard</em></strong>! One would think that the vendors that support JCR already have done most of the heavy lifting. But not many vendors have implemented it, and maybe of those that have use <a title="Apache Jackrabbit" href="http://en.wikipedia.org/wiki/Apache_Jackrabbit">Apache Jackrabbit</a>.</p>
<p>So, in summary, my theory is that an XPath based query language is very difficult for the vendors to implement. Which means developers of CMIS clients are gonna have to bite the bullet and use CSQL. Which is still going to be great, and means we&#8217;re going to get far more CMIS enabled repositories than JCR ones. Which hopefully means the <a href="http://dev.day.com/microsling/content/blogs/main/cmisplugfest.html">Day CMIS PlugFest</a> is going to be a very busy event. But I do so love XPath, and here&#8217;s hoping that it makes it into a later version of the specification.</p>
<p>Rock on, CMIS.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonontech.com/2009/04/09/cmis-is-xpath-just-a-bit-too-tricksy/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>When CMS Memes Attack!</title>
		<link>http://jonontech.com/2009/04/04/when-cms-memes-attack/</link>
		<comments>http://jonontech.com/2009/04/04/when-cms-memes-attack/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 18:39:16 +0000</pubDate>
		<dc:creator>Jon Marks</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[alfresco]]></category>
		<category><![CDATA[cmis]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[ECM]]></category>
		<category><![CDATA[jsr-168]]></category>
		<category><![CDATA[jsr-170]]></category>
		<category><![CDATA[jsr-283]]></category>
		<category><![CDATA[jsr-286]]></category>
		<category><![CDATA[VAP]]></category>
		<category><![CDATA[VCM]]></category>
		<category><![CDATA[vignette]]></category>

		<guid isPermaLink="false">http://jonontech.com/?p=397</guid>
		<description><![CDATA[In response to the CMS Vendor Meme, Vignette posted a second meme which appears to have backfired. Luis Sala has posted a rather biting response to this, and I'd like to comment on some of his observations.]]></description>
			<content:encoded><![CDATA[<blockquote class="dylan"><p>&#8220;Oh no,&#8221; says the Sergeant. &#8220;I&#8217;ll have no such chat,<br />
And neither will I take it from snappy young brats,<br />
For if you insult me with one other word,<br />
I&#8217;ll cut off your heads in the morning.&#8221;<br />
- ARTHUR MCBRIDE</p></blockquote>
<p>In the beginning there was the <a href="http://jonontech.com/2009/03/25/celebrity-cms-deathmatch-part-3/">CMS Vendor Meme</a>, which turned into a light hearted and entertaining exercise in which over 20 CMS vendors participated. As a response to this, <a href="http://www.facebook.com/note.php?note_id=66185026034&amp;id=51429368686&amp;index=0">Vignette posted a second meme</a> which appears to have backfired. There aren&#8217;t going to be many (any?) responses, and <a href="http://sala.us/blog/?p=51">Luis Sala</a> has posted a rather biting response on his *personal* (not Alfresco&#8217;s) blog.</p>
<p>Before I comment on this, I&#8217;d like to say for the record that there is a lot about Vignette that I like. They were, without doubt, CMS pioneers. When Vignette V7 was released many moons ago, I genuinely believe it was the best Content Management System out there. Apart from a couple of major gripes, I still like the CMS and think certain aspects of it are uniquely attractive. VAP is one of the leading portals too. I hate the Dynamic Portal/Site integration but that&#8217;s just me. But I would still happily implement Vignette and do currently work with it.</p>
<p><a href="http://jonontech.com/wp-content/uploads/2009/04/meme_2.jpg"><img class="aligncenter size-medium wp-image-413" title="Bad Meme" src="http://jonontech.com/wp-content/uploads/2009/04/meme_2-299x300.jpg" alt="Bad Meme" width="299" height="300" /></a></p>
<p>Before reading this, make sure you read Luis&#8217; post <a href="http://sala.us/blog/?p=51">Vignette tries to start a WCM Vendor Meme (yawn!)</a>. I wonder if Vignette are going to respond to this, or just leave it at that. Vignette have lost their way a bit and I agree with a lot of the comments that Luis made. They have also been in the press quite a lot recently for a number of reasons, and I&#8217;m not going to repeat things that have been already said elsewhere. Some of the points in Luis&#8217; post have been discussed in the CMSWire article <a href="http://www.cmswire.com/cms/enterprise-cms/five-reasons-to-choose-vignette-or-not-003259.php">Five Reasons to Choose Vignette (or Not&#8230;)</a> by John Conroy and Irina Guseva. I am, however, going to add my thoughts to a few of Luis&#8217; comments.</p>
<blockquote><p>I would argue that one of the main reasons that happened was because Vignette, Interwoven and Documentum are entrenched in 7-15 year technologies and mindsets that have resulted in stagnation while the smaller, more agile vendors that ranked a little higher on the list can more successfully innovate and adapt to changing market conditions.</p></blockquote>
<p>I think is completely true that the speed of development of the ECM vendors mentioned is much slower. Compare Vignette VCM 7.3.0.1 to 7.6 &#8211; not as much progress as one would hope in about 5 years. It isn&#8217;t only Vignette &#8211; we&#8217;re still waiting for TeamSite 7 for example having had a sneak peak 2 years ago at GearUp 2007. But I blame the technologies more than the mindsets. In the Vignette CMS case, I&#8217;m going to point the finger at an extremely complex J2EE implementation using some technologies that are pretty old by current standards. Aim some monitoring software like <a href="http://www.quest.com/spotlight/overview.aspx">SpotLight </a>at the VCM, change and publish a simple content type, and watch the party. Quite staggering just how much is going on behind the scenes. Not surprising that it is complex to extend and change. In addition, I think the larger players are hamstrung by backward compatibility promises as they tend to support much larger, business critical implementations. You&#8217;d think this means that their upgrade paths are easier and more reliable, but sadly recent history his taught us the opposite.</p>
<blockquote><p>That’s probably one of the main reasons Vignette’s earnings continue to drop and, more alarmingly, Vignette Professional Services account for roughly 50% of their revenue. Very scary…</p></blockquote>
<p>Yes, Vignette&#8217;s PS account for a large part of their revenue. From the agency/systems integrator (that&#8217;s where I live) perspective, we are very cautious of this model. It doesn&#8217;t make our lives any easier when we need to compete against the vendor&#8217;s PS team if we recommend their CMS for an implementation. More and more small vendors are moving to the Partner Channel only model, which makes life much more pleasant for everyone. And I appreciate that the vendors need to ensure that partners have the skill to implement correctly and want to certify some parts of the solution, but I believe the Professional Services should be contracted to the partner, not directly to the client.</p>
<blockquote><p>All vendors must be very careful about claiming “massive scalability” as every implementation is unique and while the software may be capable of scaling in one use-case, it could die in sputtering, driveling fits in the other.</p></blockquote>
<p>Of course. Bad implementation can kill any software. Let me tell you a story that depresses me a bit. 10 years ago, Vignette had what I consider an excellent caching model. They used &#8220;Components&#8221; which actually ended up as output cached HTML fragments. They used Server Side Includes (SSIs) to allow for an extremely flexible mix of cached and dynamic content on the same page. They didn&#8217;t have a very sophisticated dependency graph based de-cache back then, but no-one really did. They were very proud of it, claimed it had multiple patents, and I think it was the dog&#8217;s bollocks (that&#8217;s a good thing for the non-UK readers). The model vanished in later versions, and was replaced completely when Vignette Application Portal (VAP) become the recommended delivery mechanism.</p>
<p>A couple of years ago I was presenting at Vignette Village 2007 with a customer. One of the main themes of this Village was that Vignette had the fastest, most scalable delivery mechanism in the universe, ever. Another main theme was that the product roadmap was very driven by customer demand. &#8220;You asked, we listened&#8221; kind of thing. So I found it quite ironic that a major product launch at Village was a brand new component that sped up the delivery even more: <a href="http://www.vignette.com/portal/site/us/menuitem.62215d74e262b2ba32189210180141a0/?vgnextoid=f8fbbe67f5588110VgnVCM1000005610140aRCRD&amp;vgnextchannel=2b48bc7ee19d7010VgnVCM1000008110140aRCRD&amp;vgnextfmt=default&amp;vgnext-selected-menuitem=4b09bdd80b8ff1e8fb3d8010180141a0&amp;gbl-vcmartguid=f8fbbe67f5588110VgnVCM1000005610140aRCRD">Vignette High Performance Delivery</a> (HPD). Now the fastest delivery mechanism in the world is even faster! And the architecture behind HPD is remarkably similar to the caching model they had in the late 90s!</p>
<p>I&#8217;m going slightly off topic here, but I don&#8217;t like the way the blurb on the site for this product says &#8220;<em>HPD lets organizations deliver fresh, customized content online without either the high cost of hardware or the unacceptable cost of slow site performance</em>&#8220;. There are other options. For example, Vignette really did a great job on the Atlanta 2004 Olympics site. It looked excellent and performed well under massive load. But this was all <a href="http://www.akamai.com/">Akamai </a>fronted. I&#8217;m a big fan of CDNs and ESIs for massively scalably delivery.</p>
<blockquote><p>After <span style="text-decoration: line-through;">wasting</span> investing hundreds of millions buying OnDisplay, DataSage, Revenio, Epicentric, Intraspect, Tower Technology and most recently Vidavee, one could argue that Vignette could <strong>*possibly*</strong> address all those areas, but the dirty little secret is that even over a decade after some of those acquisitions occured, Vignette has positively and quite spectacularly <strong>failed</strong> in truly integrating all those services.</p></blockquote>
<p>I think the key word here is &#8220;truly&#8221;. Some of the products are reasonably well integrated, but these are point integrations between product A and product B. I&#8217;d like to see a generic integration architecture instead. A single repository (or illusion thereof) for the different products would be the dream, but that seems unlikely. I think the word <em>wasting</em> is unfair, although some of the acquisitions have been worse than others. I&#8217;d also like to add that I believe Vignette are aware of these issues, do embrace and support enabling emerging standards (JSR-168/286, JSR-170/283, maybe the new favourite CMIS) which could help with their integrations, and still have some really smart people. But their current product stack makes this a really difficult problem which is going to take them a lot more time (which maybe they don&#8217;t have?) to solve.</p>
<blockquote><p>The Vignette Application Portal is pretty much the only *simple* way to render content. While the sales and sales engineers might say that customers can create websites using any web framework and programming language, a realization of the effort involved will serve as a near-instant death-knell to such foolhardy notions.</p></blockquote>
<p>I&#8217;m going to disagree with this on two points. I like the VCM Content API and have successfully implemented systems that use a non-Vignette (this doesn&#8217;t mean bespoke!) delivery framework. Surely one of the main benefits of the &#8220;decoupled&#8221; ECM approach is that one does have the option to use the ECM suite simply to manage content to be consumed by any delivery channel. My second disagreement is that VAP is a simple way to render content. For a <em><strong>public facing site that does not need a portal</strong></em>, I believe that using VAP (or any portal) is overkill and fraught with peril.</p>
<blockquote><p>Customers foolish enough to buy from Vignette are faced with an <a href="http://var.immixgroup.com/contracts/gsa70_pricing.cfm?client_id=17&amp;contract=GS-35F-0330J">8 page-long pricesheet</a> (please take a look!)</p></blockquote>
<p>Actually, the PDF version is more like 30 pages. In response to the &#8220;Simple Price List&#8221; question in the initial meme, part of the response was &#8220;Look out for a pricing innovation coming soon to a price sheet near you … it will probably be simple enough for a five year old&#8221;. Vignette are aware of the over-complication and hopefully will address it. If they don&#8217;t, they&#8217;re in trouble.</p>
<blockquote><p>Vignette’s product suite is so expansive and disjointed that the typical Vignette sales engineer cannot even fathom how to install them all. So Vignette has a “Sales Enablement Team” whose primary job function is to figure out how to install all these moving parts and set up a hosted VMWare environment so that they can demo it. I pity my brethren there who still have to run more than one Vignette app on their laptops.</p></blockquote>
<p>*cough*</p>
<p>Anyway, enough of this now. Let me close my coffin on this near extinct meme with a final thought. I still believe Vignette has some really good software and some really good people. They&#8217;ve also got some really big architectural and software problems. I, for one, hope they can sort them out before it is too late. If they don&#8217;t, they wouldn&#8217;t be the first <a href="http://en.wikipedia.org/wiki/Davy_Crockett">US Pioneer to die in Texas</a>. And it is only 81 miles / 1 hour 22 mins drive <a href="http://maps.google.co.uk/maps?f=d&amp;source=s_d&amp;saddr=1301+South+MoPac+Expressway,Austin,+TX+78746&amp;daddr=300+Alamo+Plz,+San+Antonio,+TX+78205,+United+States&amp;hl=en&amp;geocode=%3BFT4AwQEdvjch-g&amp;gl=uk&amp;mra=ls&amp;sll=29.425726,-98.486338&amp;sspn=0.015905,0.025556&amp;ie=UTF8&amp;ll=29.84879,-98.111145&amp;spn=2.027199,3.271179&amp;z=9">from Vignette Corporate Headquaters to the Alamo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonontech.com/2009/04/04/when-cms-memes-attack/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

