Jump to: navigation, search


< Virgo
Revision as of 07:19, 8 December 2010 by Spowell.vmware.com (Talk | contribs) (Machine Setup)

Committers Charter

Committers are responsible for:

  • Maintaining and enhancing the Virgo code base
  • Responding to queries on virgo-dev
  • Handling contributions
  • Developing contributors into committers
  • Complying with Eclipse IP policy
  • Keeping an eye on the Virgo forum

Machine Setup

You need Sun JDK 6, Apache Ant 1.7.1 or later, and git. You'll probably want an IDE such as Eclipse.

At the time of writing, some ant targets occasionally fail because they cannot load classes from jsch-0.1.42.jar. A workaround on Mac OS X is to copy this JAR from virgo-build's /lib/ivy directory to /opt/local/share/java/apache-ant/lib.

On Mac OS X, increase the default number of concurrently open files by adding this to .profile:

       ulimit -n 10000

To run certain scripts (don't run them unless you know what you're doing—and why), you'll need ruby, gems, and the 'choice' gem. On Mac OS you can get these by installing the XCode tools (from the Mac OS X disk) and MacPorts, then issuing:

       sudo port -v install ruby
       sudo port -v install rb-rubygems 
       sudo gem install --remote choice

Notes for Ubuntu 10.04

I have found that the sun-java6-jdk package is not installable directly from a fresh install of this level of Ubuntu (I'm running this in a virtual machine). I set JAVA_HOME to be /usr/lib/jvm/java-6-sun which is a symbolic link.

To get the jdk to be installed I issued the following commands (which you might find useful):

   sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"

(which made the package visible to the package-manager)

   sudo apt-get update

(to reset the package-manager indexes)

   sudo apt-get install --fix-missing sun-java6-jdk

The fix-missing option is necessary since other packages are required.

Have fun!


Virgo has a strong emphasis on maintainable, or "clean", code. If you need a really good introduction to coding, we recommend "Code Complete". If you are already a proficient programmer and want to write really clean code, read "Clean Code". If you are not an expert in writing Java, read "Effective Java".

Virgo code is thread safe unless specifically stated. Achieving thread safety in Java is not easy. We recommend "Java Concurrency in Practice" for a good grounding in Java concurrency.

Coding guidelines are here.


See Test.

IP Due Diligence

Handling Code Contributions

Committers are responsible for ensuring that Eclipse IP policy, summarised in the legal poster, is adhered to. Patches must be attached to a bugzilla bug, the bug must have its iplog flag set to '+', and the contributor must confirm in the bug that: they wrote 100% of the code, they have the right to contribute the code to Eclipse, and new Java file headers contain the appropriate License header.

Raising "works with" CQs

"works with" CQs are required for test dependencies which are not distributed with Virgo or checked in to Eclipse version control (git, svn, cvs).

The initial set of test dependencies was determined, for repositories which are built with ant, as follows:

1. In the build-xxx directory run ant report

2. Extract a raw list of the test dependency jars

find <report directory> -name "*-test.xml" -exec grep -E \/.+\.jar  {} \; >test-jars.txt

3. Edit test-jars.txt using an editor with a regular expression global change facility and do the following global changes.

3.1 Replace regex .+\/(.+)\.jar\"> with $1.jar.

3.2 Replace regex .+\/(.+)\.jar\"\/> with $1.jar.

3.3 Replace -sources with the empty string

4. Sort test-jars.txt and remove duplicate lines.

5. Look through test-jars.txt and raise "works with" for any JARs which don't have a Virgo CQ for the correct version. Also, raise corresponding Virgo bugzillas and set the iplog flag to enter the bugzillas in the automated IP log.

Development process advice

To enable distributed and cooperative development, some simple rules and processes need to be followed. These are all subject to change and are in the nature of advice rather than laws.

The advice is here.