<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>
 
<h2><font color="#cc6600" face="Courier New, Courier, mono" size="+2">Editor's 
  Column</font></h2>
<p>&nbsp;</p>
<p><a href="//lspintro.html" target="_blank">-Louis Suarez-Potts</a></p>
<p>15 February 2001</p>
<p>&nbsp;</p>
<p><b>An Interview with Wilfredo S&aacute;nchez, former lead developer, project 
  Darwin (OS X)</b></p>
<p>In a previous column, <a href="ec1Feb.html" target="_blank">Reviewing 
  the Others: Darwin</a>, I briefly examined <a href="http://www.apple.com" target="_blank">Apple's</a> 
  ambitious <a href="ttp://www.opensource.apple.com/projects/darwin/" target="_blank">Darwin 
  project</a>. The article was the first in an intermittent series on large open-source 
  projects; the series as a whole is meant to provide insight for the OpenOffice.org. 
  community. The below interview provides a lead developer's perspective on the 
  issue of Open Source.</p>
<p><a href="http://www.mit.edu/people/wsanchez/" target="_blank">Wilfredo S&aacute;nchez</a> 
  was, <a href="http://slashdot.org/article.pl?sid=01/02/12/2250215" target="_blank">until 
  recently</a>, the lead developer on project Darwin, Apple's open-source core 
  to its new operating system, <a href="http://www.apple.com/macosx/" target="_blank">OS 
  X ("ten").</a> Fred still maintains his links to Darwin, where he is an active 
  developer, but he is no longer with Apple. Currently, as he <a href="http://www.advogato.org/person/wsanchez/" target="_blank">phrases</a> 
  it, he is "the open source program manager at <a href="http://www.knownow.com/" target="_blank">KnowNow, 
  Inc</a>.," where he is "working on technology to enable what's called '2-way 
  web'." Fred very kindly allowed some time out of his schedule to respond to 
  some questions I asked via e-mail this past week. My questions are in bold italics; 
  his responses are below, in regular font. </p>
<p><i><b>As a glance at your <a href="http://www.advogato.org/person/wsanchez" target="_blank">r&eacute;sum&eacute;</a> 
  indicates, you seem to have been involved as a developer and project lead in 
  just about every important open-source project for the last ten years. What 
  got you interested in Open Source? And, do those same issues that got you started 
  still exist?</b></i></p>
<p>My interest dates back to college. I was a freshman at <a href="http://www.mit.edu/" target="_blank">MIT</a> 
  (Massachusetts Institute of Technology) in 1990, and all I knew about computers 
  was how to use a few programs on IBM PC clones running DOS, and before that 
  the Atari 800 and TRS-80. I didn't know much about programming. So I get to 
  MIT with my pile of PC floppies (the actual floppy kind) and they had these 
  weird computers with no floppy drives (DEC VAX and IBM PC/RT machines), and 
  I was totally lost. </p>
<p>What I learned rather quickly is that the software that the vast majority of 
  the world uses isn't all there is. In fact, in a lot of regards, it's not even 
  the best there is. And what I learned much later was that almost all of it was 
  enabled via collaborative work between people who were mostly just interested 
  in seeing what they could do with software. It wasn't open source in the modern 
  sense, I guess, but it was pretty similar, and the roots of what open source 
  is today goes right back to those projects.</p>
<p>I had also met RMS (<a href="http://www.stallman.org/" target="_blank">Richard 
  Stallman</a>) a couple of times (which he won't remember) and a lot of people 
  who contributed regularly to the <a href="http://www.gnu.org/" target="_blank">GNU 
  project</a>, which was born at MIT, and I've since had a lot of respect for 
  what Richard and the rest of that community have done to create a body of software 
  that can be shared and collaborated on without the restrictions associated imposed 
  on the Unix community, which you and your friends had to pay a lot of money 
  to participate in.</p>
<p>So I was really into the idea of being able to contribute to all of this activity 
  that was going on, but not being much of a programmer, I mostly just used the 
  software and thought it was cool. It took me a long time before I found a way 
  to do something substantial. In fact, I didn't have occasion to contribute to 
  open source in a meaningful way until I got to Apple in 1997.</p>
<p>When I started at Apple, the NeXT folks had just moved into the Apple campus, 
  and we were working on the original Rhapsody Developer Release. The first thing 
  I noticed was that we had a boatload of software in the system which I was familiar 
  with, but was mostly out-of-date or incomplete. </p>
<p>I had used <a href="http://www120.pair.com/mccarthy/nextstep/intro.htmld/" target="_blank">NeXTStep</a> 
  at the MIT <a href="http://www.media.mit.edu/" target="_blank">Media Lab</a> 
  and again at <a href="http://disney.go.com" target="_blank">Disney Online</a>, 
  and I thought it was cool that it had a <a href="http://www.bell-labs.com/history/unix/" target="_blank">Unix</a> 
  environment underneath, but every time you wanted to do some standard Unix thing, 
  you had to tweak it a bit. So you'd see things like special-case exceptions 
  in autoconf scripts for NeXTStep, where it's almost the same as any other (4.3) 
  BSD system, but it did it just a little different, or was missing something. 
  And those little tweaks add up after a while. We had inherited that software 
  at Apple, and I thought I could help by cleaning that up some. So I'd get a 
  newer GNU tar, or add tcsh, because every good Unix should have <a href="http://www.go.dlr.de:8081/pdinfo_dv/tcsh.html" target="_blank">tcsh</a>... 
  and then <a href="http://www.gnu.org/software/bash/bash.html" target="_blank">BASH</a>... 
  and then <a href="http://www.perl.com/pub" target="_blank">Perl</a>... and then 
  <a href="http://www.apache.org/" target="_blank">Apache</a>, and it kept on 
  going like that. And I talked to some friends at MIT who hooked me up with <a href="http://www.netbsd.org/" target="_blank">NetBSD</a> 
  and I took on the challenge of actually trying to sync up the <a href="http://www.bsd.org/" target="_blank">BSD</a> 
  userland.</p>
<p>What became obvious to me at that point was that we needed to maintain an ongoing 
  relationship with the upstream providers of the software, so that we could push 
  our changes up and pull down newer versions and avoid the problem NeXT ran into, 
  which was basically due to diverging code, which makes it much harder to keep 
  up with what's going on elsewhere. I wrote up a <a href="http://www.mit.edu/people/wsanchez/papers/FREENIX_1999/" target="_blank">paper</a> 
  on this issue using Rhapsody as a case study and presented it at the <a href="http://www.freenix.com/" target="_blank">FREENIX</a> 
  track during <a href="http://www.usenix.org/events/usenix99/" target="_blank">USENIX 
  1999</a>. As a result of the work I was doing, I got more involved with many 
  of the projects from which I was drawing code. And that's the long of how I 
  got involved with open source. It took me the better part of the 1990's.</p>
<p><i><b>Your involvement has given you an extraordinary perspective on the movement, 
  its main players, and the people who actually make it happen: the developers. 
  How would you characterize the changes (if any) that have taken place among 
  and for developers since your start?</b></i></p>
<p>Well, I think when I was still learning about it, there were those who worked 
  on what was fundamentally proprietary (though still open in a significant sense) 
  software like the BSD Unix work at <a href="http://www.berkeley.edu" target="_blank">Cal</a> 
  (University of California, Berkeley); and those who wanted to make software 
  that wasn't just open, but freely shared with everyone without the worry of 
  a centralized group that could basically take that away, like the GNU project. 
  The GNU project was a really important effort, because free software wasn't 
  the norm, and they were working very hard to ensure that there would be enough 
  free code available that people could actually make use of it to do real work 
  and solve real problems, and they used a special license to help ensure the 
  freedom of the code. That software remains important today, of course, particularly 
  as demonstrated by <a href="http://www.linux.org" target="_blank">Linux</a>.</p>
<p>But I think today we know something we didn't necessarily know then: the code 
  isn't the critical component of &quot;open source.&quot; The real magic is in 
  the community that uses and develops the software. If you take a good idea, 
  and you build a good community around it, you can end up with some excellent 
  software, and from what I've seen, no person or company will be able to take 
  that away. The thesis of the paper I wrote for FREENIX was basically that if 
  there exists a good open source project, any company which takes the code from 
  that project, extends it, and opts to not to become a part of the community 
  will, in the long run, end up with a product that is less compelling than what 
  the community comes up with, because the Internet facilitates very large and 
  diverse communities that can invariably out-pace what a single business can 
  do, at least in those problem spaces that have become commoditized by open source 
  projects.</p>
<p>The flip side of that is that open source projects can benefit greatly by getting 
  companies to put their energies behind open software instead of inventing something 
  in parallel, because those companies have a lot of resources to throw at problems 
  of importance to them. The <a href="http://www.apache.org/" target="_blank">Apache 
  Software Foundation</a> is a marvelous example of this; we have seen truly significant 
  effort put forth by companies like IBM, Sun and Covalent which have both broadened 
  the problem space which our community excels at and greatly increased the quality 
  and usefulness of the code. They have not only contributed software, but they 
  fund ongoing full-time manpower to our projects, and while there have certainly 
  been bumps in the road, I know that all parties involved--including, of course, 
  our combined user base--are far better off as a result of this collaboration.</p>
<p>On the other hand, I think that some of the best assets in the open source 
  space--the GNU stuff--is still of the mindset that the license is what protects 
  the software. That's not so bad in and of itself, but the <a href="http://www.gnu.org/copyleft/gpl.html" target="_blank">GNU 
  license</a> has what I think are legitimate problems for a person or company 
  that isn't, for whatever reasons, able to accept those terms for software other 
  than the original GNU code, and I don't think that excluding such companies 
  is the best thing for an open community. That is, in this context, the <a href="http://www.gnu.org/copyleft/gpl.html" target="_blank">GPL</a> 
  (in it's current form) actually inhibits code sharing, instead of facilitating 
  it.</p>
<p>Actually, it's more complicated than that: the GNU project is a proponent of 
  their particular ideas about freedom in software, and is not so much about ensuring 
  that the best software in the world is created in this collaborative form which 
  is what I think open source is really about. So it's not accidental that things 
  work out this way; I just think it's unfortunate, because my interest lies in 
  sharing code and building communities. I also think a lot of GPL authors haven't 
  thought this through. What I think I'm seeing now is a sort of &quot;growing 
  up&quot; of both the open source development model and it's fascinating to see 
  how the software industry can fit into it. It's an exciting time to be a software 
  developer.</p>
<p><i><b>Open Source relies, famously, on the &quot;community.&quot; But it's 
  unclear who this community is, who comprises it, and how it is constituted. 
  Can you give any insight into the open-source community? That is, into how the 
  developer community forms, what are its key elements, and how it works together?</b></i></p>
<p>As I said earlier, I think the community is the fundamental component of an 
  open-source project, which makes this a very good question, if not an easy one 
  to answer. The way I think about it, a community is a group of people with some 
  interest in a given problem space and a vision for how to tackle it and what 
  to do with the result. They tend to rally around some code, because code sets 
  some nice boundaries for the scope of that problem space, but the code might 
  be tossed out and re-written or otherwise modified and extended to reflect the 
  vision of the group, which evolves the members discover new ideas, or the membership 
  changes.</p>
<p>The successful communities I know about have some common characteristics: They 
  tend to have a core group of some manageable size, which is generally comprised 
  of the most active developers, but also of other people who are known to understand 
  the problem space well. The core group and the code are what provide continuity 
  and direction, and they roughly represent the vision of the whole group. </p>
<p>There are many different organizational models is the various open projects, 
  and I'm not really an expert on which works best, since I've only ever tried 
  to help create one. For Darwin, we had a pretty obvious core group to begin 
  with, that being the tech leads in the Core OS team at Apple which is already 
  responsible for the code; and the initial vision is clearly defined by the Mac 
  OS product: Darwin's primary role is to support Mac OS going forward. That may 
  seem too narrow, but I think the vision is a fine one; over 100,000 people bought 
  Mac OS X Public Beta, and I imagine the upcoming release will have a sizeable 
  installed base by year-end. That will mean a lot of people with some interest 
  in seeing the system improve, and that's not a bad itch to scratch.</p>
<p>The interesting thing to see will be whether the Darwin core group will grow 
  to include people outside of Apple, thereby allowing the vision to grow beyond 
  the bounds of what Apple is doing with Mac OS. I don't just mean committers, 
  which already exist, but whether Apple can let other community members on the 
  outside of the company drive the vision as well.</p>
<p>The best example of a new community forming that I've seen is the <a href="http://subversion.tigris.org/">Subversion</a> 
  project at <a href="http:///www.collab.net">CollabNet</a>. <a href="http://www.red-bean.com/~kfogel/">Karl 
  Fogel</a> and a few other gurus in the area of source control got together and 
  started designing something fundamentally better than the current standard, 
  <a href="http://www.cvshome.org/">CVS (Concurrent Versions System)</a>. And 
  they did a great job at it. The group was intentionally kept small initially 
  by not making it very public, not to be secretive, but to make sure that the 
  vision was well defined before too many cooks jumped into the kitchen. Since 
  then I've seen all sorts of progress, some truly wonderful ideas, and I fully 
  believe that when they are done, I'll be switching to Subversion and I'll never 
  look back at CVS again.</p>
<p>There's an element of magic pixie dust in how that all came together which 
  I don't fully understand, so I don't know that I could ever replicate it, but 
  it was cool to watch, and I'm keeping an eye out for other examples so as to 
  learn from them.</p>
<p><i><b>Another problem facing an open-source project is bringing in new members. 
  How have you been able to bring in new members? What strategies do you use?</b></i></p>
<p>This goes back to the economics of open source, and developers are a finite 
  resource. Communities are fed by need. If you can't draw members, it's probably 
  because there isn't that much demand. And I don't think that growth is always 
  a requirement. I don't know how many people maintain fetchmail today, but I 
  don't suppose they really need 20 more developers working on it.</p>
<p>It can be tough for new projects, because there is a bootstrap problem: You 
  have to have the code so you can have the users who depend on it. This feeds 
  into your developer pool, which writes the code. So someone has to be the first 
  developer to write enough code to churn the cycle the first time around and 
  help other people jump in. But once that's done, a good project feeds itself.</p>
<p>Some people think that open source means you make a tarball and a reasonable 
  license, put that up on an ftp server and you have open source. Perhaps that's 
  enough for buzzword compliance, but that's completely false if you think the 
  community is the important thing. You have to clean up the code (for readability, 
  docs, the invariable naughty language, legal entanglements, internal code names, 
  etc.). You have to let people know it's there. You have to facilitate the people 
  who take enough interest to contribute patches, so they don't fall through the 
  cracks.</p>
<p>So you need things like mail lists, CVS servers and whatnot; but much more 
  important, it means an ongoing commitment to working with the community you 
  form to help them help you make the code better, and that includes convincing 
  your internal developers that they should spend some of their time helping people 
  they don't know out on occasion. You can get some excellent infrastructure from 
  SourceForge, but that alone doesn't create a community.</p>
<p>And that's the rub. It's not a trivial operation to open source a project. 
  It takes real work and real people on an ongoing basis. People wonder why some 
  company doesn't just open source the code they just shelved, and this is basically 
  why. If you have no resources to put into it, it's not always a justifiable 
  thing to do. Honest, it's not easy to do; I've talked to people at other companies 
  as well to confirm this.</p>
<p>&nbsp;</p>
<h4>Previous columns</h4>
<p>9 February 2001 <a href="ec8Feb.html" target="_blank"><i>Organizing 
  Open Source</i></a></p>
<p>1 February 2001 <i><a href="ec1Feb.html" target="_blank">Open 
  Source and Its Culture</a></i></p>
<p>23 January 2001 <i><a href="communityaction.html" target="_blank">Community 
  Action</a></i></p>
<p>16 January 2001 <i><a href="ec16Jan01.html" target="_blank">Quo 
  Vadis OpenOffice.org?</a></i></p>
<p>9 January 2001 <i><a href="thebuild.html" target="_blank">The 
  613 build:&nbsp; problems and opportunities</a></i></p>
<p>3 January 2001 <i><a href="SunsOpenDoor.html" target="_blank">Sun's 
  open door</a></i></p>
<p>&nbsp;</p>
<p> 
<p>E-mail: <a href="mailto:louis at collab.net">Louis at collab.net</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html>

