<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>CloudEngine Blog</title>
	<atom:link href="http://cloudengineblog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cloudengineblog.wordpress.com</link>
	<description></description>
	<lastBuildDate>Tue, 12 Mar 2013 08:21:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='cloudengineblog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>CloudEngine Blog</title>
		<link>http://cloudengineblog.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://cloudengineblog.wordpress.com/osd.xml" title="CloudEngine Blog" />
	<atom:link rel='hub' href='http://cloudengineblog.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Search usability enhancements</title>
		<link>http://cloudengineblog.wordpress.com/2011/05/27/search-usability-enhancements/</link>
		<comments>http://cloudengineblog.wordpress.com/2011/05/27/search-usability-enhancements/#comments</comments>
		<pubDate>Fri, 27 May 2011 14:22:36 +0000</pubDate>
		<dc:creator>richlovelock</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cloudengineblog.wordpress.com/?p=86</guid>
		<description><![CDATA[Following on from the search functionality enhancements to provide more efficient search indexing on CloudEngine, we’ve spent some time improving the interface and usability of the search results interface. As increasing amount of content has been added to Cloudworks, certain &#8230; <a href="http://cloudengineblog.wordpress.com/2011/05/27/search-usability-enhancements/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=86&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Following on from the search functionality enhancements to provide more efficient search indexing on CloudEngine, we’ve spent some time improving the interface and usability of the search results interface.</p>
<p>As increasing amount of content has been added to Cloudworks, certain search parameters are now returning many results, for example, searching for ‘learning’ on the live site returns over 2000 clouds, 300 cloudscapes and 600 users. All of these results were being presented on one page over two columns. Not only was this creating very large pages for users to scroll through, the results for user pages were appearing in the second column somewhere down the page following the cloudscape results.</p>
<div class="wp-caption alignnone" style="width: 650px"><a href="http://www.flickr.com/photos/cloudengine/5764507623/sizes/l/in/photostream/" target="_blank"><img class=" " title="Original search results interface" src="http://farm4.static.flickr.com/3234/5764507623_e27d81a510_z.jpg" alt="Original search results interface" width="640" height="512" /></a><p class="wp-caption-text">Original search results interface</p></div>
<p>This was clearly becoming unwieldy so we have made some changes to improve the search interface and usability. Here is a summary of the changes that have been made:</p>
<ul>
<li>the results for clouds, cloudscapes and users have been split in to three separate tabs. This allows results with long titles to span the width of the page rather then split over several lines with the two column layout.</li>
<li>the total number of results is shown above the results area.</li>
<li>the number of results for clouds, cloudscapes and users is shown at the top of each tab.</li>
<li>each result has a percentage score which is the relevance of the result to the top result (which is usually scored 100%).</li>
<li>On each tab, results are paginated, with 15 results per page (customisable).</li>
<li>200 results are retrieved with the search and are actually hidden from view but can be quickly displayed by using a link under the result set on each tab.</li>
<li>results are now presented in an ordered list, ordered by relevance in each tab, so the user can more clearly see the position of a search result within a set of results.</li>
<li>there is a link on each tab to show the full set of results for a clouds, cloudscapes and users (similar to the original search).</li>
<li>for a screen resolution of 1280 x 1024, search results usually fit on one page without needing to scroll.</li>
</ul>
<p>Here is a screenshot of a search for &#8216;learning&#8217; with the new interface:</p>
<div class="wp-caption alignnone" style="width: 650px"><a href="http://www.flickr.com/photos/cloudengine/5765056044/sizes/l/in/photostream/" target="_blank"><img class=" " title="New seach results user interface" src="http://farm6.static.flickr.com/5143/5765056044_459b9748ea_z.jpg" alt="New seach results user interface" width="640" height="512" /></a><p class="wp-caption-text">New seach results user interface</p></div>
<p>We hope these changes make the search functionality on <a title="Get CloudEngine" href="http://getcloudengine.org" target="_blank">CloudEngine</a> more usable and user-friendly. We hope to put these changes live on <a title="Cloudworks" href="http://cloudworks.open.ac.uk/" target="_blank">Cloudworks</a> early during the week commencing 30th May 2011.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cloudengineblog.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cloudengineblog.wordpress.com/86/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=86&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cloudengineblog.wordpress.com/2011/05/27/search-usability-enhancements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/dc8f792c1e992181536380df5d5dbd3d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">richlovelock</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3234/5764507623_e27d81a510_z.jpg" medium="image">
			<media:title type="html">Original search results interface</media:title>
		</media:content>

		<media:content url="http://farm6.static.flickr.com/5143/5765056044_459b9748ea_z.jpg" medium="image">
			<media:title type="html">New seach results user interface</media:title>
		</media:content>
	</item>
		<item>
		<title>Search functionality enhancements and debug settings v1.1.2</title>
		<link>http://cloudengineblog.wordpress.com/2011/05/27/search-functionality-enhancements-and-debug-settings-v1-1-2/</link>
		<comments>http://cloudengineblog.wordpress.com/2011/05/27/search-functionality-enhancements-and-debug-settings-v1-1-2/#comments</comments>
		<pubDate>Fri, 27 May 2011 11:12:07 +0000</pubDate>
		<dc:creator>richlovelock</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cloudengine]]></category>
		<category><![CDATA[cloudworks]]></category>
		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://cloudengineblog.wordpress.com/?p=71</guid>
		<description><![CDATA[Following reports of the search functionality on the Cloudworks site failing with an ungraceful php error message when using certain search parameters, we undertook some investigation in to the cause of the problem. It transpired that the Zend Lucene search &#8230; <a href="http://cloudengineblog.wordpress.com/2011/05/27/search-functionality-enhancements-and-debug-settings-v1-1-2/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=71&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Following reports of the search functionality on the <a title="Cloudworks powered by CloudEngine" href="http://cloudworks.ac.uk/" target="_blank">Cloudworks</a> site failing with an ungraceful php error message when using certain search parameters, we undertook some investigation in to the cause of the problem. It transpired that the <a title="Zend Lucene search library" href="http://framework.zend.com/manual/en/zend.search.lucene.html" target="_blank">Zend Lucene</a> search engine was indexing all of the HTML content of the clouds, cloudscapes and user pages which included all of the recurring content such as navigation, header and footer elements. Not only was this skewing search results by giving recurring terms unfair weighting it was also causing the ungraceful error by virtue of the sheer number of results causing the search process to time out. Examples of search terms causing problems were ‘events’, ‘tags’ and ‘cloud’.</p>
<p>Our approach to solving the problem was to create new cut-down versions of cloud, cloudscape and user pages which were essentially ‘chrome-less’ and only output the required content to be indexed.</p>
<p>After the code changes were put live, a reindex of the live site was required to allow the changes to take effect. As the search index has been built up cumulatively over time as content is added to the site a reindex of the live site had never been performed. We did a test run of a full reindex on our approval server to see if the site would remain functional. After this ran successfully we ran a full index on the live site which ran for some hours but hopefully remained transparent to end users. The time out message now seems to have disappeared and meaningful results are now being returned for the previously problematic search terms. The code change should also eliminate similar problems happening with fresh installs of <a title="Get CloudEngine" href="http://getcloudengine.org/" target="_blank">CloudEngine</a> from v1.1.2.</p>
<p>As part of these changes, we also took the opportunity to add the <a title="FirePHP Firefox addon" href="https://addons.mozilla.org/en-US/firefox/addon/firephp/" target="_blank">Firephp</a> debugging tool to the codebase. This relies on <a title="Firefox" href="http://www.mozilla.com/firefox/" target="_blank">Firefox</a> with the <a title="Firebug Firefox addon" href="http://getfirebug.com/" target="_blank">Firebug</a> and <a title="FirePHP Firefox addon" href="https://addons.mozilla.org/en-US/firefox/addon/firephp/" target="_blank">Firephp</a> add-ons as well as the <a title="FirePHP server library" href="http://www.firephp.org/HQ/FinalRelease.htm">server-side code</a>. A setting has been added to the database that allows debug messages to be switched off, switched on for admin users or switched on for all authenticated users. This allows some debug or informational messages to be output to admin users on a live site via the Firebug console if need be but remain transparent to other users.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cloudengineblog.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cloudengineblog.wordpress.com/71/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=71&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cloudengineblog.wordpress.com/2011/05/27/search-functionality-enhancements-and-debug-settings-v1-1-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/dc8f792c1e992181536380df5d5dbd3d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">richlovelock</media:title>
		</media:content>
	</item>
		<item>
		<title>Direct messaging &amp; CloudEngine 1.1.0 beta</title>
		<link>http://cloudengineblog.wordpress.com/2011/02/09/direct-messaging-cloudengine-1-1-0-beta/</link>
		<comments>http://cloudengineblog.wordpress.com/2011/02/09/direct-messaging-cloudengine-1-1-0-beta/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 13:19:49 +0000</pubDate>
		<dc:creator>Nick Freear</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cloudengine]]></category>
		<category><![CDATA[cloudworks]]></category>
		<category><![CDATA[messaging]]></category>

		<guid isPermaLink="false">http://cloudengineblog.wordpress.com/?p=56</guid>
		<description><![CDATA[I&#8217;m happy to say that last Wednesday (2nd February) my colleague Richard Lovelock put the new direct messaging function live on Cloudworks. It is something that Cloudworks users have requested and we have wanted for a while. Despite a quiet &#8230; <a href="http://cloudengineblog.wordpress.com/2011/02/09/direct-messaging-cloudengine-1-1-0-beta/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=56&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m happy to say that last Wednesday (2nd February) my colleague <a title="@RichLovelock on Twitter" href="http://twitter.com/RichLovelock">Richard Lovelock</a> put the new direct messaging function live on <a title="Cloudworks powered by CloudEngine" href="http://cloudworks.ac.uk/">Cloudworks</a>. It is something that Cloudworks users have requested and we have wanted for a while. Despite a quiet launch, it has already been taken up by the Cloudworks community. And, we&#8217;re excited about its potential for fostering private discussions that can lead on to public Clouds and Cloudscapes.</p>
<p>Richard researched what Facebook, Linked in, Twitter and a variety of other spaces provide. He designed a system that allows private messaging between multiple participants. I&#8217;m sure you will find it quite easy and at the same time powerful to use. We are very pleased with the results &#8211; thank you Richard!</p>
<p>After you log in to Cloudworks, you will see a link labelled Messages in the main navigation menu. The message main-page or inbox page summarises your discussions and who was the last to reply to each thread.</p>
<p><a href="http://flickr.com/photos/cloudengine/5351907584/"><img src="http://farm6.staticflickr.com/5245/5351907584_8b87c8cf3a_z.jpg" alt="inbox" width="640" height="446" /></a></p>
<p>The compose message page provides a neat way to search for recipients by their full name, and a list of suggestions appears as you type.</p>
<p><a href="http://flickr.com/photos/cloudengine/5351907546/"><img src="http://farm6.staticflickr.com/5005/5351907546_dc506c2b7d_z.jpg" alt="compose" width="640" height="430" /></a></p>
<p>The direct messaging code is part of the open-source CloudEngine software that powers Cloudworks. You or a friendly developer can now <a href="http://getcloudengine.org/">download CloudEngine 1.1 Beta</a>, and find out how to create your own social network. Full documentation for <a href="http://getcloudengine.org//wiki/Messaging">direct messaging is on the Wiki</a>.</p>
<p>There are numerous <a title="Release notes for 1.1.0 beta" href="http://getcloudengine.org//wiki/Releases#!cloudengine-110-beta">enhancements and fixes in CloudEngine 1.1 Beta</a>, including a handy new maintenance mode to ease system administration. And, we have implemented the <a href="http://getcloudengine.org//wiki/HTML5">new HTML5 form attributes for validation</a>, initially on the registration form. This is most visible on Firefox 4 beta, and Opera 9.6 onwards. We will be improving other forms and integrating HTML5 form emulation for other browsers as time permits.</p>
<p>I&#8217;ll be at <a title="JISC DevCSI Developer Days, 16-17 February 2011" href="http://dev8d.org/">Dev8D in London</a> next week and happy to talk more about what we&#8217;re doing with CloudEngine and Cloudworks, and how you can get involved <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>So there you have it. Major new functionality is available on Cloudworks, and we have a new Beta release of CloudEngine. Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cloudengineblog.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cloudengineblog.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=56&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cloudengineblog.wordpress.com/2011/02/09/direct-messaging-cloudengine-1-1-0-beta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5de84c8a93f88c9001e2fbe3f45b9cd2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maltable</media:title>
		</media:content>
	</item>
		<item>
		<title>CloudEngine v1.0.1</title>
		<link>http://cloudengineblog.wordpress.com/2011/01/05/cloudengine-v1-0-1/</link>
		<comments>http://cloudengineblog.wordpress.com/2011/01/05/cloudengine-v1-0-1/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 16:04:39 +0000</pubDate>
		<dc:creator>Nick Freear</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cloudengineblog.wordpress.com/?p=53</guid>
		<description><![CDATA[It&#8217;s a new year, and we have an updated version of CloudEngine for you, version 1.0.1. Actually, it&#8217;s not that new, as it was released at the end of November, but things crop up. Version 1.0 of CloudEngine was based &#8230; <a href="http://cloudengineblog.wordpress.com/2011/01/05/cloudengine-v1-0-1/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=53&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s a new year, and we have an updated version of CloudEngine for you, version 1.0.1. Actually, it&#8217;s not that new, as it was released at the end of November, but <a title="EU4ALL - European Unified Approach for Accessible Lifelong Learning" href="http://www.eu4all-project.eu/">things crop up</a>.</p>
<p>Version 1.0 of CloudEngine was based on the initial code pushed to Bitbucket by my colleague, <a title="Juliette's photography on Flickr" href="http://www.flickr.com/photos/julietteculver/">Juliette Culver</a>. So the new release, while a so-called minor release, contains significant stuff.</p>
<p>Highlights include edits and fixes to the language template and Greek language pack, and some small accessibility and usability fixes, including for the installer. There are improvements to how email is configured and fixes to the model/database code and error handling. <a title="CloudEngine v1.0.1" href="http://getcloudengire.org//wiki/Releases#!cloudengine-101">Full details</a> are on the CloudEngine Wiki and issue tracker.</p>
<p>Go forth and <a title="Download or clone the code..." href="http://getcloudengine.org/">enjoy</a>!</p>
<p>Next, our work in progress and how to contribute.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cloudengineblog.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cloudengineblog.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=53&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cloudengineblog.wordpress.com/2011/01/05/cloudengine-v1-0-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5de84c8a93f88c9001e2fbe3f45b9cd2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maltable</media:title>
		</media:content>
	</item>
		<item>
		<title>Why we chose Mercurial and Bitbucket</title>
		<link>http://cloudengineblog.wordpress.com/2010/12/13/why-we-chose-mercurial-and-bitbucket/</link>
		<comments>http://cloudengineblog.wordpress.com/2010/12/13/why-we-chose-mercurial-and-bitbucket/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 17:27:05 +0000</pubDate>
		<dc:creator>Nick Freear</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bitbucket]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[hg]]></category>
		<category><![CDATA[mercurial]]></category>

		<guid isPermaLink="false">http://cloudengineblog.wordpress.com/?p=44</guid>
		<description><![CDATA[Since the start of October we have been using Bitbucket to host the CloudEngine project. Almost as soon as we made the decision to use Bitbucket, people have asked why? So, I thought I&#8217;d reproduce an email I wrote to &#8230; <a href="http://cloudengineblog.wordpress.com/2010/12/13/why-we-chose-mercurial-and-bitbucket/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=44&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Since the start of October we have been using <a href="http://bitbucket.org/">Bitbucket</a> to host the <a href="http://getcloudengine.org/">CloudEngine project</a>. Almost as soon as we made the decision to use Bitbucket, people have asked why? So, I thought I&#8217;d reproduce an email I wrote to colleagues then. At the end I&#8217;ve noted how I feel about the decision two months on&#8230;</p>
<p>During September, I was tasked with deciding on where to host the free/open-source CloudEngine. By host, we mean essentially:</p>
<ul>
<li>A repository of the      source code (which basically keeps track of the &#8216;version&#8217; of each file),</li>
<li>A way for developers to      browse the source code repository online,</li>
<li>A bug and issue tracker,</li>
<li>A Wiki for documentation.</li>
</ul>
<p>The provisional decision is to use Bitbucket, which uses the Mercurial distributed version control (repository) system (DCMS). I&#8217;ve summarised the reasons below.</p>
<p>The choice has been between:</p>
<ul>
<li>The Open University</li>
<li>Github,<a href="http://www.google.com/url?q=http%3A%2F%2Fgithub.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHS3e-N1GF2AlPstOWxKYoPPi2Zig"> </a><a href="http://github.com/">http://github.com/</a></li>
<li>Bitbucket,<a href="http://www.google.com/url?q=http%3A%2F%2Fbitbucket.org%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNH3PM1GcvRCzXNg41NmLn3F9veVWA"> </a><a href="http://bitbucket.org/">http://bitbucket.org/</a></li>
<li>Google Code,<a href="http://code.google.com/hosting/"> </a> <a href="http://code.google.com/hosting/">http://code.google.com/hosting/</a></li>
</ul>
<p>Hosting the project at the OU was discounted early, as we wish to encourage the use, development and contributions to CloudEngine from the wider community. The three remaining contenders use two different version control systems, and which of the two to use – Git or Mercurial &#8211; has been a big part of the choice. Note that both Git and Mercurial are free/open-source and cross-platform software tools, with command-line and GUI alternatives. And the three hosting contenders are all free for open-source use.</p>
<p>To help in the decision I canvassed opinions from the Moodle and OU communities:</p>
<ul>
<li>Search down the <a href="http://moodle.org/mod/forum/discuss.php?d=158521">Moodle forum      discussion, &#8220;Why Git?&#8221;</a> ,<a href="http://www.google.com/url?q=http%3A%2F%2Fmoodle.org%2Fmod%2Fforum%2Fdiscuss.php%3Fd%3D158521&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNG6rzaXYtGzuGrG8aymwfmYOyynHQ"> </a></li>
<li>The OU web developers      group thread, <a href="http://groups.google.com/group/ou-web-developers/t/d3a370e5f90d7433">Views      wanted on Git and Mercurial</a>.</li>
</ul>
<p>Some reasons to use Git (and Github) are:</p>
<ul>
<li>Git is used for a lot of      high profile and large projects including the Linux kernel,</li>
<li>Some projects that are      interesting for the OU, Moodle and Drupal, have plans to migrate to Git      (and the OU-VLE team in LTS plan to move to Git).</li>
<li>Git has the reputation for      being flexible, powerful and fast.</li>
<li>Github has the most      projects of the three platforms.</li>
</ul>
<p>Some reasons to use Mercurial (and Bitbucket or Google Code) are:</p>
<ul>
<li>Mercurial seems to have      been designed with better cross-platform support in mind (Git was initially      developed for Linux),</li>
<li>Where Git is a toolkit      with about 146 sub-commands depending on the operating system (git      &#8211;help &#8211;all),      Mercurial is a cohesive &#8216;product&#8217; with only 50 commands (hg &#8211;help). The large number of      commands in Git would not be such an issue, if discussions and blog posts      hadn&#8217;t pointed out that you start to need quite a number of commands for      even a simple workflow. That is, Git may be complex for even simpler      usage. (Eg.<a href="http://www.google.com/url?q=http%3A%2F%2Freprog.wordpress.com%2F2010%2F05%2F12%2Fstill-hatin-on-git-now-with-added-actual-reasons%2F%23comment-2932&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE4YczYxPa-mUj2eYVv7_2tpnUpAA"> </a> <a href="http://reprog.wordpress.com/2010/05/12/still-hatin-on-git-now-with-added-actual-reasons/#comment-2932">reprog.wordpress.com/      Still hatin&#8217; on Git now with added actual reasons</a> )</li>
<li>Mercurial has the      reputation of having a shallower learning curve than Git – which relates      to the point above.</li>
<li>Mercurial is written in      one language (Python + C for &#8216;diff&#8217;), while Git is written in several      languages</li>
<li>CodeIgniter, on which      CloudEngine/Cloudworks is built, uses Bitbucket/ Mercurial (Pyrocms, also      built on CI uses Github/ Git).</li>
<li>Bitbucket has more than      28,000 projects, so it isn&#8217;t small!</li>
<li>Plenty of respected      projects use Mercurial/ Bitbucket/ Google Code, including Mozilla      (Firefox), OpenSolaris, OpenOffice, Adium, Python (will migrate), Vim,      Growl, Chromium (os Chrome browser)&#8230;</li>
</ul>
<p>Some things to point out – these tend to level the &#8220;playing field&#8221; between Git and Mercurial:</p>
<ul>
<li>It better to use any      reasonably well-designed version control system, than none at all.</li>
<li>It is generally      considered better to use one of the newer distributed systems like Git or      Mercurial, than one of the old ones like CVS (eg.<a href="http://www.google.com/url?q=http%3A%2F%2Fimportantshock.wordpress.com%2F2008%2F08%2F07%2Fgit-vs-mercurial%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGy-BJw_83tsq4SvNZzC8pWPMLuKw"> </a> <a href="http://importantshock.wordpress.com/2008/08/07/git-vs-mercurial/">http://importantshock.wordpress.com/2008/08/07/git-vs-mercurial/</a> )</li>
<li>CloudEngine is fairly      small, when compared to Moodle and Drupal, and personall, I&#8217;d like to keep      the &#8220;core&#8221; fairly small. So we don&#8217;t necessarily need maximum      flexibility if there is a cost in complexity.</li>
<li>And I was concerned with      getting the initial core developers – Richard, Juliette and myself up to      speed quickly.</li>
<li>In the new distributed      paradigm, there will be nothing to stop someone cloning our repository      from Git to Mercurial or vice versa. And we can then pick up improvements,      for example as a set of patches.
<ul>
<li>For example, there is a       Mercurial mirror of the Linux kernel (Git to Mercurial), <a href="http://kernel.org/hg/linux-2.6/">http://kernel.org/hg/linux-2.6/</a></li>
<li>And a Git mirror of       Moodle (CVS to Git),<a href="http://www.google.com/url?q=http%3A%2F%2Fgit.moodle.org%2Fgw%3Fp%3Dmoodle.git%3Ba%3Dsummary&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHmg56VybTbWz3Go_RE3FBTf8q7Mw"> </a> <a href="http://git.moodle.org/gw?p=moodle.git;a=summary">http://git.moodle.org/gw?p=moodle.git;a=summary</a></li>
</ul>
</li>
<li>There will be nothing to      stop anyone submitting patches, whether we use Git, Mercurial &#8230; (RCS!)</li>
<li>If sufficient numbers of      CloudEngine developers use Git and we use Mercurial, we may at some future      point provide a mirror of CloudEngine in Git. (And we may even move to Git      – nothing is set in stone.)</li>
<li>And finally, I accept      that as developers, we may well have to learn both Git and Mercurial to      work on various projects.</li>
</ul>
<p>It has been a hard choice, but on balance I propose using Mercurial. And I propose Bitbucket over Google Code as:</p>
<ul>
<li>While Google Code is used      for some large Google projects including Chromium, it is often used for      the smallest projects – for example Javascript/jQuery plugins.</li>
<li>Google Code has the feel      of a repository, while Bitbucket will hopefully be a community.</li>
</ul>
<p>My links,</p>
<ul>
<li><a href="http://delicious.com/nfreear/versioncontrol">delicious.com / nfreear      / versioncontrol</a></li>
</ul>
<h2>Two months on…</h2>
<p>I have no complaints! On the Mercurial front, I find the command line tool easy to use, and there are <a title="by Joel Spolsky" href="http://hginit.com/">excellent tutorials</a>, <a href="http://mercurial.selenic.com/wiki/">references</a> and <a href="http://hgbook.red-bean.com/">books</a> (online + print). There are some neat features:</p>
<ul>
<li>hg serve – type this simple command to start      up a basic web server, with configurable pull and push options.</li>
<li>Mercurial makes it easy      to <a href="http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html">configure      hooks</a> to run on certain commands, for example commit and update. Git      also has hooks, and I can’t comment on the comparable ease-of-use.</li>
<li>Syntax highlighting,      progress… and other bundled and 3rd party extensions</li>
<li>Patch queues – I haven’t      looked at these yet! (<a href="http://mercurial.selenic.com/wiki/MqExtension">Mercuarial Queues      Extension</a>.)</li>
</ul>
<p>Note, we have Mercurial on our Linux servers, courtesy of <a href="http://fedoraproject.org/wiki/EPEL">EPEL</a>.</p>
<p>I’m fairly impressed with Bitbucket too. The wiki and issue-tracker are easy to use, with some <a href="http://groups.google.com/group/bitbucket-users/browse_thread/thread/ea8229218861a304/104f86a5c276d0ff?pli=1">useful macros</a>, for example, <a href="http://confluence.atlassian.com/display/BITBUCKET/Linking+to+an+Issue+from+a+Bitbucket+Wiki+Page">&lt;&lt;issues query [format]&gt;&gt;</a>. We have used the latter example on the <a href="http://getcloudengine.org//wiki/Releases#wiki">Releases page</a> in our wiki. It’s neat having the Wiki pages in a Mecurial repository. And the Mercurial support team are fairly responsive to queries and isuses.</p>
<p>If I have one slight criticism, it is, why have the wiki and issue tracker per repository? I expect CloudEngine to need at least one more repository for extensions and contributed plugins – as we won’t want a separate Wiki for that repository, we’ll need some fiddly links. And the links are generally longer. Anyway, these are relatively small points, and may be partially answered by considerations like the macro feature mentioned above.</p>
<p>So there you have it – no complaints, and use whichever platform suits your needs.</p>
<p>Watch this space for more on recent and forthcoming <a href="http://getcloudengine.org//wiki/Releases#wiki">CloudEngine releases</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cloudengineblog.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cloudengineblog.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=44&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cloudengineblog.wordpress.com/2010/12/13/why-we-chose-mercurial-and-bitbucket/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5de84c8a93f88c9001e2fbe3f45b9cd2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maltable</media:title>
		</media:content>
	</item>
		<item>
		<title>CloudEngine 1.0</title>
		<link>http://cloudengineblog.wordpress.com/2010/10/27/cloudengine-1-0/</link>
		<comments>http://cloudengineblog.wordpress.com/2010/10/27/cloudengine-1-0/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 14:46:30 +0000</pubDate>
		<dc:creator>Nick Freear</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cloudengineblog.wordpress.com/?p=30</guid>
		<description><![CDATA[I thought it was time to mark an official milestone &#8211; on Friday we packaged up CloudEngine 1.0 and uploaded it to Bitbucket. This is based on the initial upload by my colleague Juliette Culver. This is a good time &#8230; <a href="http://cloudengineblog.wordpress.com/2010/10/27/cloudengine-1-0/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=30&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I thought it was time to mark an official milestone &#8211; on Friday we packaged up <a href="http://bitbucket.org/cloudengine/cloudengine/downloads#tag-downloads">CloudEngine 1.0</a> and uploaded it to <em>Bitbucket</em>. This is based on the initial upload by my colleague <a href="http://www.julietteculver.com/">Juliette Culver</a>.</p>
<p style="text-align:center;"><a href="http://flickr.com/photos/nfreear/5120647896/"><img class="aligncenter" src="http://farm2.static.flickr.com/1240/5120647896_522ee0247f_d.jpg" alt="CloudEngine installation - home page. View on Flickr." width="500" height="451" /></a></p>
<p>This is a good time to mark the end of &#8220;phase 1&#8243; of the free/ open-sourcing project. Over the past 6 months or so Juliette has made the code ready for open-sourcing (including removing my &#8220;@todo&#8221; comments;-)); worked tenaciously with <a href="http://www.oss-watch.ac.uk/">OSS Watch</a>, the Open University&#8217;s legal department and our funders on licensing and trademarks; worked with <a title="Yep design" href="http://yepdesign.co.uk/">Stephen Turvey</a> on our beautiful Aurora theme, and done the hundred and one other things that a &#8216;launch&#8217; requires. Thank you Juliette!</p>
<p>Now fellow developer, <a href="http://iet.open.ac.uk/people/r.j.lovelock">Richard Lovelock</a> and I are getting to grips with Mercurial and Bitbucket, which I think we both quite like. And I&#8217;ve been busy adding to the Wiki and setting up Mercurial on our servers for <a href="http://cloudworks.ac.uk/">Cloudworks</a>.</p>
<p>Looking forward, Richard is busy with <a href="http://bitbucket.org/cloudengine/cloudengine/wiki/Messaging">direct/ private messaging</a>, which will be our next new feature. And I&#8217;m working on bug-fixes, collaborating to bring more <a href="http://bitbucket.org/cloudengine/cloudengine/wiki/oEmbed">oEmbed providers</a> to Cloudworks and CloudEngine, a <a href="http://bitbucket.org/cloudengine/cloudengine/wiki/up-popup">proposal for &#8216;universal&#8217; popups (up-popup)</a>,  the roadmap and getting started sections in the Wiki.</p>
<p>We&#8217;d love your <a title="Join the CloudEngine developers group" href="http://groups.google.com/group/cloudengine-developers">comments and ideas</a> on all of the above. Watch this space!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cloudengineblog.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cloudengineblog.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=30&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cloudengineblog.wordpress.com/2010/10/27/cloudengine-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5de84c8a93f88c9001e2fbe3f45b9cd2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">maltable</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1240/5120647896_522ee0247f_d.jpg" medium="image">
			<media:title type="html">CloudEngine installation - home page. View on Flickr.</media:title>
		</media:content>
	</item>
		<item>
		<title>CloudEngine Accessibility</title>
		<link>http://cloudengineblog.wordpress.com/2010/10/15/cloudengine-accessibility/</link>
		<comments>http://cloudengineblog.wordpress.com/2010/10/15/cloudengine-accessibility/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 18:23:42 +0000</pubDate>
		<dc:creator>Juliette Culver</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cloudengineblog.wordpress.com/?p=22</guid>
		<description><![CDATA[We want CloudEngine and Cloudworks to be as accessible as possible to people with disabilities. Earlier this year, we had some help from Chetz Colwell, an accessibility expert here in the Institute of Educational Technology at The Open University in &#8230; <a href="http://cloudengineblog.wordpress.com/2010/10/15/cloudengine-accessibility/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=22&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>We want CloudEngine and Cloudworks to be as accessible as possible to people with disabilities. Earlier this year, we had some help from Chetz Colwell, an accessibility expert here in the Institute of Educational Technology at The Open University in reviewing the software from an accessibility perspective.</p>
<p>On the whole I would say that we are more clued up about accessibility than average, and apart from a few &#8216;bugs&#8217; that slipped through the net, we avoided the most common accessibility pitfalls that you come across.  Nonetheless, we still learned some new things, proving how useful it is to have your software reviewed in this manner, and I thought it might be useful to share them. We are still working on fixing some of these (and now that the code is open-source, you are very welcome to help!) and have time marked out in next year’s roadmap for accessibility improvements.</p>
<h1>Ten things that we learned from the accessibility review</h1>
<p><strong>1) Check any third-party code carefully for accessibility issues</strong></p>
<p>One important lesson that we learned from the review is that we need to become meticulous about checking the accessibility of any third party code that we decide to use. The chief culprits here were the text editor and date picker, but this also extends more broadly to any front-end code written by other people.</p>
<p>This is tricky though because sometimes choice is very limited particularly when you also have non-accessibility requirements that you want to fulfill. It is also often difficult to get good information without doing the testing yourself. However, it is still something that we need to be much more alert to and if we do find ourselves in the position of having to use code that is less accessible code than ideal, we need to at the minimum e.g. let users switch off the text editor, or give them sufficient information to add dates without using a date picker.</p>
<p><strong>2) Test with high contrast settings</strong></p>
<p>We had used a Colour Contrast analyser to test our pages, but we didn’t realise that we should also test with high contrast display settings. Lots of parts of the pages such as the borders of tabs and buttons became invisible or nearly invisible with these settings on.</p>
<p><strong>3) Make sure you logically order the elements of pages in HTML</strong></p>
<p>Some examples:</p>
<ul>
<li><a href="http://cloudworks.ac.uk/cloud/view/4152">The Cloud page </a>is organised into two visual columns. The first column of the page contains the title and contents of the Cloud. The name of the person who created the cloud is in the second column, so this comes after the entire contents of the cloud which might be quite long. It would make more sense for the name of the creator of the cloud to come after the title of the cloud.</li>
<li>In the comments on clouds, we put the name of the person who put the comment after the comment, whereas it would be more helpful to somebody using a screenreader if it came before.</li>
<li>On some of our form fields, as well as a field label we had some extra help text e.g. giving examples of the type of content people might want to include in the field. It is more useful if this comes before the form field rather than afterwards where we had put it.</li>
</ul>
<p><strong>4) Use the &lt;hr /&gt; tag for horizontal lines that divide up sections</strong></p>
<p>I had learned to shy away from using the &lt;hr /&gt; tag for horizontal lines because I associate it so much with being used when CSS should be used instead. But the &lt;hr /&gt; tag when used semantically actually makes it easier for screenreader users to know when one section ends and another starts.</p>
<p><strong>4) For HTML page titles, put the title of the page first and name of the site second</strong></p>
<p>It’s easier for screenreader users if the title of a page in the HTML is e.g. ‘Create Cloud – Cloudworks’ rather than ‘Cloudworks – Create Cloud’. This way screenreader users hear the name of the actual page upfront. Although I have to say that even the BBC Website does it the other way round!</p>
<p><strong>5) Make it as easy as possible for people to make user generated content accessible</strong></p>
<p>User generated content always poses interesting accessibility challenges. However, we could have done much more to make it as easy as possible for people to make their content accessible. This is partly in terms of raising awareness of accessibility and providing information for people on how to make their content accessible, but there is also functionality that we could provide. For example</p>
<ul>
<li>When people add embeds, we should give them option of providing an accessible alternative</li>
<li>When people add URLs, we should insist they also add a title</li>
<li>When people add images, we should make it easy for them to add alt text.</li>
<li>We need to make sure that the text editor makes it as easy as possible for people to make their content accessible</li>
</ul>
<p><strong>6) When using tabs, make sure the keyboard focus remains on the tab when clicked. </strong></p>
<p>Tabs, such as the alphabetical tabs on the <a href="http://cloudworks.ac.uk/cloud/cloud_list">Clouds</a> and <a href="http://cloudworks.ac.uk/cloudscape/cloudscape_list">Cloudscapes</a> pages or the tabs for different items types on the <a href="http://cloudworks.ac.uk/event/site">Cloudstream</a> pages, are difficult for screenreader users, but it is still easier if the focus remains on the tab rather than goes back to the top of the page.</p>
<p><strong>7) Avoid captchas altogether on registration forms</strong></p>
<p>We knew that captchas were an issue and we have always offered to register people manually. However, instead of just doing this or looking into e.g. audio captchas, we really ought to at least try turning them off altogether and trying other anti-spam measures. We haven’t tried removing the captchas on our registration form yet, but have added functionality to easily turn captchas on and off, so we might try it at some point to see to what extent captchas do actually reduce spam. Most of the spam we get is currently human-generated rather than robot-generated, but that may be because we have captchas!</p>
<p><strong>8) Make sure there is not too much whitespace between a form label and form field</strong></p>
<p>This makes the form difficult to navigate for users of screen magnifiers. This can easily happen if you have your form as two visual columns with the form labels in the first column and form fields in the second column (as is the case on our current registration form).  It is generally better to put the form label above the field rather than to the left of it for this reason.<strong> </strong></p>
<p><strong>9) Put form validation messages above the page heading</strong></p>
<p>If there is a form validation error message, it is much easier for screen reader users if the message is above the main page heading, rather than just above the form where you might more obviously put it.</p>
<p><strong>10) Be careful not to use whitespace as ‘punctation’</strong></p>
<p>It can be very tempting to use whitespace to mark gaps and to forget that a screen reader will not realise this. For example, in one place we had lists of clouds with the cloud title of each cloud followed by some whitespace and then the number of comments, making it difficult to distinguish between the title and number of comments. Putting a dash, full stop or comma, instead makes it easier for screenreader users.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cloudengineblog.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cloudengineblog.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=22&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cloudengineblog.wordpress.com/2010/10/15/cloudengine-accessibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/9b35550d392c96dd9aa92972409a04a2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jvvw</media:title>
		</media:content>
	</item>
		<item>
		<title>Why we moved from Drupal to CodeIgniter</title>
		<link>http://cloudengineblog.wordpress.com/2010/10/11/why-we-moved-from-drupal-to-codeigniter/</link>
		<comments>http://cloudengineblog.wordpress.com/2010/10/11/why-we-moved-from-drupal-to-codeigniter/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 17:47:20 +0000</pubDate>
		<dc:creator>Juliette Culver</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cloudengineblog.wordpress.com/?p=19</guid>
		<description><![CDATA[CloudEngine and the Cloudworks website are based on the CodeIgniter PHP framework. However, this wasn’t originally the case. The first version of the Cloudworks site instead used the Drupal Content Management system and we only moved over to CodeIgniter a &#8230; <a href="http://cloudengineblog.wordpress.com/2010/10/11/why-we-moved-from-drupal-to-codeigniter/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=19&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>CloudEngine and the Cloudworks website are based on the CodeIgniter PHP framework. However, this wasn’t originally the case. The first version of the Cloudworks site instead used the Drupal Content Management system and we only moved over to CodeIgniter a year or so ago.  I have been asked a few times about our reasons for this move, so before I go on maternity leave I thought I should put them down in writing.</p>
<p>Any sort of rewrite is a risky decision to make, but in this case it is one that that I am really pleased with. It took about a month for me to migrate the code over, although that time also included implementing a new design for the design for the site.  We lost a tiny bit of functionality in the move – you get lots ‘for free’ with Drupal – but nothing significant.</p>
<p>Before I start, I want to say that I am still a fan of Drupal for certain types of projects. It also has a great community that seems to be doing all the right things in terms of the directions that Drupal is moving forwards. In fact, I have chosen to use Drupal for other projects since. So please don’t take this as an all-out attack on Drupal, rather as some reasons why it wasn’t right for us in this context.</p>
<p>There are three main reasons why we moved and why I am glad that we made the decision to switch to CodeIgniter:</p>
<p><strong>1) Productivity Curve</strong></p>
<p>With Drupal, you can get the majority of a site built very quickly, but those last details can be agonising. Drupal has a lot of built-in functionality that you can effectively just switch on. It is also straightforward to write simple modules of your own. However the flip-side to this is that if Drupal doesn’t do exactly what you want, for example if you want a slightly different user interface or some subtle change in functionality, you often find yourself back at close to square one.  If you have a site that you just want to be ‘good enough’ and to get up and running quickly, none of this is a problem, but if those details do matter to you, the time you saved at the start is quickly eclipsed by this time fine-tuning at the end.</p>
<p>Using a framework such as CodeIgniter, you do have to write everything from scratch and it is a little bit more work to get things set up at the start.  However, having a framework does speed this up a great deal and writing new functionality with CodeIgniter is, if anything, quicker than writing an equivalent Drupal module. There are also lots of libraries out there that you can use with CodeIgniter, so you often aren’t starting from a completely blank slate. On the other hand, when you write some code in CodeIgniter, you can write it so that it does precisely what you want it to from the start.</p>
<p>Some of this difference comes down to learning curve of course. I’m certainly not a Drupal novice. I’ve written a fair few modules for Drupal and know a certain amount about how to override core behaviour in Drupal for example, but I definitely wouldn’t class myself as an expert either. I readily admit that for somebody with more knowledge than me, the difference in productivity between Drupal and CodeIgniter would be less extreme. Indeed I’d be genuinely curious to know how quickly a Drupal expert could replicate the Cloudworks site. However, any time taken learning more about Drupal is time that would have needed to come out of the time allocated to development of the site. In contrast, you could read all the CodeIgniter documentation in a day and I haven’t yet known a PHP developer who hasn’t been able to pretty much hit the ground running with CodeIgniter.</p>
<p>Aside from learning curve, I suspect that there are some things that are just fundamentally difficult to do in Drupal. I am in two minds about whether to go into specifics here as I don’t want to get dragged down into microissues. If you want a taster, you can see a few examples of my questions on the Drupal forums <a href="http://drupal.org/tracker/371512">http://drupal.org/tracker/371512</a> before I gave up asking there! I know that that some of the issues I had have been fixed in later versions of Drupal, but I also have memories of having problems with dealing with images and configuring the registration form and user profiles quite how I wanted them and I doubt all of these have been resolved.</p>
<p><strong>2) A different way of working </strong></p>
<p>Working with Drupal felt a bit like building a boat by starting with a car and gradually modifying the car until it became a boat, whereas working with CodeIgniter felt like building a boat from scratch. This changes your mindset significantly when you are working on a site. Now if what you are building is very close to the ‘Drupal model’ then this isn’t too tough, but if it’s not then the mental process of figuring out how to twist Drupal to meet your requirements is much more of an uphill struggle.</p>
<p>Theming is a good case in point when it comes to this different way of working in Drupal versus CodeIgniter. If a designer produces some HTML and CSS for you, you can drop this straight into a site using CodeIgniter but with Drupal, you can have a major piece of work on your hands making it into a theme. Working with a designer on a Drupal version of the site was much trickier as I had to try and explain what would make a design feasible to be turned into a Drupal theme. More generally, I found it trickier discussing work on the site with other people on the project when we were using Drupal compared with when we started using CodeIgniter.</p>
<p>There is also has a more subtle effect. Instead of starting out thinking ‘this is what I would really like the site to be like’ you find yourself naturally looking at what modules are out there and whether they might be useful. This is quite a different way to look at building a site and means that you are less open to ideas for which there aren’t easy Drupal solutions.</p>
<p><strong>3) Site structure in the database </strong></p>
<p>The way Drupal works is that in order to be configurable via a nice user interface, lots of the important information about the site sits in the database.  So as well as containing the ‘site data’ such as details of all the users, the text of content and so on, it also contains the ‘site structure data’ for example specifying the types of object (nodes in Drupal-speak) for your site and the ‘views’ of the data that you are using on specific pages. It’s exactly this that makes Drupal so easy and flexible to configure for non-developers.  On a site using a framework like CodeIgniter, such information would be more ‘hardcoded’ into the structure of the database or the actual code for the specific site in question.</p>
<p>This has a few knock-on effects. First, pushing quite simple changes in functionality to a live Drupal site usually isn’t as simple as just updating the code. This was a little while back so there might be a nice solution to this nowadays (let me know if there is!), but in practice, to update the live Cloudworks site when I was using Drupal, I normally ended up having to write lists of all the actions that I had performed via the Drupal admin interface and repeat these on the live site and hope that I hadn’t made any mistakes and then pray that I didn’t need to rollback for some reason. Secondly, it would have made life much more complicated for making our software open-source in terms of support. It’s easy to be reasonably confident that somebody is using an unmodified version of your code, but it’s harder to be certain that they haven’t changed something vital in the Drupal admin interface. Finally, the Drupal way of having the site structure information in the database means that database queries can easily get thorny. This isn’t a problem too often, but queries that are now only moderately complex using CodeIgniter were often absolutely horrendous in Drupal.</p>
<p><strong> Finally</strong></p>
<p>I think the cumulative effect of all these things was that I became a much happier developer when we moved to CodeIgniter.  I somehow felt in control of my code again and I spent less time tearing my hair out trying to find some Drupal workaround! As a result, I also felt I had more energy and enthusiasm to put in the site. Overall, although the move could be regarded as slightly controversial and I was nervous about it, I have no doubt that it was the right one for us in our situation.</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cloudengineblog.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cloudengineblog.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=19&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cloudengineblog.wordpress.com/2010/10/11/why-we-moved-from-drupal-to-codeigniter/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/9b35550d392c96dd9aa92972409a04a2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jvvw</media:title>
		</media:content>
	</item>
		<item>
		<title>Welcome to the CloudEngine blog!</title>
		<link>http://cloudengineblog.wordpress.com/2010/10/08/welcome-to-the-cloudengine-blog/</link>
		<comments>http://cloudengineblog.wordpress.com/2010/10/08/welcome-to-the-cloudengine-blog/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 11:33:46 +0000</pubDate>
		<dc:creator>Juliette Culver</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cloudengineblog.wordpress.com/?p=14</guid>
		<description><![CDATA[Welcome to the CloudEngine blog. CloudEngine is the software behind the Cloudworks website that we have recently made open-source. You can find the source code, wiki and issue tracker at the CloudEngine BitBucket site. We&#8217;re very excited about going open-source &#8230; <a href="http://cloudengineblog.wordpress.com/2010/10/08/welcome-to-the-cloudengine-blog/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=14&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Welcome to the CloudEngine blog. CloudEngine is the software behind <a href="http://cloudworks.ac.uk">the Cloudworks website</a> that we have recently made open-source. You can find the source code, wiki and issue tracker at <a href="http://bitbucket.org/cloudengine/cloudengine/">the CloudEngine BitBucket site</a>. We&#8217;re very excited about going open-source and actively looking for volunteers to help contribute. </p>
<p>This is going to the place where we announce news about CloudEngine and post about why we have made certain decisions and lessons that we have learned. To kick things off, we have copied over some of the blog posts from the Cloudworks blog of a more technical nature as a start.  </p>
<p>I&#8217;ll being going on maternity leave in a week&#8217;s time, although I hope to make a couple of more posts here before then. After that my colleague Nick Freear who has worked on several major CloudEngine features will be taking over leading the development. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cloudengineblog.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cloudengineblog.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=14&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cloudengineblog.wordpress.com/2010/10/08/welcome-to-the-cloudengine-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/9b35550d392c96dd9aa92972409a04a2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jvvw</media:title>
		</media:content>
	</item>
		<item>
		<title>Making Cloudworks open-source</title>
		<link>http://cloudengineblog.wordpress.com/2010/10/08/making-cloudworks-open-source/</link>
		<comments>http://cloudengineblog.wordpress.com/2010/10/08/making-cloudworks-open-source/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 11:24:11 +0000</pubDate>
		<dc:creator>cloudengine</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cloudengineblog.wordpress.com/?p=9</guid>
		<description><![CDATA[[Originally posted by Juliette Culver on the Cloudworks blog] My top priority before I go on maternity leave is to make the Cloudworks source-code open-source and I thought it would be worth sharing the main things that in our plan &#8230; <a href="http://cloudengineblog.wordpress.com/2010/10/08/making-cloudworks-open-source/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=9&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>[Originally posted by Juliette Culver on the <a href="http://cloudworks.ac.uk/blog/view/1524">Cloudworks blog</a>]</p>
<p>My top priority before I go on maternity leave is to make the  Cloudworks  source-code open-source and I thought it would be worth  sharing the main things that in our plan for this.</p>
<p><strong>Name and branding<br />
</strong></p>
<p>It is going to be confusing if the open-source version of the code is  also  called Cloudworks and if new installs look identical to the  Cloudworks site, so  we need to come up with a new name and branding.  Names are hard because as well  as picking a good name, you need to get  them trademark-checked, you don&#8217;t want  to clash with anything else with  the same name that might cause confusion and  you also want to be able  to get a reasonably sensible domain name. We have some  ideas but  suggestions are very welcome! We&#8217;ve already got our graphic designer  to  produce a new colour scheme and site banner so we&#8217;re part of the way  with the branding side  of things.</p>
<p><strong>Licensing </strong></p>
<p>There are two main things to consider here. First, we have had to  check with  legal at The Open University whether we can release the code  as open-source and  if there are any restrictions on licences we can  use, as well as check with the  funding bodies, JISC and the EU, that  have funded parts of the work. We&#8217;ve  already done this and luckily it  seems to be fairly straightforward and we can  pick pretty much any  licence we would like from that perspective.</p>
<p>Secondly, the code uses various other open-source code, for example  the  CodeIgniter framework, JQuery, TinyMCE and Zend Lucene. These are  all covered by  a variety of different licences and we need to make sure  that we&#8217;re not breaking  the terms of any of them when we release our  code. I&#8217;m hoping that <a href="http://www.oss-watch.ac.uk/">OSSWatch</a> are going to come to the  rescue here in helping me make sense of all this!</p>
<p><strong>Governance Model</strong></p>
<p>The OSSWatch website has lots of useful information about governance  models.  There are some interesting decisions for us here, especially  with how the  open-source work fits in with existing structures and with  me going on maternity  leave in October!</p>
<p><strong>Installation and upgrade infrastructure </strong></p>
<p>We need to write and test installation instructions for the code, as   well as make sure that an &#8216;empty&#8217; install of the code behaves  reasonably  sensibly. We also need to think ahead as to how we are going  to manage upgrades  and document which versions of PHP/MySQL we have  tested with.</p>
<p><strong>Configurability</strong></p>
<p>We are going through the codebase trying to spot anywhere that things  have  been hardcoded in which wouldn&#8217;t make sense in the open-source  version. One of  the main places is the support and about pages which  are currently hardcoded  HTML. We also need to allow people to customise  the theme and logo.</p>
<p>We have decided however on the whole to provide the code very much  &#8216;as is&#8217; in  the first instance and work on improving it later. The admin  interface for example is rather primitive, but  we&#8217;re working on the  principle that it is better to get the code out first and  make those  improvements afterwards.</p>
<p><strong>Hosting, website and documentation </strong></p>
<p>We need to decide where to host the code &#8211; at the moment, it is  looking like  a choice between Github and Bitbucket. We also need to put  infrastructure in  place for tracking bugs (and decide whether to try  and import the bugs we  currently have in our local bugtracker) as well  as think about things like a developer mailing list, wiki and website as  well as the type of documentation and guidance we want to have on them.  We also need to decide how we manage reports of security  vulnerabilities.</p>
<p><strong>Get involved </strong></p>
<p>If you&#8217;re interested in being an early guinea pig for the open-source  version or getting involved in development, please do contact us on  cloudworks@open.ac.uk</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cloudengineblog.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cloudengineblog.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cloudengineblog.wordpress.com&#038;blog=16449762&#038;post=9&#038;subd=cloudengineblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cloudengineblog.wordpress.com/2010/10/08/making-cloudworks-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/99e5feae4c80ad97799be54a3f3f5e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cloudengineblog</media:title>
		</media:content>
	</item>
	</channel>
</rss>
