<?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>ecmarchitect.com &#187; CMIS</title>
	<atom:link href="http://ecmarchitect.com/categories/content-management/cmis-content-management/feed" rel="self" type="application/rss+xml" />
	<link>http://ecmarchitect.com</link>
	<description>Jeff Potts on ECM, portals, search, collaboration, and a bunch of personal stuff</description>
	<lastBuildDate>Wed, 28 Jul 2010 06:19:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Metaversant is up-and-running</title>
		<link>http://ecmarchitect.com/archives/2010/06/07/1167</link>
		<comments>http://ecmarchitect.com/archives/2010/06/07/1167#comments</comments>
		<pubDate>Mon, 07 Jun 2010 06:01:47 +0000</pubDate>
		<dc:creator>jpotts</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[CMIS]]></category>
		<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[Metaversant]]></category>

		<guid isPermaLink="false">http://ecmarchitect.com/?p=1167</guid>
		<description><![CDATA[First off, thanks so much to my readers, clients, colleagues, and other friends in the community who have provided a wealth of support in terms of well-wishes and congratulations on the forming of my new company, Metaversant. Several people have asked how things are going so here&#8217;s a brief update&#8230; Metaversant is up-and-running and I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>First off, thanks so much to my readers, clients, colleagues, and other friends in the community who have provided a wealth of support in terms of well-wishes and congratulations on the forming of my new company, <a title="Metaversant Group, Inc.'s Home Page" href="http://www.metaversant.com" target="_blank">Metaversant</a>. Several people have asked how things are going so here&#8217;s a brief update&#8230;</p>
<p>Metaversant is up-and-running and I&#8217;m as busy as can be. I finally got a web site up, a logo designed, and business cards aren&#8217;t far behind. I&#8217;ve even got people to give them to which is an important pre-requisite to actually having business cards.</p>
<p>I&#8217;m currently billing on an Alfresco Share customization project. I can&#8217;t tell you who or exactly what but the pattern will be familiar: A company needs to manage digital assets. Some come from internal sources, some come from external sources, and all need metadata and security applied. The front-end communicates with the Alfresco repository via RESTful Web Script calls while back-office content providers and application administrators use Alfresco Share (customized here and there) to upload assets, set metadata, and manage the business process. It&#8217;s a pretty classic pattern and other than extraordinarily tight timeline pressure, it&#8217;s going well.</p>
<p>Beyond technical execution I&#8217;ve also conducted some Alfresco training for a pharma client in New England. It was just a quick engagement but it was fun to help a team that had been doing some playing with Alfresco on their own discover the capabilities of the platform and how they could be applied to their business problems. I also love to see the expression on people&#8217;s faces when it hits them: They don&#8217;t need Documentum for all things DM any more.</p>
<p>I had a great trip to New York City for the Alfresco Community Meet-up. I don&#8217;t know what the official ratio was but the customers seemed to heavily outnumber the partners as this particular meet-up which is good for everyone, I think. I caught up with a lot of old friends and met some new ones. I was particularly excited to come across someone who had some plans to leverage <a href="http://code.google.com/p/cmislib" alt="Google Code Project: cmislib">cmislib</a>, my client-side CMIS API for Python, a project I&#8217;ve sorely neglected this Spring with all of the startup stuff going on. All of this Java code I&#8217;ve been writing has me missing Python&#8211;I will find time for cmislib soon.</p>
<p>Being fully billable while still having to find new business and take care of everything else about the business is tough, as I knew it would be. I&#8217;m loving every minute of it though. One thing I didn&#8217;t expect is the helpfulness of friends, former colleagues, and even strangers who have started their own businesses. The entrepreneur community is not unlike the open source community. Everyone loves to talk shop and trade tips and advice. It&#8217;s really cool.</p>
<p>My exercise regimen (a generous description) has suffered and it looks like my blogging velocity is on a similar trend. I feel like I&#8217;m getting into some regular rhythms though so maybe I can get things back in balance shortly. I&#8217;ve got all kinds of things that I need to write about: Alfresco 3.3 Enterprise is out, Alfresco hired the jBPM guys (I totally called it!), and I don&#8217;t think I&#8217;ve written anything at all about the Alfresco Community Committer Program. It&#8217;s going to be a busy Summer.</p>
]]></content:encoded>
			<wfw:commentRss>http://ecmarchitect.com/archives/2010/06/07/1167/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Using cmislib to migrate digital assets to CMIS repositories</title>
		<link>http://ecmarchitect.com/archives/2010/03/26/1149</link>
		<comments>http://ecmarchitect.com/archives/2010/03/26/1149#comments</comments>
		<pubDate>Fri, 26 Mar 2010 14:18:04 +0000</pubDate>
		<dc:creator>jpotts</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[CMIS]]></category>
		<category><![CDATA[Content Management]]></category>

		<guid isPermaLink="false">http://ecmarchitect.com/?p=1149</guid>
		<description><![CDATA[The follow-on to my introduction to cmislib, published on developerWorks earlier in the week, is now live. In the article, Jay Brown, the development lead for IBM&#8217;s CMIS servers, walks you through a small utility that leverages Python and cmislib to xcopy image files (and their embedded EXIF metadata) into a CMIS repository. When Jay [...]]]></description>
			<content:encoded><![CDATA[<p>The follow-on to my <a title="IBM developerWorks article: A CMIS API library for Python, Part 1" href="http://www.ibm.com/developerworks/xml/library/x-cmis1/index.html" target="_blank">introduction to cmislib</a>, published on <a title="IBM developerWorks: XML" href="http://www.ibm.com/developerworks/xml/" target="_blank">developerWorks</a> earlier in the week, is now live. <a title="IBM developerWorks article: A CMIS API library for Python, Part 2" href="http://www.ibm.com/developerworks/library/x-cmis2/index.html" target="_blank">In the article</a>, Jay Brown, the development lead for IBM&#8217;s CMIS servers, walks you through a small utility that leverages Python and <a href="http://code.google.com/p/cmislib" alt="Google Code Project: cmislib">cmislib</a> to xcopy image files (and their embedded EXIF metadata) into a CMIS repository.</p>
<p>When Jay wrote the article and the code that goes with it, he initially tested against his own IBM CMIS servers. As soon as the core functionality was complete, he changed the service URL in his config file to point to Alfresco&#8217;s CMIS server and it ran like a charm. That&#8217;s the beauty of <a href="http://www.oasis-open.org/committees/cmis/">CMIS</a> and cmislib: Write once, manage digital assets anywhere.</p>
]]></content:encoded>
			<wfw:commentRss>http://ecmarchitect.com/archives/2010/03/26/1149/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New developerWorks article on cmislib</title>
		<link>http://ecmarchitect.com/archives/2010/03/23/1145</link>
		<comments>http://ecmarchitect.com/archives/2010/03/23/1145#comments</comments>
		<pubDate>Tue, 23 Mar 2010 14:53:34 +0000</pubDate>
		<dc:creator>jpotts</dc:creator>
				<category><![CDATA[CMIS]]></category>
		<category><![CDATA[Content Management]]></category>

		<guid isPermaLink="false">http://ecmarchitect.com/?p=1145</guid>
		<description><![CDATA[If you would like to learn more about cmislib, an open source CMIS client API for Python that works with any CMIS-compliant repository such as Alfresco, FileNet, Nuxeo, OpenText, and others, check out my new developerWorks article. This is part one in a two-part series. In the second part, which will be published soon, Jay [...]]]></description>
			<content:encoded><![CDATA[<p>If you would like to learn more about <a href="http://code.google.com/p/cmislib" alt="Google Code Project: cmislib">cmislib</a>, an open source <a href="http://www.oasis-open.org/committees/cmis/">CMIS</a> client API for Python that works with any CMIS-compliant repository such as Alfresco, FileNet, Nuxeo, OpenText, and others, check out my new <a href="http://www.ibm.com/developerworks/xml/library/x-cmis1/">developerWorks article</a>.</p>
<p>This is part one in a two-part series. In the second part, which will be published soon, Jay Brown from IBM talks about how he used cmislib to create an xcopy-like utility that copies images from a file system into any CMIS repository. As it does the copy, it inspects the image&#8217;s EXIF tags and if the target document type has corresponding properties, it populates those properties with the image metadata.</p>
]]></content:encoded>
			<wfw:commentRss>http://ecmarchitect.com/archives/2010/03/23/1145/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Drupal Open Atrium and Alfresco CMIS files</title>
		<link>http://ecmarchitect.com/archives/2010/03/22/1141</link>
		<comments>http://ecmarchitect.com/archives/2010/03/22/1141#comments</comments>
		<pubDate>Mon, 22 Mar 2010 13:17:48 +0000</pubDate>
		<dc:creator>jpotts</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[CMIS]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Drupal]]></category>

		<guid isPermaLink="false">http://ecmarchitect.com/?p=1141</guid>
		<description><![CDATA[A lot of people have been asking for the files we used to integrate Alfresco CMIS with Drupal Open Atrium (See ecmarchitect.com blog post). I&#8217;ve happily mailed those to whomever asked. I&#8217;ve had the intention of testing them with the latest version, cleaning them up, and putting somewhere more appropriate like the Open Atrium feature [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of people have been asking for the files we used to integrate <a href="http://www.alfresco.com">Alfresco</a> CMIS with <a href="http://drupal.org">Drupal</a> <a title="Open Atrium Home" href="http://openatrium.org" target="_blank">Open Atrium</a> (See <a title="ecmarchitect.com blog post: Screenast of Drupal Open Atrium and Alfresco CMIS integration" href="http://ecmarchitect.com/archives/2009/10/13/1058" target="_self">ecmarchitect.com blog post</a>). I&#8217;ve happily mailed those to whomever asked. I&#8217;ve had the intention of testing them with the latest version, cleaning them up, and putting somewhere more appropriate like the Open Atrium feature server, or at the very least, Google Code or GitHub. But it hasn&#8217;t happened yet so I figured I&#8217;d make them available <a title="Download the cmis-open-atrium.zip file" href="http://ecmarchitect.com/images/openatrium/cmis-open-atrium.zip">here</a> and appeal to the Community to give them a good home.</p>
<p>The zip includes a readme file with (very) rough install/config directions.</p>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://ecmarchitect.com/archives/2010/03/22/1141/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Vote to include my CMIS session at Drupalcon</title>
		<link>http://ecmarchitect.com/archives/2010/02/16/1135</link>
		<comments>http://ecmarchitect.com/archives/2010/02/16/1135#comments</comments>
		<pubDate>Tue, 16 Feb 2010 23:56:46 +0000</pubDate>
		<dc:creator>jpotts</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[CMIS]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Drupal]]></category>

		<guid isPermaLink="false">http://ecmarchitect.com/?p=1135</guid>
		<description><![CDATA[Fellow Optaros colleague, Chris Fuller, and I want to present on the Alfresco-Drupal integration at Drupalcon in San Francisco (April 19-21). If you&#8217;re interested in Alfresco, Drupal, and CMIS (any or all of the above), please vote for our session.]]></description>
			<content:encoded><![CDATA[<p>Fellow <a href="http://www.optaros.com" alt="Optaros Home">Optaros</a> colleague, Chris Fuller, and I want to present on the Alfresco-Drupal integration at Drupalcon in San Francisco (April 19-21). If you&#8217;re interested in Alfresco, Drupal, and CMIS (any or all of the above), please <a title="Drupalcon San Francisco Session: Drupal, Alfresco, &amp; CMIS" href="http://sf2010.drupal.org/conference/sessions/enterprise-content-management-drupal-alfresco-and-cmis" target="_blank">vote for our session</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ecmarchitect.com/archives/2010/02/16/1135/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Updated Python CMIS library released</title>
		<link>http://ecmarchitect.com/archives/2010/01/13/1127</link>
		<comments>http://ecmarchitect.com/archives/2010/01/13/1127#comments</comments>
		<pubDate>Wed, 13 Jan 2010 08:01:43 +0000</pubDate>
		<dc:creator>jpotts</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[CMIS]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[cmislib]]></category>
		<category><![CDATA[ECM]]></category>
		<category><![CDATA[FileNet]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ecmarchitect.com/?p=1127</guid>
		<description><![CDATA[I&#8217;ve tagged and released a new version of cmislib, the Python CMIS client library. What&#8217;s cool about this release is that it is the first one known to work with more than one CMIS provider. Yea for interoperability! The beauty of CMIS, realized! Okay, it wasn&#8217;t that beautiful, it&#8217;s still &#8220;0.1&#8243;, and there are known [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve tagged and released a new version of <a href="http://code.google.com/p/cmislib" alt="Google Code Project: cmislib">cmislib</a>, the Python CMIS client library. What&#8217;s cool about this release is that it is the first one known to work with more than one CMIS provider. Yea for interoperability! The beauty of CMIS, realized! Okay, it wasn&#8217;t that beautiful, it&#8217;s still &#8220;0.1&#8243;, and there are <a title="Google Code: cmislib wiki page: Known Issues" href="http://code.google.com/p/cmislib/wiki/KnownIssues" target="_blank">known issues</a>. But I can now say the library works with both <a href="http://www.alfresco.com" alt="Alfresco Home">Alfresco</a> and IBM FileNet and that&#8217;s a Good Thing.</p>
<p>IBM was a big help with this. Al Brown, one of the <a href="http://www.oasis-open.org/committees/cmis/">CMIS</a> spec leads turned one of his colleagues, Jay Brown, onto cmislib. Jay called me up and asked, &#8220;If I give you access to a FileNet P8 server, can you test cmislib against it?&#8221; I was on it faster than you could say, &#8220;unittest.main()&#8221;.</p>
<p>I think the effort was valuable for all sides. Our little &#8220;mini plugfest&#8221; turned up issues in my client as well as both CMIS providers. Jay worked hard to chase down everything on the FileNet side. Dave Caruana chased a few down on the Alfresco side as well. Thanks to everyone for the team effort.</p>
<p>Anyway, give the new cmislib release a try and give me your feedback. If you want a feel for how easy it can be to work with CMIS repositories using the cmislib API, check out the <a title="Google Code: cmislib: Documentation" href="http://cmislib.googlecode.com/svn/trunk/src/doc/build/index.html" target="_blank">documentation</a> or dive right in. Installation is as easy as &#8220;easy_install cmislib&#8221; (<a title="Setuptools/easy_install instructions on python.org" href="http://pypi.python.org/pypi/setuptools" target="_blank">easy_install instructions</a>).</p>
<p>Next up is <a title="Nuxeo CMIS Page" href="http://www.nuxeo.org/xwiki/bin/view/Main/CMIS" target="_blank">Nuxeo</a>. Can the open source ECM vendor achieve cmislib Unit Test Greatness faster than Big Blue? We shall see!</p>
]]></content:encoded>
			<wfw:commentRss>http://ecmarchitect.com/archives/2010/01/13/1127/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>cmislib: A CMIS client library for Python</title>
		<link>http://ecmarchitect.com/archives/2009/12/18/1113</link>
		<comments>http://ecmarchitect.com/archives/2009/12/18/1113#comments</comments>
		<pubDate>Fri, 18 Dec 2009 17:41:49 +0000</pubDate>
		<dc:creator>jpotts</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[CMIS]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Optaros]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ecmarchitect.com/?p=1113</guid>
		<description><![CDATA[I&#8217;ve started a new project on Google Code called cmislib. It is an interoperable client library for CMIS in Python that uses the Restful AtomPub Binding of a CMIS provider to perform CRUD and query functions on the repository. I created it for a couple of reasons. First, it&#8217;s been bugging me that, unlike our [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve started a new project on Google Code called <a title="Google Code: cmislib" href="http://code.google.com/p/cmislib" target="_blank">cmislib</a>. It is an interoperable client library for <a href="http://www.oasis-open.org/committees/cmis/">CMIS</a> in Python that uses the Restful AtomPub Binding of a CMIS provider to perform CRUD and query functions on the repository.</p>
<p>I created it for a couple of reasons. First, it&#8217;s been bugging me that, unlike our <a title="Drupal.org: CMIS Alfresco Module" href="http://drupal.org/project/cmis_alfresco" target="_blank">Drupal Alfresco integration</a>, our <a title="Google Code: Django Alfresco integration" href="http://code.google.com/p/django-alfresco/" target="_blank">Django Alfresco integration</a> does not use CMIS. After talking it over with one of our clients we decided it would make more sense to create a more general purpose CMIS API for Python that Django (and any other Python app) could leverage, rather than build CMIS support directly into the Django Alfresco integration.</p>
<p>Second, around the time I was putting together the <a title="ecmarchitect.com blog post: Getting Started with CMIS" href="http://ecmarchitect.com/archives/2009/11/23/1094" target="_self">Getting Started with CMIS</a> tutorial, it struck me that there needed to be an API that didn&#8217;t have a lot of dependencies and was very easy to use. Otherwise, it&#8217;s too easy to get lost in the weeds and miss the whole point of CMIS: Easily working with rich content repositories, regardless of the underlying implementation.</p>
<p>Even if you&#8217;ve never worked with Python before, it is super easy to get started with cmislib. The install is less than 3 steps and the API should feel very natural to anyone that&#8217;s worked with a content repository before. Check it out.</p>
<p><strong>Install</strong></p>
<ol>
<li><a name="Install">If you don&#8217;t have </a><a rel="nofollow" href="http://www.python.org/download/">Python</a> installed already, do so. I&#8217;ve only tested on Python 2.6 so unless you&#8217;re looking to help test, stick with that.</li>
<li>If you don&#8217;t have <a rel="nofollow" href="http://pypi.python.org/pypi/setuptools">setuptools</a> installed already, do so. It&#8217;s a nice tool to use for installing Python packages.</li>
<li>Once setuptools is installed, type <tt>easy_install cmislib</tt></li>
</ol>
<p>That&#8217;s all there is to it. Now you&#8217;re ready to connect to your favorite CMIS-compliant repository.</p>
<p><strong>Examples</strong></p>
<p>There&#8217;s nothing in cmislib that is specific to any particular vendor. Once you give it your CMIS provider&#8217;s service URL and some credentials, it figures out where to go from there. But I haven&#8217;t tested with anything other than <a href="http://www.alfresco.com">Alfresco</a> yet, and this thing is still hot out of the oven. If you want to help test it against other CMIS 1.0cd04 repositories I&#8217;d love the help.</p>
<p>Anyway, let&#8217;s look at some examples using <a title="Alfresco hosted CMIS repository" href="http://cmis.alfresco.com" target="_blank">Alfresco&#8217;s public CMIS repository</a>.</p>
<ol>
<li>From the command-line, start the Python shell by typing <tt>python</tt> then hit enter.</li>
<pre>Python 2.6.3 (r263:75183, Oct 22 2009, 20:01:16)
GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt;</pre>
<li>Import the CmisClient and Repository classes:</li>
<pre><span>&gt;&gt;&gt;</span><span> </span><span>from</span><span> cmislib</span><span>.</span><span>model </span><span>import</span><span> </span><span>CmisClient</span><span>,</span><span> </span><span>Repository</span></pre>
<li>Point the CmisClient at the repository&#8217;s service URL</li>
<pre><span>&gt;&gt;&gt;</span><span> client </span><span>=</span><span> </span><span>CmisClient</span><span>(</span><span>'http://cmis.alfresco.com/s/cmis'</span><span>,</span><span> </span><span>'admin'</span><span>,</span><span> </span><span>'admin'</span><span>)</span></pre>
<li>Get the default repository for the service</li>
<pre><span>&gt;&gt;&gt;</span><span> repo </span><span>=</span><span> client</span><span>.</span><span>getDefaultRepository</span><span>()</span><span>
</span><span>&gt;&gt;&gt;</span><span> repo</span><span>.</span><span>getRepositoryId</span><span>()</span><span>
u</span><span>'83beb297-a6fa-4ac5-844b-98c871c0eea9'</span></pre>
<li>Get the repository&#8217;s properties. This for-loop spits out everything cmislib knows about the repo.</li>
<pre><span>&gt;&gt;&gt;</span><span> repo</span><span>.</span><span>getRepositoryName</span><span>()</span><span>
    u</span><span>'Main Repository'</span><span>
</span><span>&gt;&gt;&gt;</span><span> info </span><span>=</span><span> repo</span><span>.</span><span>getRepositoryInfo</span><span>()</span><span>
</span><span>&gt;&gt;&gt;</span><span> </span><span>for</span><span> k</span><span>,</span><span>v </span><span>in</span><span> info</span><span>.</span><span>items</span><span>():</span><span>
    </span><span>...</span><span>     </span><span>print</span><span> </span><span>"%s:%s"</span><span> </span><span>%</span><span> </span><span>(</span><span>k</span><span>,</span><span>v</span><span>)</span><span>
    </span><span>...</span><span>
    cmisSpecificationTitle</span><span>:</span><span>Version</span><span> </span><span>1.0</span><span> </span><span>Committee</span><span> </span><span>Draft</span><span> </span><span>04</span><span>
    cmisVersionSupported</span><span>:</span><span>1.0</span><span>
    repositoryDescription</span><span>:</span><span>None</span><span>
    productVersion</span><span>:</span><span>3.2</span><span>.</span><span>0</span><span> </span><span>(</span><span>r2 </span><span>2440</span><span>)</span><span>
    rootFolderId</span><span>:</span><span>workspace</span><span>:</span><span>//SpacesStore/aa1ecedf-9551-49c5-831a-0502bb43f348</span><span>
    repositoryId</span><span>:</span><span>83beb297</span><span>-</span><span>a6fa</span><span>-</span><span>4ac5</span><span>-</span><span>844b</span><span>-</span><span>98c871c0eea9</span><span>
    repositoryName</span><span>:</span><span>Main</span><span> </span><span>Repository</span><span>
    vendorName</span><span>:</span><span>Alfresco</span><span>
    productName</span><span>:</span><span>Alfresco</span><span> </span><span>Repository</span><span> </span><span>(</span><span>Community</span><span>)</span></pre>
</ol>
<p>Once you&#8217;ve got the Repository object you can start working with folders.</p>
<ol>
<li>Create a new folder in the root. You should name yours something unique.</li>
<pre>&gt;&gt;&gt; root = repo.getRootFolder()
&gt;&gt;&gt; someFolder = root.createFolder('someFolder')
&gt;&gt;&gt; someFolder.getObjectId()
u'workspace://SpacesStore/91f344ef-84e7-43d8-b379-959c0be7e8fc'</pre>
<li>Then, you can create some content:</li>
<pre>&gt;&gt;&gt; someFile = open('test.txt', 'r')
&gt;&gt;&gt; someDoc = someFolder.createDocument('Test Document', contentFile=someFile)</pre>
<li>And, if you want, you can dump the properties of the newly-created document (this is a partial list):</li>
<pre>&gt;&gt;&gt; props = someDoc.getProperties()
&gt;&gt;&gt; for k,v in props.items():
...     print '%s:%s' % (k,v)
...
cmis:contentStreamMimeType:text/plain
cmis:creationDate:2009-12-18T10:59:26.667-06:00
cmis:baseTypeId:cmis:document
cmis:isLatestMajorVersion:false
cmis:isImmutable:false
cmis:isMajorVersion:false
cmis:objectId:workspace://SpacesStore/2cf36ad5-92b0-4731-94a4-9f3fef25b479</pre>
<li>You can also use cmislib to run CMIS queries. Let&#8217;s find the doc we just created with a full-text search. (Note that I&#8217;m currently seeing a problem with Alfresco in which the CMIS service returns one less result than what&#8217;s really there):</li>
<pre>&gt;&gt;&gt; results = repo.query("select * from cmis:document where contains('test')")
&gt;&gt;&gt; for result in results:
...     print result.getName()
...
Test Document2
example test script.js</pre>
<li>Alternatively, you can also get objects by their object ID or their path, like this:</li>
<pre>&gt;&gt;&gt; someDoc = repo.getObjectByPath('/someFolder/Test Document')
&gt;&gt;&gt; someDoc.getObjectId()
u'workspace://SpacesStore/2cf36ad5-92b0-4731-94a4-9f3fef25b479'</pre>
</ol>
<p><strong>Set Python loose on your CMIS repository</strong></p>
<p>These are just a few examples meant to give you a feel for the API. There are several other things you can do with cmislib. The package comes with documentation so look there for more info. If you find any problems and you want to pitch in, you can check out the source from Google Code and create issues there as well.</p>
<p>Give this a try and let me know what you think.</p>
<p>[UPDATE: I had the wrong URL for the Alfresco-hosted CMIS service. It's fixed now.]</p>
]]></content:encoded>
			<wfw:commentRss>http://ecmarchitect.com/archives/2009/12/18/1113/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>New Tutorial: Getting Started with CMIS</title>
		<link>http://ecmarchitect.com/archives/2009/11/23/1094</link>
		<comments>http://ecmarchitect.com/archives/2009/11/23/1094#comments</comments>
		<pubDate>Mon, 23 Nov 2009 22:52:42 +0000</pubDate>
		<dc:creator>jpotts</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[Alfresco Developer Series]]></category>
		<category><![CDATA[CMIS]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Apache Abdera]]></category>
		<category><![CDATA[Apache Chemistry]]></category>
		<category><![CDATA[AtomPub Binding]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[Optaros]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://ecmarchitect.com/?p=1094</guid>
		<description><![CDATA[I&#8217;ve written a new tutorial on the proposed Content Management Interoperability Services (CMIS) standard called, &#8220;Getting Started with CMIS&#8220;. The tutorial first takes you through an overview of the specification. Then, I do several examples. The examples start out using curl to make GET, PUT, POST, and DELETE calls against Alfresco to perform CRUD functions [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve written a new tutorial on the proposed <a title="CMIS Committee Home Page at OASIS" href="http://www.oasis-open.org/committees/cmis" target="_blank">Content Management Interoperability Services (CMIS)</a> standard called, &#8220;<a title="ecmarchitect.com tutorial: Getting Started with CMIS" href="http://ecmarchitect.com/images/articles/cmis/cmis-article.pdf" target="_self">Getting Started with CMIS</a>&#8220;. The tutorial first takes you through an overview of the specification. Then, I do several examples. The examples start out using curl to make GET, PUT, POST, and DELETE calls against Alfresco to perform CRUD functions on folders, documents, and relationships in the repository. If you&#8217;ve been dabbling with CMIS and you&#8217;ve struggled to find examples, particularly of POSTs, here you go.</p>
<p>I used Alfresco Community built from head, but yesterday, Alfresco pushed a new Community release that supports CMIS 1.0 Committee Draft 04 so you can <a title="Alfresco Community Download Page" href="http://wiki.alfresco.com/wiki/Download_Community_Edition" target="_blank">download</a> that, use the <a title="Alfresco hosted CMIS repository" href="http://cmis.alfresco.com" target="_blank">hosted Alfresco CMIS repository</a>, or spin up an <a title="Alfresco wiki: Official Amazon EC2 image" href="http://wiki.alfresco.com/wiki/EC2" target="_blank">EC2 image</a> (once Luis gets it updated with the new Community release). If you don&#8217;t want to use Alfresco you should be able to use any CMIS repository that supports 1.0cd04. I tried some, but not all, of the command-line examples against the Apache <a title="Apache Chemistry Home" href="http://incubator.apache.org/chemistry/" target="_blank">Chemistry</a> test server.</p>
<p>Once you&#8217;ve felt both the joy and the pain of talking directly to the CMIS AtomPub Binding, I take you through some very short examples using JavaScript and Java. For Java I show Apache <a title="Apache Abdera Home" href="http://abdera.apache.org/" target="_blank">Abdera</a>, Apache Chemistry, and the Apache Chemistry TCK.</p>
<p>For the Chemistry TCK stuff, I&#8217;m using Alfresco&#8217;s <a title="Alfresco wiki: CMIS Maven Toolkit" href="http://wiki.alfresco.com/wiki/CMIS_Maven_Toolkit" target="_blank">CMIS Maven Toolkit</a> which <a title="Gabrielle Columbro's Blog" href="http://mindthegab.com/" target="_blank">Gabriele Columbro</a> and <a title="Richard McKnight's blog" href="http://oldschooltechie.com/" target="_blank">Richard McKnight</a> put together. That inspired me to do <a title="CMIS article source code archive" href="http://ecmarchitect.com/images/cmis-article-code.zip">my examples</a> with Maven as well (plus, it&#8217;s practical&#8211;the Abdera and Chemistry clients have a lot of dependencies, and using Maven meant I didn&#8217;t have to chase any of those down).</p>
<p>So take a look at the tutorial, try out the examples with your favorite CMIS 1.0 repo, and let me know what you think. If you like it, pass it along to a friend. As with past tutorials, I&#8217;ve released it under <a title="Creative Commons Attribution-Share Alike 3.0" href="http://creativecommons.org/licenses/by-sa/3.0/" target="_blank">Creative Commons Attribution-Share Alike</a>.</p>
<p>[Updated to correct typo with Gabriele's name. Sorry, Gab!]</p>
]]></content:encoded>
			<wfw:commentRss>http://ecmarchitect.com/archives/2009/11/23/1094/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Top Five Alfresco Roadmap Takeaways</title>
		<link>http://ecmarchitect.com/archives/2009/11/12/1090</link>
		<comments>http://ecmarchitect.com/archives/2009/11/12/1090#comments</comments>
		<pubDate>Thu, 12 Nov 2009 15:58:34 +0000</pubDate>
		<dc:creator>jpotts</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[CMIS]]></category>
		<category><![CDATA[Alfresco Meetup]]></category>
		<category><![CDATA[DM]]></category>
		<category><![CDATA[Optaros]]></category>
		<category><![CDATA[Roadmap]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[WCM]]></category>

		<guid isPermaLink="false">http://ecmarchitect.com/?p=1090</guid>
		<description><![CDATA[Now that the last of the Alfresco Fall meetups has concluded in the US, I thought I&#8217;d summarize my takeaways. Overall I thought the events were really good. The informative sessions were well-attended. Everyone I talked to was glad they came and left with multiple useful takeaways. Everyone has their own criteria for usefulness&#8211;for these [...]]]></description>
			<content:encoded><![CDATA[<p>Now that the last of the <a href="http://www.alfresco.com" alt="Alfresco Home">Alfresco</a> Fall meetups has concluded in the US, I thought I&#8217;d summarize my takeaways. Overall I thought the events were really good. The informative sessions were well-attended. Everyone I talked to was glad they came and left with multiple useful takeaways.</p>
<p>Everyone has their own criteria for usefulness&#8211;for these events my personal set of highlights tend to focus on the roadmap. So here are my top five roadmap takeaways from the Washington, D.C., Atlanta, and LA meetups.</p>
<p><strong>1. Repository unification strategy revealed</strong></p>
<p>Now we know what Alfresco plans to do to resolve the &#8220;multiple repository&#8221; issue. In a nutshell: Alfresco will add functionality to the DM repository until it is on par with the AVM (See &#8220;<a title="ecmarchitect.com blog post: What are the differences between the DM and AVM repositories?" href="http://ecmarchitect.com/archives/2009/08/31/1038" target="_self">What are the differences…</a>&#8220;). What then? The AVM will continue to be supported, but if I were placing bets, I would not count on further AVM development past that point.</p>
<p>This makes a lot of sense to me. We do a lot of &#8220;WCM&#8221; for people using the Alfresco DM repository, especially when Alfresco is really being leveraged as a core repository. It also makes sense with Alfresco&#8217;s focus on CMIS (see next takeaway) because you can&#8217;t get to the AVM through CMIS.</p>
<p><strong>2. CMIS, CMIS, CMIS</strong></p>
<p>Clearly, CMIS is an important standard for Alfresco. (In fact, one small worry I have is that Alfresco seems to need CMIS more than any of the other players behind the standard, but I digress). Alfresco wants to be the go-to CMIS repository and believes that CMIS will be the primary way front-ends interact with rich content repositories. They&#8217;ve been on top of things by including early (read &#8220;unsupported&#8221;) implementations of the draft CMIS specification in both the Community and Enterprise releases, but there a number of other CMIS-related items on the roadmap:</p>
<ul>
<li>When the CMIS standard is out of public review, Alfresco will release a &#8220;CMIS runtime&#8221;. Details are sketchy, but my hunch is that Alfresco might be headed toward a Jackrabbit/Day CRX model where Alfresco&#8217;s CMIS runtime would be like a freely-available reference CMIS repository (Alfresco stripped of functionality not required to be CMIS compliant) and the full Alfresco repository would continue as we know it today. All speculation on my part.</li>
<li>Today deployments are either FSR (Alfresco-to-file system) or ASR (Alfresco AVM to Alfresco AVM). The latter case is used when you have a front-end that queries Alfresco for its content but you want to move that load off of your primary authoring server. In 3.2, the deployment service has gotten more general, so it&#8217;s one deployment system with multiple extensible endpoint options (file system, Alfresco AVM, CouchDB, Drupal, etc.). Alfresco will soon add AVM-to-CMIS deployment. That means you can deploy from AVM to the DM repository. Does it mean you can deploy to any CMIS repository? Not sure. If not, that might be a worthwhile extension.</li>
<li>One drawback to using DM for WCM currently is that there is not a good deployment system to move your content out of DM. It&#8217;s basically rsync or roll-your-own. On the roadmap is the ability to deploy from DM instead of AVM. This is one of the features the DM needs to get it functionally equivalent to what you get with the AVM. I wouldn&#8217;t expect it until 4.0.</li>
</ul>
<p><strong>3. Shift in focus to developers</strong></p>
<p>Alfresco WCM has always been a decoupled system. When you install Alfresco WCM you don&#8217;t get a working web site out-of-the-box. You have to build it first using whatever technology you want, and then let Alfresco manage it. So, unlike most open source CMS&#8217;, it&#8217;s never been end-user focused in the sense of, &#8220;I&#8217;m a non-technical person and I want a web site, so I&#8217;m going to install Alfresco WCM&#8221;. Don&#8217;t expect that to change any time soon. Even Web Studio, which may not ever make it to an Enterprise release, is aimed at making Surf developers productive, not your Marketing team.</p>
<p>Alfresco is realizing that many people discard the Alfresco UI and build something custom, whether for document management, web content management, or some other content-centric use case. To make that easier, Alfresco is going to rollout development tools like Eclipse plug-ins, Maven compatibility, and Spring Roo integration (<a title="YouTube video: Spring Roo and Surf, Part 1" href="http://www.youtube.com/watch?v=tdfNbfdoIaU" target="_blank">Uzi&#8217;s Spring Roo Screencast</a>, <a title="SpringSource Blog Post: Getting Started with Spring Roo" href="http://blog.springsource.com/2009/05/27/roo-part-2/" target="_blank">Getting Started with Spring Roo</a> ).</p>
<p>Alfresco has also announced that web scripts, web studio, and the Surf framework will be licensed under Apache and there were allusions to &#8220;making Surf part of Spring&#8221; or &#8220;using Surf as a Tiles replacement&#8221;. I haven&#8217;t seen or heard much from the Spring folks on this and I noticed these topics were softened between DC and LA, but that could have just been based on who was doing the speaking (see &#8220;<a title="ecmarchitect.com blog post: What do you think of Alfresco's multi-city event approach?" href="http://ecmarchitect.com/archives/2009/11/11/1087" target="_self">What do you think of Alfresco&#8217;s multi-event approach?</a>&#8220;).</p>
<p>Essentially what&#8217;s going on here is that Alfresco wants all of your future content-centric apps and even web sites to be &#8220;CMIS applications&#8221;, and Alfresco believes it can provide the best, most productive development platform for writing CMIS apps.</p>
<p><strong>4. Stuff that may never happen but would be cool if it did</strong></p>
<p>This is a grab bag of things that are being considered for the roadmap, but are far enough out to be uncertain. Regardless of if/when, these are sometimes a useful data point for where the product is headed directionally.</p>
<ul>
<li>Native XML support. Right now Alfresco can manage XML files, obviously, but, unlike a native XML database like eXist or MarkLogic, the granularity stops with the file. Presumably, native XML support would allow XML validation, XPath and XQuery expressions running against XML file content, and better XSLT support.</li>
<li>Apache Solr. I think the goal here is to get better advanced search capability such as support for faceted search, which is something Solr knows how to do.</li>
<li>Repository sharding. This would be the ability to partition the repository along some (arbitrary?) dimension. Sharding is attractive to people who have very, very large repositories and want to distribute the data load across multiple physical repositories, yet retain the ability to treat the federation as one logical repo.</li>
</ul>
<p><strong>5. Timeline</strong></p>
<p>Talk to Alfresco if you need this to be precise, but here&#8217;s the general idea of the timeline through 4.0 based on the slides I saw:</p>
<ul>
<li>3.2 Enterprise 12/2009</li>
<li>CMIS 1.0 Release Spring 2010</li>
<li>3.3 Enterprise 1H 2010</li>
<li>4.0 Enterprise 12/2010 (more likely 2011)</li>
</ul>
<p><strong>Thanks, Alfresco, and everyone who attended</strong></p>
<p>Lastly, thanks to Nancy Garrity and the rest of the team that put these events together. I enjoyed presenting on Alfresco-Drupal in Atlanta and giving the <a title="Alfresco Content Community Link: Alfresco Best Practices Presentation" href="http://share.alfresco.com/share/page/site/community/document-details?nodeRef=workspace://SpacesStore/c1a4d35b-468f-4f3f-9797-be2ef055eb12" target="_blank">Alfresco Best Practices talk</a> (Alfresco Content Community login required).</p>
<p>I always enjoy the informal networking that happens at these events. There&#8217;s such a diverse group of experience levels, use cases, and businesses&#8211;it makes for interesting conversations. And, as usual, thanks to the book and blog readers who approached me. It always makes me happy to hear that something on your project was better for having read something I wrote. It was good meeting you all and I&#8217;m looking forward to the next get-together.</p>
]]></content:encoded>
			<wfw:commentRss>http://ecmarchitect.com/archives/2009/11/12/1090/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Drupal + Alfresco webinar slides available</title>
		<link>http://ecmarchitect.com/archives/2009/09/15/1047</link>
		<comments>http://ecmarchitect.com/archives/2009/09/15/1047#comments</comments>
		<pubDate>Tue, 15 Sep 2009 17:48:48 +0000</pubDate>
		<dc:creator>jpotts</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[CMIS]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Acquia]]></category>
		<category><![CDATA[Intranet]]></category>
		<category><![CDATA[Optaros]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[webinar]]></category>

		<guid isPermaLink="false">http://ecmarchitect.com/?p=1047</guid>
		<description><![CDATA[People want intranets that are fun and easy to use, full of compelling content relevant to their job, and enabled with social and community features to help them discover connections with other teams, projects, and colleagues. IT wants something that&#8217;s lightweight and flexible enough to respond to the needs of the business that won&#8217;t cost [...]]]></description>
			<content:encoded><![CDATA[<p>People want intranets that are fun and easy to use, full of compelling content relevant to their job, and enabled with social and community features to help them discover connections with other teams, projects, and colleagues. IT wants something that&#8217;s lightweight and flexible enough to respond to the needs of the business that won&#8217;t cost a fortune.</p>
<p>That&#8217;s why <a title="Drupal Home Page" href="http://drupal.org" target="_blank">Drupal</a> + <a title="Alfresco Home Page" href="http://www.alfresco.com" target="_blank">Alfresco</a> is a great combination for things like intranets like the one <a title="Optaros Home" href="http://www.optaros.com" target="_blank">Optaros</a> built for <a title="Activision Home Page" href="http://www.activision.com" target="_blank">Activision</a> and why we had a record-breaking turnout for the Drupal + Alfresco webinar <a title="Chris Fuller Blog at Optaros.com" href="http://www.optaros.com/blog/cfuller" target="_blank">Chris Fuller</a> and I did today. Thanks to everyone who came and asked good questions. I&#8217;ve <a title="Slides: The Power of Drupal and Alfresco Together" href="http://www.slideshare.net/jpotts/the-power-of-drupal-and-alfresco-together" target="_blank">posted the slides</a>. Alfresco recorded the webinar so they&#8217;ll make it available soon, I&#8217;m sure. When that happens, I&#8217;ll update the post with a link. Until then, enjoy the slides.</p>
<p>[UPDATE: Fixed the slideshare link (thanks, David!) and added the links to the webinar recording below]</p>
<p>1. Streaming recording link:<br />
<a title="Stream the Alfresco Drupal webinar" href="https://alfresco.webex.com/alfresco/lsr.php?AT=pb&amp;SP=TC&amp;rID=42774837&amp;act=pb&amp;rKey=b44130d69cc9ec5f" target="_blank">https://alfresco.webex.com/alfresco/lsr.php?AT=pb&amp;SP=TC&amp;rID=42774837&amp;act=pb&amp;rKey=b44130d69cc9ec5f</a></p>
<p>2. Download recording link:<br />
<a title="Download the Alfresco Drupal webinar" href="https://alfresco.webex.com/alfresco/ldr.php?AT=dw&amp;SP=TC&amp;rID=42774837&amp;act=pf&amp;rKey=c50049ac82e1220a" target="_blank">https://alfresco.webex.com/alfresco/ldr.php?AT=dw&amp;SP=TC&amp;rID=42774837&amp;act=pf&amp;rKey=c50049ac82e1220a</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ecmarchitect.com/archives/2009/09/15/1047/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
