
Erich Gamma, a Distinguished Engineer at IBM Rational Software, is delivering a keynote on the Jazz project at TheServerSide Java Symposium 2007. A joint technology endeavor between Rational and IBM Research, Jazz seeks to extend the Eclipse software development environment to a team collaboration platform. In this interview, Gamma talks about the vision for Jazz, and how the platform is designed to make development teams more effective by improving quality and collaboration, and increasing transparency.
TSS: What is the vision for Jazz?
Erich Gamma: For Rational, the vision for Jazz is to drive innovation in software development by integrating tools and assets in a collaborative environment. To put it simply, Jazz helps teams work together more effectively. In my previous work on Eclipse, the focus was on how to make an individual developer more productive—support for refactoring and intelligent coding assistance are the primary examples. With Jazz, we are looking to teams with the goal of making teams and teams of teams more productive. To do so requires tool support across all phases of the software lifecycle. We are therefore building an extensible platform that enables the seamless integration of tasks across all phases.
When teams work together they follow a particular process. Jazz is process-aware, and a particular process can advise how the tools behave. As a consequence, the tools built on top of Jazz technology understand how a team works. Finally, we haven’t forgotten that software development should be fun and enjoyable.
TSS: What are the biggest challenges facing projects today, and how does Jazz try to address them?
Gamma: The biggest challenge is to ship quality software on time in the face of changing requirements and often geographically distributed teams. This is hard. It requires talented people. This cannot be tooled away.
During six years of shipping Eclipse on time and using what we call “the Eclipse way” process, we have learned many lessons. A key one is that transparency in software development enables feedback loops, which improve predictability. With transparency also comes accountability, a key ingredient for a healthy project. Therefore, a goal of Jazz is to support making software development more transparent, enabling continuous feedback without increased burden on team members. We address this by providing seamlessly integrated tools built on top of a common platform. The integration enables tools to collect data about the project as it progresses. As a consequence, you can find out what is going on in a project without having to ask.
Here is an example: A build breaks due to a JUnit test failure. With Jazz you create a bug to track this failure; Jazz links the bug to both the build and the failed test. The bug is assigned to a developer and the developer eventually delivers the fixes to the team. The change set corresponding to the fix is linked to the bug. When the change set is built, another link is established between the build and the change sets. You now have traceability from a failed test to the corresponding source changes and builds. This is achieved without turning team members into bookkeepers. Finally, all these events can be observed using RSS feeds. All the information is available to everyone.
TSS: Will Jazz give business units greater visibility and control over development projects?
Gamma: Jazz is an extensible platform and open for additional integrated tools. For example, we are currently exploring a Jazz-based requirements tool. It builds on top of Jazz technology and leverages its linking services so that requirements can be linked to development tasks, etc. This gives a business unit traceability and visibility about their requirements. In particular, it allows business units to find out when a requirement is done and integrated in a build. The fact that the links are established automatically as you develop makes them actually believable. Business units can monitor progress by subscribing to an RSS feed, and the status of development tasks can be tracked through the Jazz Web UI. In addition, the Jazz technology provides a reporting component that provides additional visibility and insight into how a project’s quality evolves over time.
TSS: How will Jazz help Agile development? Can globally distributed development teams utilize agile methodology, which encourages proximity and small teams?
Gamma: We once received a nice compliment for our work with Eclipse: “The distributed Eclipse team demonstrates that agile methods can scale up to distributed development.” In fact, when building Eclipse we never had the “luxury” of developing in proximity or in a small team environment. We have continuously evolved and tuned our “Eclipse way” process. Over time we have adopted practices that worked for us from other agile methods.
In our work on Jazz we have heavily reflected on how we work as a distributed team and what our pain points are. Having said this, it should come as no surprise that the first process we are working on integrating into Jazz is the “Eclipse way,” the process we breathe ourselves. However, Jazz is designed to be open for other processes and we expect that over time many other processes will become available for Jazz. Actually, we are now consuming our own development results and Jazz is now fully developed with Jazz itself. It is used by our distributed team with locations in the United States, Canada, Switzerland, France and sometimes India.
TSS: Controlling the quality of offshore projects is often a problem for organizations. How will Jazz help improve collaboration between U.S. and offshore developers?
Gamma: I’ve already mentioned the traceability and the reporting support. In particular, the reporting component enables understanding of how the health of a project evolves over time: What is the test coverage? What is the code churn? In addition, the integrated process support enables organizations to define the process that should be followed. This includes process guidance documentation, but even more important, process-specific advice on how the tools should behave.
For example, you can establish rules that code changes can only be delivered when they were reviewed and approved. When it comes to spontaneous collaboration, Jazz provides support for integrated instant messaging. For example, you can engage with the person [who] wrote a particular requirement or changed a particular line of code. During such a conversation you can easily reference a particular team artifact like a change set or a requirement and pass the reference to your peer and integrate the artifact into your conversation.
TSS: How is Jazz different from other tools?
Gamma: Jazz takes a fresh look at how teams collaborate. For example, we have reflected on how we, the Eclipse team, worked and collaborated. We have reflected on our and our customers’ pain points. As a consequence, we have put teams in the center. We also refer to this as “team first.”
The team focus of Jazz shows up in many areas. For example, the Jazz process integration enables teams to own and customize their process in a team-specific way. Teams can have their own continuous build. Notifications, events and RSS feeds are scoped to a particular team; artifacts belong to teams, etc. Inside Jazz we present awareness of who is present and what is going on in the team, consistent with our goal for increased transparency. To support scaling up to teams of teams, Jazz enables component-based development where teams own components and collaborate with other teams on their development. This kind of support is critical to scale up agile development to teams of teams that are even globally distributed.
Other interesting aspects are that Jazz is extensible on both the client and the server. In particular, we are using the same Eclipse-based extension mechanism not only on the client, but also on the server. We are leveraging the work from the Eclipse Equinox project. Finally, since we believe in transparency, Jazz will eventually be developed using what we call Open Commercial Software Development. This means we intend to leverage our Eclipse open source experiences in a commercial context, by developing and evolving Jazz, as a commercial effort, in an open and transparent manner.
TSS: What, if any, impact will Jazz have on RUP?
Gamma: Jazz process support is not specific to any particular process. The fact that Jazz is process-aware can be leveraged by RUP-based processes. They can advise and configure how Jazz tools behave. RUP is also continuously refined; practices uncovered by Jazz will certainly find their way into RUP over time.
TSS: Does Jazz mean that more organizations will ultimately "standardize" on Eclipse?
Gamma: We are heavily relying on Eclipse. Jazz extends Eclipse on both the Jazz client and Jazz server. Our ongoing work on Jazz pushes the limits of Eclipse and in the end will help us to advance both Eclipse and Jazz.
Erich Gamma is a Distinguished Engineer at IBM Rational Software's Zurich lab. He is one of the leaders of the Jazz project and a member of the Jazz PMC. He was the original lead of the Eclipse's Java development environment (JDT) and is on the Project Management Committee for the Eclipse project. He has co-authored several books, including Design Patterns - Elements of Reusable Object-Oriented Software .