Jazz is a scalable, extensible, team collaboration platform for seamlessly integrating tasks across the software lifecycle.
Developing software in a team is much like playing an instrument in a band. Each musician must play his or her part while also staying in tune and in sync with the others. They must agree on how they communicate, and they must pay attention to the signals that they send each other, or the performance collapses. Strong collaboration and individual virtuosity are both required. Similarly, software developers must focus on building quality code and coordinating their activities so that all of the pieces fit well together.
Integrated development environments (IDEs), such as Eclipse, have succeeded in improving individual productivity. However, developers are as actively engaged in working with their teams as they are with writing their code. This is where the Jazz Platform comes in, shifting the focus from the productivity of the individual, to the productivity of the team.
Consider the work it takes for a team to track and fix a hypothetical bug. The work of fixing a bug flows within the team, from Mike who discovered and reported the problem, to Rick who reviews incoming bugs reports and assigned the work to Susan, to Susan who fixed the bug, and finally back to Mike for verification. The bug fix itself also flows within the team, from Susan who fixes the problem in the code stream to Mike who verifies the fix in the build that contains it.
These flows can be fragile. The flows within the team break down if a fix is checked-in without updating the bug report, or if there is no link to connect the fix to a particular code stream and build. These breakdowns can lead to confusion within the team and impede progress. To make matters worse, a breakdown might not be immediately apparent to anyone on the team. There is also an interleaving of domain-related work (e.g., writing code for their software product) with work related primarily to maintaining coordination with their team (e.g., marking bugs as fixed).
Although the IDE integrates several tools, the developer is still doing a lot of repetitive bookkeeping work by hand, work that is critical to keeping the team working together effectively, but also work that is very easy to forget or to do incorrectly. It would be better if Susan could simply tell the IDE that she was now working on fixing a particular bug. Then, when she completes the fix and test case, she could indicate that she was done. Without further action on her part, the system would commit the changed files and associate them with the bug report, update the build notes, and mark the bug report as closed. If the tools automated the bookkeeping in this way, it would help make the team more effective by ensuring that the important connections between bug reports and code check-ins are reliable. At the same time, it would make the individual team members more effective by automating tedious and error-prone bookkeeping duties.
Jazz is a team collaboration platform for the full software lifecycle, designed to support seamless integration of tasks across all phases of the software lifecycle (the earlier example scenario touches on a few common tasks in the middle of the lifecycle). The Jazz Platform is designed to be extensible both on the client and the server, and to scale from very small teams to large enterprise installations. It incorporates the notion of tool-supported process guidance, where the tools understand the team's development process and help team members to follow this process without getting in their way.
The Jazz Platform is not just intended to integrate existing point tools, but also to provide a platform upon which to build much more integrated lifecycle tool function than previously possible. When development tools are integrated across the lifecycle in this way, it becomes possible to do things unimaginable with a set of bolted-together point solutions. Integrated end-to-end tools like this can help teams build software more effectively, and make the software development activity more enjoyable.
The Jazz Platform is designed to allow comprehensive support across the entire software development lifecycle. One thread that runs throughout all phases of a project is the process that the team members have agreed to follow. By teaching the Jazz Platform about the process, it can help the team in process-specific ways. This process support can come in a wide (and completely open-ended) variety of forms, ranging from on-the-fly rule checking, to offering online (e.g., F1 key) process help, to automating bookkeeping. The Jazz Platform supports process in the following ways:
The Jazz Platform is designed and built to do the following:
The Jazz Platform's principal role is to provide tool writers with mechanisms to use, and rules to follow, that lead to seamlessly-integrated lifecycle tools. These mechanisms are exposed via well-defined APIs. The Jazz Platform also provides useful building blocks and frameworks that facilitate developing new tools.