Playing with Jazz

Yeah, you read correctly: “Playing with Jazz”. Jazz is the new Application Lifecycle Management software developed by IBM Rational. In other words it is an all-in-one Source Control Management, Continuous Integration and Issue Tracking server. Currently I’m developing a lot of plugins for my client that are meant to integrate Jira, Subversion, Maven, ClearCase, our custom bug tracking software, our custom made overnight testing and reporting, Eclipse IDE etc. Jazz is supposed to provide these features and much more out-of-the-box. I’ve seen the demos and I was really impressed. So, now that it’s open for download, I registered and downloaded the server and the client.

Well, things are not that impressive when you start working with it. The product isn’t that ergonomic. It presents a relatively steep learing curve for the basic functionality.

Ideally an administrator would:

  1. install the server (it should be added automatically as a windows/*nix service)
  2. start the Jazz service
  3. connect to the web-admin interface
  4. create some users

The developer:

  1. installs the Eclipse Jazz plugin
  2. connects with his username/password
  3. uploads a project or two in the repository

The server:

  1. autodetects how to build and test the projects (eclipse/ant/maven)
  2. starts doing this immediately with a predefined schedule (continuously)
  3. if there are failures it notifies the responsible developer
  4. build and test status are visible in the status bar of the IDE

What happens in reality is not that simple. You need to create a project area, define the process, create a team area (A team area is just a team, the word “Area” was added so that you don’t confuse the representation of a team in Jazz with the people sitting around you), create a development line, create a workspace, create a stream from your workspace to the development line, create an iteration plan, an iteration, a build configuration, a build engine etc.



What I would like to see is a product where the novice user and even the administrator initially, don’t need to know about project areas, iteration plans, development lines, streams. All these are advanced features. The first impact should present a shared versioned storage where you place your projects and it tells you whether the projects are building and whether the tests are passing. Users should be able to add tasks without having to define an iteration or an iteration plan. And most of all, I don’t like the Team Artifacts view. It’s an heterogeneus collection of entities in the Jazz server unimmaninatively organized into a tree. Integration with Eclipse should be tighter. Eclipse already knows how to build and test my projects. Why do I need to specify those things in two different places?

Don’t get me wrong. I don’t want to say that Jazz is overengineered. Most of the entities involved are necessary for such a product. Even multiple project areas and streams. But the point here is that they are presented in the wrong way. Advanced features should be hidden from the user and the product should be usable out-of-the-box. Ok, it took me less than 2 hours to install the server, read the instructions and configure a project, and another hour to troubleshoot the automated build. But there is really no reason why it should take more than 5 minutes.

I really hope that Jazz developers will take this as a constructive critique and deal with these issues before the release of Jazz. Otherwise they risk to loose a multitude of potential customers who need only simple configurations with the most basic process. And it’s from projects like these that you get the most publicity, community involvement and knowledge sharing.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s