Mozilla at One: A Look Back and Ahead
Frank Hecker, 02-Apr-1999
Now that mozilla.org and the open-source Mozilla project are a year old, it's an appropriate time to look back at the experience thus far: what has been accomplished, what has not yet been done, what might have been done differently, what lessons have been learned, and what issues lie ahead. Below you'll find my personal opinions concerning these topics.
Highlights
Here are what I think are the major highlights of the last year, things that worked out relatively well and constituted progress toward the goals of mozilla.org and the Mozilla project:
-
Netscape and mozilla.org released a large body of code into the open-source "pool," including
- source code for Mozilla itself, consisting of most of the code-in-progress for Netscape Communicator 5.0
- source code for related software, including the Directory SDKs for C and Java, PerLDAP, the Communicator Client Customization Kit, and a JavaScript reference implementation
- several development tools useful for open-source projects, including the Bugzilla bug tracking system (now also used by Red Hat Software, among others), the Bonsai system for monitoring CVS trees, and the Tinderbox build system
- source code for "orphaned" technology no longer under active development by Netscape, including the Electrical Fire Java Virtual Machine (JVM) implementation and the Java-based Grendel mail/news client (thus ensuring that others might benefit from the code already created)
- Netscape and mozilla.org created the Netscape Public License (NPL) and the Mozilla Public License (MPL) for licensing the Mozilla source release and other code released by Netscape. The licenses were created through a relatively public process in which draft licenses were published and comments solicited; partly as a result, the final NPL and MPL 1.0 were accepted by the bulk of open-source developers as reasonable licenses balancing the interests of Netscape and the larger community of developers and users. The NPL and MPL have also influenced new licenses created for other open-source projects. Note also that the NPL and MPL have recently been revised to address concerns about their patent clauses; see the revised licenses for more information. (The revised licenses also allow for the possibility of licensing code under both the NPL/MPL and an alternate license such as the GPL; mozilla.org will use this to release the JavaScript reference implementation under dual licenses so it can be used by more projects. There are no plans to release Mozilla code this way.)
- Early "developer preview" releases of Mozilla binaries (including the recently-released "M3 version") have provided a "plausible promise" of a fast, cross-platform, standards-compliant web browser (as well as a mail/news client and HTML editor) with relatively small memory and disk footprints, that can be embedded in other applications and cleanly extended to incorporate new modules, modified user interfaces, third-party Java implementations, and new local and network data sources.
- The project has begun to attract major pieces of useful functionality developed by outside contributors, such as the expat XML parser (from James Clark) and the Mozilla ActiveX control (from Adam Lock).
- The first non-Netscape commercial product built on the Mozilla code base has been announced: DocZilla, a tool for accessing SGML documents (and XML and HTML documents as well).
- Netscape and mozilla.org have to a large degree opened up not just the Mozilla code itself but also previously internal-only design discussions about how to move it forward -- an important achievement in terms of proving the workability of the open-source development model at commercial software companies that have previously developed only proprietary software. Those who don't have time to read all the newsgroup discussions can also keep track of happenings in the Mozilla project by reading mozillaZine, an independent news site created by Chris Nelson to provide information on all things Mozilla-related, as well as the Mozilla newsbot, which highlights significant threads in the Mozilla newsgroups; there are also many third-party web sites that have sprung up around the Mozilla project.
- mozilla.org has been able to move Mozilla to being based more on other open-source code, as opposed to depending on proprietary technology for key functions. In particular the Mozilla project was able to leverage the work of the GTK+ project to provide underlying technology for the new Mozilla cross-platform front-end interface.
- Several independent efforts have started to port Mozilla to other platforms, with some of them now well along (for example, the OS/2 port created by John Fairhurst, Henry Sobotka, and others).
Lowlights and Debatable Decisions
All has not been sweetness and light, however. The first (and by far most important) "lowlight" is of course that the Mozilla project has not yet resulted in a production release of Netscape Communicator 5.0, or even an official public beta release of Communicator. Were there any ways things could have been done differently? Here are two possibilities (if nothing more) and some of the thoughts and debates around them:
-
Netscape and mozilla.org could have proceeded on the original plan to release "Mozilla Classic," i.e., a version of Mozilla using the original Communicator 5.0 source code, instead of rewriting Mozilla using the new NGLayout HTML layout engine (a major component of the new Gecko technology). This might have produced an official 5.0 release sooner and (as a side effect) resulted in having much earlier a relatively stable code base buildable by more developers; however this would have been at the cost of having a level of standards compliance not much above that of the Communicator 4.x releases. Many web developers, including those associated with the Web Standards Project, expressed the strong opinion that Netscape should not release a 5.0 product without complete compliance with as many web standards as possible, including at a minimum HTML 4.0 and CSS1. Netscape and mozilla.org therefore decided to drop the existing layout code and instead use NGLayout, even though at the time NGLayout was quite a ways from final release, and thus the overall Communicator 5.0 schedule would slip at least a few months (especially given that many other parts of Mozilla would have to be rewritten to use the new NGLayout APIs).
Would it have been possible to first do a Mozilla Classic-based Communicator 5.0 release and then develop a Gecko-based follow-on release (5.x or 6.0) in the same overall time it will end up taking to do a Gecko-based Communicator 5.0? It's impossible to know for sure; however such a plan would have arguably created real and significant risks in terms of the length of the development schedule and the complexity of the development process, especially if the two releases were developed in parallel or nearly so.
- Netscape could have skipped development work on the Communicator 4.5 release (created using the traditional internal-only development process, with proprietary source code) and gone straight for 5.0; this would have freed up many of the developers (especially mail/news developers) who were working on 4.5 and allowed them to contribute much earlier to the Mozilla/5.0 effort. This problem was an unfortunate consequence of the fact that the 5.0 release was not complete and working at the time it was originally made available through mozilla.org, so that the Mozilla project was initially dependent on the activities of Netscape developers to produce a complete release. This led to a situation where there was a possible conflict between Netscape's business priorities as a commercial software company and mozilla.org's priorities as coordinator of an open-source project. However, putting aside for a moment Netscape's market needs for a 4.5 release, would it have helped the Mozilla schedule that much to have the 4.5 developers working on Mozilla and 5.0 instead? Or were there other items (like NGLayout) gating the Mozilla/5.0 schedule? Space and time don't permit discussing here all of the complexities of this issue.
Another perceived lowlight has been the pace at which outside developers have been attracted to work on Mozilla project. To some extent the issue here is people's expectations; it's unclear whether the number of outside Mozilla developers is that small relative to other open-source projects of comparable complexity and at equally early points in their development. The fact that Communicator development had been going on for four years prior to release of the source is arguably irrelevant, since any developers outside Netscape had to start from scratch on 1 April 1998 in terms of their Mozilla learning curve. In any case, here are some of the ideas that have been advanced as to why thousands of people are not currently hacking on Mozilla (in the sense of contributing new code):
- There was, at least initially, a very steep learning curve for developers wishing to do serious Mozilla hacking. There is a lot of code in terms of number of lines and number of source files, the code is very complex, being a mix of C and C++ with additional things like JavaScript thrown in for good measure, and there was not very much introductory documentation to orient new developers, at least at the start. The situation with regards to introductory documentation is somewhat better now; in particular the tutorial on extending Mozilla by Johnny Stenbäck and Heikki Toivonen provides a good introduction to the complete novice.
- For much of the project's life Mozilla has been very hard to build from scratch, especially for new developers with no previous build experience at Netscape. The build system has often been in flux, was not well-documented, and is pretty complex. On the plus side, the new autoconf-based build system (contributed by Christopher Seawood) brings the Mozilla project much more in line with current practice for open-source projects developing on Linux, and it is now significantly easier for new developers to get working builds on the Linux/Unix, Microsoft Windows, and Apple Macintosh PowerPC platforms.
- The Mozilla code base has been in continual flux and as a result builds on any given day have had wildly varying levels of stability. Because many of the technologies used in the current Mozilla architecture (for example, XPCOM and XPToolkit) are still in active development and because of the difficulty of doing truly portable cross-platform code, there have been relatively few stable points thus far at which Mozilla both builds and runs on all the major platforms of interest (Win32, Linux, and Mac). Like ease of building, stability is also improving slowly but surely as newer "milestone" releases appear, like the most recent "M3" release.
- For a while there was little (and in some cases no) documentation for the underlying Mozilla architecture and implementation details, and much of the documentation that did exist was either obsolete or badly out of date. This situation is improving, as most if not all of the major Mozilla areas now have at least some internal documentation; however the documentation will not be able to stabilize until the underlying implementations stabilize.
- Netscape did not make the Mozilla code available under the GNU General Public License, and based on the terms of the GPL code licensed under the NPL or MPL could not be incorporated into a GPLed program. (The reverse was and is true as well: GPLed code cannot be incorporated into Mozilla.) As a result Mozilla code could not be used in free software projects like GNOME that were incorporating browser functionality but were using the GPL for all their code. These inconsistencies between the NPL/MPL and the GPL have yet to be fully resolved.
-
Many people have the perception that Mozilla is still a "Netscape project" and that therefore "outside" support is not needed nor even wanted. This is an incorrect perception, but it's understandable why people might have become confused about this: First, Netscape and now AOL do have a significant business interest in having the Mozilla project be successful, in order to provide a sound technology base from which to develop the branded Netscape Communicator product as well as to leverage for other possible AOL software and services; thus Netscape has funded and AOL will continue to fund a large number of Mozilla developers by providing them full-time employment. Mozilla developers outside Netscape who are volunteers do not have the luxury of being able to work on Mozilla full-time, and therefore until more companies are funding Mozilla development it's possible that significant Mozilla development will continue to be done mostly by Netscape developers. Unfortunately the issue of Netscape "dominating" Mozilla will likely remain to some extent a "no-win" situation as far as AOL and Netscape are concerned. If AOL puts even more funding and people into Mozilla development then it is open to the charge that it is trying to dominate the project and direct it solely to commercial ends; on the other hand if it were to back away from direct support of Mozilla and rely much more on outside developers then people would think that AOL had abandoned Mozilla or was guilty of exploiting the work of volunteers for its own purposes without giving anything back to the project. This problem is not unique to AOL and Netscape, of course; similar tensions will be present as other commercial companies move more into support, development, and use of open-source software.
Also, there has been a learning curve for Netscape developers themselves, in terms of becoming comfortable and then competent at the task of doing development "in the fishbowl," i.e., with all design discussions, code checkins, and debugging conducted in the open; some of their actions during this learning period (for example, not posting design proposals for comment, or conducting discussions on Netscape-internal forums as opposed to using public newsgroups and mailing lists) have contributed to the perception that Mozilla is still a Netscape-only project. Fortunately Netscape developers have for the most part learned their open-source lessons and are now doing a better job of working within a public project.
Lessons Learned
Everyone will take their own lessons away from the Mozilla experience; here are some I think should be kept in mind:
- There's a lot more to a project than writing code. People tend to focus on the number of people contributing code to Mozilla or having access to the CVS tree; however the complete list of people helping mozilla.org includes not just module owners and other contributors of code but also people testing early builds and submitting bug reports, as well as people critiquing design decisions relating to proposed feature sets, user interfaces, internal implementations, and public APIs. Not all of those people are necessarily going to be programmers, and of those who are programmers not all are going to be contributing code. For example, several developers have been testing the Mozilla code for use as an HTML layout engine embedded in their application. They are not changing or contributing to that code, but their advice and bug reports help improve the code.
- Quality is better than quantity. Rather than having a mass of relatively unskilled volunteers, it is better to have the help of a few people who really know what they're doing in a particular area. Judged against this criterion, the mozilla.org effort has been very successful in attracting the support of several very talented non-Netscape people, both as programmers and as informal consultants. To take one major example, many of the world's leading experts on Web standards (HTML 4.0, CSS, XML, etc.) have contributed valuable advice and feedback on the implementation of those standards in Mozilla; their help is a key reason why even in its current immature state the Mozilla code is more standards-compliant than any other browser available today.
- To quote a hoary proverb,
An ounce of prevention is worth a pound of cure.
Traditionally Netscape did design internally, produced internal alpha builds, and then released a public beta, at which point the public was finally able to critique the product and suggest improvements. Unfortunately, in many cases it was too late at that point to make widely requested improvements, because the developers had already committed to a particular implementation design and the product marketing folks were bound and determined to prevent them from going back and starting over; otherwise the product would have never shipped anywhere close to its projected release dates. Working in an open-source mode has allowed Netscape to get useful feedback right up front, in many cases before any code has been written, and change plans according; such feedback has not only helped Netscape make smarter decisions, it also (and even more important) has kept us from making dumb ones. (A good example here was the decision to rearchitect the product rather then try to struggle on using the old code base.) - There is no
"royal
road" to open source for commercial software companies. To
quote Jamie Zawinski, you can't
sprinkle [a project] with the magic pixie dust of "open source," and have everything magically work.
To elaborate, a company cannot simply release source code, put a few newsgroups up, and expect distributed development to magically self-organize; it will need to make a sustained effort requiring various people's time and attention in order to get a distributed open-source development effort to the point where it can produce results. In Netscape's case this effort did not end with the release of the source code on 31 March 1998; on the contrary, it has been a continuing project to get people used to "working in the fishbowl:" reading and participating in the Mozilla newsgroups, not using Netscape-internal lists for discussions that aren't in fact confidential, writing and publishing documentation and proposals for the benefit of those not in their immediate groups, and so on. I'm not talking just about developers either; the effects of open-source development are spreading (or will spread) outward in the corporation to also include quality assurance, technical support, product marketing, and related functions. - In relation to the previous point, it takes time to get a project ramped up to full activity, especially with regard to attracting large numbers of participants outside the original group. For much of the past year the Mozilla developers and mozilla.org have been working to address the core design and implementation issues around the Mozilla code itself, as well as the mechanics of converting an internal proprietary development project into a public open-source project. Now that that groundwork has been laid more attention can be paid to other areas where work is needed, like Mozilla testing by end users, more polished releases in terms of installation and initial configuration, and so on.
Issues Going Forward
That the past is past is a given; we can't change the effects of decisions already made and things already done. However there are several issues outstanding today that may affect the future success of the Mozilla project, and they're worth touching on here (with some suggested forums for followup discussion):
- Mozilla on small devices.
- There is much excitement in the press and elsewhere over the prospects for non-PC devices. Is the Mozilla architecture as currently implemented capable of being scaled down for truly small devices (e.g., PDAs, settop devices, cell phones, and similar "information appliances")? Are there possible design changes we should be looking at now in order to help make this easier? Or are outside developers going to be okay if they simply proceed using the current code base? (There's a new Mozilla newsgroup netscape.public.mozilla.small-devices for discussing these issues.)
- Recruiting more developers.
- What further steps need to be taken to make it as pain-free as possible for developers to hack Mozilla? The existing build instructions, project documentation, and Mozilla tutorial are good steps in this direction; do they need further supplementing? If so, what are the most important documents to create or improve? (A suggested forum is netscape.public.mozilla.documentation.) What about providing more stable releases and buildable versions: will the current milestone plan address this problem? (A suggested forum is netscape.public.mozilla.general.)
- Security and cryptographic code.
- As is well-known, the Mozilla security and crypto code was removed prior to release because of U.S. export control regulations. Unfortunately both U.S. export control regulations and the presence of third-party technology continue to prevent AOL/Netscape from releasing a complete SSL and S/MIME implementation for Mozilla. It would in theory be possible for AOL to release a limited set of security source code, but this code could only be used by developers in the U.S. and Canada, and would also require additional work and time to add implementations of all the cryptographic algorithms required, some of which are still subject to U.S. patents. Given these limitations, it's unclear that doing such a limited security source release would serve any useful purpose with regard to either AOL or the broader Mozilla project; however as time goes on this may change. (A suggested forum is netscape.public.mozilla.crypto.)
- Increasing corporate involvement in Mozilla development.
- Usually people think of Mozilla developers as being either Netscape employees or volunteers on the net. However as noted previously one commercial company has already announced a product based on Mozilla code, and several others are now involved in Mozilla development to one degree or another. The core mission of mozilla.org will continue to be to coordinate public Mozilla development and be the steward of the public source tree; however that mission will include not just working with net developers but also working with commercial companies that wish to contribute code to the project and use Mozilla technologies in their own products and services. Are there any things that mozilla.org could do to work better with commercial companies while pursuing the core goals of the Mozilla project? Are there things that mozilla.org could do to help net developers who want to do paid Mozilla development work (e.g., as independent consultants or as employees of other companies)? (A suggested forum is netscape.public.mozilla.general.)
Finally, there are always the issues of what will happen with the Mozilla project now that the AOL/Netscape merger has been concluded, and when AOL will fulfill the goal of shipping a branded Netscape Communicator 5.0 release incorporating the Mozilla technology. Concerning support of the Mozilla project, we have the expressions of support for Mozilla and mozilla.org by Steve Case and other AOL executives, combined with the rational expectation that AOL would not have acquired and be funding development efforts that it doesn't have any use for. As for release of Communicator 5.0, anyone who wishes will be able to track the progress of Mozilla development literally on a day-to-day basis, whether it being monitoring code check-ins, checking on build results across platforms, or testing nightly builds; you'll know almost as much about how things are going as we will.
The Mozilla project goes beyond just AOL and Netscape though; as many people have commented, "the code is out there" now and in a sense belongs to everyone. As such its prospects can be improved not just by the work of AOL and Netscape, but by the help of anyone who sees its value and wants to get involved. We look forward to working with all of you.