Dr. Dobb's Journal August, 2005
The VSTSEclipse project started with a conversation about how Eclipse users could utilize Visual Studio Team System, Microsoft's software-development lifecycle solution. In this article, I introduce the VSTSEclipse project, state its goals, and explain how it can impact the development community. I then examine two major components of the project. In future articles, I will detail specific development issues and components. But first, a little background.
Visual Studio Team System (http://lab.msdn.microsoft.com/teamsystem/) is an integrated suite of lifecycle tools that is part of Visual Studio 2005. As such, Visual Studio Team System (VSTS) provides facilities to support integration and communication among architects, developers, testers, project managers, and others involved in the software development lifecycle. As Figure 1 illustrates, VSTS for architects includes tools for visually constructing service- oriented solutions, while tools for developers include those for static analysis, code profiling, code coverage, and unit testing. Tools for testers include unit testing, manual testing, web testing, and load testing. In addition, support for development teams includes tools for project tracking and source-code control.
For its part, Eclipse is an open-source framework for integrated development tools. However, Eclipse, which is maintained by the Eclipse Foundation (http://www.eclipse.org/), is more than just a Java IDE. The Eclipse platform is built around a plug-in architecture and provides the runtime in which plug-ins are loaded, integrated, and executed, with the ultimate goal of enabling developers to easily build and deliver integrated tools. While the Eclipse SDK includes a Java IDE, the platform also supports other languages, primarily C and C++.
With the Beta 2 release of Visual Studio 2005 and Team System, the .NET community is anticipating the opportunity to utilize VSTS functionality on projects ranging in size from small to enterprise. More often than not, software projects based on .NET utilize the Visual Studio IDE for all facets of the development process, and Team System seamlessly integrates on top of the development process, bringing improved integrated project functionality.
But what about project teams that want to utilize Team System's integrated SDLC functionality, yet aren't .NET based? This is the niche that VSTSEclipse project addresses.
The VSTSEclipse project (http:// sourceforge.net/projects/vstseclipse/) will provide an Eclipse plug-in that lets you effectively utilize Team System core functionality outside the VSTS framework. The importance of this functionality is evident when you understand how critical communication can be between the processes and components of a successful software project. One example is keeping track of application builds and releases on a software project. How do you know what has gone into the build? Were changesbug fixes, for instancemade to the previous code base? Who made those changes? Who is assigned certain tasks that need to be in the build before it is released?
What is their progress with the task? These questions are extremely important for project managers who are trying to aggregate this information for this scenario and determine the state that their project is in. Information aggregation is made easier and more relevant when the respective components are effectively communicating and linked together.
Granted, there are any number of tools available that assist in executing the particular components of a software project, regardless of the base programming languagefor example, source-code control, application building, application deployment, and task tracking (work item tracking). However, it is rare that any of these tools integrate these different processes effectively and add significant value to the life of a project. This is where Team System comes in.
VSTSEclipse will initially concentrate on getting a few core features of Team Foundation Server (the collaboration server component of VSTS) integrated into the Eclipse development environment, ready to use on any project instance that uses VSTS. These features include work item tracking, Team Foundation source control, and possibly Team Build integration. Wouldn't it be great to build your Java application with Microsoft's new build framework via your Eclipse IDE? (Well maybe. It depends who you talk to!) The point is, the freedom of choice will be there for non.NET developers to take advantage of Team System technology. And as more of the generic project functionality of the Team System product is explored and utilized within the .NET community, the likelihood of that same functionality wanting to be exposed to the Java/Eclipse community will be quite high.
A brief technical outline of the project begins with breaking it up into two main components:
Version 3.0.2 of the Eclipse plug-in framework makes it straightforward to implement custom plug-ins, but not necessarily without its complexities. We are aiming to provide seamless integration of the different Team System features within the Eclipse environment that developers are used to. This basically translates to having somewhat similar IDE functionality in Eclipse as to what is provided in Visual Studio 2005. This will entail customization of mostif not allof the Eclipse user-interface elements, such as perspectives, views, and editor layouts. The relevant Team System functionality will be called on different occasions through the Eclipse user-interface experience, including user action, menu selection, pop-up menu action, and even on the initial load of the Team System perspective. This leads us into the second component of the project, integration of features between Team System and the Eclipse development environment.
The feature integration component promises to be interesting to implement because it will be cross platform between Java and .NET. There are a few strategies that we're currently examining, including wrapped VSTS API calls, web-service utilization, and bridging framework implementations. Each has its advantages and disadvantages, and is subject to scrutiny by the VSTSEclipse team. Relevant features in Team System that we are looking to integrate are currently being investigated in terms of how they work "under the hood" so that we can fully understand how they will be efficiently integrated into the Eclipse environment.
One of the main considerations of creating the initial architecture will be to understand the availability of separate components that make up Team System to developers. We are looking to avoid heavy dependencies on the Eclipse environment. Having said that, there will undoubtedly be certain dependencies initially on the availability of the Team Foundation Server.
The VSTSEclipse project resides on SourceForge.net (http://sourceforge.net/projects/vstseclipse/), a web site that hosts collaborative open-source software projects. We currently have five team members, including two Microsoft employees (U.S. and Australia based) and are in the planning stages of how the plug-in will fit in with the Eclipse environment and what architecture is required to enable cross-platform communication between .NET and the Java Virtual Machine.
The plug-in produced will be freely available for community download upon release, and hopefully allow organizations that are considering using Team System functionality, but do not have a .NET code base, to take advantage of the core target features provided by the Team Foundation Server.
We welcome any support and collaboration from the community if anyone is interested in joining our initiative. Head on down to SourceForge.net, register for the VSTSEclipse project, and make a contribution.
DDJ