Development Process


Source code management

Sirocco source code is hosted on the following GitHub organization:

https://github.com/ow2-sirocco

Git guidelines (to be completed):

  • Do not commit IDE configuration files and folders. With Eclipse, a typical .gitignore file should contain the following entries:
         .settings
         .classpath
         .project
          target
  • Use rebase rather than merge when possible
  • the master branch is continuously integrated
  • commits that fix a JIRA issue should be prefixed with the identifier of the issue

No code review tool integrated with Git is used currently.

Build and Release

Sirocco uses Maven as its build and management tool. All Sirocco components are released as Maven artifacts on Maven central repository.
Sirocco uses OW2 Sonatype Nexus repository manager.
Sirocco projects pom.xml should  (indirectly) inherit from the following Maven dependency so that their release (ow2.release) and snapshot (ow2.snapshot)  repositories are correctly set: 

<parent>
 <groupId>org.ow2</groupId>
 <artifactId>ow2</artifactId>
 <version>1.5</version>
</parent>

The release procedure for a Sirocco component is as follows:

  • make sure the component POM does not depend on snapshot dependencies
  • use Maven Release plugin to prepare and stage the release:
       mvn release:prepare
       mvn release:perform
    You can continue to use mvn release:prepare and mvn release:perform on other projects as necessary.
  • login to OW2 Sonatype Nexus, go to the temporary staging repository created by Nexus. "Close" and "Promote" the staging repository to promote its content to the release repository. The release will be picked up by Maven central shortly.

For more information, refer to Nexus online documentation.

Security settings

Add your Nexus login/password to your Maven settings.xml:

<servers>
   <server>
     <id>ow2.release</id>
     <username>xxxxxxxxx</username>
     <password>yyyyyyyy</password>
   </server>
   </server>
</servers>

Note that published artifacts need to be signed with your private key because valid signatures are one of the requirements for publishing to Maven Central. Yo need to:

  • create a new GPG or PGP key if you haven't one already (e.g. with the command-line application gpg)
  • publish the key to the required PGP server pgp.mit.edu
  • sign your files with the maven-gpg-plugin. This is done automatically by the Maven OW2 configuration. Set your GPG passphrase in your Maven settings.xml:
     <profile>
       <id>ow2-release</id>
       <properties>
       <gpg.passphrase>xxxxxx</gpg.passphrase>
       </properties>
   </profile>

Continuous integration

OW2 Bamboo CI server

TODO: run Sonar in the CI server
TODO: migrate to Jenkins ?

Issue tracking

Sirocco JIRA

Java Code style guidelines

All developers must share common Eclipse settings so that their Java code is formatted the same way:

  • 4 characters indentations
  • no tabs
  • max line length
  • ...

TODO: integrate tools such as CheckStyle, PMD, Sonar... in the build process

All files must start with a Copyright header. Java and XML header templates are shown below:

/**
 *
 * SIROCCO
 * Copyright (C) 2013 Orange Labs
 * Contact: sirocco@ow2.org
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
 * USA
 *
 */
<!--

   SIROCCO
   Copyright (C) 2013 Orange Labs
   Contact: sirocco@ow2.org

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or any later version.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with this library; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
   USA

-->