Infrastructure/Source Code Management

= Introduction =

For OXIDforge, a Source Code Management system is to be set-up. The purpose of such a system is to host various projects where the OXID Community collaborates on developing OXID extensions.

This page deals with the evaluation of various solutions and their pros and cons. The requirement for OXIDforge is a true open source solution that is available under a free license and is actively maintained.

= Candidates =

GForge AS Community Edition
GForge is based on the software that powers the well-known SourceForge.net web site. It offers everything needed for source code management in one place, centrally administered and with a common user database.

Previously, it has been actively offered as open source version, but nowadays, GForge seems to concentrate on the commercial GForge Advanced Server. They do offer a free version, which is not available in source code form, but rather binary compiled. It is also feature-reduced in many aspects, like removed LDAP support, non-searchable mailing list archives, limited templates and reduced project groups. There also exists an open source solution, which does not look actively maintained anymore, and a trend to the commercial edition is visible.

GForge offers free license keys for their advanced server (which, without a license, is limited to 15 users) for open source projects. Clear terms are not visible, nor is the validity timeframe of the key. Their own statement is, that you need to show up a working instance in order to be eligible for a key, which means that first time, money and content has to be invested before knowing your eligibility for a free key. It is also unclear if GForge offers keys only to open source projects, or also to companies with a dual-licensing model.

Although GForge is available for various distributions, its clear focus is on Red Hat and derivatives. Interestingly, Ubuntu 8 (8.04 is the latest LTS long-term support version) is not supported at all.

Using GForge Community Edition for OXIDforge therefore is not recommended.

FusionForge
FusionForge offers all advantages of GForge - everything in one place, centrally administered and a common user database - but is available in open source. It is a fork of one older GForge version. As SourceForge.net and GForge have a large user base, this solution can be considered mature, even if it's a new product.

As a bonus, FusionForge offers ready-to-use packages for Ubuntu and other operating systems that fit smoothly into the package management system and also offer some plugins via this mechanisms. Updating and deploying FusionForge setups is much easier than GForge, which only comes as a manual installer.

Quite some releases show the activity of the project.

GNU Savane
Similar to both solutions is a platform called GNU Savane. It also offers a large variety of features combined into a single website.

Origo
Origo is a tool written by the university of Zurich. In comparison to all other tools it is primary a hosted solution. Although a VMware appliance is available for setting up an own Origo instance, the authors do not recommend it for a production enviroment.

As OXIDforge is looking for a software to install on its own servers, Origo is not the right choice for us.

Launchpad
Launchpad, the source code management system written by Ubuntu founder Canonical, was announced to be open sourced on July 21st, 2009 as version 3.0. Information contained in earlier versions of this comparison was based on the available information about the open source edition at that time. No preview release has been made available at the time of the first writing, and the full feature set was not known.

Sadly, experiences with LaunchPad for a production site are not good. Installation is not trivial and is limited to certain Ubuntu releases. The install script modifies some system files without asking. Pre-compiled packages are not available, but rather LaunchPad has to be compiled out of the repository. According to the websites, LaunchPad for other distributions than Ubuntu is planned, but ready-to-use-packages are not planned, which makes installing and deployment quite complicated.

After a successful installation, LaunchPad is available locally under a local hostname, but connecting it to the public internet and a publically reachable domain name is not easy. Even if these problems have been dealt with, there still is the problem of stable releases and deployment/upgrade paths. In addition, Canonical requires change of text and image trademarks related to LaunchPad out of the running instance, but does not provide tools to do so. According to others who have done that, it is quite time-consuming.

According to various users - one of them being an IT journalist writing about LaunchPad - and according to a statement by one Canonical employee, LaunchPad is not meant for production use, but rather for developers who want to contribute to the official LaunchPad source code. The clear recommendation of all sides is to use Canonicals commercial hosted solution for production sites.

Therefore, for a self-hosted solution at OXID, LaunchPad cannot be recommended.

= Feature Matrix =

Here is a short comparison of the most important features:

= Discussion =

'This paragraph is kept for historical reasons in its original state. As stated above, it is now clear that LaunchPad is not meant for production sites, but FusionForge now finally provides ready-to-use Ubuntu packages. It is also now clear, that FusionForge offers connectivity to Mailman, the mailing list software used at OXIDforge. As a public bug tracker solely for OXIDforge has not been set up yet, the integrated FusionForge tracker might be worth a try.'

Depending on mid- to long-term needs on OXIDforge, the proposal is to either use FusionForge or Launchpad, because these two are most popular and widely adopted. FusionForge has more features than the development-focused Launchpad, but is also more complex to set-up and would require to use the integrated tools like bug tracker and mailing lists. Advantages are that we might use a common user database among all tools, but the binding to the platform will also have negative aspects. As an example, the currently used bugtracker will not be compatible with the one used in either platform, and for FusionForge, some modifications will have to be made to the wiki. On the other hand, it is also possible to only selectively use the integrated tools and keep those external that we want to be external.

Final decision on Launchpad can only be made after version 3.0 has been released, or if it will be available as a beta version/release candidate.

= Proposal =

'This paragraph is kept for historical reasons in its original state. For reasons on not choosing LaunchPad, see above. '

GForge is a quite large environment which combines some of the already existing elements like bug tracker and wiki, so data has to be migrated and design has to be adapted. GForge not only targets the development-related tasks, but also has a web framework, mailing lists and other things not directly related to development.

The proposal is to go with Launchpad, as it should fulfill all our needs in terms of development, while leaving us enough freedom to choose other components like the wiki, web framework etc. on our own. Initial setup time should also be significantly shorter with Launchpad compared to GForge as it has less components.

As soon as Launchpad 3.0 (or a beta/release candidate) is available we will start detailed evaluation. Shouldn't there be any major issues, it will be our system of choice.

In the meantime, other needed components like bug trackers, module SVN and such will be installed at OXIDforge and eventually migrated to Launchpad, so we don't waste time with waiting for the package.