3.1. Preconstructed Development EnvironmentsPreconstructed development environments (PDEs) are what I have chosen to call software development environments that are provided as a single set of software applications. (Whether or not they are practical development environments, as in the title of this book, is a separate issue for each PDE.) Another name sometimes used for them is collaborative development environments, but it seems to me that development environments are always collaborative, and what sets these environments apart is that they come ready-made, prefabricatedin short, preconstructed.
One well-known example of a PDE is SourceForge (http://www.sourceforge.net), which uses the term "software development website" to describe itself. A typical PDE provides an SCM tool, a bug tracking tool, a project home page, and somewhere to download released files from. Some PDEs also provide online discussion forums, weblogs, and "farms" of different machines for developing ports of the project to multiple platforms and for running tests. Some even provide databases ready for use by the different projects. Still others have usage statistics for each project and places to post requests for help or jobs. The various parts of the PDE should all work together and, as much as possible, already be configured to make hosting your project quick and easy. PDEs are rather like preconstructed houses. They are quick to set up and start living in, but they can be harder to change later on. One benefit is that once you have used a particular PDE for one project, it becomes easy to find your way around other projects that are using the same PDE. Once you have found the statistics for one SourceForge project, you know where to look for the statistics for every other SourceForge project. Another analogy is to writing a document. You can choose to either use a text editor to create the document locally on your own machine exactly as you want it, or enter the text on a remote machine (as with weblogs and Wiki entries), leaving the effort of formatting and publishing the document to someone else. (Wikis are web sites that can be modified by anyone.) Some of the potential benefits of PDEs are:
However, the benefits of preconstructed environments should be tempered with the following potential problems:
The differences between many PDEs are whether the source code that integrates the various parts of the PDE is open or closed source, and which tools are supported. If you want an exhaustive comparison of various open source PDEs, see the thorough "Comparison of Free/Open Source Project Hosting Sites," by Haggen So (http://www.ibiblio.org/fosphost). For now, I'll focus on the most popular PDEs: SourceForge, GForge, CollabNet, Savane, and BerliOS. These five PDEs are compared briefly in Table 3-1. The values for the number of projects and number of users are taken from each PDE's web site in August 2005. A plus sign (+) indicates a strength and a minus sign (-) indicates a relative weakness, either in features or usability.
3.1.1. SourceForgeSourceForge (http://www.sourceforge.net) is the original PDE, dating back to early 2000. The software to run the web site was originally open source but was then closed when the SourceForge web site was announced. As of 2005, it remains the largest PDE, both by number of registered projects (over 100,000) and users (over 1 million), though many of the projects are inactive. SourceForge is designed for open source projects and has mechanisms for donating to projects. Each project has access to a wide range of (mostly standalone) tools linked by a central project home page. There is also an option to subscribe to SourceForge for around $40/year, which gives you better searching abilities over all the projects, higher-priority technical support, and direct downloading of files. The bug tracking system is fairly basic. For example, you can add categories for your project's bugs but can't remove old categories. There is also a commercial version of SourceForge, SourceForge Enterprise Edition, which is available from http://www.vasoftware.com for around $2,750 per user. Some advantages of the commercial product are that it was designed for integrating with a wider range of different applications; security and access control is better supported; and it has a greater ability to search the project's source files and documentation. 3.1.2. GForgeGForge (http://www.gforge.com) is an open source PDE, though the GForge Group calls it a "collaborative development environment." The source code for GForge is a fork of the last open source version of SourceForge's source code. Numerous changes, including support for Subversion, have been made since then. Commercial support and even "plug and play" machines with GForge preinstalled are provided by the GForge Group, which includes some of the core GForge developers. The GForge Group itself does not provide any public project space using GForge, but it estimates that there are around 5,000 projects and 130,000 users of GForge. GForge 4.0 was released in October 2004. While GForge is open source, there are compelling arguments for using a preconfigured server or commercial support if GForge is being used in a corporate environment. For one, GForge has many different software components to be installed and configured. Customization of GForge in such a way that future upgrades will be possible is always going to be easier if the core developers do it. 3.1.3. CollabNetCollabNet Enterprise Edition (formerly SourceCast) from CollabNet (http://www.collab.net) is a commercial "collaborative software development environment." CollabNet was founded in 1999 by Brian Behelendorf and O'Reilly & Associates. As of 2005, the product costs around $2,400 per developer per year. Unlike the commercial PDEs from GForge or SourceForge, CollabNet maintains its system as a managed service for its customers. The development of CollabNet is itself distributed around the world and coordinated using CollabNet. The open source NetBeans IDE project (http://www.netbeans.org) is a good example of CollabNet in action, as is Sun's Java community at http://java.net. Tigris (http://www.tigris.org) is a free web site run by CollabNet to encourage the development of better open source software tools for collaborative software development. There are hundreds of relatively active projects hosted at Tigris, and the projects are carefully chosen to match the goals of the Tigris community. One of the best-known Tigris projects is Subversion, the SCM tool intended as a replacement for CVS (see Section 4.6.1 and Section 4.6.2). CollabNet offers Subversion as one option for its SCM tool. CollabNet also provides hosting and the development environment for the SCM tool CVS at http://www.cvshome.org. 3.1.4. SavaneSavane (https://gna.org/projects/savane) is the open source software package used to run GNU's Savannah PDE, which is where GNU software is developed (http://savannah.gnu.org). It also runs http://savannah.nongnu.org for other non-GNU free software development. Savane is also used to run the GNA! PDE at https://gna.org. The source code for Savane is a fork of the last open source version of SourceForge's source code. As of 2005, there are over 2,000 projects and nearly 30,000 registered users. Support for Savane is informal, but enthusiastic. 3.1.5. BerliOSBerliOS is a service funded by the German government and industry to encourage the development and use of open source software. Services are available in German, English, and Spanish. As of 2005, around 2,200 projects with just over 10,000 users are active at BerliOS Developer (http://developer.berlios.de), the PDE provided by Berlios. BerliOS also provides DocsWell, a database for open source-related documentation; SourceWell, a news service for open source projects; SourceLines, a best-practice database for successful open source projects; SourceBiz, a list of open source companies; DevCounter, a database of open source developer profiles; and OpenFacts, a Wiki-based open source knowledge database. Just like Savane and GForge, BerliOS Developer is based on early SourceForge source code and is still open source. Installation documentation for BerliOS Developer is rather scarce, probably since it is similar to SourceForge installation. 3.1.6. Improving PDEsIt's one thing to use a remote preconstructed environment such as SourceForge, where you're depending upon a remote group of toolsmiths to develop and maintain your development environment for you. It's quite another to expect to be able to run a single installation command and have a working SCM tool, a bug tracking tool, a web server, and so on. No PDE that I'm aware of is there yet, but I think that this is where PDEs should be heading. The alternative is to have a consulting company such as the aforementioned GForge Group do it all for you. Another area where PDEs could be improved is in the integration of their different partsfor instance, having SCM commits for a bug automatically add links in the bug entry to web pages that show the changes in the appropriate files. One approach taken by many large integration tools is to use a common data format for exchanging data between different parts of the application. This makes adding different SCM and bug tracking tools easier in the future, at the cost of having to add another access layer to every tool. This idea can be taken a step further: imagine a common data format to describe the services such as the SCM tool and bug tracking system that a project is using. Such a format would make it easier to import and export projects from different PDEs. Something to watch for in the future will be PDEs that come complete with automation environments, which are tools that perform lots of different automated tasks for you (see Section 3.4, later in this chapter). Automation environments that regularly check out your source code and then build and test the product can really help to bring a project together. Expect to see this appear as part of PDEs in the near future. |