<?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>Roblag &#187; Tech</title>
	<atom:link href="http://blog.robla.net/category/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.robla.net</link>
	<description>Just like a diary, only without a way to dot the i's with hearts; robla, margl, and hazel's blog</description>
	<lastBuildDate>Thu, 08 Jul 2010 03:10:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>New gig: Wikimedia Foundation</title>
		<link>http://blog.robla.net/2010/new-gig-wikimedia-foundation/</link>
		<comments>http://blog.robla.net/2010/new-gig-wikimedia-foundation/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 03:10:02 +0000</pubDate>
		<dc:creator>robla</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.robla.net/?p=245</guid>
		<description><![CDATA[As of last week, I&#8217;m officially an employee of the Wikimedia Foundation. Here&#8217;s the the official announcement of WMF hiring me. I&#8217;ve been working there as a contractor for the past couple of months, and it&#8217;s been a great experience so far. I&#8217;m working with a lot of really smart people that I stand to [...]]]></description>
			<content:encoded><![CDATA[<p>As of last week, I&#8217;m officially an employee of the Wikimedia Foundation.  Here&#8217;s the <a href="http://permalink.gmane.org/gmane.org.wikimedia.community.announce/17">the official announcement of WMF hiring me</a>.  I&#8217;ve been working there as a contractor for the past couple of months, and it&#8217;s been a great experience so far.  I&#8217;m working with a lot of really smart people that I stand to learn a great deal from.  I&#8217;m pretty used to being the &#8220;open source guy&#8221; at the companies I&#8217;ve worked at in the past, so it&#8217;s going to be an interesting twist to work somewhere where publishing the source code (and most everything else, for that matter) is just a given.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.robla.net/2010/new-gig-wikimedia-foundation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>On Diaspora</title>
		<link>http://blog.robla.net/2010/on-diaspora/</link>
		<comments>http://blog.robla.net/2010/on-diaspora/#comments</comments>
		<pubDate>Sun, 16 May 2010 20:23:17 +0000</pubDate>
		<dc:creator>robla</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.robla.net/?p=229</guid>
		<description><![CDATA[There&#8217;s been a lot of hubbub about Facebook&#8217;s ongoing tone-deafness regarding privacy. As a result, there has also been a lot of hubbub about the Diaspora project, with both wildly optimistic projections of their success, as well as more skeptical assessments. I&#8217;m skeptical about Diaspora specifically, because it reminds me a lot of an effort [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been a lot of <a href="http://eu.techcrunch.com/2010/05/10/facebooks-byzantine-privacy-controls-produce-more-confusion/">hubbub about Facebook&#8217;s ongoing tone-deafness regarding privacy</a>.  As a result, there has also been a lot of hubbub about the <a href="http://www.joindiaspora.com/">Diaspora project</a>, with both <a href="http://www.nytimes.com/2010/05/12/nyregion/12about.html">wildly optimistic</a> projections of their success, as well as <a href="http://twitter.com/aviel/status/13960806410">more</a> <a href="http://blog.ginsudo.com/2010/05/11/the-nature-of-their-game/">skeptical</a> assessments.
<p />
<p>I&#8217;m skeptical about Diaspora specifically, because it reminds me a lot of an effort to take RealNetworks down a peg more than a decade ago.  In 1999, the <a href="http://web.archive.org/web/20000620191251/http://www.free-expression.org/">Free Expression Project</a> was started to &#8220;help people distribute their content to other people without being beholden to any corporation&#8221;.  A laudable goal, and one that earned them a <a href="http://news.cnet.com/RealNetworks-besieged-by-open-source-plans/2100-1023_3-224699.html">fawning writeup on CNet News</a>, which claimed that Real was under siege by these folks.  The project never seemed to make it much further than a website with a few diagrams, and nothing that came even close to challenging the streaming media hegemony we enjoyed at the time. (I was at Real from 1996-2005)
<p />
<p>However, that&#8217;s not really the whole story.  What the fawning press coverage indicated was that there were a lot of people who <i>wanted</i> Real to be taken down a peg or two.  I imagine that the CNet reporter was as skeptical as anyone about the ability of the Free Expression Project to deliver, but he wrote the story anyway because he knew that people would eat it up.  He knew that story would generate traffic because people would see his headline, think &#8220;Thank GOD!&#8221;, and click through to read the story.  He was probably right.
<p />
<p>It ultimately wasn&#8217;t a ragtag band of open source developers that toppled Real&#8217;s dominant position, but rather a one-two punch from Microsoft then Macromedia/Adobe.  Still, their job was made a lot easier by the prevailing mood.  When we <a href="http://www.nytimes.com/2002/07/22/technology/22REAL.html">tried to rally the open source community a few years later</a>, despite our success in landing deals with hardware vendors (which it <a href="https://helixcommunity.org/products/partner_spotlight">appears they are still successful with</a>), we didn&#8217;t get a lot of <a href="http://blog.robla.net/2008/hard-problem/">organic contribution</a>.  By then, MPlayer, GStreamer, Xine, VLC and other efforts were already underway, and contributors to those projects had little incentive to join forces with us at that point.  The developers on those projects thought: &#8220;we can do this better, and why would we want to help Real anyway?&#8221;
<p />
<p>Facebook has a pretty solid network lock-in going for them, so its not as though we&#8217;re about to witness a sudden collapse of their market position.  However, they&#8217;ve got a serious problem with their brand, and I wouldn&#8217;t be surprised if Zuckerberg is in complete denial about it, preferring to think about the privacy controversy as a storm that will blow over soon enough.  It&#8217;d be easy for the Facebook crew to believe that no one is going to be able to pull together all of the elements needed for head-to-head competition.  I&#8217;m betting that&#8217;s not how it plays out.  My guess is that someone like Twitter or Google figures out how to add just enough functionality that <a href="http://www.prospect.org/cs/articles?article=farewell_facebook">many more people feel comfortable giving up on Facebook</a>.  Moreover, if I were going into competition with Facebook, I think I&#8217;d try to turn their strength into a weakness.  For example, for many younger people, a network not overrun with parents, grandparents and extended relatives <a href="http://www.youtube.com/watch?v=o_QePidL750">might just be a selling point</a>.
<p>I&#8217;m not deleting my Facebook account anytime soon, but I know <a href="http://mediacommons.futureofthebook.org/content/cultivated-play-farmville">I don&#8217;t need everything Facebook currently offers</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.robla.net/2010/on-diaspora/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Doing the conferency talky thing</title>
		<link>http://blog.robla.net/2010/doing-the-conferency-talky-thing/</link>
		<comments>http://blog.robla.net/2010/doing-the-conferency-talky-thing/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 23:01:59 +0000</pubDate>
		<dc:creator>robla</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.robla.net/?p=201</guid>
		<description><![CDATA[I didn&#8217;t do much in the way of public speaking last year, but I&#8217;m starting to make up for it this year. Here&#8217;s a few things I&#8217;ve got coming up: April 13 &#8211; Lighting talk at the Seattle Django Users Group &#8211; this will be about jsonwidget, which is shaping up nicely. I&#8217;m toying with [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_204" class="wp-caption alignright" style="width: 310px"><a href="http://blog.robla.net/wp-content/uploads/2010/04/rob-hazel-2010-400x300px1.jpg"><img src="http://blog.robla.net/wp-content/uploads/2010/04/rob-hazel-2010-400x300px1-300x225.jpg" alt="" title="rob-hazel-2010-400x300px" width="300" height="225" class="size-medium wp-image-204" /></a><p class="wp-caption-text">That's me giving a lecture to my daughter about the importance of proper modularization in large scale development</p></div><br />
I didn&#8217;t do much in the way of public speaking last year, but I&#8217;m starting to make up for it this year.  Here&#8217;s a few things I&#8217;ve got coming up:</p>
<ul>
<li>April 13 &#8211; <a href="http://www.djangoseattle.org/blog/2010/mar/30/april-13th-django-lawnchair-lightning-talks/">Lighting talk at the Seattle Django Users Group</a> &#8211; this will be about <a href="http://robla.net/jsonwidget">jsonwidget</a>, which is shaping up nicely.  I&#8217;m toying with the idea of making a Django interface for jsonwidget which will be the main point of the discussion.
</li>
<li>April 24 or 25 (tbd) <a href="http://linuxfestnorthwest.org/sessions/using-urwid-and-python-console-applications">LinuxFest Northwest (Bellingham) &#8211; Using urwid and Python for console applications</a> &#8211; I&#8217;ve had a pretty good experience working with <a href="http://excess.org/urwid/">Urwid</a> over the past couple of months or so, and I&#8217;m planning to share what I&#8217;ve learned.
</li>
<li>July 21-22 &#8211; Two talks at <a href="http://www.oscon.com/oscon2010">O&#8217;Reilly&#8217;s Open Source Convention in Portland</a>:
<ul>
<li>July 21 &#8211; <a href="http://www.oscon.com/oscon2010/public/schedule/detail/13417">Financial Incentives in Open Source<br />
</a> &#8211; this is a panel I&#8217;ll be moderating, with a lot of really interesting people with a pretty broad range of experience.  <a href="http://www.oscon.com/oscon2010/public/schedule/speaker/4708">Stormy Peters</a> has given a lot of <a href="http://www.youtube.com/watch?v=vzyaM7VWqOg">really</a> <a href="http://video.google.com/videoplay?docid=-6000071462331877503">good</a> <a href="http://video.google.com/videoplay?docid=-5661144261834801321">talks</a> on the subject already.  <a href="http://www.oscon.com/oscon2010/public/schedule/speaker/8837">Leslie Hawthorn</a> has been the community manager for the <a href="http://code.google.com/soc/">Google Summer of Code program</a> for the past several years. <a href="http://www.oscon.com/oscon2010/public/schedule/speaker/6786">Mike Milinkovich</a> is executive director at Eclipse Foundation, which among many things, is host to the <a href="http://www.eclipse.org/org/foundation/eclipseawards/">Eclipse Community Awards</a>.  Last but not least, <a href="http://www.oscon.com/oscon2010/public/schedule/speaker/77067">Todd Crowe</a> is an independent web developer who has a lot of experience <a href="http://www.elance.com/experts/cloverdale_/php_mysql/2326470">working with freelance sites like Elance</a>.  Additionally, Todd has done a lot of work for <a href="http://www.lovemachineinc.com/">Love Machine, Inc.</a>, a startup that&#8217;s taking <a href="http://www.lovemachineinc.com/2010/03/extreme-velocity/">a pretty innovative approach</a> to organizing their work.</li>
<li>July 22 &#8211; <a href="http://www.oscon.com/oscon2010/public/schedule/detail/13958">Great User Interfaces in the Terminal Window</a> &#8211; This will be similar to my April talk about Urwid at LFNW, but will be a broader overview of the various approaches.  When I was hunting for Urwid, I evaluated some of the alternatives, so the idea behind this talk is to step through the advantages/disadvantages of the various approaches.</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.robla.net/2010/doing-the-conferency-talky-thing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thoughts on dual licensing and contrib agreements</title>
		<link>http://blog.robla.net/2010/thoughts-on-dual-licensing-and-contrib-agreements/</link>
		<comments>http://blog.robla.net/2010/thoughts-on-dual-licensing-and-contrib-agreements/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 04:25:12 +0000</pubDate>
		<dc:creator>robla</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.robla.net/?p=142</guid>
		<description><![CDATA[photo by kwc There&#8217;s been a lot of chatter lately about dual licensing in open source and its much-maligned companion the contributor license agreement. Since my last two community management gigs involved dual licensing and CLAs, I have a few thoughts on the subject. These tools certainly make it harder to build a community. As [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 250px"><a href="http://www.flickr.com/photos/kwc/42567298/"><img alt="Two-headed Camel" src="http://farm1.static.flickr.com/29/42567298_9884092bd5_m.jpg" title="Two-headed Camel" width="240" height="160" /></a>
<p class="wp-caption-text"><a href="http://creativecommons.org/licenses/by/2.0/" title="Attribution License" target="_blank"><img src="http://blog.robla.net/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> photo by <a href="http://flickr.com/people/kwc/" title="kwc" target="_blank">kwc</a></p>
</div>
<p>There&#8217;s been a lot of chatter lately about <a href="http://en.wikipedia.org/wiki/Multi-licensing">dual licensing in open source</a> and its much-maligned companion the <a href="http://en.wikipedia.org/wiki/Contributor_License_Agreement">contributor license agreement</a>.  Since my last two community management gigs involved dual licensing and CLAs, I have a few thoughts on the subject.</p>
<p>These tools certainly make it harder to build a community.  As Brian Aker pointed out in <a href='http://krow.livejournal.com/684329.html'>Drizzle, Licensing, Having Honest Conversations with your Community</a>:</p>
<blockquote><p>How do you have an honest conversation with someone where you say &#8220;yes, I will need the work you did for free, to be assigned over to me, so that I can make money on it&#8221;?
</p></blockquote>
<p>It&#8217;s not hard to understand that argument.  As anyone who has ever tried to build a community will tell you, contributors don&#8217;t grow on trees.  It&#8217;s a lot of hard work getting a community excited and motivated to work on your project. Having a single-minded focus on the thought process of your contributor community is probably the only way to build a community of any size or consequence.<br />
<span id="more-142"></span><br />
From the perspective of the potential contributor, being asked for a contribution agreement by the project sponsor is really pushing it.  The sponsor is already receiving hours, or maybe even days or weeks worth of free labor.  Asking the contributor to sign a seemingly one-sided agreement is asking too much.  Most open source contributors probably don&#8217;t have a lawyer on retainer (except for the employees of companies big enough to have legal staff), and few lawyers probably understand the benefit of signing these things.</p>
<div class="wp-caption alignleft" style="width: 172px"><a href="http://www.flickr.com/photos/buttepubliclibrary/4256596239/"><img alt="Frank S. Lusk" src="http://farm5.static.flickr.com/4058/4256596239_ced5c48062_m.jpg" title="Frank S. Lusk" width="172" height="240" /></a>
<p class="wp-caption-text"><a href="http://creativecommons.org/licenses/by/2.0/" title="Attribution License" target="_blank"><img src="http://blog.robla.net/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> photo from <a href="http://www.flickr.com/photos/buttepubliclibrary/" title="Butte-Silver Bow Public Library" target="_blank">Butte-Silver Bow Public Library</a></p>
</div>
<p>So, that&#8217;s the view from the contributor side, but what about the project sponsor?  I&#8217;m sure there&#8217;s at least as many views as there are project sponsors, but let me try to paint a general picture.  When a corporate entity invests in creating a new piece of software, they&#8217;re adding an asset to their balance sheet that they&#8217;ve got complete freedom to do with what they want. One thing they can do is release the source code under an open source license, which we all celebrate as a great thing. They lose resale value, but they don&#8217;t lose the ability to relicense it.  Even if there is no intention to ever relicense that code, the mere ability to do so adds to the balance sheet of a company.  For example, I really doubt that MySQL Inc would have sold for $1 billion had the company not had exclusive ownership of the MySQL database.  It&#8217;s doubtful <a href="http://www.businessweek.com/globalbiz/content/jan2008/gb20080128_783831.htm">Nokia would have forked over $153 million for Trolltech</a> had Trolltech already licensed Qt under LGPL.</p>
<p>Contributors who balk at contribution agreements probably don&#8217;t fully understand how companies arrive at their decision to insist on them, and so ascribe it to malice or <a href="http://despair.com/meetings.html">big company stupidity</a>, when in fact it&#8217;s probably neither.  </p>
<p>Open source projects of all stripes rarely get big, tangible features they truly lust after as outside contributions. Those big features are generally developed as separate projects. Instead, they get lots of small patches and improvements as outside contributions.</p>
<p>Taken individually, each patch is valuable, but not a game changer. So, for any one of these patches, as a sponsor of the project, the tradeoff between taking that one patch versus forever losing the ability to relicense the source code is no brainer. As in &#8220;no, don&#8217;t take the patch&#8221;. If the contributor can be convinced to relicense the patch, great, but otherwise, forget it.</p>
<p>While it may be possible to argue that the cumulative value of the delta between those patches one gets with a contributor agreement versus those that one would have gotten without requiring one is worth it over time, it&#8217;s very difficult to know what that delta is. Since that number is almost certainly unknowable, so is the benefit. And therein lies the rub.</p>
<p>Many of the arguments against having contribution agreements seem to be rooted in the idea that the patch contributor is the one who is being the most altruistic, and that the original provider of the source is the one who should be grateful.  While it&#8217;s absolutely true that the one receiving the patch should be grateful, it&#8217;s important to understand that <a href="http://www.lullabot.com/articles/best_practices_in_open_source_development">there&#8217;s a mutual exchange of value occuring</a>.  The contributor is partly avoiding the fate of needing to keep a downstream fork in sync with an ever changing upstream.  Moreover,<a href="http://blogs.techrepublic.com.com/security/?p=460"> as was discovered in the Debian/OpenSSH fiasco</a>, it&#8217;s often the case that the upstream has a valuable service to provide in merely saying &#8220;ur doing it rong&#8221;.</p>
<p>This is all my longwinded way of saying that potential contributors shouldn&#8217;t walk away from a project solely because the project requires contributor agreements.  Projects can have very good reasons for needing them, and there can be substantial value in a good working relationship with these providers.</p>
<p>That&#8217;s not to say I&#8217;m in love with contribution agreements and the dual licensing model.  They bring with them all of the problems that Brian and others describe.  It&#8217;s way more work explaining to your community the need for contribution agreements and GPL licensing than it is to just do away with them and run a more community-oriented project.  However, it&#8217;s one of the few ways that the open source community has proven worthy of significant financial investment and payoff, so we shouldn&#8217;t be <i>too</i> eager to cast it aside.</p>
<p>The only good reason to cast it aside is if there are better models out there, which <a href='http://redmonk.com/sogrady/2010/02/25/data-vs-dual-licensing/?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+tecosystems+%28tecosystems%29&#038;utm_content=Google+Reader'>Stephen O&#8217;Grady suggests there might be</a>.  Here&#8217;s the pitch:</p>
<blockquote><p>But what if open source vendors could leverage their primary strength &#8211; distribution &#8211; more effectively as a direct revenue stream? I&#8217;ve been predicting for <a href="http://redmonk.com/sogrady/2007/08/20/more_money/">three years</a> or so that they would do just that, via data aggregation and analytics. The alignment of customer and vendor goals is better in this model than in virtually any other. The simplest example of this model outside of open source is Google, who provides users with search at no cost, receiving in return massive volumes of data which they monetize both directly (contextual ad placement) and indirectly (algorithmic improvement, machine learning, intelligence for product planning strategy, etc). Why couldn&#8217;t software vendors employ a similar model, trading free software for user generated telemetry data? The answer is, they can. <a href="http://www.spiceworks.com/">SpiceWorks</a>, for one, is doing just that now, quite successfully, albeit not with open source software.
</p></blockquote>
<p>I agree this is a pretty neat trick if you can pull it off.  I think Google, for one, is big enough to pull it off.  But I also don&#8217;t think its an accident that Stephen had to resort to mentioning a closed-source vendor (SpiceWorks) to make his point.  The problem with using open source with this type of strategy is that your downstream distributors can cut you out of the loop, stripping out key revenue and data generating tethers back to the mothership, as <a href="http://arstechnica.com/open-source/news/2010/01/ubuntus-default-search-engine-to-change-in-deal-with-yahoo.ars">Canonical recently did with Firefox</a>.  Since Ubuntu users don&#8217;t represent a huge portion of Firefox&#8217;s user base, it&#8217;s probably not that big of a deal for Mozilla, but just imagine what would happen to Mozilla&#8217;s revenues if Microsoft started distributing Firefox rewired to point to Bing.
<div class="wp-caption alignright" style="width: 240px; top:500px"><a href="http://www.flickr.com/photos/archiemcphee/2698737051/"><img alt="Angry Mob comin at ya!" src="http://farm4.static.flickr.com/3262/2698737051_6c4c2a2a83_m.jpg" title="Angry Mob comin at ya!" width="240" height="180" /></a>
<p class="wp-caption-text"><a href="http://creativecommons.org/licenses/by-nc/2.0/" title="CC Attribution-Noncommercial 2.0 Generic" target="_blank"><img src="http://blog.robla.net/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> photo from <a href="http://www.flickr.com/photos/archiemcphee/" title="Archie McPhee Seattle" target="_blank">Archie McPhee Seattle</a></p>
</div>
<p> The only real leverage that an upstream producer of open source software has in this case is withholding their trademark, and <a href="http://arstechnica.com/old/content/2008/09/ubuntu-firefox-eula-dustup-reignites-oss-licensing-debate.ars">we all know how much the community loves that</a>.</p>
<p>As I said before, open source contributors aren&#8217;t easy to attract to projects.  They don&#8217;t grow on trees.  Then again, neither do compelling, commercially-competitive open source applications.  Since we&#8217;ve established we can&#8217;t plant orchards of contributor and application provider trees to get a lot of both, let&#8217;s make sure we&#8217;re brokering good deals for both sides to attract many more of both.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.robla.net/2010/thoughts-on-dual-licensing-and-contrib-agreements/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Easy form building for terminal windows: jsonwidget-python</title>
		<link>http://blog.robla.net/2010/jsonwidget-python/</link>
		<comments>http://blog.robla.net/2010/jsonwidget-python/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 05:51:28 +0000</pubDate>
		<dc:creator>robla</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[jsonwidget]]></category>

		<guid isPermaLink="false">http://blog.robla.net/?p=101</guid>
		<description><![CDATA[I&#8217;ve been working on a project to make building forms really simple. My latest work is &#8220;jsonwidget-python&#8221; for terminal-based applications (like you would use via SSH or local terminal on Linux and Mac). It&#8217;s all very retro, but terminal windows are still very much in use for buzzword-compliant activities like configuring virtual machines for cloud [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on <a href="http://robla.net/jsonwidget/">a project to make building forms really simple</a>.  My latest work is &#8220;jsonwidget-python&#8221; for terminal-based applications (like you would use via SSH or local terminal on Linux and Mac).  It&#8217;s all very retro, but terminal windows are still very much in use for buzzword-compliant activities like configuring virtual machines for cloud computing, in addition to being the preferred user interface for a lot of people out there (*cough* nerds *cough*).</p>
<p>This new project builds on some earlier work that I&#8217;ve retroactively renamed &#8220;<a href="http://robla.net/jsonwidget#javascript">jsonwidget-javascript</a>&#8220;.  jsonwidget-javascript is AJAX-y generation of forms inside a browser based on a JSON schema.  jsonwidget-python is intended for terminal users at first, but will extend to other contexts as well.</p>
<p>Here&#8217;s a simple screenshot to show what&#8217;s going on:<br />
<div id="attachment_102" class="wp-caption alignleft" style="width: 410px"><a href="http://blog.robla.net/wp-content/uploads/2010/02/simpleaddr-screenshot-1.png"><img src="http://blog.robla.net/wp-content/uploads/2010/02/simpleaddr-screenshot-1.png" alt="Simple Address Entry in jsonwidget-python" title="Simple Address Entry in jsonwidget-python" width="400" height="284" class="size-medium wp-image-102" /></a><p class="wp-caption-text">Simple Address Entry in jsonwidget-python</p></div><br />
<span id="more-101"></span><br />
There&#8217;s nothing too fancy in this screenshot, but this is probably the most typical case.  What you see there is deceptively simple, but there&#8217;s a lot of complicated stuff going on under the hood.  Most of the complicated parts (drawing the fields, handling focus, handling keyboard shortcuts) is being provided by <a href="http://excess.org/urwid/">urwid</a>, an excellent Python-based library for building terminal-based user interfaces.  jsonwidget is providing a further abstraction that hopefully makes it even simpler to provide this type of interface, though sacrificing much of the flexibility of programming directly against urwid.  Here is the <a href="http://robla.net/jsonwidget/simpleaddr-schema.json.txt">complete configuration file (the schema) describing that address entry form</a>, as well as the <a href="http://robla.net/jsonwidget/jsonschema">documentation for the schema format</a>.  jsonwidget-python is compatible with jsonwidget-javascript, so <a href="http://robla.net/jsonwidget/example.php?sample=simpleaddr">the same schema also works in jsonwidget-javascript</a>.</p>
<p><div id="attachment_115" class="wp-caption alignleft" style="width: 310px"><a href="http://blog.robla.net/wp-content/uploads/2010/02/jsonwidget-javascript-shot.png"><img src="http://blog.robla.net/wp-content/uploads/2010/02/jsonwidget-javascript-shot-300x183.png" alt="jsonwidget-javascript screenshot with simple address entry form" title="jsonwidget-javascript screenshot with simple address entry form" width="300" height="183" class="size-medium wp-image-115" /></a><p class="wp-caption-text">jsonwidget-javascript screenshot with the same simple address entry form</p></div>One nice feature on display even in the simple demo is the ability to have arrays as fields.  You&#8217;ll notice that the phone number field has two phone numbers, and offers to let you add a third.  There&#8217;s no artificial limit on the number of phone numbers that one can enter using this tool, beyond the usual limits of computer memory, patience, etc.</p>
<p>It also handles more complicated schemas if your application calls for it.  For example, let&#8217;s say that one wanted to build a <i>real</i> address book application.  Clearly a lot more flexibility would be needed than merely allowing multiple phone numbers.  Here&#8217;s a screenshot showing a much more sophisticated schema that&#8217;s more like what real address book applications allow:</p>
<div id="attachment_118" class="wp-caption alignnone" style="width: 510px"><a href="http://blog.robla.net/wp-content/uploads/2010/02/complexaddr-screenshot-1.png"><img src="http://blog.robla.net/wp-content/uploads/2010/02/complexaddr-screenshot-1.png" alt="More complicated data entry with jsonwidget-python" title="More complicated data entry with jsonwidget-python" width="500" height="375" class="size-full wp-image-118" /></a><p class="wp-caption-text">More complicated data entry with jsonwidget-python</p></div>
<p>So, what is this good for?  Well, I think it&#8217;ll be good for a lot of stuff.  I suspect it might be a very good user interface to stick in front of a <a href="http://augeas.net/">augeas-based</a> user interface.  I think it might also be a good tool for building a terminal-based frontend for editing <a href="http://couchdb.apache.org/">CouchDB</a> and similar databases.  In particular, I&#8217;m thinking about making a <a href="http://www.freedesktop.org/wiki/Specifications/desktopcouch">desktop-couch</a> interface for contact editing.  Another idea I&#8217;ve dabbled with is automatically building a UI based on parameters to <a href="http://docs.python.org/library/optparse.html">Python&#8217;s optparse</a>.  Yet another thought is an editor for <a href="http://docs.python.org/library/configparser.html">Python&#8217;s ConfigParser</a> or alternatively <a href="http://www.voidspace.org.uk/python/configobj.html">ConfigObj</a>.  Lots of different possibilities here.</p>
<p>I&#8217;m particularly interested in suggestions for applications that people would use.  So, if you have an application for this type of thing that you&#8217;re reasonably sure you&#8217;d use if I did a good enough job implementing, let me know.</p>
<p>Of course, that&#8217;s probably getting a little ahead of myself.  There&#8217;s a number of things <a href="http://bitbucket.org/robla/jsonwidget-python/src/tip/TODO.txt">on the roadmap</a> to do, such as more kosher packaging for easy_install and for Linux distros, as well as the ability to edit arbitrary JSON.  I also need to investigate SitePen&#8217;s <a href="http://json-schema.org/">JSON schema</a> work, which they appear to be well along toward some sort of RFC (probably informational, but that can be enough for something like this).</p>
<p>Anyway, if this sort of thing is up your alley, please give it a whirl and let me know what you think.  You can download jsonwidget-python and give it a spin.   I&#8217;ve set up a <a href="http://lists.robla.net/listinfo.cgi/jsonwidget-robla.net">jsonwidget mailing list</a> which you&#8217;re more than welcome to use, but you can also just post a comment here or contact me via email.</p>
<p><strong>Update: March 9</strong> &#8211; there&#8217;s now several ways of getting jsonwidget:</p>
<ul>
<li><a href="http://pypi.python.org/pypi/jsonwidget/">Latest version at PyPI</a>
</li>
<li><a href="https://launchpad.net/jsonwidget">Ubuntu users: PPA on Launchpad</a>
</li>
<li><a href="http://bitbucket.org/robla/jsonwidget-python/">Bitbucket repository</a>
</li>
<li><a href="http://robla.net/jsonwidget">off of my website</a>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.robla.net/2010/jsonwidget-python/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Sorry about the NASCAR-looking comment area</title>
		<link>http://blog.robla.net/2010/sorry-about-the-nascar-looking-comment-area/</link>
		<comments>http://blog.robla.net/2010/sorry-about-the-nascar-looking-comment-area/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 01:01:54 +0000</pubDate>
		<dc:creator>robla</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.robla.net/?p=124</guid>
		<description><![CDATA[As you may have noticed if you visited blog.robla.net directly, the comment area is handled via Intense Debate. I did that to get myself out of the account management business while still maintaining a modicum of control over my site. Other than then weird blue flaming logo and the name &#8220;intense debate&#8221; on a blog [...]]]></description>
			<content:encoded><![CDATA[<p>As you <i>may</i> have noticed if you visited blog.robla.net directly, the comment area is handled via Intense Debate.  I did that to get myself out of the account management business while still maintaining a modicum of control over my site.  Other than then weird blue flaming logo and the name &#8220;intense debate&#8221; on a blog that I don&#8217;t anticipate intense debate on, it&#8217;s rather nice.</p>
<p>One new feature that I just enabled is the ability to comment using Facebook or Twitter login.  It appears as though if you use it via Facebook, you&#8217;ll get the &#8220;allow to automatically post to your wall&#8221;, which is something that I don&#8217;t intend to exploit.  If anyone with Facebook Developer-fu knows how to tweak it so it doesn&#8217;t ask for that permission, I&#8217;d be grateful if you clued me in.</p>
<p>The downside, of course, is that now there is 15 different logos down in the comment area now, not counting the additional 9 or so that pop up when you hover over the little orange RSS icon.  Who knows, given the lack of color in the plain-jane theme I&#8217;ve recently switched to, maybe that&#8217;s a feature.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.robla.net/2010/sorry-about-the-nascar-looking-comment-area/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Python&#8217;s simpleparse module</title>
		<link>http://blog.robla.net/2010/simpleparse/</link>
		<comments>http://blog.robla.net/2010/simpleparse/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 01:09:11 +0000</pubDate>
		<dc:creator>robla</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.robla.net/?p=91</guid>
		<description><![CDATA[I&#8217;m working on a project that required a bit more from the JSON parser than the stock JSON parser with Python allowed for. After doing some hunting around, I came to the unfortunate conclusion that I&#8217;d probably need to write my own. Thankfully, Python&#8217;s simpleparse module lived up to its billing (thanks in large part [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/balakov/2452020557/"><img src="http://farm4.static.flickr.com/3185/2452020557_6cb5c3399b_m.jpg" title="&quot;Raising the flag on Iwo Jima&quot; by Mike Stimpson" width="240" height="192" class="alignright" /></a><br />
I&#8217;m working on a project that required a bit more from the <a href="http://json.org">JSON</a> parser than the stock JSON parser with Python allowed for.  After doing some hunting around, I came to the unfortunate conclusion that I&#8217;d probably need to write my own.</p>
<p>Thankfully, <a href="http://simpleparse.sourceforge.net/">Python&#8217;s simpleparse module</a> lived up to its billing (thanks in large part to JSON having such trivial syntax)  Here&#8217;s the working BNF suitable for passing to simpleparse:<br />
<span id="more-91"></span></p>
<blockquote><p><code>&lt;ws>        := [ \t\n\r]*</p>
<p>>string_json&lt; := string_single_quote / string_double_quote<br />
key := string_json<br />
array := "[", ws, ( value, (ws, ",", ws, value)* )?, ws, "]"</p>
<p>member := key, ws, ":", ws, value<br />
object := "{", ws, ( member, ( ws, ",", ws, member )* )?, ws, "}"</p>
<p>true  := "true"<br />
false := "false"<br />
null  := "null"<br />
>value&lt; := false / null / true / object / array / float / int / string_json<br />
>document&lt; := ws, value, ws<br />
</code></p></blockquote>
<p>This is also available in source code form here: <a href="http://bitbucket.org/robla/jsonwidget-python/src/tip/jsonwidget/jsonorder.py">jsonorder.py</a>.  jsonorder.py is part of a larger project, but it also works as a standalone library (albeit not a terribly useful one for most uses)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.robla.net/2010/simpleparse/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Moving on</title>
		<link>http://blog.robla.net/2009/moving-on/</link>
		<comments>http://blog.robla.net/2009/moving-on/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 06:07:11 +0000</pubDate>
		<dc:creator>robla</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.robla.net/?p=82</guid>
		<description><![CDATA[I&#8217;ve decided to leave my current job at Linden Lab. Those of you interested in the ins-and-outs of Second Life may want to look at my post to &#8220;sldev&#8221; (our open source development mailing list). It was a tough decision to leave, and even tougher to make without having my next move totally nailed down, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve decided to leave <a href="http://wiki.secondlife.com/wiki/User:Rob_Linden">my current job at Linden Lab</a>.  Those of you interested in the ins-and-outs of Second Life may want to look at <a href="https://lists.secondlife.com/pipermail/sldev/2009-November/015579.html">my post to &#8220;sldev&#8221; (our open source development mailing list)</a>.  It was a tough decision to leave, and even tougher to make without having my next move totally nailed down, but so far it feels like the right decision.  Ask me in a couple months how I feel  <img src='http://blog.robla.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Without going into too much detail about what I&#8217;m working on, suffice it to say that it involves open source in a pretty big way.  Even if this immediate opportunity doesn&#8217;t pan out, the scope of stuff I&#8217;ll be looking at is going to be pretty narrowly focused on facilitating the creation of open source software.  I&#8217;ll write more here as things get clearer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.robla.net/2009/moving-on/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Brutal honesty in open source development</title>
		<link>http://blog.robla.net/2008/brutal-honesty-in-oss/</link>
		<comments>http://blog.robla.net/2008/brutal-honesty-in-oss/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 09:10:09 +0000</pubDate>
		<dc:creator>robla</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.robla.net/?p=77</guid>
		<description><![CDATA[There&#8217;s a bit of a flamewar going on right now between the main PulseAudio developer, and another Linux desktop developer who grew frustrated by some very real problems caused directly and indirectly by it. PulseAudio is the latest of many savior technologies that promise to make audio on Linux not suck. I&#8217;m actually pretty optimistic [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a bit of a flamewar going on right now between the main <a href="http://en.wikipedia.org/wiki/PulseAudio">PulseAudio</a> developer, and another Linux desktop developer who grew frustrated by some very real problems caused directly and indirectly by it.  PulseAudio is the latest of many savior technologies that promise to make audio on Linux not suck.  I&#8217;m actually pretty optimistic that the fifth(?) time&#8217;s a charm here; there&#8217;s a lot of very sensible things about the design.</p>
<p>Anyway, Jeffrey Stedfast wrote a series of blog posts culminating in &#8220;<a href="http://jeffreystedfast.blogspot.com/2008/07/pulseaudio-i-told-you-so.html">PulseAudio: I told you so</a>&#8220;.  In these, he documents his frustration with being given the runaround when trying to point out PA problems that he ends up debugging to the point of finding and/or filing several bugs/patches in various bug trackers.  PulseAudio creator Lennart Poettering had enough, and posted to his blog with <a href="http://0pointer.de/blog/projects/jeffrey-stedfast.html">a long rebuttal</a>, claiming that Stedfast&#8217;s blog post &#8220;flamed my software and hence me&#8221;.  It&#8217;s a pretty run of the mill developer flamewar, which only caught my eye because I&#8217;ve had a few frustrating problems with PA myself and was hoping to learn more.<br />
<span id="more-77"></span><br />
These kind of arguments make me sad, because they unfortunately seem an inevitable consequence of open source norms (at least as they exist today).  Anyone who knows me knows I&#8217;ve laid down my fair share of smackdowns and attempted smackdowns myself.  But I&#8217;ve also become more ashamed of doing it as I&#8217;ve gotten older.  It just seems that there&#8217;s got to be a better way of communicating than this.</p>
<p>In this particular case, I get both sides of the argument equally well.  I&#8217;ve been on the side of the creator who is told they need to get a thicker skin.  That&#8217;s pretty rough, though, given how brutally honest many people think they need to be just to make a point.  On the flip side, I&#8217;m also using PulseAudio now, and its inclusion in distributions like Ubuntu does feel like it was horribly rushed.  However, it&#8217;s obvious there wasn&#8217;t any malice here; just two people who have different views on what the right path to &#8220;better&#8221; is.</p>
<p>The only thing I would say is that &#8220;brutal honesty&#8221; should be the last resort, and that public brutal honesty should be the absolute last resort.  Just plain old honesty is good enough more often than not.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.robla.net/2008/brutal-honesty-in-oss/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Software as hiring decision</title>
		<link>http://blog.robla.net/2008/software-as-hiring-decision/</link>
		<comments>http://blog.robla.net/2008/software-as-hiring-decision/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 07:08:29 +0000</pubDate>
		<dc:creator>robla</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.robla.net/?p=76</guid>
		<description><![CDATA[This article in CIO Magazine touches on things that you should look for in choosing open source software: Project stability: Can you trust the project to be there when you need it? Project support: Can you get support when you need it? Internal software management: Does your company know what open-source programs it’s using? How [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cio.com/article/429813/Developing_Open_Source_Business_Policies_That_Work_Everyone_Is_Making_It_Up_As_They_Go_Along/3">This article in CIO Magazine</a> touches on things that you should look for in choosing open source software:</p>
<blockquote><ul>
<li>Project stability: Can you trust the project to be there when you need it?</li>
<li>Project support: Can you get support when you need it?</li>
<li>Internal software management: Does your company know what open-source programs it’s using? How it’s developing and deploying them both in-house and to customers?”</li>
</ul>
</blockquote>
<p>I&#8217;m not so sure that these problems are truly bigger problems for open source as they are for software in general.  When people in companies select a new piece of software (for use as a standalone product or as an integrated component of a larger system) they miss one important thing:  it is much more like a hiring decision than they probably realize.  Many of the considerations people make for new employees (reputation, cultural fit, how they are to work with) are equally applicable to new software components and systems.</p>
<p>(<em>CIO article <a href="http://blogs.the451group.com/opensource/2008/07/14/policy-matters-for-open-source-adoption/">via Matthew Aslett @ The 451 Group</a></em>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.robla.net/2008/software-as-hiring-decision/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

