One of the most interesting places where open source and Java technology overlap is a little integrated development environment (IDE) known as NetBeans. NetBeans' path to open-sourcedom was a circuitous one. In 1996, a group of Czech students set out to author an IDE in pure Java. The idea was to take the best features of Delphi and create an easy-to-use, cross-platform environment where code could be edited, tested, and debugged. They called their software Xelfi.
Enter Czech entrepreneur-engineer Roman Stanek. Encouraged by meeting with Internet visionary and venture capitalist Esther Dyson, Stanek was on the lookout for a good idea to capitalize on. He stumbled across the Xelfi group on the Web, struck a deal with the developers, founded NetBeans with his own money, and then received funding from Dyson.
The company remained lean, releasing several versions of the IDE and supporting the latest in Java technology, such as Swing, Servlets, JDBC, JavaServer Pages (JSP), and XML. The IDE was built to be compact, robust, and easy to use and install. Sales offices were opened in Silicon Valley. But the company was hard-pressed to turn big profits, given the economics of software tools and Java's client-side behavior. Because the product was written in Java, it was slower and required more memory than native-code IDEs. Also, other development tool vendors most notably Microsoft could afford to give their products away cheaply, or even for free.
Meanwhile, Sun Microsystems, creator of Java, had no real Java development tools to speak of. Most users found Sun's Java Workshop and Java Studio products lacking and difficult to work with. In order to promote the use of Java, wanting to make Java a universal language, Sun had a strong reason to support a powerful Java IDE that ran on any platform and could easily be extended. The PC had some strong IDEs for Java development such as Borland's JBuilder, Symantec's Visual Cafe (now owned by WebGain), IBM's Visual Age, Oracle's JDeveloper, and Microsoft's now-discontinued Visual J++. But there were few good Java-centric environments for Linux, Solaris, or other operating systems.
So Sun bought two leading Java tool companies Forte and NetBeans. They rolled together Forte's SynerJ IDE and NetBeans and released a pretty decent product called Forte for Java Community Edition. They gave Forte away for free. They also released pricier versions: An Internet Edition for developing back-end software on a single Web server and an Enterprise Edition for deploying large, distributed Java applications. But while the Forte products were popular, they didn't exactly spread like wildfire. And it was costly to continually add all the features that developers were requesting.
And so, in June 2000, Sun decided to take every NetBeans component (except for the browser and compiler) open source. With the help of a company called Collab.net, Sun deployed a place for developers to work called NetBeans.org. The license is called the Sun Public License (SPL), a minor variation of the open-source Mozilla Public License (MPL) from Netscape.
NetBeans code continues to form the basis for Sun's official suite of Forte products. Essentially, Sun "productizes" major NetBeans drops by extensively testing them and branding them with items such as official Sun splash screens. They then provide Forte's users with full technical support.
Setting It Free
Sun's motivation for open sourcing NetBeans is clear. Letting developers get their hands dirty with the code will make for a richer IDE that will work on many platforms and contain features and a user interface that developers actually find useful. Such a product would, so goes the theory, create a wider base of more dedicated Java programmers. Allowing the community to work on NetBeans code is also a smart political move on Sun's part, helping to build trust and dedication among Java developers.
Many people have their eyes on NetBeans as a possible indicator of whether Sun will embrace open source for other Java products, or even components of the Java language itself. Along with the usual open-source debate, such as whether letting too many cooks stir the pot will add bugs or make for higher-quality product, there are lots of other questions:
Can Forte compete with commercial IDEs, which are usually faster and more stable? So far, it seems to be keeping pace. Forte's ability to quickly weave together the latest Java technologies makes it a favorite among both reviewers and users. And the price is definitely competitive. But it's unclear whether Forte's target audience hard-core developers enjoy using IDEs at all: Many are happy using Notepad or vi or other text editing programs.
But the real question is how many independent developers will actually take their time and effort to work on NetBeans for no pay? Looking at the latest list of contributors brings up only 60 different developers, most of who are on the Sun payroll. Certainly, having access to the source code is incredibly useful for companies hoping to write plug-ins or attachments to Forte. But for the average Java developer, there's little reason other than sheer curiosity to waste much time with NetBeans.
All that being said, NetBeans is an impressive collection of code. The open architecture allows third-party vendors to develop plug-ins such as No Magic's Magic Draw UML diagram designer or Metamata's Debug utility. Sun itself has created a cool J2ME Wireless Toolkit that plugs into Forte and makes it easy for developers to create applications for Java-based cell phones.
NetBeans' main modules include the core, the source editor, a debugger, a form editor, Java support, open IDE plug-in support, Web support, and other tools. Some experimental modules modules that are currently being worked on but are not necessarily stable include integration with the Ant build tool, support for C or C++, an Emacs text editor, a way to view or edit Java bytecode, Jini support, scripting language support, a wizard to help make classes serializable, and native filesystem support. There's also a lengthy wish list for future modules requesting support for things like ArgoUML, the Retrologic obfuscator, to-do lists, Pizza, XML beans, JUnit testing, JNI, Jikes, image editing, JavaCC, Java3D, and much more.
It's easy to join the development effort. As with all open source products, you can help a lot just by trying out Forte or the latest NetBeans drop and writing detailed bug reports when things go awry. You can also request features or modules that you think sound cool without having to write them yourself. Your dreams might be made reality.
Of course, the biggest component of open source is the source code itself. You can either download the latest archive of code or see the code online. If you want to get serious about NetBeans, though, you'll need to use the Concurrent Versions System (CVS) of source control an open standard for storing and editing source code.
The source for NetBeans can be found in a CVS database with directories for every top-level project and subdirectories for individual components. You can download a CVS client, or, surprise-surprise, use CVS support via a stable version of NetBeans itself. You can log in without a password to get anonymous read-only access to any code file.
Often, you'll just need to build the specific component you're interested in working on. The component can then "plug in" to a stable NetBeans build. You can either build by hand using the latest version of the Java Development Kit, or use a custom make-system such as Ant.
The first thing you'll want to play around with is bug fixing. Find a module you're interested in and have a look at the Bugzilla database. If you find the solution, either post your idea for a fix or write a code patch and post it to the bug database.
Really motivated programmers may want to create their own modules from scratch. One can write a module according to the NetBeans OpenAPI and sell it, give it away, whatever. If you want your module part of the open source effort, however, send the finished code to firstname.lastname@example.org. An archive of your message, as well as any responses, is available on the NetBeans site. If your module is accepted, you'll become the proud owner of the component and can oversee its development. It will be given its own CVS directory, bug database category, mailing list, and series of Web pages. You can use the Sun Public License or any license you want (General Public License, Lesser General Public License).
If you're ready to contribute seriously to a piece of the NetBeans code, just write the owner of that module. He or she may grant you your own CVS account, with permission to edit or add code to a specific branch of the source database.
Open to Change
In general, one of the most important tenants of open source code writing is clear and constant communication. You should always post a message to email@example.com to be sure that whatever you're working on isn't already being developed, to get help from those more experienced in various modules, to find coding partners, or anything else.
If you do decide to help with NetBeans, not only will you experience the joy of having worked on a popular piece of software, but you may help inspire Sun to bring more and more of their Java products into the open source world.
About the Author
David Fox is vice president of Games at PlayLink, Inc. He's also the author of numerous books and articles about cyberculture and technology.