Hudson

The project has been created. Please visit the project page.

Hudson

The Hudson project is a proposed open source project under the Technology Top-Level Project.

This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the Eclipse community. Please send all feedback to the Eclipse Proposals Forum.

Description

Hudson is a Continuous Integration (CI) server. The canonical definition of CI was put forth by Martin Fowler and is as follows: Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. This article is a quick overview of Continuous Integration summarizing the technique and its current usage. Hudson is a CI server written in the Java language but is itself language agnostic. Hudson can be used to automate builds for Java, .NET, C/++, Python, Ruby, or PHP projects, is often used as the basis of a Continuous Delivery systems, but is not limited to any particular task as Hudson can really be seen as a sophisticated job scheduler capable of doing anything a human can do, except in an automated and determinsitic fashion.

Scope

The primary goals of this project are to make a high-quality continuous integration server and help the ecosystem of Hudson plugins, extensions and integrations flourish.

High-quality continuous integration system

This project will continue to improve the Hudson core by bolstering the test harnesses, creating a new performance harnesses, and fully automated test and release infrastructure. A process is in place to systematically move through the issues that are of most concern to users: improve stability, improve performance, improve Maven 3.x integration, improve the UI, and better integration for the most commonly used plugins. There is also a desire for the use of standard technologies, where present, in the Hudson core. A standard OSGi runtime model based on Eclipse Equinox, a standard component model using JSR330, and standard web services using JAXRS are high on the priority list. Compatibility is also of utmost importance while all these improvements are being made. Even though there are plans to use JSR330 as part of a new plugin model for Hudson, until the community decides otherwise, the existing Huson plugins will be supported without requiring changes.

Helping the ecosystem of Hudson extensions flourish

The health of the ecosystem surrounding Hudson is just as important as the Hudson core itself. There are plans to create Maven and Eclipse integrations for Hudson plugin developers. It has to be easy to create a Hudson plugin and have the ability to develop and debug it from the command line using Maven from within Eclipse (and other IDEs). There also needs to be a simple release process by which Hudson plugins can be deployed to Maven Central and be made available to users from the standard Hudson Update Center.

Why Eclipse?

Traditionally the Hudson project did not have formal structure or processes. It was grown from a pet project where the processes and structure implicitly evolved. It is now the desire of the Hudson project to formalize the process and structure of the project to help create a healthy, open environment with well-defined rules, development process and release processes for building a high-quality and reliable continuous integration server. Many options were considered before making the decision to create an Eclipse project.

The Eclipse foundation has a proven track record at building healthy environments for open source projects. It is supported and respected by thousands of users and enterprise companies. Hudson is used heavily at Eclipse and has become an integral part of the development infrastructure at Eclipse. The requirements the Eclipse Foundation has on the Hudson project mirror the requirements of all organizations that have sophisticated enterprise CI needs where many libraries, frameworks, and projects are delivered as one consistent platform on a predetermined schedule. The people involved in the Hudson project believe Eclipse would be a great home for Hudson and would mutually benefit the project as well as the Eclipse foundation.

Initial Contribution

The initial contribution of the Hudson core would consist of the codebase that can be viewed at Github here. The vast majority of the code is owned by Oracle, Inc., and currently the two major organizations that are contributing to Hudson are Oracle and Sonatype. A full enumeration of the 3rd party dependencies and their licenses can be found in the accompanying documentation which can be found here.

Legal Issues

There are several issues that will need to be dealt with regarding the Hudson code base. There are six 3rd party dependencies that are distributed under the LGPL. For the following dependencies an alternative will need to be found, the license of the 3rd party dependency will need to change, or the functionality required of a particular LGPL library will need to be re-implemented.
  • Java Native Access
  • jCIFS (http://jcifs.samba.org)
  • XOM (http://www.xom.nu)
  • JCaptcha (http://www.jcaptcha.net/)
  • JCommon (http://www.jfree.org/jcommon/)
  • JFreeChart (http://www.jfree.org/jfreechart/)

Committers

The following individuals are proposed as initial committers to the project:

  • Winston Prakash, Oracle (Project Lead)
  • Denis Tyrell, Oracle (Project Lead)
  • Geoff Waymark, Oracle
  • Susan Duncan, Oracle
  • Duncan Mills, Oracle
  • Jason van Zyl, Sonatype
  • Stuart McCulloch, Sonatype
  • Jason Dillon, Sonatype
  • Lucas Panjer, Tasktop
  • Doug MacEachern, VMware

We welcome additional committers and contributions.

Mentors

The following Architecture Council members will mentor this project:

  • Mik Kersten
  • Gunnar Wagenknecht

Interested Parties

The following individuals, organizations, companies and projects have expressed interest in this project:

  • Oracle Corporation
  • Sonatype, Inc.
  • IBM Corporation
  • Mik Kersten, Tasktop
  • Gil Clark, Intuit
  • Rod Johnson, VMware
  • Werner Keil, UOMo Project

Changes to this Document

Date Change
04-May-2011 Document submitted
16-May-2011 Mentor added. Contributors added. License ownership updated in 3rd party licenses