<?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>join-fu! &#187; Open Source</title>
	<atom:link href="http://www.joinfu.com/category/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joinfu.com</link>
	<description>the art of sql</description>
	<lastBuildDate>Mon, 23 Jan 2012 20:21:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>The Science (or Art?) of Commit Messages</title>
		<link>http://www.joinfu.com/2012/01/the-science-of-commit-messages/</link>
		<comments>http://www.joinfu.com/2012/01/the-science-of-commit-messages/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 19:26:22 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[Git]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.joinfu.com/?p=392</guid>
		<description><![CDATA[There are some things in the world of development that you appreciate much more when you do a lot of code reviews. One of those things is commit messages. At first glance, commit messages seem to be a small, relatively innocuous thing for a developer. When you commit code, you type in some description about [...]]]></description>
			<content:encoded><![CDATA[<p>
There are some things in the world of development that you appreciate much more when you do a lot of code reviews. One of those things is commit messages.
</p>
<p>
At first glance, commit messages seem to be a small, relatively innocuous thing for a developer. When you commit code, you type in some description about your code changes and then, typically, push your code somewhere for review by someone.
</p>
<p>
Regardless of whether the code you pushed is going to an open source project, an internal proprietary code repository, or just some code exchanged between friends working on a joint project, that simple little commit message tells the person reading your code a whole lot about you. It speaks volumes about the way you feel about the code you submit and the quality of the review you <em>expect</em> for your code.
</p>
<p>
As an example, suppose I was working on some code that fixed a bug. I got my code ready for initial review and I did the following:
</p>
<pre>
$> git commit -a -m "Fixes some stuff"
</pre>
<p>
And then I push my commit somewhere using <code>git push</code> &#8230;
</p>
<p>
Inevitably, what happens is that another developer will get some email or notification that I have pushed code up to some repository. It is likely that this notification will look something like this:
</p>
<pre>
Change subject: Fixes some stuff
......................................................................

Fixes some stuff

Change-Id: I79bbac32b5c99742b5cb283c6e55e6204bf92adc
---
M path/to/some/changed/file
1 file changed, 1 insertion(+), 1 deletion(-)
</pre>
<p>
And in the notification will be some link to a place to go do a code review.
</p>
<p>
Now, what do you think is the first thought that goes through the reviewer&#8217;s mind? My guess would be: <em>Really? Fixes <strong>what</strong> stuff?</em> By not including any context about what the patch is attempting to solve, you leave the reviewer with a bad taste in their mouth. And a bad taste in the reviewer&#8217;s mouth generally means one thing: <em>a reluctance to review your patch</em>.
</p>
<p>
OK, so what could we do to make the commit message better, to provide the reviewer with more initial context about your patch? Well, the first thing that comes to mind is to reference a specific bug that you are fixing with this patch.
</p>
<p>
Alright, so we amend our commit message to include a bug identifier:
</p>
<pre>
$> git commit --amend -m "Fixes Bug 123456"
</pre>
<p>
And subsequently push our amended commit message. The reviewer now gets a new notification that you&#8217;ve amended a previous patch. Now the notification includes the bug identifier. What do you think the next thought a typical reviewer might have? My guess is this: <em>What, does this developer think that I&#8217;ve memorized all the bug IDs for all open bugs? How should I know what Bug 123456 is about?</em> And here comes that bad taste in the mouth again.
</p>
<p>
OK, so this time, we will forgo the use of the time-saving <code>-m</code> switch to <code>git commit</code> and actually type a proper, multi-line commit message in our editor of choice that describes the bug that our patch fixes, including a brief description of how we fixed the bug:
</p>
<pre>
git commit --amend  # This will open up your editor...
</pre>
<p>
Now we&#8217;d enter a good commit message &#8230; something like this would work:
</p>
<pre>
Fixes Bug 123456 - ImportError raised improperly in Storage Driver

Due to a circular dependency, an ImportError was improperly
being thrown when the storage driver was set to XYZ. Rearranged
code to remove circular dependency.
</pre>
<p>
The commit message now will give the reviewer everything they need in the notification to understand what the patch is for and how you solved a bug, without needing to go to their bug tracker to figure out what the bug was about.
</p>
<p>
A detailed commit message shows you care about the time that reviewers spend on your patch and that you value the code you are submitting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2012/01/the-science-of-commit-messages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentation: OpenStack QA &#8211; Walkthrough of Processes, Tools and Code</title>
		<link>http://www.joinfu.com/2012/01/openstack-qa-walkthrough-of-processes-tools-and-code/</link>
		<comments>http://www.joinfu.com/2012/01/openstack-qa-walkthrough-of-processes-tools-and-code/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 22:22:38 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.joinfu.com/?p=390</guid>
		<description><![CDATA[Last night I gave a short webinar to some folks about the basics of contributing to the Tempest project, which is the OpenStack integration test suite. It was the first time I&#8217;d used Google Docs to create and give a presentation and I must say I was really impressed with the ease-of-use of Google Docs [...]]]></description>
			<content:encoded><![CDATA[<p>
Last night I gave a short webinar to some folks about the basics of contributing to the <a href="http://github.com/openstack/tempest" title="Tempest - OpenStack Integration Test Suite">Tempest</a> project, which is the OpenStack integration test suite. It was the first time I&#8217;d used Google Docs to create and give a presentation and I must say I was really impressed with the ease-of-use of Google Docs Presentation. Well done, Google.
</p>
<p>
Anyway, I&#8217;ve uploaded a <a href="http://joinfu.com/presentations/openstack-qa-processes/openstack-qa-processes.pdf" title="OpenStack QA Processes">PDF of the presentation</a> to this website and provided a link to the Google Docs presentation along with a brief overview of the topics covered in the slides below. As always, I love to get feedback on slides. Feel free to leave a comment here, email me or find me on IRC. Enjoy!
</p>
<p><img src="http://joinfu.com/presentations/openstack-qa-processes/openstack-qa-processes.png" style="float: left; margin: 0px 40px 10px 0px;"/><img src="http://joinfu.com/img/html.png" /><a href="https://docs.google.com/presentation/d/1M3XhAco_0u7NZQn3Gz53z9VOHHrkQBzEs5gt43ZvhOc/edit"  title="OpenStack QA - Walkthrough of Processes, Tools and Code">Google Presentation (HTML)</a><br />
<img src="http://joinfu.com/img/pdf.png" /><a href="http://joinfu.com/presentations/openstack-qa-processes/openstack-qa-processes.pdf"  title="OpenStack QA - Walkthrough of Processes, Tools and Code">PDF  slides</a><br />
<br clear="left" /><br />
Topics included in the slides:</p>
<ul>
<li>OpenStack Contribution Process</li>
<li>Running Devstack Locally</li>
<li>Running Tempest against an Environment</li>
<li>Walkthrough the Tempest Source Code</li>
<li>Progressively improving a test case</li>
<li>Common Scenarios in Code Review and Submission</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2012/01/openstack-qa-walkthrough-of-processes-tools-and-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenStack One of 10 Most Important Open Source Projects in 2011</title>
		<link>http://www.joinfu.com/2011/12/openstack-one-of-10-most-important-open-source-projects-in-2011/</link>
		<comments>http://www.joinfu.com/2011/12/openstack-one-of-10-most-important-open-source-projects-in-2011/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 18:23:37 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[openstack]]></category>

		<guid isPermaLink="false">http://www.joinfu.com/?p=388</guid>
		<description><![CDATA[Joe &#8220;Zonker&#8221; Brockmeier recently posted his list of the top 10 most important open source projects of 2011, and OpenStack was in there. I agree that OpenStack is one of the most compelling open source projects this year. I think back to the Cactus release earlier in the year and really am amazed at the [...]]]></description>
			<content:encoded><![CDATA[<p>Joe &#8220;Zonker&#8221; Brockmeier recently posted his list of the <a href="https://www.linux.com/news/featured-blogs/196:zonker/524082:the-10-most-important-open-source-projects-of-2011">top 10 most important open source projects of 2011</a>, and OpenStack was in there.</p>
<p>I agree that OpenStack is one of the most compelling open source projects this year. I think back to the Cactus release earlier in the year and really am amazed at the amount of change in many of the core OpenStack projects &#8212; Nova in particular. We&#8217;ve had an explosion of contribution from a ton of individuals working at a who&#8217;s who list of technology companies, and I expect to see that passion and enthusiasm for OpenStack only continue to grow through 2012. Lots to look forward to. <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Here&#8217;s to an innovative 2012 and continued collaboration in the open source community on this terrific set of cloud infrastructure projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2011/12/openstack-one-of-10-most-important-open-source-projects-in-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Essex Design Summit &#8212; QA Sessions to Note</title>
		<link>http://www.joinfu.com/2011/10/essex-design-summit-qa-sessions-to-note/</link>
		<comments>http://www.joinfu.com/2011/10/essex-design-summit-qa-sessions-to-note/#comments</comments>
		<pubDate>Sun, 02 Oct 2011 14:47:53 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.joinfu.com/?p=381</guid>
		<description><![CDATA[There are quite a few folks interested in QA coming to the OpenStack Essex Design Summit next week. I wanted to give you all a heads-up on the sessions that may be of interest to you. Here they are: Monday, Oct 3rd: 09:30-10:25 &#8211; Essex Release Cycle Thierry Carrez, our illustrious release manager, will do [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://essexdesignsummit.sched.org/"><img class="alignnone" title="Essex Design Summit" src="http://essexdesignsummit.sched.org/img/logo.png" alt="Essex Design Summit" width="918" height="119" /></a></p>
<p>There are quite a few folks interested in QA coming to the <a href="http://essexdesignsummit.sched.org/">OpenStack<br />
Essex Design Summit</a> next week. I wanted to give you all a heads-up on<br />
the sessions that may be of interest to you.</p>
<p>Here they are:</p>
<p>Monday, Oct 3rd:</p>
<p>09:30-10:25 &#8211; <a href="http://essexdesignsummit.sched.org/event/6a56ba48d52da3a46f85699e82097901">Essex Release Cycle</a></p>
<p>Thierry Carrez, our illustrious release manager, will do a post-mortem<br />
on the Diablo release cycle and discuss potential changes for the<br />
Essex release cycle. I know almost all QAers have expressed desires to<br />
have maintenance branches managed by the QA team and I&#8217;ve heard<br />
suggestions about various QA-centric freeze points. Those interested<br />
in advocating for these things should plan to attend this session.</p>
<p>14:00-14:45 &#8211; <a href="http://essexdesignsummit.sched.org/event/ad2f43c3c900a2412e3981b8ea857181">Stable Release Updates</a></p>
<p>Dave Walker from Canonical plans to outline some possibilities for how<br />
to maintain and update stable releases of OpenStack projects.</p>
<p>15:00-15:45 &#8211; <a href="http://essexdesignsummit.sched.org/event/66f38d3bb4a1b8b169b81179e7f03215">Separating API from Implementation of the API</a></p>
<p>Total self-promotion of a session I&#8217;ve proposed&#8230; I think anyone<br />
interested in stabilizing the OpenStack APIs and having OpenStack APIs<br />
become the open standards for the cloud computing industry should<br />
attend.</p>
<p>16:30-17:15 &#8211; <a href="http://essexdesignsummit.sched.org/event/dc89ee807f4cee6718cda6549b737e3d">OpenStack Compute API 2.0</a></p>
<p>Glen Campbell will be leading a discussion about how to improve the<br />
Compute (Nova) API for a 2.0 API series. I think it&#8217;s important that a<br />
number of folks on the QA team attend this session and get an idea of<br />
the things that we will be looking at in the future regarding the<br />
Compute API. Personally, I&#8217;m definitely planning on attending this<br />
one.</p>
<p>17:30 &#8211; 17:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/c68faab3984bba3003adfc75a0cb0103">NetStack Continuous Integration Planning</a></p>
<p>Personally, I will not be at this session as I have another session to<br />
lead. However, I think it is important that a number of people from<br />
the QA team attend this session, listen to the needs of the NetStack<br />
contributors, voice our support for their projects, explain what the<br />
goals of our team are, and enable some cross-team collaborative<br />
efforts around CI and QA.</p>
<p>Tuesday, Oct 4th:</p>
<p>09:30 &#8211; 09:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/b4ee36022573ad50b1e23e9788226e84">Documentation Strategies for OpenStack</a></p>
<p>Anne Gentle will be leading a discussion about documentation of<br />
OpenStack projects. One of the deliverables of the OpenStack QA team<br />
is clearly to identify areas where specifications don&#8217;t match<br />
behaviour, so I think it&#8217;s pretty critical that the Doc Team and the<br />
QA team be on the same page when it comes to how to coordinate<br />
communication of documentation discrepancies.</p>
<p>09:30 &#8211; 09:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/e9c0baa7a606f320777e04baf531469c">VM Disk Management in Nova</a></p>
<p>At the same time as the documentation session, Paul Voccio is leading<br />
a discussion about VM disk management in Nova. Those QAers focusing on<br />
disk/volume management may want to attend this session to ensure the<br />
QA team has a good grasp of changes coming in this arena.</p>
<p>10:00 &#8211; 10-25 &#8211; <a href="http://essexdesignsummit.sched.org/event/4a20ba873ff18cb14eccf0392ba7aff7">OpenStack Common</a></p>
<p>Brian Lamar will be leading a discussion on getting serious about the<br />
potential of an openstack-common Python library of common code shared<br />
amongst many OpenStack projects. Hey, it&#8217;s a heck of a lot easier to<br />
QA code that&#8217;s in one location than the same code, written with slight<br />
differences, spread across many projects&#8230; seems like a no-brainer<br />
for the QA team to attend and support this idea. <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>11:00 &#8211; 11:25 &#8211; <a href="http://essexdesignsummit.sched.org/event/cb1331a198be5ed4920d2ab4eb508a4b">Monitoring in Swift</a></p>
<p>John Dickinson will be leading a session to discuss what things should<br />
be monitored across a Swift cluster, and what tools are available for<br />
monitoring. I think this discussion will be valuable for those of us<br />
interested in long-running production integration tests where Swift is<br />
one of the components of a full OpenStack test cluster.</p>
<p>12:00 &#8211; 12:25 &#8211; <a href="http://essexdesignsummit.sched.org/event/8477f29c978a90edef7e0fbca5786dc0">Integration Test Suites and Gating Trunk</a></p>
<p>A no brainer&#8230; in this session we will talk about the various<br />
integration test suites for Nova/Glance/Keystone and discuss the<br />
effort already underway to combine them. In addition, we will talk<br />
about what policies to recommend for OpenStack projects regarding what<br />
level of passing integration tests should hold up a gated trunk.</p>
<p>15:30 &#8211; 15:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/d621cc6cc3bbdc9d8df1a4909d6799ac">Making VM State Handling More Robust</a></p>
<p>Phil Day is leading a discussion about ways in which the handling of<br />
VM state transitions can be inconsistent and confusing. Since the QA<br />
team is responsible for documenting just such inconsistencies and<br />
building tests cases for such inconsistent behaviour, I think this<br />
session would be good to hang around in and listen/take notes.</p>
<p>16:30 &#8211; 17:25 &#8211; <a href="http://essexdesignsummit.sched.org/event/787dd036c1a093d52a72274a8f8561ca">OpenStack Faithful Implementation Test Suites (FITS)</a></p>
<p>Josh McKenty will be talking about certain proposals regarding a FITS<br />
for OpenStack APIs. Should be an interesting session <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Wednesday, Oct 5th:</p>
<p>09:30 &#8211; 10:25 &#8211; <a href="http://essexdesignsummit.sched.org/event/468aa6159fc652d020039092b22ad4c1">XenServer/KVM Feature Parity Plan</a></p>
<p>This session should be good for those QAers interested in identifying<br />
areas where feature parity between hypervisors is lacking, and<br />
discussing ways in which the QA team can document these disparities<br />
and produce tests for identifying future disparity among hypervisors.</p>
<p>11:00 &#8211; 11:45 &#8211; <a href="http://essexdesignsummit.sched.org/event/cc26b70de1216fe4ad405fbcbf2cdf15">Glance Throughput Improvements</a></p>
<p>This session is being led by Tim Reddins, from HP, who (along with his<br />
team) have done some analysis on ways to improve Glance&#8217;s throughput.<br />
QAers interested in stress, capacity, and parallelism testing should<br />
definitely attend!</p>
<p>11:30 &#8211; 11:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/216ab8d07988c057b3d3a93a074aa365">Nova Upgrades</a></p>
<p>Ray Hookway will talk about ways that Nova&#8217;s update process can be<br />
made more robust. I imagine that the talk&#8217;s recommendations will be<br />
generally applicable to many OpenStack projects, not just Nova. I also<br />
think that some members of the QA team should attend &#8212; we should be<br />
able to create functional tests for upgrade processes for all<br />
OpenStack projects&#8230;</p>
<p>14:30 &#8211; 14:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/564323cb448c852eeeba7b9164e0ee94">Git/Gerrit Best Practices</a></p>
<p>Monty Taylor is leading this session on Gerrit/Git best practices. I<br />
recommend everyone go, if only to see the fireworks.</p>
<p>15:30 &#8211; 15:55 &#8211; <a href="http://essexdesignsummit.sched.org/event/127dd59068e1bab0da6805c3f012fc22">Quality Assurance in OpenStack</a></p>
<p>Uhm, duh, you should all be at this one. <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  We&#8217;ll discuss how to<br />
divide the voluminous amount of work among our members, talk about<br />
which projects (and components within certain projects) are<br />
high-priority items, the ways we should communicate and track<br />
progress, etc</p>
<p>17:00 &#8211; 17:25 &#8211; <a href="http://essexdesignsummit.sched.org/event/540ebb9f4e764c8cbfcfb1df49ccd4ad">Internal Service Communication</a></p>
<p>Brian Waldon is leading a session on internal service communication<br />
that should be quite interesting. The integration testing coverage of<br />
major internal service components of Nova is currently light, and is<br />
one of those areas I think should be carefully picked over by our QA<br />
team.</p>
<p>OK, that&#8217;s the recommendations from me, but of course, feel free to<br />
attend whatever sessions are of most interest to you. I&#8217;m very much<br />
looking forward to meeting all of you (we&#8217;re up to 28 members as of<br />
this writing).</p>
<p>Cheers, and see you tomorrow!<br />
<span style="color: #888888;">-jay</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2011/10/essex-design-summit-qa-sessions-to-note/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>O&#8217;Gara Cloud Computing Article Off Base</title>
		<link>http://www.joinfu.com/2010/03/cloud-computing-article-off-bas/</link>
		<comments>http://www.joinfu.com/2010/03/cloud-computing-article-off-bas/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 19:30:26 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[Drizzle]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.joinfu.com/?p=347</guid>
		<description><![CDATA[Maureen O&#8217;Gara, self-described as &#8220;the most read technology reporter for the past 20 years&#8221;, has written an article about Drizzle at Rackspace for one of Sys-con&#8217;s online zines called Cloud Computing Journal, of which she is an editor. I tried commenting on Maureen&#8217;s article on their website, but the login system is apparently borked, at [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://maureenogara.ulitzer.com/">Maureen O&#8217;Gara</a>, self-described as &#8220;the most read technology reporter for the past 20 years&#8221;, has written an <a href="http://cloudcomputing.sys-con.com/node/1318133">article about Drizzle at Rackspace</a> for one of Sys-con&#8217;s online zines called <a href="http://cloudcomputing.sys-con.com/">Cloud Computing Journal</a>, of which she is an editor.</p>
<p>I tried commenting on Maureen&#8217;s article on their website, but the login system is apparently borked, at least for registered users who use <a href="http://myopenid.com">OpenID</a>, which it wants to still have a separate user ID and login.  Note to sys-con.com: OpenID is designed so that users <em>don&#8217;t have to remember yet another login for your website</em>.</p>
<p>Besides having little patience for content-sparse websites that simply provide an online haven for dozens of Flash advertisements per web page, the article had some serious problems with it, not the least of which was using large chunks of my <a href="http://www.joinfu.com/2010/03/happiness-is-a-warm-cloud/">Happiness is a Warm Cloud</a> article without citation.  Very professional.</p>
<p>OK, to start with, let&#8217;s take this quote from the article:</p>
<blockquote><p>
Drizzle runs the risk of not being as stable as MySQL, because the Drizzle team is taking things out and putting other stuff in. Of course it may be successful in trying to create a product that&#8217;s more stable than MySQL. But creating a stable DBMS engine is something that has always taken years and years.
</p></blockquote>
<p>This is just about the most naïve explanation for whether a product will or will not be stable that I&#8217;ve ever read.  If Maureen had bothered to email or call any one of the core Drizzle developers, they&#8217;d have been happy to tell her what is and is not stable about Drizzle, and why.  Drizzle has not changed the underlying storage engines, so the InnoDB storage engine in Drizzle is the same plugin as available in MySQL (version 1.0.6).  </p>
<p>The pieces of MySQL which were removed from Drizzle happen to be the parts of MySQL which have had the most stability issues &mdash; namely the additional features added to MySQL 5.0: stored procedures, views, triggers, stored functions, the INFORMATION_SCHEMA implementation, and server-side cursors and prepared statements.  In addition to these removed features of MySQL, Drizzle also has no built-in Query Cache, does not support anything other than UTF-8 character sets, and has removed the MySQL replication system and binary logging &#8212; moving a rewrite of these pieces out into the plugin ecosystem. </p>
<p>The pieces that were added to Drizzle have mostly been done by adding plugins that provide functionality.  Maureen, the reason this was done was precisely to allow for greater stability of the kernel by segregating new features and functionality into the plugin ecosystem, where they can be properly versioned and quarantined, therefore increasing kernel stability.  It&#8217;s pretty much the biggest principle of Drizzle&#8217;s design&#8230;</p>
<p>The core developers of Drizzle (and much of the Drizzle community) would also have been happy to tell Maureen how the Drizzle team defines &#8220;stability&#8221;: when the community says Drizzle is stable &mdash; simple as that.</p>
<p>OK, so the next thing I took objection to is the following line:</p>
<blockquote><p>
Half of Rackspace&#8217;s customers are on MySQL so there&#8217;ll be some donkey-style nosing to get them to migrate.
</p></blockquote>
<p>I think my Rackspace colleagues might have quite a bit to say about the above.  I haven&#8217;t seen any Rackers talking about mass migration from MySQL to Drizzle.  As far as I have seen, the plan is to provide Drizzle as an additional service to Rackspace customers.</p>
<blockquote><p>
Rackspace evidently wants its new boys, who were not the core pillars of the MySQL engineering team, to hitch MySQL, er, Drizzle to Cassandra
</p></blockquote>
<p>MySQL != Drizzle.  Implying that the two are equal do a disservice to both, as they have very different target markets and developer audiences.</p>
<blockquote><p>
The smart money is betting that even if a good number of high-volume web sites go down this route, an even higher number such as Facebook and Google will continue with relational databases, primarily MySQL.
</p></blockquote>
<p>Again, probably best to do your homework on this one, too.  Facebook runs an amalgamation of a custom MySQL version and storage engines, distributed key-value stores, and Memcached servers.  I would think that Facebook moving to Drizzle would be one tough migration.  Thousands (tens of thousands?) of MySQL servers all running custom software and integrated into their caching layers is a huge barrier to entry, and not one I would expect a large site like Facebook to casually undertake.  But, the same could be said about a move to SQL Server or Oracle, for that matter, and has little to do with Drizzle.</p>
<p>Google is moving away from using MySQL entirely.  <a href="http://mysqlha.blogspot.com/">Mark Callaghan</a>, previously at Google, has moved over to Facebook (possibly because of this trend at Google to get rid of MySQL), and <a href="http://antbits.blogspot.com/">Anthony Curtis</a>, formerly of MySQL, then Google, <a href="https://www.blogger.com/comment.g?blogID=27751205&#038;postID=6473049572958956231&#038;pli=1">left Google partially because of this reason</a>.</p>
<p>OK, so the next quote got me really fired up because it demonstrates a complete lack of understanding (maybe not Maureen&#8217;s, but the unnamed source it&#8217;s from at least):</p>
<blockquote><p>
Somebody &#8211; sorry we forget who exactly &#8211; claimed that as GPL 2 code Drizzle &#8220;severely limits revenue opportunities. For Rackspace, the opportunity to have some key Drizzle developers on its payrolls basically comes down to a promotional benefit, trying to position Rackspace as particularly Drizzle-savvy in the eyes of the community and currying favor for its seemingly generous contributions. What&#8217;s unclear is whether they may develop some Drizzle-related functionality that they will then not release as open source and just rent out to Rackspace hosting customers&#8230;that would be a way for them to differentiate themselves from competitors and GPLv2 would in principle allow this.&#8221;
</p></blockquote>
<p>A few points to make about the above quote.</p>
<p>First, name your source.  I find it difficult to believe that the most-read technology writer would not write down a source.  Is it the same person you deliberately left out of a quote from my Happiness article? (why did you do that, btw?).</p>
<p>Second, the MySQL server source code is licensed under the GPL 2, and so is Drizzle&#8217;s <strong>kernel</strong>, because it is a derivative work of the MySQL server.  </p>
<p>Let me be clear: <strong>Developers who contribute code to Drizzle do so under the GPLv2 if that contribution is in the Drizzle kernel.  If the code contribution is a plugin, the contributor is free to pick whatever license they choose</strong>.  </p>
<p>Third, licensing has little if anything to do with revenue at all.  The license is besides the point.  There are two things which dictate the company&#8217;s revenue derivation from software:</p>
<ol>
<li>Copyright ownership</li>
<li>Principles of the Company</li>
</ol>
<p>Drizzle, Rackspace, or any company a Drizzle contributor works for, does not have the copyright ownership of the MySQL source code, from which Drizzle&#8217;s <em>kernel</em> is derived.  Oracle does.  Therefore, companies do not have any right to re-sell Drizzle (under <em>any</em> license) without explicit permission from Oracle.  Period.  Has nothing to do with the GPLv2.</p>
<p>That said, contributors <em>do</em> have the right to make money on plugins built for the Drizzle server, and Rackspace, while not having expressed any interest to yours truly in doing so, has the right like any other Drizzle contributor, to make money on plugins its contributors create for Drizzle.</p>
<p>It is my knowledge (after actually having talked to Rackspace managers and decision makers), that Rackspace is not interested in getting into the business of selling commercial Drizzle plugins.  Their core direction is to create value for their customers, and I fail to see how getting into the commercial software sales business meets that goal. </p>
<p>Next time, please feel free to contact myself or any other Drizzle contributor to get the low-down on Drizzle-related stuff.  We&#8217;ll be nice.  I promise.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2010/03/cloud-computing-article-off-bas/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Describing Drizzle&#8217;s Development Process</title>
		<link>http://www.joinfu.com/2010/01/describing-drizzles-development-process/</link>
		<comments>http://www.joinfu.com/2010/01/describing-drizzles-development-process/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 14:17:42 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[Drizzle]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://joinfu.com/2010/01/describing-drizzle&#039;s-development-process</guid>
		<description><![CDATA[Yesterday, I was working on a survey that Selena Deckelmann put together for open source databases. She will be presenting the results at Linux.conf.au this month. One of the questions on the survey was this: How would you describe your development process? followed by these answer choices: Individuals request features Large/small group empowered to make [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I was working on a survey that <a title="Selena Deckelmann" href="http://www.chesnok.com/daily/">Selena Deckelmann</a> put together for open source databases.  She will be <a title="Survey of Open Source Databases" href="http://www.lca2010.org.nz/programme/schedule/view_talk/50332?day=wednesday">presenting the results</a> at <a title="Linux.conf.au 2010" href="http://www.lca2010.org.nz/">Linux.conf.au</a> this month.</p>
<p>One of the questions on the survey was this:</p>
<blockquote><p>How would you describe your development process?</p></blockquote>
<p>followed by these answer choices:</p>
<ul>
<li>Individuals request features</li>
<li>Large/small group empowered to make decisions</li>
<li>Benevolent dictator</li>
<li>Other, please specify:____________</li>
</ul>
<p>I thought a bit about the question and then answered the following in the &#8220;Other, please specify:&#8221; area:</p>
<blockquote><p>Bit of a mix between all three above.</p></blockquote>
<p>The more I think about it, the more I really do feel that Drizzle&#8217;s development process is indeed a mixture of individuals, groups, and a <a href="http://en.wikipedia.org/wiki/Benevolent_dictatorship">Benevolent dictator</a>.  And I think it works pretty well. <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Here&#8217;s some of the reasons why I believe our development process is effective in enabling contributions by being a mix of the above three styles.</p>
<h2>Who&#8217;s the Benevolent Dictator of Drizzle?</h2>
<p>First, let me get the <a title="Benevolent Dictator for Life (BDFL)" href="http://en.wikipedia.org/wiki/Benevolent_Dictator_For_Life">BDFL</a> question out of the way.  We&#8217;ve made a big deal in the Drizzle community and mailing lists that anyone and everyone is encouraged to participate in the development process — so why would I say that Drizzle has a benevolent dictator?</p>
<p>Well, although he would probably disagree with the tile of BDFL, <a title="Brian " href="http://krow.livejournal.com/">Brian Aker</a> does have some dictator-like abilities with regards to the development process, and rightfully so.  Brian came up with many of the concepts that Drizzle aspires to be, and Brian has more experience working on the code base than any other contributor.</p>
<p>After having worked closely with Brian now for 18 months or so, I can definitively say that Brian&#8217;s brain works in a very, well, interesting way.  Those of us who work with him understand that sometimes his brain works so fast, his typing fingers struggle to keep up, resulting in something I call &#8220;Krowspeak&#8221;.  It&#8217;s kinda funny sometimes trying to translate <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>With this wonderfully unique noodle, Brian tends to knock out large chunks of code at a time, and often he wants to push these chunks of code into our <a title="Drizzle Build and Regression System - Hudson" href="http://hudson.drizzle.org">build and regression system</a> and into trunk to see the results of his work quickly.  Sometimes, this can cause other branches to get out of sync and get merge conflicts, and Brian will inform branch owners of the conflicts and work with them to resolve them.</p>
<p>So, regarding dictator-like development processes, I suppose we have Brian acting as the merge dictator because he&#8217;s got a lot of experience and understands best how both his code and other&#8217;s code integrates.  We tried a little while back having myself and Monty Taylor be merge captains, but that distribution of merge work actually created a number of other problems and we&#8217;ve since gone back to Brian being the merge captain by himself, with Lee, <a title="Monty Taylor" href="http://inaugust.com">Monty</a>, and myself improving our <a title="Drizzle Automation project" href="http://launchpad.net/drizzle-automation">automated</a> build and regression system to help Brian with the repetitive work.</p>
<p>That said, what Brian does <em>not</em> do is make decisions in a dictator-like way.  Decisions about the code style, reviews, features, syntax changes, etc are made on the <a title="Drizzle Discuss mailing list" href="https://launchpad.net/~drizzle-discuss">mailing list</a> by consensus vote.  If a consensus is not reached, generally, no change is made which would depend on the decision.  Brian does not influence the direction of the software or the source code style any more than anyone else on the mailing list which expresses an opinion about an issue; and for this, I greatly respect his wisdom to seek consensus in an open and community-oriented way.</p>
<h2>Groups Empowered to Make Decisions</h2>
<p>I&#8217;m assuming that what Selena&#8217;s &#8220;large/small group empowered to make decisions&#8221; answer meant was what is sometimes called &#8220;Cabal Leadership&#8221; of a project.  In other words, there is some group which steers the project and makes decisions about the project which affect the rest of the project&#8217;s contributors.</p>
<p>Drizzle has at least one such group, the Sun Microsystems Drizzle Team, which is composed of Brian, Monty Taylor, Lee Bieber, Eric Day, Stewart Smith, and myself.  One might call us the core committers for Drizzle.</p>
<p>However, while the Sun Drizzle team certainly is <em>empowered</em> to guide development, it is no different than any other group of developers that choose to contribute to Drizzle.  There isn&#8217;t a &#8220;what the Sun Drizzle team decides&#8221; rule in effect.  Our &#8220;power&#8221; in the development process is no greater or less than any other group of contributors.  We act merely as a team of individuals who work on the Drizzle code and advocate for the project&#8217;s goals.</p>
<h2>Individuals Empowered to Make Decisions</h2>
<p>One thing I&#8217;ve been impressed with in the past 18 months is how the Drizzle community has embraced the opinions and work of individual contributors.  I believe <a title="Toru Maesaka" href="http://torum.net">Toru Maesaka</a>, Andrew Hutchings, Diego Medina and <a title="Padraig O'Sullivan" href="http://posulliv.com/">Padraig O&#8217;Sullivan</a> were among the first individuals to begin actively contributing to Drizzle.  Since then, dozens of others have joined the developer and advocate community, with each individual carving out a piece of the source code or community activities that they want to work on.</p>
<p>I have learned much from all these individuals over the last year or so, and I&#8217;ve tried my best to share knowledge and encourage others to do the same.  Our IRC channel and mailing list are active places of discussion.  Our code reviews are always completely open to the public for comments and discussed transparently on Launchpad, and this code review process has been a great mixing bowl of opinion, discussion, learning and debate.  I love it.</p>
<p>More and more we have developers showing up and taking ownership of a bug, a blueprint, or just a part of the code that interests them.  And nobody stands in their way and says &#8220;Oh, no, you shouldn&#8217;t work on that because <em>&lt;insert another contributor&#8217;s name&gt;</em> owns that code.&#8221;  Instead, what you will more likely see on the lists or on IRC is a response like &#8220;hey, that&#8217;s awesome!  be sure to chat with <em>&lt;insert another contributor&#8217;s name&gt;</em>.  They are interested in that code, too, and you should share ideas!&#8221;  This is incredibly refreshing to see.</p>
<p>In short, the Drizzle developer process is a nice mix of empowered individuals and groups, and a dash of dictatorship just to keep things moving efficiently.  It&#8217;s open, transparent, and fun to work on Drizzle.  Come join us <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2010/01/describing-drizzles-development-process/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>A Laptop for Developers without paying The Windows Tax</title>
		<link>http://www.joinfu.com/2009/11/a-laptop-for-developers-without-paying-the-windows-tax/</link>
		<comments>http://www.joinfu.com/2009/11/a-laptop-for-developers-without-paying-the-windows-tax/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 16:39:56 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://joinfu.com/2009/11/a-laptop-for-developers-without-paying-the-windows-tax</guid>
		<description><![CDATA[I find it amazing that the U.S. Department of Justice can continue to cover its eyes and ears while Microsoft is allowed to exert its monopolistic power over all hardware manufacturers. About 20 months ago, I was able to purchase a Lenovo Thinkpad T61 from the lenovo.com website without an operating system installed. Today, I [...]]]></description>
			<content:encoded><![CDATA[<p>
I find it amazing that the U.S. Department of Justice can continue to cover its eyes and ears while Microsoft is allowed to exert its monopolistic power over all hardware manufacturers.
</p>
<p>
About 20 months ago, I was able to purchase a Lenovo Thinkpad T61 from the lenovo.com website without an operating system installed.  Today, I went to purchase a new Lenovo Thinkpad laptop, again without having to pay the Windows Tax.  Turns out <a href="http://lwn.net/Articles/298101/"  title="Lenovo no longer offering Linux laptops">Lenovo has stopped offering this option</a>.  What a complete PILE OF SHIT.  Somebody in Microsoft&#8217;s &#8220;Business Development&#8221; or &#8220;Partners&#8221; team must have told Lenovo to stop offering its customers a simple choice of not having to pay the OEM license fees for Windows.  And there&#8217;s nothing anyone can do about it.  Microsoft is just too big and too pervasive for anybody to have a damn effect on them.
</p>
<p>
Frankly, it&#8217;s anti-choice, anti-competition, anti-innovation behaviour from Microsoft.
</p>
<p>
And its ridiculous.
</p>
<p>
Does anyone out there know how to get a decent laptop any more without having to fork over my money to a software giant that continues to bully all competition out of the market?  Your suggestions are most welcome.
</p>
<p>
P.S. Mac is not an option for me.  Sorry.
</p>
<p>
P.P.S The only thing this post has to do with MySQL is the general discussion on the acquisition of Sun by Oracle, and the pending investigation into possibly monopoly concerns by the EC&#8230;but of course I can&#8217;t comment on that directly&#8230;grr.
</p>
<p>
<strong>UPDATE</strong>:<br />
<br />
Seems DELL offers laptops with Ubuntu installed instead of Windows, at least according to search results from their website.  Yeah! \o/ Of course, now I have to just figure out how to get to that customization option.  When I&#8217;ve gone through the customization screens, no option other than Windows is available. <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />
</p>
<p>
<strong>UPDATE 2</strong>:<br />
<br />
The DELL representative on their online chat program was quite helpful and offered this link to <a href="http://www.dell.com/business/laptops#subcats=&#038;navla=80770~0~1791343&#038;navidc=LT:%20Operating%20System&#038;navValc=FreeDOS%20and%20Linux&#038;a=80770~0~1791343&#038;page=1" >laptops they offer with no Windows Tax</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2009/11/a-laptop-for-developers-without-paying-the-windows-tax/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>If Ever There Was a Sure-fire Tenant&#8230;</title>
		<link>http://www.joinfu.com/2009/10/if-ever-there-was-a-surefire-tenant/</link>
		<comments>http://www.joinfu.com/2009/10/if-ever-there-was-a-surefire-tenant/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 00:32:59 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://joinfu.com/2009/10/if-ever-there-was-a-surefire-tenant</guid>
		<description><![CDATA[My wife and I have a double that we rent out to two couples. Luckily, one of these couples has been in one side of the double for a couple years now. They are quite stable, and are excellent renters, at least as much as a landlord likes. Stability == good for landlords. I was [...]]]></description>
			<content:encoded><![CDATA[<p>
My wife and I have a double that we rent out to two couples.  Luckily, one of these couples has been in one side of the double for a couple years now.  They are quite stable, and are excellent renters, at least as much as a landlord likes. Stability == good for landlords.
</p>
<p>
I was reviewing some code today, and a thought crossed my mind that sparked my landlord brain.  I was staring at the copyright and license header in a Drizzle plugin and it struck me&#8230;
</p>
<p>
If ever there was a steady, rock-solid tenant, I would guess that it would be the occupant of this address:
</p>
<blockquote><p>
51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
</p></blockquote>
<p>
Now, I don&#8217;t know if the <a href="http://www.fsf.org/"  title="Free Software Foundation">Free Software Foundation</a> owns the address above, or if they rent.  But, it occurred to me that if they <em>do</em> rent the fifth floor of that building, that the owner of that building must have one of the most trustworthy and reliable tenants ever.
</p>
<p>
I mean, we all know how much of a pain in the ass it is to move households.  You&#8217;ve got to notify everyone about the new address, find friends who will help move furniture for the price of a six-pack, etc.  But think of the giant problem the FSF would have if it ever decided to move. Think of the tens (hundreds?) of thousands of source code files which would suddenly have an erroneous address. I wonder if the owner of that Franklin Street building has thought of this, and has smiled, knowing just how much of a pain changing addresses would be for the FSF. Hmmm, food for thought. <img src='http://www.joinfu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2009/10/if-ever-there-was-a-surefire-tenant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Removing Barriers to the Community &#8211; MySQL Moves to Bazaar</title>
		<link>http://www.joinfu.com/2008/06/removing-barriers-to-the-community--mysql-moves-to-bazaar/</link>
		<comments>http://www.joinfu.com/2008/06/removing-barriers-to-the-community--mysql-moves-to-bazaar/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 14:07:10 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://joinfu.com/2008/06/removing-barriers-to-the-community--mysql-moves-to-bazaar</guid>
		<description><![CDATA[I&#8217;ve been at MySQL for two and a half years now as a community manager. Through this time, I&#8217;ve learned a number of valuable lessons about what it means to be a community manager, what it means to belong to a community of technologists, and what it means to be an open source advocate. I [...]]]></description>
			<content:encoded><![CDATA[<p>
I&#8217;ve been at MySQL for two and a half years now as a community manager. Through this time, I&#8217;ve learned a number of valuable lessons about what it means to be a community manager, what it means to belong to a community of technologists, and what it means to be an open source advocate.  I think back now on the attitude and preconceptions I brought with me when I joined MySQL, and reflect about the changes in my own attitude that have happened.
</p>
<p>
One of the biggest &#8220;aha&#8221; moments I have had in the past three years is the following:
</p>
<p>
<strong>It is the role of a community manager to <em>remove the barriers</em> &mdash; both technical and ideological &mdash; between the user/developer community and the company or group of individuals which produces the open source software</strong>
</p>
<p>
Some barriers are small.  Sometimes these barriers can be overcome by a simple email to an annoyed community member who has misunderstood a poorly communicated company objective.
</p>
<p>
And, sometimes barriers are large, and require a concerted effort of many people to overcome.  One of these large barriers &mdash; the usage of the closed-source BitKeeper source control system &mdash; was recently removed and is a shining example of what can happen when many advocates within a company come together for the benefit of the community as a whole.
</p>
<p>
<img src="http://joinfu.com/img/bazaar-vcs.png" style="float: left; margin: 0px 20px 20px 0px;"/><br />
Yesterday, Kaj Arnö announced that MySQL has officially moved away from BitKeeper and has shifted development to use the free and open source <a href="http://bazaar-vcs.org"  title="Bazaar NG">Bazaar revision control system</a>.  This is an immensely important move for the MySQL community and the MySQL engineering team and its importance cannot be understated.  While BitKeeper is technically a fast and feature-full revision control system, there was a significant barrier to the community that it enforced: the free BK client was essentially a read-only client, without even basic abilities to do diffs on a source code branch.  This inhibited contributions from the external community by pipelining contributions into closed BK branches with no commit access for external contributors.
</p>
<p>
With the move to MySQL hosting its source code on the <a href="http://launchpad.net/"  title="Launchpad.net">Launchpad.net</a> service in Bazaar trees, we have removed this barrier to open source development.  On Launchpad, there is now an overarching <a href="http://launchpad.net/mysql"  title="MySQL on Launchpad.net">mysql super-project</a> which contains all MySQL-related projects.  Under this super-project, there are two projects which contain branches of the MySQL Server.  One project, &#8220;<strong>mysql-server</strong>&#8221; contains the official MySQL server code branches.  The other, &#8220;<strong>sakila-server</strong>&#8220;, contains branches of the server codebase that are being worked on by external community members.
</p>
<p>
Why did we set up two separate projects, one called &#8220;<strong><a href="http://launchpad.net/mysql-server" >mysql-server</a></strong>&#8221; and one called &#8220;<strong><a href="http://launchpad.net/sakila-server" >sakila-server</a></strong>&#8220;?  There are a number of reasons.
</p>
<h3>Showcase Community Work</h3>
<p>
First, and perhaps most importantly, the &#8220;<a href="https://code.launchpad.net/mysql-server" >mysql-server</a>&#8221; project contains <em>all official branches and MySQL engineering team trees</em>.  Consequently, the code area of Launchpad for this project, is beginning to fill up with lots of different branches, and it is a little difficult to differentiate which branches are written by community members.  We wanted a separate area that community members could showcase their work, and not have their work &#8220;swamped&#8221; by all the different team trees.</p>
<h3>Use of Launchpad&#8217;s Bugs and Blueprints Services</h3>
<p>
Secondly, one of the issues we ran into was how do community-written projects track roadmap tasks or bugs in their distribution?  MySQL has its own Bug Tracking system and its own Worklog system which it uses to track &#8220;roadmap&#8221; type tasks.  Unfortunately, there is no way for community-developed projects to use these systems, as they are heavily customized for MySQL&#8217;s internal procedures.  Furthermore, Launchpad.net already offers services for tracking bugs and assigning roadmap tasks to projects.  So, with a separate sub-project (sakila-server), community developers now have a built-in bug and blueprint (roadmap) services ready to use for their code branches.
</p>
<h3>Full Community Control of the Project</h3>
<p>
Finally, within the &#8220;mysql-server&#8221; sub-project, community members wouldn&#8217;t have the rights to &#8220;brand&#8221; their projects the way they wanted to.  As MySQL is a trademarked and copyrighted product, community members would be restricted to how they could administer and brand their own branches.  Having their branches under a separate sakila-server sub-project, those restrictions go away and they have full administrator rights over everything, including branding&#8230;
</p>
<p>
I think this move is fantastic, and we welcome your input and feedback about ways we can continue to open up, be transparent, and work better with our community.  We&#8217;re all ears.  <a href="http://en.wikipedia.org/wiki/Hundred_Flowers_Campaign" >Let a hundred dolphins swim</a>.
</p>
<p>
Please be sure to check out both server code project areas and investigate the various branches that community members are working on!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2008/06/removing-barriers-to-the-community--mysql-moves-to-bazaar/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>It&#8217;s About the Product, Silly</title>
		<link>http://www.joinfu.com/2008/02/it&#039;s-about-the-product,-silly/</link>
		<comments>http://www.joinfu.com/2008/02/it&#039;s-about-the-product,-silly/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 18:58:00 +0000</pubDate>
		<dc:creator>jaypipes</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://joinfu.com/2008/02/it&#039;s-about-the-product,-silly</guid>
		<description><![CDATA[Today there was a recent flurry of blog posts, starting with Charles Babcock&#8217;s interview of Jonathan Schwartz about Sun&#8217;s strategy of targeting Web 2.0 developers. This brought to light an interesting topic about open source development communities, the perceived insularity of Sun towards the external OpenSolaris developer community, and why Linux will apparently always be [...]]]></description>
			<content:encoded><![CDATA[<p>
Today there was a recent flurry of blog posts, starting with <a href="http://news.yahoo.com/s/cmp/20080217/tc_cmp/206504258" >Charles Babcock&#8217;s interview of Jonathan Schwartz about Sun&#8217;s strategy of targeting Web 2.0 developers</a>.  This brought to light an interesting topic about open source development communities, the <a href="http://www.michaeldolan.com/1102" >perceived insularity of Sun towards the external OpenSolaris developer community</a>, and <a href="http://www.linux-foundation.org/weblogs/amanda/2008/02/17/hey-jonathan-the-l-in-lamp-is-literal/" >why Linux will apparently always be more popular</a> and technically stronger than <a href="http://opensolaris.org"  title="OpenSolaris">OpenSolaris</a>.
</p>
<p>
The initial interview led Amanda McPherson of the Linux Foundation to take issue, and long comments on those posts from <a href="http://www.linux-foundation.org/weblogs/amanda/2008/02/17/hey-jonathan-the-l-in-lamp-is-literal/#comment-278" >supporters</a> and <a href="http://www.linux-foundation.org/weblogs/amanda/2008/02/17/hey-jonathan-the-l-in-lamp-is-literal/#comment-271" >objectors</a>, shed light on a rift between OpenSolaris insiders, Linux community developers, and Sun&#8217;s overall marketing approach around open source.
</p>
<p>
Amid various snits about Sun&#8217;s &#8220;fluffy marketing&#8221; practices[1] towards OpenSolaris, there was a <a href="http://mail.opensolaris.org/pipermail/ogb-discuss/2008-February/004488.html"  title="Roy Fielding resigns from OpenSolaris">defection of a high-level OpenSolaris developer, Roy Fielding</a>.  The defection ostensibly was due to Roy&#8217;s frustration that Sun was not living up to its promises of a truly open development model and community, a frustration that <a href="http://redmonk.com/sogrady/2008/02/20/linux-vs-opensolarisagain-the-qa/" >Steven O&#8217;Grady finds uninspiring</a>.
</p>
<p>
Unfortunately, these conversations are really just a sideshow of personal and anti-corporate rhetoric that miss the underlying truth about open source (and indeed closed source) products/projects: <strong>it&#8217;s not about the marketing, it&#8217;s about the product, silly</strong>.
</p>
<p>
I&#8217;m sure my colleagues of the marketing persuasion may take issue with that statement, so let me elaborate why I believe this to be true, and why I think that OpenSolaris has a chance of becoming a true competitor to Linux in the future &mdash; and that chance has absolutely nothing to do with Sun&#8217;s OpenSolaris marketing team (sorry, folks.).
</p>
<h2>It&#8217;s All About the Product (Quality)</h2>
<p>
As much as developer communities[2] like to think of themselves as the purveyors of a grand vision of truth towards the user community, all developer communities are dwarfed by their corresponding user communities.  Members of a user community are unlikely to be aware of discussions within the developer community nor care about the debates within that community.
</p>
<p>
User communities <strong>use</strong> the product.  It is the product which counts, and nothing more.  And the user community will continue to use a product as long as other competing products are inferior in three basic ways:
</p>
<ul>
<li>Ease of use</li>
<li>Performance</li>
<li>Stability/reliability</li>
</ul>
<p>
Before you say &#8220;whoah, doesn&#8217;t licensing count, too?!&#8221;.  Sure, it does, but I group licensing in with &#8220;Ease of Use&#8221;.  For some groups, a BSD-style license is &#8220;easier to use&#8221; because of a perceived viral effect of the GPL on their own code (especially for embedded products).  For other groups, the GPL-style licenses are easier to use because they provide certain safeguards and benefits for their own products or environments.
</p>
<p>
So, my point is that it is not the marketing of a product that counts &mdash; indeed, false marketing statements or <a href="http://www.sco.com"  title="SCO">tactics</a> can backfire quickly.  What counts is the product itself.  <strong>Marketing should be the function of promoting the innovative advantages of a product in the above three categories</strong>.
</p>
<p>
Likewise, <strong>developer communities should be about improving a product in these three ways</strong>.  And, NO, &#8220;features&#8221; is not a differentiation that the user community (or customers) use in picking one competing product over another.  Features that deliver better ease of use, faster performance, or more stability are what can drive differentiation.  Features that do none of the above are a waste of space.
</p>
<h2>Why Open Development Models Improve Product Quality</h2>
<p>
An open development model and community is simply a <em>method</em> of attaining better product quality.  Sure, happy developer communities translate to happy user communities &mdash; happy developers make better code and better code is enjoyed by users.  But simply having a &#8220;community&#8221;, as the OpenSolaris marketing team would have you believe, does not magically make a good product.  A community can take many shapes.  It is my belief that a more open development community <em>does make a better product.</em>  Why?
</p>
<h3>Increased Modularization of the Core Product</h3>
<p>
In my estimation, there are many reasons for open communities producing better products than closed communities.  First and foremost amongst these reasons is the first evolutionary process which occurs when development of a product is opened up in any way: <strong>increased modularization and pluggability of the core product.</strong>
</p>
<p>
The vast majority of open source projects which have a truly open development community exhibit much higher architectural modularization than projects with closed development communities.  <a href="http://apache.org"  title="Apache">Apache</a>, <a href="http://eclipse.org"  title="Eclipse Project">Eclipse</a>, <a href="http://www.linux.org/"  title="Linux Org">Linux</a>, <a href="http://php.net"  title="PHP">PHP</a> &mdash; these are all projects with open development communities and they each exhibit extremely high levels of modularity.  Why?  Because modularization enables development to continue/begin on a specific feature or part of the codebase without affecting or hindering the development of the core of the product.  This enables all sorts of things from easier versioning and release practices to an increase in external development of needed features.
</p>
<p>
Contrast the architecture of these projects with the architecture of a closed development project such as MySQL.  The architectural differences are sometimes stunning, especially in early versions of MySQL.  When I wrote the <a href="http://www.apress.com/book/downloadfile/2262"  title="Pro MySQL System Internals chapter">System Internals chapter</a> in <a href="http://www.amazon.com/MySQL-Experts-Voice-Open-Source/dp/159059505X" >Pro MySQL</a> in 2005, I wrote:
</p>
<blockquote><p>
MySQL’s architecture consists of a web of interrelated function sets, which work together to<br />
fulfill the various needs of the database server. A number of authors have implied that these<br />
function sets are indeed components, or entirely encapsulated packages; however, there is<br />
little evidence in the source code that this is the case.
</p></blockquote>
<p>
I wrote that chapter against the MySQL 5.0.2 code base.  Admittedly, lots of improvements have made it into MySQL since those days, but much of the same interweaving of subsystems still exists, and complicates the code base substantially.  I believe that if an open development model had been instituted at MySQL years ago, we would have a very different and much more modular core database kernel than we have today.  Heck, the embedded library might even work correctly&#8230;
</p>
<h3>Modularization Leads Directly To Innovation</h3>
<p>
So, besides enabling cleaner release management and increased development of external features, why is a modular product better than one that isn&#8217;t?  This all goes back to the &#8220;Big Three Basics&#8221;: Ease of use, performance, and stability.  Let&#8217;s tackle the last one first.
</p>
<h4>Increased Stability</h4>
<p>
Why would modularity lead to an increase in stability?  This can be answered quite easily.  When a product&#8217;s architecture undergoes the refactoring needed to modularize, two things happen.  First, a &#8220;core kernel&#8221; or runtime begins to take shape.  This kernel takes shape because developers in an open development community want to be able to develop against a firm set of <a href="http://en.wikipedia.org/wiki/API" >application programming interfaces</a> (APIs).  Programming against an API enables a developer of an extending feature to <strong>form a contract with other developers</strong> in the community: &#8220;I will write my feature to connect to other stuff in a predefined and contractual way&#8221;.
</p>
<p>
Secondly, this method &#038;mdash programming against an API &mdash; allows the developer to develop her feature in isolation from ongoing development in other areas.  Development in other areas can count on other developers&#8217; code not interfering with their own code.  In addition, work done on one feature or module can be released irrespective of the hangups or problems occurring in other parts of the code.
</p>
<p>
So why does this lead to greater product stability and reliability?   Because of the need for APIs (so that other developers can code modules outside of the interference of other modules) a set of APIs begins to emerge that outline the &#8220;black box&#8221; of the core product.  This standardization process of creating APIs for connecting to the core kernel acts as a stabilizing force for the product in general.  The stability of the APIs, and their consistency in implementation, can be directly correlated to the stability of the underlying product as a whole.  The reason for the correlation is that when changes to an API are more difficult to effect &#038;mdash because of their corresponding effects on other code &mdash; stability increases due to fewer changes in the way that components interact with each other.
</p>
<p>
Case in point: the <a href="http://dev.mysql.com/doc/refman/5.1/en/pluggable-storage-overview.html"  title="MySQL Pluggable Storage Engine API">&#8220;pluggable&#8221; storage engine API</a> in MySQL was introduced in early MySQL 5.0 versions.  This API has changed <em>numerous</em> times over the past two years as different vendors (internal and external to MySQL) needed or wanted additional functionality.  The API has started to stabilize now, but I see additional changes in the future.  What has happened to the stability of the underlying code base of MySQL?  I will leave that answer to the reader&#8217;s intuition.
</p>
<h4>Increased Performance</h4>
<p>
The reason I believe modularization leads to better performing software is because the act of modularizing identifies pieces of the software which can and should be &#8220;pulled from the core&#8221;.  Pieces not central to the functioning of the core kernel are pulled out of the core product and placed, rightfully, into modules which provide additional, value-added-for-a-certain-group-which-needs-it features.  By placing extra features outside of the realm of the &#8220;necessary&#8221;, the core kernel begins to take the shape of a lithe marathon runner and not the bloated monolith it once was.
</p>
<p>
You may wonder why this removal of extra features can lead to better performance of the product as a whole.  By removing non-essential parts of the software into modules, the code for the core part of the software is simplified and shortened.  Now, simple, shorter code isn&#8217;t <em>necessarily</em> faster just for being shorter (though often it can be).  However, the ease of maintenance on a simplified core software kernel allows developers to focus on performance-related tasks involving that simplified kernel.  Improving performance of essential runtime functionality is much easier and faster when the code isn&#8217;t littered with calls and code paths that correspond to the functionality that belongs in an external module.  If performance issues in the core kernel are easier and faster to fix, then the product as a whole becomes better performing.
</p>
<p>
Secondly, the modularization of a code base means that users who do not need an array of features can use a smaller, streamlined product that only fits their needs.  Often, when users can make use of a streamlined project that doesn&#8217;t contain code they don&#8217;t need or want, the resulting binary is smaller and faster.
</p>
<h4>Increased Ease of Use</h4>
<p>
How modularization increases ease of use is related to how it increases performance: by enabling developers to only focus on the module at hand, or the core itself, instead of a mix of both, the developer is freed to focus on fixing ease of use bugs and addressing usability issues.  The more time a developer can spend actually doing the things that comprise her outstanding bug and feature list, and not on &#8220;how will my code affect ten other developer&#8217;s code&#8221;, the better the chances of a product&#8217;s usability becoming better.
</p>
<h4>Finally, Increased Competition Fosters Innovation</h4>
<p>
I think it&#8217;s fairly obvious that increases in stability, performance and ease of use translate into increases in innovation for the product as a whole.
</p>
<p>
My final thought on why modularization leads to increased innovation is that modularizing a product leads to competition in the developer marketplace for a specific feature.  This competition spurs the developers of a competing module to do it better and faster.  Case in point: the pluggable storage engine API &#8220;modularization&#8221; effort at MySQL spurred the creation of numerous competitive engines &mdash; from Paul McCullagh&#8217;s <a href="http://www.primebase.org/"  title="PBXT storage engine">PBXT engine</a> to <a href="http://www.solidtech.com/en/developers/CarrierGrade/solidDBMySQL_registration.asp" >SolidDB&#8217;s transactional engine</a> to the new <a href="http://dev.mysql.com/doc/refman/6.0/en/se-falcon-features.html" >Falcon</a> and <a href="http://datacharmer.blogspot.com/2008/01/introducing-maria-new-tough-storage.html" >Maria</a> engines.  Each engine demonstrates different characteristics, benefits and disadvantages.  Without each other, the wellspring of innovation would be much drier.
</p>
<h3>Innovation Leads to Market Share</h3>
<p>
So, assuming you&#8217;ve come with me in my theory that open development communities foster modularization of a product, and that this modularization leads to more innovation for the product as a whole, then I think you will be able to make this final step easily: innovation in a product leads to greater market share.
</p>
<p>
It doesn&#8217;t matter whether the product is the result of a group of loosely-affiliated individuals or a company like Sun or MySQL, each producer of a product wants their product to have the most market share compared to competing products.  It&#8217;s human nature; we just want to be popular!
</p>
<h2>Jonathan Schwartz is Right About Community, But Wrong About Why He&#8217;s Right</h2>
<p>
So, in Babcock&#8217;s interview, Jonathan Schwartz says,
</p>
<blockquote><p>
Everything begins with the development of a community
</p></blockquote>
<p>
Jonathan is right about everything beginning with the development of a community.  However, I believe Jonathan, and a number of folks I&#8217;ve met personally at Sun, feel that simply having a community automatically makes a good and popular product.  This simply isn&#8217;t true.  It&#8217;s about the product, first.  Then the community.  A vibrant community (both developer and user) springs from the fountain of enthusiasm about a product.  If that enthusiasm wanes, because of anything from the closing of the development model to the inability to get their voices heard regarding a product roadmap or architecture, then the community begins to die along with the product.  It is a delicate thing, this product and community balance sheet.
</p>
<blockquote><p>
This well is poisoned; the company has consumed its own future<br />
and any pretense that the projects will ever govern themselves<br />
(as opposed to being governed by whatever pointy-haired boss<br />
is hiding behind the scenes) is now a joke.  Sun should move on,<br />
dissolve the charter that it currently ignores, and adopt the<br />
governing style of MySQL.  That company doesn&#8217;t pretend to let<br />
their community participate in decisions, and yet they still<br />
manage to satisfy most of their users.  Let everyone else go<br />
back to writing code/documentation for hire.<br />
<br/><br/><br />
There&#8217;s nothing particularly wrong with that choice &#8212; it is<br />
a perfectly valid open source model for corporations that<br />
don&#8217;t need active community participation.  IMO, the resulting<br />
code tends to suck a lot more than community-driven projects,<br />
but it is still open source.
</p></blockquote>
<p>
The above is a quote from Roy Fielding&#8217;s email to the OpenSolaris developer&#8217;s mailing list in which, at the end, he resigns from the OpenSolaris community.  I think it is telling about how delicate the balance between product and community really is.  He points out that it was <strong>the broken promises about a truly open development model</strong> that was the deciding factor in his resignation.  I suspect that frustration at not having a voice in the architectural decisions surrounding OpenSolaris were also a big factor, too.  Pointedly, he states that MySQL has never pretended to let our community participate in decisions, but MySQL still enjoys a large and vibrant user community.
</p>
<p>
I theorize that the MySQL user community is in danger of becoming fragmented and is increasingly fragile because of the &#8220;we decide&#8221; nature of MySQL&#8217;s closed development model.  I believe that MySQL achieved ubiquity and a huge user community because of this:
</p>
<ol>
<li>In the beginning, it &#8220;just worked&#8221;, was fast, reliable, and easy to use.</li>
<li>It became ubiquitous in both language packaging and Linux distributions very early on and only because of #1 above
</ol>
<p>
In other words, it was about the product itself.
</p>
<p>
If the product loses touch with its roots and because of a closed development model moves further away from easy to use, fast, and stable, the user community and MySQL&#8217;s ubiquitous nature, will move away to competitors.
</p>
<p>
<strong>Again, an open development community is a method to achieve greater innovation in a product</strong>.  I believe it is silly for either MySQL or Sun to make <em>any</em> steps that do not open up its development activity to the wider community.  If openness spurs innovation of the product, closing off of development only means that the company is stifling innovation and decreasing its own market share.  If a method is there to increase innovation, why disregard it?
</p>
<h3>Why OpenSolaris Could Be a Real Competitor to Linux</h3>
<p>
It&#8217;s about Innovation in the Performance, Stability and Ease of Use of a product.  As Ian Murdock wrote on the OpenSolaris blog:
</p>
<blockquote><p>
My basic observation, as someone<br />
who came into the OpenSolaris community from the outside &#8211; even perhaps<br />
from the competition &#8211; and who represents the target market this<br />
community needs to reach was this: That the packaging and presentation<br />
of OpenSolaris as it stands today represents a barrier to adoption and,<br />
thus, an obstacle to growing the OpenSolaris community and bringing in<br />
new users. To lower these barriers, OpenSolaris needs to be more than<br />
just the code base. It needs to be a binary that users can easily<br />
download and install to get easy access to OpenSolaris technology. Put<br />
another way, as I said in a blog post in June, we need to have a<br />
better answer to the question, “Where do I download OpenSolaris?”
</p></blockquote>
<p>
Ian understands that a product gets adoption when innovations in ease of use, performance, and stability are demonstrated.  In the above quote, he talks about the problems in ease of use that are barriers to adoption of OpenSolaris.
</p>
<p>
Similarly, there are a number of performance-related and stability-related innovations that are contained within OpenSolaris.  But the product will not achieve true competitive status with Linux until the development community is opened up and innovation from the external community &mdash; in the form of a voice and control over architectural issues and design &mdash; is truly embraced at Sun.
</p>
<p>
If Sun embraces an open development model and embraces its developer community in discussions on roadmap and architectural decisions, I think OpenSolaris has an excellent chance of competing head-to-head with Linux <strong>on the innovation front</strong>.  If the product is more innovative on a variety of levels, it will gain market share.
</p>
<h2>What This Means for MySQL</h2>
<p>
As <a href="http://www.michaeldolan.com/1102#comment-13638" >Brian Aker rightly points out</a>, MySQL has never been an open development model.  But steps have been taken to open it up.  The resignation of Fielding suggests that it&#8217;s not the lack of openness which frustrated him, but the promises of Sun to do so.  This means that MySQL must be very careful not to over-promise on something it cannot or will not deliver regarding openness.
</p>
<p>
In addition, if we are to reverse the current course of a community-in-flux, we must embrace the fear we have of opening up our development process.  We must get out of the cathedral and put up shop in the bazaar.  We won&#8217;t be jumping out of the cathedral&#8217;s top window; more likely we&#8217;ll rappel down Rapunzel&#8217;s hair slowly and carefully.  I see very good prospects about opening up in the future and I am excited.  It will be happening in the nick of time.
</p>
<hr/>
<p>
Take everything I write with a grain of salt.  After all, I&#8217;m just a lowly community relations manager.
</p>
<h3>Footnotes</h3>
<p>[1] Amanda McPherson writes:
</p>
<blockquote><p>
We may not have fancy Linux analyst days and mountains of spin, but it is all about the development community. Literally.
</p></blockquote>
<p>
to which Mike Dolan responded in comments:
</p>
<blockquote><p>
Yes, yes, and yes. This Sun nonsense needs to be called out; it’s great to see someone else actually looking into the critical details behind Sun’s fluffy marketing.
</p></blockquote>
<p>
[2] I differentiate &#8220;developer community&#8221; as the developers which develop the product, as different from the &#8220;user community&#8221; which a) develops products <em>on top of</em> or <em>for</em> the product or b) simply use the product.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joinfu.com/2008/02/it&#039;s-about-the-product,-silly/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

