<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>
 <h2> Community 
  Articles: Opinions, Interviews, Analyses</h2>
<p><a href="//lspintro.html" target="_blank">-Louis Su&aacute;rez-Potts</a></p>
<p>1 May 2001</p>
<br>

<p><b>Interview: Frank Hecker</b></P> 

<p>Frank Hecker is perhaps most well-known in Open Source circles for his role in open-sourcing Netscape's code. A theorist and analyst of Open Source, Frank has continued to write on the evolving Open Source environment. At present, he is a systems engineering manager for <a href="http://www.collab.net" target="_blank">CollabNet</a>, which is hosting OpenOffice.org for <a href="http://www.sun.com" target="_blank">Sun Microsystems</a>.</P>

<p>The interview below was conducted two weeks ago over the span of a couple of days via email.<p><br>
<P><i>Your biography, which can be found on your <a href="http://hecker.org/info/bio.html">home page</a>, is fascinating. Perhaps most interesting for our purposes is the role you played in open-sourcing Netscape's browser code. Would you want to discuss what went into your decision?</i> 

<P>I was only one of a number of people involved in Netscape's decision to release Mozilla source code. If you're looking for a comprehensive and accurate discussion of Netscape's decision, you can find what I consider to be the best one in chapter 11 of Glyn Moody's book <a href="http://www.perseusbooksgroup.com/perseus-cgi-bin/display/0-7382-0333-5">"Rebel Code."</a> It's quite a tangled tale, and very different from how it's usually portrayed.

<P>Before I continue, I should note that my comments below are my own opinions only; I certainly can't speak for Netscape, and even though I still participate in mozilla.org activities I'm not speaking here for <a href="http://www.mozilla.org" target="_blank">mozilla.org</a> either, but only for myself.</P>

<p>However, to answer your question concerning my involvement in the Mozilla decision: I was the technical director of the Netscape government sales group in the Washington, DC, area. The US government is an unusual market for information technology, in that government customers often require special product features that are not of interest to commercial customers. I spent a major part of my job working with the Netscape marketing and engineering groups in California to try and get them to include in Netscape products the added features we needed for the government market; in some cases we even had custom engineering projects to develop government-specific product features in the area of security, cryptography, and public key infrastructure (PKI).

<p>Over time I became very frustrated with the traditional proprietary software development model, where all development had to be done inside the company and the only developers who had access to source code were members of the internal engineering groups. Thus when I read internal newsgroup postings from <a href="http://www.jwz.org/" target="_blank">Jamie Zawinski</a> and others proposing that Netscape release source code, I was very interested in the idea. However at the same time I knew that, regardless of how enthusiastic developers were about releasing source code, nothing would happen unless Netscape's senior managers also came to believe that it was a good idea.

<p> As the lead technical person for our sales group I participated directly in our sales efforts to high-level civilian and military officials in the US government, as well as in our internal lobbying efforts to Netscape executives from <a href="http://www.barksdalegroup.com/barksdale.html" target="_blank">Jim Barksdale</a> on down; as a result I had a fair amount of personal experience in how and why senior managers made decisions. I therefore took it upon myself to write a formal business case for releasing source code, one directed at Netscape senior management and not at developers. 

<p> The key point I tried to make in the document was that in order to compete effectively Netscape needed more people and companies working with Netscape and invested in Netscape's success--a success in which those others could potentially share. I believed that by both releasing source code <i>and</i> engaging in collaborative development of that code, Netscape could build closer and deeper relationships with its customers and partners. I also believed that increased availability of source code and a more open development effort would help attract others who could help address particular market requirements that Netscape could not always address by itself. (As I've noted, this was of particular interest to me.) 

<p> Working in a sales group I was also familiar with the need to address objections that might arise in the course of selling something to someone. Thus I spent a lot of time writing responses to various objections that I thought people might have to the idea of releasing source code. The end result was a 30-page internal white paper that got circulated to <a href="http://www.ibiblio.org/pioneers/andreesen.html" target="_blank">Marc Andreessen</a> and other Netscape senior managers. It went into the mix along with comments from Netscape engineers like Jamie Zawinski and especially lobbying by <a href="http://www.thestandard.com.au/thenetwork/person_display/0,1407,1353,00.html" target="_blank">Eric Hahn</a>, who was Netscape's CTO at the time and had proposed similar ideas; Eric Hahn was probably the single person most responsible for getting Netscape's executive management to make the ultimate decision to release the Mozilla code. 

<p>(Since it always gets mentioned in relation to Netscape's Mozilla decision, I should also note that Eric Raymond's paper <a href="http://www.tuxedo.org/~esr/writings/cathedral-bazaar/" target="_blank">"The Cathedral and the Bazaar"</a> was referenced by me and others who were lobbying Netscape's management. In my opinion the paper's importance in the context of Netscape's decision was mainly that it provided some independent validation of ideas that were already being actively discussed and promoted within Netscape. If you've ever tried to promote a proposal within your organization, then you may have discovered that it's somewhat easier to do this if you can point to someone outside the organization who's saying the same thing.) <br><br>

<p><i>In particular, if you haven't already addressed the issue above, in what ways did having corporate sponsorship alter the logic and practice of open-sourcing the code? That is, how were (and are) Netscape's desires affecting the course of the project? And does the corporate presence alter the way in which the project is regarded by the Open Source community?</i>

<p> Clearly a corporate-initiated open source project can be perceived differently than a project created by independent developers; that was certainly the case with Netscape and Mozilla. I've noted three problems in particular.

<p> First, people tended to think of Netscape (and later, AOL) as a monolithic entity, and all the Netscape developers as marching in lockstep in accordance with some Netscape "party line"; they forgot that the Netscape developers are still developers, and will have ideas and opinions that may differ amongst themselves and even with their corporate management. (This may be obvious to anyone who's worked in a large corporation, but not everyone's had that experience.) I discuss the implications of this in my answer to the next question.

<p> It's true that Netscape exerted significant influence over the technical direction of the project; for example, it was important to Netscape that Mozilla include a mail/news client and not just a browser, because Netscape wanted to use Mozilla to build a replacement for Netscape Communicator 4.x. However as far as I'm concerned this is just an example of Netscape "scratching its own itch": to the extent that Netscape developers are the ones writing the code, all other things being equal they're going to write code to implement features of interest to Netscape. However the project is open to other companies or independent developers who want to get their own code into Mozilla, whether it's of interest to Netscape or not. For example, IBM developers have contributed support for bi-directional languages like Arabic and Hebrew, Sun developers have contributed in a number of areas (many Java-related), and other companies and independent developers have contributed code to support embedding the Mozilla layout engine in other applications.

<p>Second, the Netscape developers were all located in one location (almost all of them in one building) and they were very used to working face-to-face; Netscape had internal project newsgroups and project web sites, but the information on them was not always accurate and complete, simply because people were busy and could rely on personal communication to fill in any information gaps. When the Mozilla project first started it was a struggle to get the Netscape developers to move all (or almost all) of their discussions to the public Mozilla newsgroups and mailing lists, and to have them write down and post on the Mozilla site important information that traditionally may have existed only on whiteboards and in people's heads.

<p>Fortunately over time people were able to change their habits, to the point where I think that the Mozilla project does a pretty good job of being a "transparent" project, in the sense that almost all the relevant information about the project activities is publicly available in some form or other. (It's not always well organized and easy to find, but that's another problem....)

<p>Finally, at least in the early days, a lot of people were uncomfortable with the commercial aspect of Mozilla, [and worried] that it was not a traditional project started by volunteers, but rather a project initiated by a for-profit corporation to try and achieve specific business goals. I believe that's much less of a problem today, both because independent developers have gotten used to working with Netscape developers as developers and not as corporate representatives, and also because in the broader world there's been such a great amount of commercial activity around Open Source and free software--it's no longer unusual for companies to sponsor Open Source projects, or for free software developers to be hired by companies specifically to take advantage of their expertise and positions within existing projects. </p>

<p>There will always be a certain amount of tension between companies trying to build profitable businesses and developers trying to create the very best software they can, but I think that for the most part Netscape, other companies involved with Mozilla, and the developers themselves have managed to find ways of working together that allow all parties to get something of value out of the project.<br><br>

<p><i>mozilla.org, has a respected governance board and a detailed <a href="http://www.mozilla.org/roadmap.html" target="_blank">roadmap</a>. Would you want to discuss the role a governance board plays in an OS project? And, if the project is corporate sponsored, is the board as crucial? </i>

<p>mozilla.org (the organization, not the site) fulfills several roles. Probably the most important ones are serving as a neutral party that can mediate among the various parties involved in Mozilla development and promoting Mozilla as an open-source project, independent of Netscape 6 and all the other products that use Mozilla code.</p>

<p>The <a href="http://www.mozilla.org/about.html" target="_blank">members</a> of mozilla.org don't actually make that many decisions about Mozilla development; what they do instead is set overall policies and directions, and intervene to make decisions when developers can't reach agreement on their own. (Such disagreements are not necessarily always between Netscape developers on one side and non-Netscape people on the other; often the disagreements are between different non-Netscape developers or even between Netscape developers in different groups.) 

<p>I believe that having an autonomous (or at least partly autonomous) "governance board" like mozilla.org is important even in corporate-sponsored projects; in some senses it's even more important than in projects created and run by volunteers. As I mentioned above, some people believe that the actions of Netscape developers are based solely on Netscape corporate policies and strategy--that Netscape developers are under orders to make sure that Mozilla is developed in the way that Netscape wants, with no larger purpose. I think this is an unfair characterization: While Netscape developers do have an obligation to their employer (as any employee would), they also want to help make Mozilla a great product for everyone, not just for Netscape. (In fact, increasingly Netscape developers are being hired from the ranks of Mozilla volunteer contributors.) 

<p>Having mozilla.org people involved helps keep project decision making focused on what's right for Mozilla overall, and helps prevent disagreements over technical and other issues from degenerating into arguments about "what Netscape wants". If developers employed by Netscape happen to propose a reasonable approach to a contentious issue and mozilla.org agrees with them, mozilla.org can justify its decision and respond to criticism instead of leaving the Netscape developers to defend themselves against the charge of doing Netscape's bidding. Similarly, if independent developers have a good idea and are having trouble getting attention for it, mozilla.org can press the case for it with the Netscape developers and development managers working in that area.<br><br>

<p><i>As well, as a follow-up, what function does the roadmap play in the structure of the project?</i>

<p>I think the Mozilla roadmap provides a needed structure and rhythm to development activities from week to week and month to month. It helps people understand why during certain periods patches can't be taken or require increased review, it prepares them for experiencing temporary instability due to major landings of code changes, and it gives them something to look forward to, in the form of upcoming milestone releases.

<p>The roadmap is especially important now that Mozilla has advanced to a point where multiple companies or groups want to ship projects based on it. Last year Netscape was the only company planning to ship a Mozilla-based product and really needing a detailed and complete development schedule. Now there are enough people with a stake in Mozilla's progress that it's necessary to plan for periodic Mozilla releases that they can use to create beta or production releases of their own products, according to whatever schedule they're working to.<br><br>

<P><i>I have <a href="ec16Jan01.html">elsewhere</a> described the relationship between the sponsoring corporation and the community as a dialectic: the desires of each are not identical but can only be realized together. But organizing the developer community so that it even sees itself as a community is itself a challenge. What strategies does Mozilla.org use to create the community as such, and to sustain interest in developing Mozilla.org's next software?</i>

<P>First, in my opinion a number of people at Netscape were instrumental in setting the Mozilla project on the right path when it initially started back in 1998. I want to mention especially Jamie Zawinski and <a href="http://www.mozilla.org/about.html" target="_blank">Mitchell Baker</a>. (Jamie was the most active and prominent member of mozilla.org early on, though he was never actually its official "leader." Mitchell was formerly a Netscape lawyer; she's now the Netscape manager responsible for mozilla.org.)

<P>Jamie Zawinski did a great job of establishing an independent identity for the Mozilla project at its outset; he lobbied for creation of the mozilla.org web site independent of Netscape's site, lobbied for creation of mozilla.org as a separate group dedicated to making the Mozilla project successful, and commissioned and directed the creation of the Mozilla logo and "brand image" (to use marketing-speak for a moment). Most important, Jamie articulated a clear vision for the Mozilla project and for mozilla.org; his "<a href="http://www.mozilla.org/mission.html" target="_blank">mission statement</a>" <http://www.mozilla.org/mission.html> is still relevant and has needed little updating over the years.

<P>Mitchell Baker and others were originally responsible for Netscape's efforts to create an open source license for the Mozilla code; this eventually resulted in the creation of the <a href="http://www.mozilla.org/MPL/" target="_blank">Netscape Public License and then the Mozilla Public License</a>. The details of the licenses are not as important in my opinion as the process by which the licenses were created; Netscape was willing to involve in the process not just a select few "experts" but anyone who had an interest and wanted to contribute comments. As a result of that process Netscape made several significant changes to the licensing arrangements, and I believe that was an initial factor in assuring people that Netscape was in fact willing to "listen to the community" as opposed to simply dictating to it.

<P>I do not believe in "instant community." I believe that a true community evolves only as people work together more closely and are able to cooperate to help solve non-trivial problems. And certainly the Mozilla project had a lot of real problems to overcome, starting with the need to make a hard decision about whether to continue with the original code base or to go for a bottom-up rewrite of the software. In the end the rewrite went forward, which ended up imposing the major schedule delay we've seen in getting Mozilla 1.0 shipped. However, as with the original discussions about licensing, I think that because the various people working in the project were able to successfully reach consensus on "the right thing to do", that helped enhance and preserve the sense of community through the subsequent events like Jamie leaving the project and people criticizing Mozilla as a "failed project."

<P>I should also mention here two other factors. First, besides the main Mozilla project we saw the establishment of independent Mozilla sites, most notably <a href="http://www.mozillazine.org/" target="_blank">MozillaZine</a> (founded by <a href="http://dale.oreillynet.com/stories/storyReader$26" target="_blank">Chris Nelson</a>). MozillaZine and other sites provided a focus for Mozilla evangelism and other activities beyond the core project.

<P>Second, <a href="http://www.mozilla.org/quality/qacontacts.html" target="_blank">Netscape QA staff</a> and various <a href="http://www.mozilla.org/quality/help/mozilla-testers.html" target="_blank">QA volunteers</a> worked together to organize the efforts of people who were not developers but who were willing to put in a lot of time testing Mozilla, filing bugs, and evaluating and verifying bugs submitted by others. In my opinion the <a href="http://www.mozilla.org/quality/" target="_blank">Mozilla QA team</a> has done a great job of making people new to the project feel welcome, helping them learn about the project (which is quite large and complex), and giving them a chance to contribute in ways that were personally satisfying to them.</p>
<br><br>


<p><a href="./editors.html">Previous Articles  </a></p>
</body>
</html>

