<html>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>The SDForum Conference Re-Cap</title>

<body>
<div class="spaced13">

<h2>The SDForum Open Source Summit</h2>
<p>2003-12--12</p>
<p><a href="../lspintro.html">-Louis Suarez-Potts</a></p>




<p>
The Software Development Forum's <a href="http://www.sdforum.org/SDForum/Templates/CalendarEvent.aspx?CID=1260&amp;mo=12&amp;yr=2003">Open Source Summit</a> held in Burlingame, California (USA), near San Francisco, on 2003-12-11, and chaired by Andrew Aitken of Olliance and Hank Jones of Intersect Technology Consulting, promised to be interesting: Its keynoters included Rod Smith of IBM and Brian Behlendorf of CollabNet and its panels touched both on technical and business strategies. (For a listing of the tracks, <a href="http://www.sdforum.org/SDForum/Templates/CalendarEvent.aspx?CID=1260&amp;mo=12&amp;yr=2003">http://www.sdforum.org/SDForum/Templates/CalendarEvent.aspx?CID=1260&mo=12&yr=2003</a>) 
</p>

<p>
I attended the panels on the Technology Track (<a href="http://www.sdforum.org/SDForum/Templates/Level1.aspx?pid=10127&amp;sid=3">http://www.sdforum.org/SDForum/Templates/Level1.aspx?pid=10127&sid=3</a>) and presented on the Open Source Desktop.  This note briefly covers the conference from my admittedly biased perspective.
</p>

<p>
Rod Smith's keynote was fascinating for its revelations of what IBM is up to regarding open-source technology and development. Briefly, open source was not presented as a panacea but as a logical strategy that only made sense in certain cases. OSS may work as a test and development space but it has ended up being a successful option when it has offered immediate benefit and provided the groundwork for subsequent (profitable) work.  This, I found interesting, if also logical.  An open-source project, in this view, would be most successful as it most closely matched existing desires and needs--which might be habituated by existing technology. You see the problem? 
</p>

<p>
Clever solutions--innovations--must, in this view, address perceived needs in order to sustain developer interest--that's not terribly revelatory.  Innovation is, from this perspective, then  doing what has to be done, following an unscripted methodology.  The definition leaves open, I might add, solutions that leap over perception, that go beyond what one perceives as a problem.  But IBM was being pragmatic, and that raises the interesting questin, How has open-source technology, "innovative" or not, historically been incorporated into existing institutions? and what are the necessities for any OSS project, then?  And--dear to our hearts--is the much-discussed open source desktop really ready? If not, what are its shortcomings?  The next panels allowed the participants to share their insight into these and other questions.
</p>

<p>
Moderated by Joel West, one of the few business professors in the world whose focus includes open source development and technology, the panel titled, "How to Find, Assess, and Collaborate with Open Source Projects" proved fascinating, for it pointed to how, in the early days, OSS was incorporated... and how the pattern of adoption has changed, now that OSS is more than samizdat geekware.
</p>

<p>
And how was OSS adopted in the Early Days? As Mitch Ablove, of the Golden Gate Transit District recalled, he started employing OSS when proprietary software's failures grew too costly, both to manage and to fix.  Once he started using OSS in the servers, calls to the Help center vanished; once he used SpamAssassin to clear out spam, it ceased being a plague for managers.  Once OSS proved itself immediately as superior to proprietary products, it gained the approbation of his managers and thus legitimacy.  Similar experiences were recounted by Jeremy Allison (Samba) and Rahul Naik (Advantest):  mild deception at first then once OSS was proved, legitimacy.  
</p>

<p>
But, as Jeremy elaborated, the story has changed a little: Policies exist now for OSS--making it, I might add, to a degree not unlike other software.  But is OSS privileged? Do they hire looking for technicians and developers versed in OSS? not particularly, said Mitch; rather, it is expected that any applicant should have knowledge of OSS already, and if not, they can be trained.  This suggests an interesting point:  that either OSS is so simple that any knowledgeable technician/programmer can learn quickly or that the demand is not quite strong enough to make that a requirement. I couldn't help wondering about the situation in other parts of the world.
</p>

<p>
The members of the next panel, focusing on the Development Model, stressed what we have discovered: an open-source project, to work, needs to provide not just the source (apparently something that is not always done :) ) but also the tools and the structure for a good community. Mitchell Baker, who helped to create mozilla.org and is still the President there, as well as with OSAF, succinctly summarized the criteria, including the need for shared ownership as a motivator and a clear understanding of who makes decisions and how decisions are made; further, an awareness of how people work (some of us work better, for instance, typing; others, through speech and direct involvement).  
</p>

<p>
I found Mitchell's comments true to the mark, and they correspond with my own analyses.  Why do so many contribute to OpenOffice.org? it is not merely a question of scratching an itch; it is also profoundly a question of ownership.  This is not just about licenses; it is also about being able legitimately to claim that OOo is to an extent yours; that OOo has also been so widely disseminated because of your work.
</p>

<p>
My own panel was of course the most fascinating but also the most predictable, except for a few points.  To the question, Is the open-source desktop fully mature? the answer was not uniformly "yes," but a more qualified, "sort of," or "it depends on the user."
</p>

<p>
Mark Stone of O'Reilly gave the strongest qualifications to the answer. He correctly pointed out that though OpenOffice.org is really advanced and something he uses every day, he still encounters situations where his colleagues at O'Reilly send him PowerPoint files for which he must use Windows.  I have heard this complaint before; it is not new: OOo is nearly completely compatible and with 2.0 next year we will be even more so. Nevertheless, the question was: are we there yet?--and Mark's answer (not really)  also answered  the question he had posed earlier in his introduction, "Why aren't we all using open source software only on our desktop?"
</p>

<p>
Danese Cooper noted that in fact in developing and emerging nations OSS is in fact becoming quickly the default software model, and I stressed that in fact OpenOffice.org is quite probably, for most of the world, the most obvious open-source product they work with.  In fact, the problem of OSS's limitations are increasingly seen to be US problems; the rest of the world--and we are biased here--has cast its lot with OSS.
</p>
 
<p>
 But that cast leaves many companies vulnerable to problems of support, uniformity, and so on, things that corporations have grown used to and expect.  Danese and I stressed that this is the new ground for ancillary companies. It is a rich, fertile ground: OOo, for instance, is available in dozens of languages and will shortly be ready in even more.  Already support offerings are available in many languages, and why not in even more?  The point, as Danese emphasized, is to further the file format, not the essentially generic branding of OpenOffice.org.
</p>

<p>
That is, OpenOffice.org is but weakly branded but strongly available for others to further brand.  One could, have, say, not just a StarOffice but a [CompanyName]Office based on OpenOffice.org. It is legal, it is feasible, it even makes sense.  What is requisite is that any such branding state, clearly, "Based on OpenOffice.org" and that those who do brand it contribute back to the project.  The source must be nourished even as it nourishes the local economy.
</p>

<p>
Brian Behlendorf's keynote,  the Tipping Point of Open Source, was exemplary in its clarity. The title, taken from Malcolm Gladwell's famous book (see <a href="http://www.gladwell.com/books2.html">http://www.gladwell.com/books2.html</a>) , points to what Brian saw as the ways in which OSS will become increasingly the default. Gladwell describes the process using an epidemic model, in which distributed nodes catastrophically accelerate adoption of practices and ideas. And we seem to be at that point, now, with OSS.
</p>

<p>
But Brian, underscored, being at the tipping point does not mean one has accomplished the goal.  A lot of OSS-Apache, for instance--may be widespread,  "every" large company is using Linux;  we have mainstream coverage in the IT press, we no longer are seen as isolated freaks but rather as "normal"--all this is accepted but not universally. There is still a lot of corporate confusion about how to run open source, how to use it, how to work with it.  The differences are cultural as well as technological.  
</p>

<p>
OSS builds on emerging best practices of software development; it is a logical extension of open systems and cognate with open standards. Open source reinforces open standards and open systems.  These are key points and enable OSS development.  But the culture of how OSS is made differs quite a lot from that of in-house software.  For instance, an OSS developer sees little wrong with direct bluntness.  I think to a degree this has diminished, and will continue to do so as OSS is professionalized (and Brian pointed to the Subversion (<a href="http://subversion.tigris.org">http://subversion.tigris.org</a>) list as exemplary) but it is still a possible issue for some. 
</p>

<p>
The next year, I imagine, will see some dramatic changes.  It may take us beyond the tipping point; it will also highlight the changes in what OSS means to users and developers.  Software production models are changing; OSS is more than a production model, of course, but that is what it primarily is understood to be, one whose linchpin is the license.  It does not specify a methodology nor an ideology; that is up to the local project. But it does implicitly insist on a notion of citizenship that determines that the practices are followed while allowing the flowering of business using, developing, and selling open-source software and its derivatives.  Given these points, the next year will see us, i fully expect, to cross over that tipping point. We will see a flowering in technology that will astonish.
</p>

</div>
</body>
</html>
