<?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>Shuttleworth Foundation &#187; Rufus Pollock</title>
	<atom:link href="/category/fellows-blogs/rufus-pollock-blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shuttleworthfoundation.org</link>
	<description>Supporting exceptional people to change the world</description>
	<lastBuildDate>Tue, 04 Mar 2014 05:50:38 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Bad Data: real-world examples of how not to do data</title>
		<link>http://www.shuttleworthfoundation.org/bad-data-real-world-examples-of-how-not-to-do-data/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bad-data-real-world-examples-of-how-not-to-do-data</link>
		<comments>http://www.shuttleworthfoundation.org/bad-data-real-world-examples-of-how-not-to-do-data/#respond</comments>
		<pubDate>Tue, 19 Nov 2013 08:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Rufus Pollock]]></dc:creator>
				<category><![CDATA[Fellows Blogs]]></category>
		<category><![CDATA[Rufus Pollock]]></category>

		<guid isPermaLink="false">http://okfnlabs.org/blog/2013/11/19/bad-data-examples-how-not-to-do-data</guid>
		<description><![CDATA[<p><p>We’ve just started a mini-project called Bad Data. Bad Data provides real-world examples of how not to publish data. It showcases the poorly structured, the mis-formatted, and the just plain...</p></p><p>The post <a rel="nofollow" href="/bad-data-real-world-examples-of-how-not-to-do-data/">Bad Data: real-world examples of how not to do data</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>We’ve just started a mini-project called <a href="http://okfnlabs.org/bad-data/">Bad Data</a>. Bad Data provides real-world examples of how <em>not</em> to publish data. It showcases the poorly structured, the mis-formatted, and the just plain ugly.</p>
<p>This isn’t about being critical but about <strong>educating</strong>—providing examples of how <strong>not</strong> to do something may be one of the best ways of showing how to do it right. It also provides a source of good practice material for budding data wranglers!</p>
<p><img src="http://i.imgur.com/FNBf3aR.png" alt="Bad Data: ASCII spreadsheet" /></p>
<p>Each “bad” dataset on gets a simple page that shows what’s wrong along with a preview or screenshot.</p>
<p>We’ve started to stock the site with some of the better examples of bad data that we’ve come across over the years. This includes machine-<em>un</em>readable <a href="http://okfnlabs.org/bad-data/ex/tfl-passenger-numbers/">Transport for London passenger numbers from the London Datastore</a> and a classic “<a href="http://okfnlabs.org/bad-data/ex/bls-us-employment/">ASCII spreadsheet</a>” from the US Bureau of Labor Statistics.</p>
<p><strong>We welcome contributions of new examples! <a href="http://okfnlabs.org/bad-data/add">Submit them here</a>.</strong></p>

<p class="syndicated-attribution"><a href="http://okfnlabs.org/blog/2013/11/19/bad-data-examples-how-not-to-do-data.html" class="button" style="margin:-3px 6px 0 0;"><span>read original post </span></a> on <a href="/author/rufus-pollock/" title="Read other posts by Rufus Pollock">Rufus Pollock</a>'s Site</p><p>The post <a rel="nofollow" href="/bad-data-real-world-examples-of-how-not-to-do-data/">Bad Data: real-world examples of how not to do data</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.shuttleworthfoundation.org/bad-data-real-world-examples-of-how-not-to-do-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://rufuspollock.org/?#" length="0" type="" />
		</item>
		<item>
		<title>Northern Mariana Islands Retirement Fund Bankruptcy</title>
		<link>http://www.shuttleworthfoundation.org/northern-mariana-islands-retirement-fund-bankruptcy/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=northern-mariana-islands-retirement-fund-bankruptcy</link>
		<comments>http://www.shuttleworthfoundation.org/northern-mariana-islands-retirement-fund-bankruptcy/#respond</comments>
		<pubDate>Sat, 09 Nov 2013 09:37:14 +0000</pubDate>
		<dc:creator><![CDATA[Rufus Pollock]]></dc:creator>
				<category><![CDATA[Fellows Blogs]]></category>
		<category><![CDATA[Rufus Pollock]]></category>
		<category><![CDATA[Spending Stories]]></category>

		<guid isPermaLink="false">http://community.openspending.org/?p=1693</guid>
		<description><![CDATA[<p><p>Back on April 17 2012 the Northern Mariana Islands Retirement Fund attempted to file for bankruptcy under Chapter 11. There was some pretty interesting reading in their petition for bankruptcy...</p></p><p>The post <a rel="nofollow" href="/northern-mariana-islands-retirement-fund-bankruptcy/">Northern Mariana Islands Retirement Fund Bankruptcy</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><!-- magazine.image=http://community.openspending.org/files/2013/11/northern-mariana-island-retirement-declaration-pdf-1024x509.png --></p>
<p>Back on April 17 2012 the Northern Mariana Islands Retirement Fund attempted to file for bankruptcy under Chapter 11. There was some pretty interesting reading in their <a href="http://www.nmiretirement.com/downloads/Docket_Files/08_First_Day_Declaration.pdf">petition for bankruptcy</a> including this section (para 10) which suggests some pretty bad public financial management (emphasis added):</p>
<blockquote>
<p>&#8220;Debtor has had difficulty maintaining healthy funding levels due to a combination of factors, including: the <strong>failure of the Commonwealth&#8217;s central government and autonomous agencies to remit full employer contributions</strong>; a difficult investing climate over the most recent three to four years; and <strong>a benefit structure that has been continuously increased and made more generous by the Commonwealth government without a corresponding increase in funding to the Debtor to cover increased costs</strong>.&#8221;</p>
</blockquote>
<p><img src="http://community.openspending.org/files/2013/11/northern-mariana-island-retirement-declaration-pdf-1024x509.png" alt="northern-mariana-island-retirement-declaration-pdf" width="591" height="293" /></p>
<p>The Government then made things even worse:</p>
<blockquote>
<p>&#8220;These issues have combined to place the fund in a dire financial situation. Compounding this perfect storm, the <strong>Commonwealth Government has passed laws declaring payment holidays, diverting earmarked revenues from the Debtor and reducing contribution rates for the Commonwealth Government, its agencies and political subdivisions</strong>.&#8221;</p>
</blockquote>
<p>And they are now very bankrupt:</p>
<blockquote>
<p>&#8220;As a result, as of the date of Debtor&#8217;s last actuarial report as of October 1, 2009, Debtor&#8217;s actuary determined that Debtor&#8217;s obligation was approximately 38.8% funded. While the Debtor is currently engaged in compiling information necessary for an updated actuarial study, the Debtor estimates that it is currently 32% funded. Debtor&#8217;s financial condition continues to deteriorate, and, by management&#8217;s figures, the <strong>Debtor will deplete its assets by July, 2014 and thereafter be unable to provide any level of benefits to current and future Beneficiaries</strong>&#8220;</p>
</blockquote>
<p>Remember what it means when a pension fund goes bankrupt: it means all those people who worked, often for many years, will suddenly receive nothing, often in a period of their life when they most need support.</p>
<p>Note that ultimately Marianas petition for bankdruptcy got refused &#8211; as a governmental unit they are not eligible for Chapter 11. More on this and its relation to Puerto Rico situation at <a href="http://www.distressed-debt-investing.com/2013/10/distressed-debt-investing-puerto-rico.html">http://www.distressed-debt-investing.com/2013/10/distressed-debt-investing-puerto-rico.html</a></p>
<p><img src="http://feeds.feedburner.com/~r/openspending/~4/fYx9sfrdys8" height="1" width="1"/></p>

<p class="syndicated-attribution"><a href="http://feedproxy.google.com/~r/openspending/~3/fYx9sfrdys8/" class="button" style="margin:-3px 6px 0 0;"><span>read original post </span></a> on <a href="/author/rufus-pollock/" title="Read other posts by Rufus Pollock">Rufus Pollock</a>'s Site</p><p>The post <a rel="nofollow" href="/northern-mariana-islands-retirement-fund-bankruptcy/">Northern Mariana Islands Retirement Fund Bankruptcy</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.shuttleworthfoundation.org/northern-mariana-islands-retirement-fund-bankruptcy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://rufuspollock.org/?#" length="0" type="" />
		</item>
		<item>
		<title>Tracking Issues with Data the Simple Way</title>
		<link>http://www.shuttleworthfoundation.org/tracking-issues-with-data-the-simple-way/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tracking-issues-with-data-the-simple-way</link>
		<comments>http://www.shuttleworthfoundation.org/tracking-issues-with-data-the-simple-way/#respond</comments>
		<pubDate>Wed, 06 Nov 2013 08:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Rufus Pollock]]></dc:creator>
				<category><![CDATA[Fellows Blogs]]></category>
		<category><![CDATA[Rufus Pollock]]></category>

		<guid isPermaLink="false">http://okfnlabs.org/blog/2013/11/06/tracking-data-issues</guid>
		<description><![CDATA[<p><p>Data Issues is a prototype initiative to track “issues” with data using a simple bug tracker—in this case, GitHub Issues. We’ve all come across “issues” with data, whether it’s...</p></p><p>The post <a rel="nofollow" href="/tracking-issues-with-data-the-simple-way/">Tracking Issues with Data the Simple Way</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><a href="https://github.com/datasets/issues">Data Issues</a> is a prototype initiative to track “issues” with data using a simple bug tracker—in this case, GitHub Issues.</p>
<p>We’ve all come across “issues” with data, whether it’s “data” that turns out to be provided as a PDF, the many ways to badly format tabular data (<a href="http://okfnlabs.org/bad-data/ex/tfl-passenger-numbers/">empty rows, empty columns</a>, inlined metadata …), “<a href="http://okfnlabs.org/bad-data/ex/bls-us-employment/">ASCII spreadsheets</a>”, or simply erroneous data.</p>
<p>Key to starting to improve data quality is a way to report and record these issues.</p>
<p>We’ve thought about ways to address this for <a href="http://blog.okfn.org/2011/03/31/building-the-open-data-ecosystem/">quite some time</a> and, led by <a href="http://okfnlabs.org/members/pudo/">Labs member Friedrich Lindenberg</a>, even experimented with building our <a href="http://okfnlabs.org/blog/2012/07/10/dataissues.html">own service</a>. But recently, thanks to a comment from <a href="http://okfnlabs.org/members/david/">Labs member David Miller</a>, we were hit with a blinding insight: why not do the simplest thing possible and just use an <strong>existing bug tracker tool</strong>? And so was born the current version of <a href="https://github.com/datasets/issues">Data Issues based on a github issue tracker</a>!</p>
<p><img src="http://i.imgur.com/lyIJYGo.png" alt="Data Issues" /></p>
<p><em>Aside: Before you decide we were completely crazy not to see this in the first place, it should be said that doing data issues “properly” (in the medium term) probably does require something a bit more than a normal bug tracker. For example, it would be nice to be able to both pinpoint an issue precisely (e.g. the date in column 5 on line 3751 is invalid) and group similar issues (e.g. all amounts in column 7 have a commas in them). Doing this would require a tracker that was customized for data. The solution described in this post, however, seems like a great way to get started.</em></p>
<h2 id="introducing-data-issues">Introducing Data Issues</h2>
<p>Given the existence of so many excellent issue-tracking systems, we thought the best way to start is to reuse one—in the simplest possible way.</p>
<p>With <a href="https://github.com/datasets/issues">Data Issues</a>, we’re using GitHub Issues to track issues with datasets. Data Issues is essentially just a GitHub repository whose Issues are used to report problems on open datasets. Any problem with any dataset can be reported on Data Issues.</p>
<p>To report an issue with some data, just <a href="https://github.com/datasets/issues/issues/new">open an issue in the tracker</a>, add relevant info on the data (its URL, who’s responsible for it, the line number of the bug, etc.), and explain the problem. You can add labels to group related issues—for example, if multiple datasets from the same site have problems, you can add a label that identifies the dataset’s site of origin.</p>
<p>Straightaway, the issue you raise becomes a <em>public notice</em> of the problem with the dataset. Everyone interested in the dataset has access to the issue. The issue is also <em>actionable</em>: each issue contains a thread of comments that can be used to track the issue’s status, and the issue can be <em>closed</em> when it has been fixed. All issues submitted to Data Issues are visible in a central list, which can be filtered by keyword or label to zoom in on relevant issues. All of these great features come <em>for free</em> because we’re using GitHub Issues.</p>
<h2 id="get-involved">Get Involved</h2>
<p>For Data Issues to work, people need to use it. If civic hackers, journalists, and other data wranglers learn about Data Issues and start using it to track their work on datasets, we might find that the problem of tracking issues with datasets has already been solved.</p>
<p>You can also contribute by helping develop the project into something richer than a simple Issues page. One limitation of Data Issues is that raising an issue does not actually contact the parties responsible for the data. Our next goal is to automate sending along feedback from Data Issues, making it a more effective bug tracker.</p>
<p>If you want to discuss new directions for Data Issues or point out something you’ve built that contributes to the project, get in touch via the <a href="http://lists.okfn.org/mailman/listinfo/okfn-labs">Labs mailing list</a>.</p>

<p class="syndicated-attribution"><a href="http://okfnlabs.org/blog/2013/11/06/tracking-data-issues.html" class="button" style="margin:-3px 6px 0 0;"><span>read original post </span></a> on <a href="/author/rufus-pollock/" title="Read other posts by Rufus Pollock">Rufus Pollock</a>'s Site</p><p>The post <a rel="nofollow" href="/tracking-issues-with-data-the-simple-way/">Tracking Issues with Data the Simple Way</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.shuttleworthfoundation.org/tracking-issues-with-data-the-simple-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://rufuspollock.org/?#" length="0" type="" />
		</item>
		<item>
		<title>PublicBodies.org – Update no. 2</title>
		<link>http://www.shuttleworthfoundation.org/publicbodies-org-update-no-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=publicbodies-org-update-no-2</link>
		<comments>http://www.shuttleworthfoundation.org/publicbodies-org-update-no-2/#respond</comments>
		<pubDate>Mon, 07 Oct 2013 07:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Rufus Pollock]]></dc:creator>
				<category><![CDATA[Fellows Blogs]]></category>
		<category><![CDATA[Rufus Pollock]]></category>

		<guid isPermaLink="false">http://okfnlabs.org/blog/2013/10/07/publicbodies.org-update-no-2</guid>
		<description><![CDATA[<p><p>Herewith is a report on recent improvements to PublicBodies.org, our project in Open Knowledge Foundation Labs project to provide “a URL (and information) on every “public body” - that’s...</p></p><p>The post <a rel="nofollow" href="/publicbodies-org-update-no-2/">PublicBodies.org – Update no. 2</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Herewith is a report on recent improvements to <a href="http://publicbodies.org/">PublicBodies.org</a>, our project in Open Knowledge Foundation Labs project to provide “a URL (and information) on every “public body” &#8211; that’s every government funded agency, department or organization.</p>
<p><a href="http://publicbodies.org/"><img src="http://farm6.staticflickr.com/5349/10141929423_d84e45764d_z.jpg" alt="" /></a></p>
<h2 id="new-data">New data</h2>
<p>New data contributed over the last couple of months is now validated and live &#8211; this includes new data for <strong>Switzerland, Greece, Brazil and the US</strong>. Huge thank-you to contributors here including Hannes, Charalampos, Augusto and Todd.</p>
<p>We also have pending data for Italy and China to get in once it has been reviewed, and we have data in progress for Canada!</p>
<p>We’d love to have more data &#8211; if you’re interested in contributing see <a href="https://github.com/okfn/publicbodies#contribute-data">https://github.com/okfn/publicbodies#contribute-data</a></p>
<h2 id="updated-schema-for-data">Updated Schema for Data</h2>
<p>Thanks to input from James McKinney and others we’ve <a href="https://github.com/okfn/publicbodies/issues/29">reworked the schema</a> quite extensively to match up as much as possible with the Popolo spec. You can see the new schema in the <a href="https://github.com/okfn/publicbodies/blob/master/datapackage.json#L13-L105">datapackage.json</a>.</p>
<p>Or if you don’t like raw JSON so much in prettier HTML version on: <a href="http://data.okfn.org/community/okfn/publicbodies">http://data.okfn.org/community/okfn/publicbodies</a></p>
<h2 id="search-support">Search support</h2>
<p>We now have basic search support via google custom search: <a href="http://publicbodies.org/search">http://publicbodies.org/search</a></p>
<h2 id="get-involved">Get Involved</h2>
<p>As always we’d love help! There is a <a href="https://github.com/okfn/publicbodies/issues">full list of issues here</a> and example items:</p>
<ul>
<li><a href="https://github.com/okfn/publicbodies/issues/35">Getting Descriptions for 130 EU Public Bodies</a></li>
<li><a href="https://github.com/okfn/publicbodies/issues/8">Support for sending corrections / additions on the website</a></li>
<li><a href="https://github.com/okfn/publicbodies/issues/2">Support for reconciliation (e.g. via nomenklatura)</a></li>
</ul>

<p class="syndicated-attribution"><a href="http://okfnlabs.org/blog/2013/10/07/publicbodies.org-update-no-2.html" class="button" style="margin:-3px 6px 0 0;"><span>read original post </span></a> on <a href="/author/rufus-pollock/" title="Read other posts by Rufus Pollock">Rufus Pollock</a>'s Site</p><p>The post <a rel="nofollow" href="/publicbodies-org-update-no-2/">PublicBodies.org – Update no. 2</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.shuttleworthfoundation.org/publicbodies-org-update-no-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://rufuspollock.org/?#" length="0" type="" />
		</item>
		<item>
		<title>Data as Code Deja-Vu</title>
		<link>http://www.shuttleworthfoundation.org/data-as-code-deja-vu/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=data-as-code-deja-vu</link>
		<comments>http://www.shuttleworthfoundation.org/data-as-code-deja-vu/#respond</comments>
		<pubDate>Fri, 04 Oct 2013 07:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Rufus Pollock]]></dc:creator>
				<category><![CDATA[Fellows Blogs]]></category>
		<category><![CDATA[Rufus Pollock]]></category>

		<guid isPermaLink="false">http://okfnlabs.org/blog/2013/10/04/data-as-code-dejavu</guid>
		<description><![CDATA[<p><p>Someone just pointed me at this post from Ben Balter about Data as Code in which he emphasizes the analogies between data and code (and especially open data and open-source – e.g. “data is where...</p></p><p>The post <a rel="nofollow" href="/data-as-code-deja-vu/">Data as Code Deja-Vu</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Someone just pointed me at <a href="http://ben.balter.com/2013/09/16/treat-data-as-code/">this post from Ben Balter about Data as Code</a> in which he emphasizes the analogies between data and code (and especially open data and open-source – e.g. “data is where code was 2 decades ago” …).</p>
<p>I was delighted to see this post as it makes many points I deeply agree with &#8211; and have for some time. In fact, reading it gave me something a sense of (very positive) deja-vu since it made similar points to several posts I and others had written several years ago &#8211; suggesting that perhaps we’re now getting close to the critical mass we need to create a real distributed and collaborative <a href="http://blog.okfn.org/2011/03/31/building-the-open-data-ecosystem/">open data ecosystem</a>!</p>
<p>It also suggested it was worth dusting off and recapping some of this earlier material as much of it was written more than 6 years ago, a period which, in tech terms, can seem like the stone age.</p>
<h2 id="previous-thinking">Previous Thinking</h2>
<p>For example, there is this essay from 2007 on <a href="http://blog.okfn.org/writings/componentization/">Componentization and Open Data</a> that Jo Walsh and I wrote for our XTech talk that year on CKAN. It emphasized analogies with code and the importance of componentization and packaging.</p>
<p>This, in turn, was based on <a href="http://blog.okfn.org/2006/05/09/the-four-principles-of-open-knowledge-development/">Four principes for Open Knowledge Development</a> and <a href="http://blog.okfn.org/2007/04/30/what-do-we-mean-by-componentization-for-knowledge/">What do we mean by componentization for knowledge</a>. We also emphasized the importance of “version control” in facilitating distributed collaboration, for example in <a href="http://blog.okfn.org/2007/02/20/collaborative-development-of-data/">Collaborative Development of Data (2006/2007)</a> and, more recently, in <a href="http://blog.okfn.org/2010/07/12/we-need-distributed-revisionversion-control-for-data/">Distributed Revision Control for Data (2010)</a> and this year in <a href="http://blog.okfn.org/2013/07/02/git-and-github-for-data/">Git (and GitHub) for Data</a>.</p>
<h2 id="package-managers-and-ckan">Package Managers and CKAN</h2>
<p>This also brings me to a point relevant both to Ben’s post and Michal’s comment: the original purpose (and design) of CKAN was <em>precisely</em> to be a package manager a la rubygems, pypi, debian etc. It has evolved a lot from that into more of a “wordpress for data” &#8211; i.e. a platform for publishing, managing (and storing) data because of user demand. (Note that in early CKAN “datasets” were called packages in both the interface and code &#8211; a poor UX decision <img src="/new/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" />  that illustrated we were definitely ahead of our time &#8211; or just wrong!)</p>
<p>Some sense of what was intended is evidenced by the fact that in 2007 we were writing a command line tool called datapkg (since changed to dpm for data package manager) to act at the command equivalent of gem / pip / apt-get &#8211; see <a href="http://blog.okfn.org/2010/02/23/introducing-datapkg/">this Introducting DataPkg post</a> which included this diagram illustrating how things were supposed to work.</p>
<p><img src="http://m.okfn.org/files/talks/media/debian_of_data.png" alt="" /></p>
<h2 id="recent-developments">Recent Developments</h2>
<p>As CKAN has evolved into a more general-purpose tool – with less of a focus on just being a registry supported automated access – we’ve continued to develop those ideas. For example:</p>
<ul>
<li>The basic “package” idea from CKAN has evolved into the <a href="http://data.okfn.org/standards/data-package">Data Package spec</a> &#8211; and <a href="http://data.okfn.org/standards/simple-data-format">Simple Data Format</a></li>
<li>We’ve <a href="http://blog.okfn.org/2013/07/02/git-and-github-for-data/">explored storing data using code tools like git</a> &#8211; with a dedicated <a href="http://github.com/datasets">datasets organization on Github</a></li>
<li>We’ve re-booted the idea of a simple registry and storage mechanism in the form of <a href="http://data.okfn.org/">http://data.okfn.org/</a> &#8211; with data stored in simple data format in git repos on github, displayed in a very simple registry with good tool integration, and curated by a dedicated group of maintainers</li>
<li>We’ve booted the <a href="http://blog.okfn.org/2013/04/24/frictionless-data-making-it-radically-easier-to-get-stuff-done-with-data/">“Frictionless Data” initiative</a> as a way to bring together these different activities in one coherent vision of how we can do something simple to make progress</li>
</ul>
<p><a href="http://data.okfn.org/standards"><img src="http://assets.okfn.org/p/data.okfn.org/img/the-idea.png" alt="" /></a></p>
<p class="caption">Data Packages and Frictionless Data &#8211; from <a href="http://data.okfn.org/about" class="broken_link" rel="nofollow">data.okfn.org</a></p>

<p class="syndicated-attribution"><a href="http://okfnlabs.org/blog/2013/10/04/data-as-code-dejavu.html" class="button" style="margin:-3px 6px 0 0;"><span>read original post </span></a> on <a href="/author/rufus-pollock/" title="Read other posts by Rufus Pollock">Rufus Pollock</a>'s Site</p><p>The post <a rel="nofollow" href="/data-as-code-deja-vu/">Data as Code Deja-Vu</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.shuttleworthfoundation.org/data-as-code-deja-vu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://rufuspollock.org/?#" length="0" type="" />
		</item>
		<item>
		<title>Data Pipes – streaming online data transformations</title>
		<link>http://www.shuttleworthfoundation.org/data-pipes-streaming-online-data-transformations/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=data-pipes-streaming-online-data-transformations</link>
		<comments>http://www.shuttleworthfoundation.org/data-pipes-streaming-online-data-transformations/#respond</comments>
		<pubDate>Wed, 11 Sep 2013 07:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Rufus Pollock]]></dc:creator>
				<category><![CDATA[Fellows Blogs]]></category>
		<category><![CDATA[Rufus Pollock]]></category>

		<guid isPermaLink="false">http://okfnlabs.org/blog/2013/09/11/datapipes</guid>
		<description><![CDATA[<p><p>Data Pipes provides an online service built in NodeJS to do simple data transformations – deleting rows and columns, find and replace, filtering, viewing as HTML – and, furthermore, to connect...</p></p><p>The post <a rel="nofollow" href="/data-pipes-streaming-online-data-transformations/">Data Pipes – streaming online data transformations</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><strong><a href="http://datapipes.okfnlabs.org/">Data Pipes</a></strong> provides an online service built in NodeJS to do <strong>simple data transformations</strong> – deleting rows and columns, find and replace, filtering, viewing as HTML – and, furthermore, to <strong>connect these transformations together</strong> <em>Unix pipes style</em> to make more complex transformations. Because Data Pipes is a web service, data transformation with Data Pipes takes place entirely online and the results <strong>and</strong> process are completely shareable simply by sharing the URL.</p>
<h2 id="an-example">An example</h2>
<p>This takes the <a href="https://raw.github.com/okfn/datapipes/master/test/data/gla.csv">input data</a> (sourced from this <a href="http://static.london.gov.uk/gla/expenditure/docs/2012-13-P12-250.csv">original Greater London Authority financial data</a>), slices out the first 50 rows (head), deletes the first column (its blank!) (cut), deletes rows 1 through 7 (delete) and finally renders the result as HTML (html).</p>
<p><a href="http://datapipes.okfnlabs.org/csv/head%20-n%2050/cut%200/delete%201:7/html?url=https://raw.github.com/okfn/datapipes/master/test/data/gla.csv"><code>http://datapipes.okfn.labs.org/csv/head -n 50/cut 0/delete 1:7/html?url=https://raw.github.com/okfn/datapipes/master/test/data/gla.csv</code></a></p>
<h3 id="before">Before</h3>
<p><a href="http://datapipes.okfnlabs.org/csv/html?url=https://raw.github.com/okfn/datapipes/master/test/data/gla.csv"><br />
<img src="http://farm3.staticflickr.com/2827/9726020844_0301af2ded.jpg" width="500" height="213" alt="Data pipes: GLA data, HTML view" /><br />
</a></p>
<h3 id="after">After</h3>
<p><a href="http://datapipes.okfnlabs.org/csv/head%20-n%2050/cut%200/delete%201:7/html?url=https://raw.github.com/okfn/datapipes/master/test/data/gla.csv"><br />
<img src="http://farm4.staticflickr.com/3728/9726020800_ff01da582e.jpg" width="500" height="177" alt="Data pipes: GLA data, trimmed" /><br />
</a></p>
<h2 id="motivation---data-wrangling-pipes-nodejs-and-the-unix-philosophy">Motivation &#8211; Data Wrangling, Pipes, NodeJS and the Unix Philosophy</h2>
<p>When you find data in the wild you usually need to poke around in it and then to some cleaning for it to be usable.</p>
<p>Much of the inspiration for Data Pipes comes from our experience using Unix command lines tools like <code>grep</code>, <code>sed</code>, and <code>head</code> to do this kind of work. These tools a powerful way to operate on <em>streams</em> of text (or more precisely streams of lines of text, since Unix tools process text files line by line). By using streams, they can scale to large files easily (they don’t load the whole file but process it bit by bit) and, more importantly, allow “piping” – that is, direct connection of the output of one command with the input of another.</p>
<p>This already provides quite a powerful way to do data wrangling (see <a href="https://github.com/rgrp/command-line-data-wrangling">here</a> for more). But there are limits: data isn’t always line-oriented, plus command line tools aren’t online, so it’s difficult to share and repeat what you are doing. Inspired by a combination of Unix pipes and the possibilities of <a href="http://nodejs.org/">NodeJS</a>’s great streaming capabilities, we wanted to take the pipes online for data processing – and so Data Pipes was born.</p>
<p>We wanted to use the <a href="http://www.faqs.org/docs/artu/ch01s06.html">Unix philosophy</a> that teaches us to solve problems with cascades of simple, composable operations that manipulate streams, an approach which has proven almost <em>universally</em> effective.</p>
<p>Data Pipes brings the Unix philosophy and the Unix pipes style to online data. Any <a href="http://data.okfn.org/standards/csv">CSV</a> data can be piped through a cascade of transformations to produce a modified dataset, without ever downloading the data and with no need for your own backend. Being online means that the operations are immediately shareable and linkable.</p>
<h2 id="more-examples">More Examples</h2>
<p>Take, for example, this copy of a set of <a href="https://raw.github.com/okfn/datapipes/master/test/data/gla.csv">Greater London Authority financial data</a>. It’s unusable for most purposes, simply because it doesn’t abide by the CSV convention that the first line should contain the headers of the table. The header is preceded by six lines of useless commentary. Another problem is that the first column is totally empty.</p>
<p><img src="http://farm4.staticflickr.com/3824/9726020908_bb2d26b694.jpg" width="500" height="363" alt="Data pipes: Greater London Authority financial data, in the raw" /></p>
<p>First of all, let’s use the Data Pipes <code>html</code> operation to get a nicer-looking view of the table.</p>
<pre><code>GET /csv/html/?url=http://static.london.gov.uk/gla/expenditure/docs/2012-13-P12-250.csv
</code></pre>
<p><img src="http://farm3.staticflickr.com/2827/9726020844_0301af2ded.jpg" width="500" height="213" alt="Data pipes: GLA data, HTML view" /></p>
<p>Now let’s get rid of those first six lines and the empty column. We can do this by chaining together the <code>delete</code> operation and the <code>cut</code> operation:</p>
<pre><code>GET /csv/delete 0:6/cut 0/html/?url=http://static.london.gov.uk/gla/expenditure/docs/2012-13-P12-250.csv
</code></pre>
<p>And just like that, we’ve got a well-formed CSV!</p>
<p><img src="http://farm4.staticflickr.com/3728/9726020800_ff01da582e.jpg" width="500" height="177" alt="Data pipes: GLA data, trimmed" /></p>
<p>But why stop there? Why not take the output of that transformation and, say, search it for the string “LONDON” with the <code>grep</code> transform, then take just the first 20 entries with <code>head</code>?</p>
<pre><code>GET /csv/delete 0:6/cut 0/grep LONDON/head -n 20/html/?url=http://static.london.gov.uk/gla/expenditure/docs/2012-13-P12-250.csv
</code></pre>
<p><img src="http://farm6.staticflickr.com/5505/9726020732_c5ca38c10a.jpg" width="500" height="370" alt="Data pipes: GLA data, final view" /></p>
<p>Awesome!</p>
<h2 id="whats-next">What’s next?</h2>
<p>Data Pipes already supports a useful collection of operations, but it’s still in development, and more are yet to come, including find-and-replace operation <code>sed</code> plus support for <a href="https://github.com/okfn/datapipes/issues/21">arbitrary map and filter functions</a>.</p>
<p>You can see the full list <a href="http://datapipes.okfnlabs.org/">on the Data Pipes site</a>, and you can suggest more transforms to implement by <a href="https://github.com/okfn/datapipes/issues/new">raising an issue</a>.</p>
<p>Data Pipes needs more operations for its toolkit. That means its developers need to know what you do with data – and to think about how it can be broken down in the grand old Unix fashion. To join in, check out <a href="https://github.com/okfn/datapipes">Data Pipes on GitHub</a> and let us know what you think.</p>

<p class="syndicated-attribution"><a href="http://okfnlabs.org/blog/2013/09/11/datapipes.html" class="button" style="margin:-3px 6px 0 0;"><span>read original post </span></a> on <a href="/author/rufus-pollock/" title="Read other posts by Rufus Pollock">Rufus Pollock</a>'s Site</p><p>The post <a rel="nofollow" href="/data-pipes-streaming-online-data-transformations/">Data Pipes – streaming online data transformations</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.shuttleworthfoundation.org/data-pipes-streaming-online-data-transformations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://rufuspollock.org/?#" length="0" type="" />
		</item>
		<item>
		<title>Introducing Open Knowledge Foundation Labs</title>
		<link>http://www.shuttleworthfoundation.org/introducing-open-knowledge-foundation-labs/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=introducing-open-knowledge-foundation-labs</link>
		<comments>http://www.shuttleworthfoundation.org/introducing-open-knowledge-foundation-labs/#respond</comments>
		<pubDate>Tue, 09 Jul 2013 11:30:13 +0000</pubDate>
		<dc:creator><![CDATA[Rufus Pollock]]></dc:creator>
				<category><![CDATA[Fellows Blogs]]></category>
		<category><![CDATA[Rufus Pollock]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Labs]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[OKF]]></category>

		<guid isPermaLink="false">http://blog.okfn.org/?p=15670</guid>
		<description><![CDATA[<p><p>Today we’re pleased to officially launch Open Knowledge Foundation Labs, a community home for civic hackers, data wranglers and anyone else intrigued and excited by the possibilities of combining...</p></p><p>The post <a rel="nofollow" href="/introducing-open-knowledge-foundation-labs/">Introducing Open Knowledge Foundation Labs</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><!--magazine.image = http://farm3.staticflickr.com/2861/9250481888_75304ef6da_z.jpg --></p>
<p>Today we’re pleased to officially launch <a href="http://okfnlabs.org/">Open Knowledge Foundation Labs</a>, a community home for civic hackers, data wranglers and anyone else intrigued and excited by the possibilities of combining technology and open information for good – making government more accountable, culture more accessible and science more efficient.</p>
<p><a href="http://okfnlabs.org/"><img src="http://farm3.staticflickr.com/2861/9250481888_75304ef6da_z.jpg" alt="Labs" /></a></p>
<p>Labs is about &#8220;making&#8221;  &#8211; whether that’s apps, insights or tools &#8211; using <a href="http://okfn.org/opendata/">open data</a>, <a href="http://opendefinition.org/">open content</a> and <a href="http://www.gnu.org/philosophy/free-sw.html">free</a> / <a href="http://opensource.org/">open source software</a>. And you don&#8217;t need to be an uber-geek to participate: interest and a willingness to get your hands dirty (digitally), be that with making, testing or helping, is all that&#8217;s needed &#8211; although we do allow lurking on the mailing list <img src="/new/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> </p>
<p><a href="http://okfnlabs.org/join/">Join in now</a>! Sign up on the mailing list, follow us on <a href="https://twitter.com/okfnlabs/">twitter</a> or read more about what we’re up to and <a href="http://okfnlabs.org/join/">how you can get involved</a>.</p>
<form action="http://lists.okfn.org/mailman/subscribe/okfn-labs"<br />
  method="POST" class="form-inline"><br />
  <input type="text" class="input-medium" name="email" placeholder="Email"><br />
  <button type="submit" class="btn">Sign up</button><br />
</form>
<p><a href="https://twitter.com/OKFNLabs" class="twitter-follow-button" data-show-count="false" data-size="large" data-dnt="true">Follow @OKFNLabs</a><br />
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></p>
<h3>Find out more</h3>
<p>For the full picture of what Labs is up to, check out its <a href="http://okfnlabs.org/projects/">projects page</a> and the <a href="https://github.com/okfn/ideas/issues">list of ideas for projects</a>. Highlights include:</p>
<ul>
<li><a href="http://okfnlabs.org/recline/">ReclineJS</a>, a library for building data-driven web applications in pure JavaScript</li>
<li><a href="http://okfnlabs.org/annotator/">Annotator</a>, an open-source JavaScript library and tool that can be added to any webpage to make it annotatable</li>
<li><a href="http://nomenklatura.okfnlabs.org/">Nomenklatura</a>, a simple service that makes it easy to maintain a canonical list of entities such as persons, companies or streets, and to match messy input against that list</li>
<li><a href="http://dev.pybossa.com/">PyBossa</a>, a platform for crowd-sourcing online volunteer assistance on tasks that require human intelligence, which powers <a href="http://crowdcrafting.org/">CrowdCrafting</a></li>
</ul>
<p>Labs is part of the <a href="http://okfn.org/">Open Knowledge Foundation Network</a> and <a href="http://okfnlabs.org/about/#governance">operates as a collaborative community</a>, which anyone can join. You can also take a look at the:</p>
<ul>
<li><a href="http://okfnlabs.org/about/">About Page</a></li>
<li><a href="http://okfnlabs.org/about/#principles">Community principles</a></li>
<li><a href="http://okfnlabs.org/about/#faqs">FAQs</a></li>
</ul>
<p>While some of you may have noticed we&#8217;ve been operating unannounced and somewhat under the radar for some time, we recently revamped the website and decided that it was high time to officially cut the ribbon and open our doors.</p>
<p>If you&#8217;re interested in making things with open data or open content, we hope you&#8217;ll <a href="http://okfnlabs.org/join/">come and say hello</a>.</p>
<p><img src="http://feeds.feedburner.com/~r/okfn/~4/xMup4MlL54o" height="1" width="1"/></p>

<p class="syndicated-attribution"><a href="http://feedproxy.google.com/~r/okfn/~3/xMup4MlL54o/" class="button" style="margin:-3px 6px 0 0;"><span>read original post </span></a> on <a href="/author/rufus-pollock/" title="Read other posts by Rufus Pollock">Rufus Pollock</a>'s Site</p><p>The post <a rel="nofollow" href="/introducing-open-knowledge-foundation-labs/">Introducing Open Knowledge Foundation Labs</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.shuttleworthfoundation.org/introducing-open-knowledge-foundation-labs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://rufuspollock.org/?#" length="0" type="" />
		</item>
		<item>
		<title>Open Data Maker Night London No 3 – Tuesday 16th July</title>
		<link>http://www.shuttleworthfoundation.org/open-data-maker-night-london-no-3-tuesday-16th-july/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=open-data-maker-night-london-no-3-tuesday-16th-july</link>
		<comments>http://www.shuttleworthfoundation.org/open-data-maker-night-london-no-3-tuesday-16th-july/#respond</comments>
		<pubDate>Mon, 08 Jul 2013 07:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Rufus Pollock]]></dc:creator>
				<category><![CDATA[Fellows Blogs]]></category>
		<category><![CDATA[Rufus Pollock]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Open Knowledge Foundation]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://okfnlabs.org/blog/2013/07/08/open-data-maker-night-london-3</guid>
		<description><![CDATA[<p><p>The next Open Data Maker Night London will be on Tuesday 16th July 6-9pm (you can drop in any time during the evening). Like the last two it is kindly hosted by the wonderful Centre for Creative...</p></p><p>The post <a rel="nofollow" href="/open-data-maker-night-london-no-3-tuesday-16th-july/">Open Data Maker Night London No 3 – Tuesday 16th July</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>The next <strong>Open Data Maker Night London</strong> will be on <strong>Tuesday 16th July 6-9pm</strong> (you can drop in any time during the evening). Like the last two it is kindly hosted by the wonderful <a href="http://creative-collaboration.net/about/contact/">Centre for Creative Collaboration, 16 Acton Street, London</a>.</p>
<ul>
<li>When: Tuesday 16th July 2013</li>
<li>Where: <a href="http://creative-collaboration.net/about/contact/">Centre for Creative Collaboration, 16 Acton Street, London</a>.</li>
<li>Signup: <a href="http://www.meetup.com/OpenKnowledgeFoundation/London-GB/984832/">on Meetup page</a> (optional but nice to know numbers!)</li>
</ul>
<p>Look forward to seeing folks there!</p>
<p><img src="http://farm9.staticflickr.com/8524/8500104205_4e209ef952.jpg" alt="" /></p>
<h3 id="what">What</h3>
<p>Open Data Maker Nights are informal events focused on “making” with open data – whether that’s creating apps or insights. They aren’t a general meetup – if you come, expect to get pulled into actually building something, though we won’t force you!</p>
<h3 id="who">Who</h3>
<p>The events usually have short introductory talks about specific projects and suggestions for things to work on – it’s absolutely fine to turn up knowing nothing about data or openness or tech as, there’ll an activity for you to help and someone to guide you in contributing!</p>
<h3 id="organize-your-own">Organize your own!</h3>
<p>Not in London? Why not <a href="http://okfnlabs.org/events/open-data-maker/">organize your own Open Data Maker night</a> in your city? Anyone can and it’s easy to do – <a href="http://okfnlabs.org/events/open-data-maker/">find out more »</a></p>

<p class="syndicated-attribution"><a href="http://okfnlabs.org/blog/2013/07/08/open-data-maker-night-london-3.html" class="button" style="margin:-3px 6px 0 0;"><span>read original post </span></a> on <a href="/author/rufus-pollock/" title="Read other posts by Rufus Pollock">Rufus Pollock</a>'s Site</p><p>The post <a rel="nofollow" href="/open-data-maker-night-london-no-3-tuesday-16th-july/">Open Data Maker Night London No 3 – Tuesday 16th July</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.shuttleworthfoundation.org/open-data-maker-night-london-no-3-tuesday-16th-july/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://rufuspollock.org/?#" length="0" type="" />
		</item>
		<item>
		<title>Save the Date – OGP Pre-Conference, London Wednesday 30th October</title>
		<link>http://www.shuttleworthfoundation.org/save-the-date-ogp-pre-conference-london-wednesday-30th-october/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=save-the-date-ogp-pre-conference-london-wednesday-30th-october</link>
		<comments>http://www.shuttleworthfoundation.org/save-the-date-ogp-pre-conference-london-wednesday-30th-october/#respond</comments>
		<pubDate>Fri, 05 Jul 2013 13:05:17 +0000</pubDate>
		<dc:creator><![CDATA[Rufus Pollock]]></dc:creator>
				<category><![CDATA[Fellows Blogs]]></category>
		<category><![CDATA[Open Data]]></category>
		<category><![CDATA[Rufus Pollock]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Open Government Data]]></category>

		<guid isPermaLink="false">http://blog.okfn.org/?p=15647</guid>
		<description><![CDATA[<p><p>This Autumn the Open Government Partnership Annual Conference is coming to London and will place on the 31st October and 1st November. As a lead into the main event, OGP is planning a 1-day civil...</p></p><p>The post <a rel="nofollow" href="/save-the-date-ogp-pre-conference-london-wednesday-30th-october/">Save the Date – OGP Pre-Conference, London Wednesday 30th October</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><!-- magazine.image=http://farm6.static.flickr.com/5286/5246882844_b37d5a46e8_z.jpg --></p>
<p>This Autumn the <strong><a href="http://www.opengovpartnership.org/calendar/open-government-partnership-annual-conference" class="broken_link" rel="nofollow">Open Government Partnership Annual Conference</a></strong> is coming to London and will place on the 31st October and 1st November. As a lead into the main event, <strong>OGP is planning a 1-day civil society<br />
Pre-Conference event on Wednesday 30th October</strong> and we here at the <strong><a href="http://okfn.org/">Open Knowledge Foundation</a></strong> will be collaborating with them on it.</p>
<p><img src="http://farm6.static.flickr.com/5286/5246882844_b37d5a46e8_z.jpg" /></p>
<p class="caption" style="font-size: 90%; font-style: italic; text-align: center; margin-top: -18px;">An informal group discussion on open government data</p>
<p>The aim is for this to be informal with lots of open space and a collaboratively organized schedule with activities and discussions like:</p>
<ul>
<li>What does civil society want from OGP?</li>
<li>What&#8217;s next for open government data and open government?</li>
<li>Small group conversations about challenges and what can be learnt from other initiatives like EITI, IATI and the like</li>
<li>Workshops and data expeditions</li>
<li>Space for individual communities groups to meet, share and plan</li>
<li><em>Your suggestion here</em></li>
</ul>
<p>If you&#8217;re interested you can pre-register now so as to notified once registration opens and more information becomes available.</p>
<p><a class="btn btn-primary btn-large" href="https://docs.google.com/a/okfn.org/forms/d/1qyedmMqmi1yoNxipk-Sbeb1DiY9_HRclabtW9o_oXBI/viewform">Pre-register now &raquo;</a></p>
<p>Further details coming soon!</p>
<p><img src="http://feeds.feedburner.com/~r/okfn/~4/olq-OgUMY4c" height="1" width="1"/></p>

<p class="syndicated-attribution"><a href="http://feedproxy.google.com/~r/okfn/~3/olq-OgUMY4c/" class="button" style="margin:-3px 6px 0 0;"><span>read original post </span></a> on <a href="/author/rufus-pollock/" title="Read other posts by Rufus Pollock">Rufus Pollock</a>'s Site</p><p>The post <a rel="nofollow" href="/save-the-date-ogp-pre-conference-london-wednesday-30th-october/">Save the Date – OGP Pre-Conference, London Wednesday 30th October</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.shuttleworthfoundation.org/save-the-date-ogp-pre-conference-london-wednesday-30th-october/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://rufuspollock.org/?#" length="0" type="" />
		</item>
		<item>
		<title>Git (and Github) for Data</title>
		<link>http://www.shuttleworthfoundation.org/git-and-github-for-data/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=git-and-github-for-data</link>
		<comments>http://www.shuttleworthfoundation.org/git-and-github-for-data/#respond</comments>
		<pubDate>Tue, 02 Jul 2013 11:02:33 +0000</pubDate>
		<dc:creator><![CDATA[Rufus Pollock]]></dc:creator>
				<category><![CDATA[Fellows Blogs]]></category>
		<category><![CDATA[Open Data]]></category>
		<category><![CDATA[Rufus Pollock]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Ideas and musings]]></category>
		<category><![CDATA[Small Data]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://blog.okfn.org/?p=15559</guid>
		<description><![CDATA[<p><p>The ability to do “version control” for data is a big deal. There are various options but one of the most attractive is to reuse existing tools for doing this with code, like git and mercurial....</p></p><p>The post <a rel="nofollow" href="/git-and-github-for-data/">Git (and Github) for Data</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><!--magazine.image = http://i.imgur.com/9RZvCLl.png --></p>
<p>The ability to do “version control” for data is a big deal. There are various options but one of the most attractive is to reuse existing tools for doing this with code, like <strong>git</strong> and <strong>mercurial</strong>. This post describes a simple &#8220;data pattern&#8221; for storing and versioning data using those tools which we&#8217;ve been using for some time and found to be very effective.</p>
<h2>Introduction</h2>
<p>The ability to do revisioning and versioning data &#8211; store changes made and share them with others &#8211; especially in a distributed way would be a huge benefit to the (open) data community. I’ve discussed why at <a href="http://blog.okfn.org/2010/07/12/we-need-distributed-revisionversion-control-for-data/">some length before</a> (see also <a href="http://blog.okfn.org/2007/02/20/collaborative-development-of-data/">this earlier post</a>) but to summarize:</p>
<ul>
<li>It allows effective distributed collaboration &#8211; you can take my dataset, make changes, and share those back with me (and different people can do this at once!)</li>
<li>It allows one to track provenance better (i.e. what changes came from where)</li>
<li>It allows for sharing updates and synchronizing datasets in a simple, effective, way &#8211; e.g. an automated way to get the last months GDP or employment data without pulling the whole file again</li>
</ul>
<p>There are several ways to address the “revision control for data” problem. The approach here is to get data in a form that means we can take existing powerful distributed version control systems designed for code like <strong>git</strong> and <strong>mercurial</strong> and apply them to the data. As such, the best <a href="http://www.informationdiet.com/blog/read/we-need-a-github-for-data" class="broken_link" rel="nofollow">github for data</a> may, in fact, be <a href="https://github.com/">github</a> (of course, you may want to layer data-specific interfaces on on top of git(hub) &#8211; this is what we do with <a href="http://data.okfn.org/">http://data.okfn.org/</a>).</p>
<p>There are limitations to this approach and I discuss some of these and alternative models below. In particular, it’s best for &#8220;<a href="http://blog.okfn.org/2013/04/26/what-do-we-mean-by-small-data/">small (or even micro) data</a>&#8221; &#8211; say, under 10Mb or 100k rows. (One alternative model can be found in the very interesting <a href="http://github.com/maxogden/dat">Dat project</a> recently started by Max Ogden &#8212; with whom I&#8217;ve <a href="http://rufuspollock.org/2011/10/17/weekly-update-rufus-pollock-2/">talked many times</a> on this topic).</p>
<p>However, given the maturity and power of the tooling &#8211; and its likely evolution &#8211; and the fact that <a href="http://blog.okfn.org/2013/04/22/forget-big-data-small-data-is-the-real-revolution/">so much data <em>is</em> small</a> we think this approach is very attractive.</p>
<h2>The Pattern</h2>
<p>The essence of the pattern is:</p>
<blockquote>
<ol>
<li>
<p><strong>Storing data as <em>line-oriented text</em> and specifically as CSV<sup id="fnref:csv"><a href="http://feedproxy.google.com/~r/okfn/~3/41g9lIOmQGo/#fn:csv" rel="footnote">1</a></sup> (comma-separated variable) files</strong>. “Line oriented text” just indicates that individual units of the data such as a row of a table (or an individual cell) corresponds to one line<sup id="fnref:line"><a href="http://feedproxy.google.com/~r/okfn/~3/41g9lIOmQGo/#fn:line" rel="footnote">2</a></sup>.</p>
</li>
<li>
<p><strong>Use best of breed (code) versioning like git mercurial to store and manage the data</strong>.</p>
</li>
</ol>
</blockquote>
<p>Line-oriented text is important because it enables the powerful distributed version control tools like <strong>git</strong> and <strong>mercurial</strong> to work effectively (this, in turn, is because those tools are built for code which is (usually) line-oriented text). It’s not just version control though: there is a <strong>large and mature set of tools</strong> for managing and manipulating these types of files (from grep to Excel!).</p>
<p>In addition to the basic pattern, there are several a few optional extras you can add:</p>
<blockquote>
<ul>
<li>Store the data in GitHub (or Gitorious or Bitbucket or …) &ndash; all the examples below follow this approach</li>
<li>Turn the collection of data into a <a href="http://data.okfn.org/standards/simple-data-format/">Simple Data Format</a> <a href="http://data.okfn.org/standards/data-package/">data package</a> by adding a datapackage.json file which provides a small set of essential information like the license, sources, and schema (this column is a number, this one is a string)</li>
<li>Add the scripts you used to process and manage data &#8212; that way everything is nicely together in one repository</li>
</ul>
</blockquote>
<h2>What’s good about this approach?</h2>
<p>The set of tools that exists for managing and manipulating line-oriented files is <strong>huge and mature</strong>. In particular, powerful distributed version control systems like <strong>git</strong> and <strong>mercurial</strong> are already extremely robust ways to do distributed, peer-to-peer collaboration around code, and this pattern takes that model and makes it applicable to data. Here are some concrete examples of why its good.</p>
<h4>Provenance tracking</h4>
<p>Git and mercurial provide a complete history of individual contributions with &#8220;simple&#8221; provenance via commit messages and diffs.</p>
<p><img src="http://i.imgur.com/9RZvCLl.png" alt="Example of commit messages" /></p>
<h4>Peer-to-peer collaboration</h4>
<p>Forking and pulling data allows independent contributors to work on it simultaneously.</p>
<p><img src="http://i.imgur.com/ZDmoZQL.png" alt="Timeline of pull requests" /></p>
<h4>Data review</h4>
<p>By using git or mercurial, tools for code review can be repurposed for data review.</p>
<p><img src="http://i.imgur.com/txFGVLI.png" alt="Pull screen" /></p>
<h4>Simple packaging</h4>
<p>The repo model provides a simple way to store data, code, and metadata in a single place.</p>
<p><img src="http://i.imgur.com/3UQRf4V.png" alt="A repo for data" /></p>
<h4>Accessibility</h4>
<p>This method of storing and versioning data is very low-tech. The format and tools are both very mature and are ubiquitous. For example, every spreadsheet and every relational database can handle CSV. Every unix platform has a <a href="https://github.com/rgrp/command-line-data-wrangling">suite of tools</a> like grep, sed, cut that can be used on these kind of files.</p>
<h3>Examples</h3>
<p>We&#8217;ve been using with this approach for a long-time: in 2005 we first stored CSV&#8217;s in subversion, then in mercurial, and then when we switched to git (and github) 3 years ago we started storing them there. In 2011 we started the datasets organization on github which contains a <a href="https://github.com/datasets">whole list of of datasets managed according to the pattern above</a>. Here are a couple of specific examples:</p>
<ul>
<li>
<p><a href="https://github.com/datasets/gdp">Country, regional, and world GDP</a>, collected from the World Bank and turned into a normalized CSV. The Python script used to clean the data is included in <a href="https://github.com/datasets/gdp/tree/master/scripts">scripts</a>.</p>
</li>
<li>
<p>List of companies in <a href="https://github.com/datasets/s-and-p-500-companies">Standard &amp; Poor’s 500</a>, an index of the top 500 publicly listed stocks in the US. Includes Python scripts to process data and instructions on how to replicate cleaned data from source. This dataset provides interesting examples of <a href="https://github.com/datasets/s-and-p-500-companies/commit/7371edf0eadff2bfc0874bcd31e1ffbc1169a4c8">what diffs</a> <a href="https://github.com/datasets/s-and-p-500-companies/commit/ac0b811977ad6d36c318e6dfdf9b9cbce17064cb">look like</a>, including <a href="https://github.com/datasets/s-and-p-500-companies/commit/d0c91b90e7e8e8f92d57b04a0f22caca1f377543">bad diffs (e.g.. a column rearrange)</a>.</p>
</li>
</ul>
<p><em>Note</em> Most of these examples not only show CSVs being managed in github but are also <a href="http://data.okfn.org/standards/simple-data-format/">simple data format</a> <a href="http://data.okfn.org/standards/data-package/">data packages</a> – see the datapackage.json they contain.</p>
<hr />
<h2>Appendix</h2>
<h3>Limitations and Alternatives</h3>
<p>Line-oriented text and its tools are, of course, far from <em>perfect</em> solutions to data storage and versioning. They will not work for datasets of every shape and size, and in some respects they are awkward tools for tracking and merging changes to tabular data. For example:</p>
<ul>
<li>Simple actions on data stored as line-oriented text can lead to a very large changeset. For example, swapping the order of two fields (= columns) leads to a change in <em>every single line</em>. Given that diffs, merges, etc. are line-oriented, this is unfortunate.<sup id="fnref:line_diffs"><a href="http://feedproxy.google.com/~r/okfn/~3/41g9lIOmQGo/#fn:line_diffs" rel="footnote">3</a></sup></li>
<li>It works best for smallish data (e.g. &lt; 100k rows, &lt; 50mb files, optimally &lt; 5mb files). git and mercurial don&#8217;t handle big files that well, and features like diffs get more cumbersome with larger files.<sup id="fnref:s3"><a href="http://feedproxy.google.com/~r/okfn/~3/41g9lIOmQGo/#fn:s3" rel="footnote">4</a></sup></li>
<li>It works best for data made up of lots of similar records, ideally tabular data. In order for line-oriented storage and tools to be appropriate, you need the record structure of the data to fit with the CSV line-oriented structure. The pattern is less good if your CSV is not very line-oriented (e.g. you have a lot of fields with line breaks in them), causing problems for diff and merge.</li>
<li>CSV lacks a lot of information, e.g. information on the types of fields (everything is a string). There is no way to add metadata to a CSV without compromising its simplicity or making it no longer usable as pure data. You can, however, add this kind of information in a separate file, and this exactly what the <a href="http://data.okfn.org/standards/data-package/">Data Package standard</a> provides with its datapackage.json file.</li>
</ul>
<p>The most fundamental limitations above all arise from applying line-oriented diffs and merges to structured data whose atomic unit is <em>not</em> a line (its a cell, or a transform of some kind like swapping two columns)</p>
<p>The first issue discussed below, where a simple change to a table is treated as a change to every line of the file, is a clear example. In a perfect world, we’d have both a convenient structure <em>and</em> a whole set of robust tools to support it, e.g. tools that recognize swapping two columns of a CSV as a single, simple change or that work at the level of individual cells.</p>
<p>Fundamentally a revision system is built around a diff format and a merge protocol. Get these right and much of the rest follows. The basic 3 options you have are:<br />
* Serialize to line-oriented text and use the great tools like git (what’s we’ve described above)<br />
* Identify atomic structure (e.g. document) and apply diff at that level (think CouchDB or standard copy-on-write for RDBMS at row level)<br />
* Recording transforms (e.g. Refine)</p>
<p>At the Open Knowledge Foundation we built a system along the lines of (2) and been involved in exploring and researching both (2) and (3) &#8211; see <a href="http://www.dataprotocols.org/en/latest/syncing.html">changes and syncing for data on on dataprotocols.org</a>. These options are definitely worth exploring &#8212; and, for example, Max Ogden, with whom I’ve had many great discussions on this topic, is currently working on an exciting project called <a href="http://github.com/maxogden/dat">Dat</a>, a collaborative data tool which will use the <a href="http://www.dataprotocols.org/en/latest/sleep.html">“sleep” protocol</a>.</p>
<p>However, our experience so far is that the line-oriented approach beats any currently available options along those other lines (at least for smaller sized files!).</p>
<h3>data.okfn.org</h3>
<p>Having already been storing data in github like this for several years, we recently launched <a href="http://data.okfn.org/">http://data.okfn.org/</a> which is explicitly based on this approach:</p>
<ul>
<li>Data is CSV stored in git repos on GitHub at <a href="https://github.com/datasets">https://github.com/datasets</a></li>
<li>All datasets are data packages with datapackage.json metadata</li>
<li>Frontend site is ultra-simple – it just provides catalog and API and pulls data directly from github</li>
</ul>
<h3>Why line-oriented</h3>
<p>Line-oriented text is the natural form of code and so is supported by a huge number of excellent tools. But line-oriented text is also the simplest and most parsimonious form for storing general record-oriented data—and most data can be turned into records.</p>
<p>At its most basic, structured data requires a delimiter for fields and a delimiter for records. Comma- or tab-separated values (CSV, TSV) files are a very simple and natural implementation of this encoding. They delimit records with the most natural separation character besides the space, the line break. For a field delimiter, since spaces are too common in values to be appropriate, they naturally resort to commas or tabs.</p>
<p>Version control systems require an atomic unit to operate on. A versioning system for data can quite usefully treat <em>records</em> as the atomic units. Using line-oriented text as the encoding for record-oriented data automatically gives us a record-oriented versioning system in the form of existing tools built for versioning code.</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:csv">
<p>Note that,  by CSV, we really mean “DSV”, as the delimiter in the file does <em>not</em> have to be a comma. However, the row terminator <em>should</em> be a line break (or a line break plus carriage return).&#160;<a href="http://feedproxy.google.com/~r/okfn/~3/41g9lIOmQGo/#fnref:csv" rev="footnote">&#8617;</a></p>
</li>
<li id="fn:line">
<p>CSVs do not <em>always</em> have one row to one line (it is possible to have line-breaks in a field with quoting). However, most CSVs are one-row-to-one-line. CSVs are pretty much the simplest possible structured data format you can have.&#160;<a href="http://feedproxy.google.com/~r/okfn/~3/41g9lIOmQGo/#fnref:line" rev="footnote">&#8617;</a></p>
</li>
<li id="fn:line_diffs">
<p>As a concrete example, the merge function will probably work quite well in reconciling two sets of changes that affect different sets of records, hence lines. Two sets of changes which each move a column will not merge well, however.&#160;<a href="http://feedproxy.google.com/~r/okfn/~3/41g9lIOmQGo/#fnref:line_diffs" rev="footnote">&#8617;</a></p>
</li>
<li id="fn:s3">
<p>For larger data, we suggest swapping out git (and e.g. GitHub) for simple file storage like s3. Note that s3 can support basic copy-on-write versioning. However, being copy-on-write, it is comparatively very inefficient.&#160;<a href="http://feedproxy.google.com/~r/okfn/~3/41g9lIOmQGo/#fnref:s3" rev="footnote">&#8617;</a></p>
</li>
</ol>
</div>
<p><img src="http://feeds.feedburner.com/~r/okfn/~4/ROYMU0cRI4o" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/okfn/~4/41g9lIOmQGo" height="1" width="1"/></p>

<p class="syndicated-attribution"><a href="http://feedproxy.google.com/~r/okfn/~3/41g9lIOmQGo/" class="button" style="margin:-3px 6px 0 0;"><span>read original post </span></a> on <a href="/author/rufus-pollock/" title="Read other posts by Rufus Pollock">Rufus Pollock</a>'s Site</p><p>The post <a rel="nofollow" href="/git-and-github-for-data/">Git (and Github) for Data</a> appeared first on <a rel="nofollow" href="/">Shuttleworth Foundation</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.shuttleworthfoundation.org/git-and-github-for-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://rufuspollock.org/?#" length="0" type="" />
		</item>
	</channel>
</rss>
