Getting to grips with Callisto
Inside the Eclipse release
Eclipse  is not just a Java IDE, it is a tools platform, which supports an increasing number of projects. The broad scope of these was apparent in Callisto, the code name for a set of simultaneous project releases earlier this summer.
There are 10 projects in Callisto, including Java and C++ development tools, visual editors, database and reporting tools. It is an impressive bundle.
"We haven't actually found anything else coming from open source that has done quite the same thing," executive director Mike Milinkovich said. "Shipping seven million lines of code put together by 260 committers in 12 different countries working for at least 15 different organisations is a pretty significant achievement."
Few people will want to install all of Callisto, but in the interests of good journalism, I did so. Installation is a matter of downloading the Eclipse SDK and then using Software Updates, on the Help menu, to add the projects you want.
As you can see from Figure 1, there are numerous components.
Download and install took a while, but everything worked well on my Windows XP box, though Eclipse seemed to feel the strain with occasional "Out of memory" error messages. [Reader Alex Blewitt notes that the out of memory exception is really a JVM issue, though it would be nice if Eclipse would handle it a little more gracefully (it offers to shut down, then fails to do so on our system). He writes: "The JVM defaults to something like 64m of permanent generation space, and when you start bolting on lots of plugings, that can grow. The fix is to add -XX:MaxPermSize=128m into eclipse.ini on a separate line after the -vmflags argument. This is only an issue on Sun VMs."]
The main rationale behind Callisto is to deliver significant new releases on a predictable schedule. "We feel that is very important for encouraging commercial adoption," says Milinkovich. "This is now the third year in a row where we shipped in the last week of June." However, in past years the platform shipped first, followed later by individual projects. This year everything shipped together.
It is not only a matter of good marketing. There is also the problem of managing dependencies. Keeping up-to-date with multiple Eclipse projects can be frustrating, because of dependencies both on the core platform and between projects. Maintaining multiple Eclipse installations becomes essential.
So was Callisto born of necessity? "Somewhere in the middle," Milinkovich admits. "There's definitely a dependency issue that we manage between the different projects, and Callisto was born out of a desire to make it simpler for our consumers. But the drive for doing Callisto was very much a bottoms-up affair which came from a number of the leaders in the project community. It had a great side-effect as well, which is it forced a lot more interaction between the different projects."
Unfortunately, Callisto has rough edges which remind you that it comes from an open source community rather than a slick commercial release [although some commercial tool releases are none too slick neither – Ed].
The version numbers on the software update dialog reveal that not everything is finished, particularly the Data Tools Platform, which is at version 0.9 and with a number of missing pieces. The Visual Editor is Release Candidate 2, and so is the Java EMF Model. Continual dialogs remind you that code is unsigned and risky to install. Still, the point is that they do all work together.
It is interesting to see how Eclipse is becoming the tool platform for languages beyond Java. ";Eclipse has never been about Java," says Milinkovich. "We happen to implement in Java, but we have always been interested in developing tooling for as many languages and as many platforms as we can find interested parties willing to lead projects. C and C++ have been very successful for us. Having first-class support for PHP from Eclipse is also very important for the Eclipse community."
It is an easy decision for vendors like Adobe or Zend, or for open source communities looking for an IDE for up-and-coming languages like Ruby. If you set out to build an IDE, a lot of the work is in the infrastructure and plumbing. Eclipse gives you that free; and across multiple platforms.
Best on Windows?
The Eclipse platform is built using the Standard Widget Toolkit, which wraps native platform widgets in a cross-platform Java API. The idea of SWT is to provide excellent platform fidelity; but in consequence, there are more differences between platforms.
Is Eclipse best on Windows, acceptable on the Mac, and below par on Linux? "On the Mac in particular, I've been told that Eclipse running on the new Intel Macs are showing a major performance improvement," says Milinkovich. "On the Linux side, there have been some committers on Eclipse that have contributed back to GTK in the past to try to help with performance, but Eclipse is a very complex user interface and we're really straining the bounds of what GTK is capable of.
"I've talked to the SWT team about this several times and they really do feel that they've done everything they can do in SWT to make the performance better on Linux. Now there are some things coming in Cairo [a vector-based cross-platform graphics library] which are improving the situation on Linux as well. For example, getting printing working properly."
"The fact of the matter is, right now Win32 is probably the most finely-tuned GUI platform out there," he continues. "That's just a statement of fact. They've been at it a long time and they've got enormous resources, so they're fast."
These are contentious remarks, but in truth, one of the design goals of Eclipse was to compete effectively with Microsoft's Visual Studio. When Eclipse was formed five years ago, it was felt that this could not be done with Swing, the native Java GUI framework. That argument is now hard to sustain, but goes some way to explain why Eclipse is a good Windows citizen. Still, as Milinkovich notes: "There are a lot of Eclipse users on Linux and the Mac that are very happy with the performance."
IBM in disguise?
Eclipse was formed in 2001, when IBM open sourced a large part of its code for the Websphere Studio Java IDE. Eclipse could not have happened without IBM, but its large presence has raised suspicions among its competitors.
Borland's former CEO, Dale Fuller, assured me back in 2003 that Eclipse was full of "little booby traps" which direct you towards Websphere. Since then Borland has reversed its attitude, and the forthcoming JBuilder is built on Eclipse, but suspicions remain. so, I asked Milinkovich whether Eclipse is dominated by IBM.
"The governance of Eclipse, in terms of the board of directors, the Eclipse Foundation, the byelaws, and so on, are completely open and level." he replied. "IBM does not have any special vote or any veto power within the Eclipse foundation. When the Eclipse foundation was set up, IBM agreed that all of the votes from all of the committers who work for a particular company collapse into one vote. In other words, an individual committer member at Eclipse has as much of a vote for the board representation of the committer community as all of the committers from IBM combined. So I think IBM went way beyond the call of duty when they agreed to the governance model at Eclipse."
"The other side is that they are clearly the largest patron of Eclipse, and are investing the most in terms of resources. Frankly, I think that's a good thing. I'm never going to turn away a project proposal from IBM just because it comes from IBM. But we have seen over the last two years a significant drop in the proportion that IBM represents at Eclipse in terms of the committer population. They've dropped from somewhere around 80 per cent in 2004 to just below 50 per cent now. We're doing that by growing the number of projects and committers at Eclipse, not by turning away good ideas or good people from IBM."
Committers are those who have write access to the Eclipse code repositories. To become a committer you have to be elected by existing committers on a project. That is the only requirement, so committers can be individuals or from companies which are not Eclipse members. Milinkovich estimates that "15 per cent of our committer population are individuals".
Hands on with Eclipse
Eclipse has always been a strong Java code editor, and in this respect, it is generally a pleasure to work with, with plentiful refactoring tools, good support for test-driven development, and a generally helpful editor.
Eclipse is now beginning to compete in other areas, but some of the newer tools are not yet mature. The Visual Editor for Swing or SWT is much improved on earlier versions, yet for usability it is no match for the Matisse editor in NetBeans. Some developers still prefer the cleaner two-way code and visual editing in Eclipse. The Data Tools Platform looks promising, but is at an early stage of development. The Web Tools Platform is significantly improved, particularly for Web Services; but despite its popularity Eclipse does not stand out as the best overall development tool for Java.
Documentation is good where it exists, but more is needed, and the Eclipse website remains difficult to navigate and perplexing for newcomers. When working with Eclipse I find myself missing Borland's abandoned non-Eclipse JBuilder, which is more consistent and stable and has excellent visual tools; and for pure Java development, NetBeans is now at least as good overall. That said, Eclipse is in most respects good enough, when considered as an end product.
The great strength of Eclipse is its role as a tools platform, and here it is second to none. It is a mistake to judge the platform purely on today's projects, since much of the work is future-oriented, building reusable frameworks and infrastructure. Many users only see the Visual Editor, but behind it is a range of modelling and editing frameworks which ultimately count for more. When Adobe released FlexBuilder earlier this year, which is based on Eclipse, it offered an immediately familiar working environment to countless existing Eclipse developers. This kind of instant accessibility is hugely valuable. Eclipse skills have become near-essential for developers outside the Microsoft world.
Will there be another Callisto? "Most certainly," says Milinkovich. "We've already proposed a name for next year, and it's Europa. We're using a Moons of Jupiter theme. Apparently there are 67 moons of Jupiter so we should be good for a few years."
Adjunct: The Callisto projects
C/C++ Development tools (CDT)
- Eclipse as a C/C++ IDE. Targets gcc by default.
Data Tools (DTP)
- tools for accessing, viewing and manipulating data sources.
Eclipse Modelling Framework (EMF)
- tools for working with structured data models.
Graphical Editing Framework (GEF)
- create graphical editors for application models.
Graphical Modelling Framework (GMF)
- a generative component and runtime infrastructure for developing graphical editors.
Java Development Tools (JDT)
- development of any Java application, including Eclipse plug-ins.
Java EE and Web Tools (WTP)
- Tools for developing Java Enterprise Edition and Web applications.
Reporting Tools (BIRT)
- A reporting system for both web and PDF.
Test and Performance Tools (TPTP)
- a platform for building test and performance tools.
Visual Editor (VE)
- Frameworks for creating GUI builders.