Developers Home

So you're interested in contributing to the Foundry?  We're excited to have you join our community.  Here is a brief overview of our organizational structure.

Roles

Each project in the Foundry comprises of several team members.  At the core of the project is the "Project Lead" who manages the road map of a given project and it's milestones.  Supporting the project are the Core Developers who have full abilities to commit new features, perform code reviews and have a vote in the future of a project.  Supporting the Core Developers and the Project Lead are the Contributors.  Contributors are considered new individuals and organizations that assist in developing the project but without the responsibility of shepherding the project itself.

Project LeadThis is the primary coordinator of a project and acts as the shepherd of the project.  They work in a collaborative fashion with the Core Developers to manage the releases, code reviews and assignment of work.  Project leads are either the founder of a given project on the Foundry or a an individual who is selected by a retiring Project Lead.
Core DeveloperCore developers are individuals who are actively contributing to projects on the Foundry and have commit access to SVN repositories of the projects they participate in.  These individuals are either invited by an existing Core Developer or Project Lead and have demonstrated skills in being able to produce interesting and useful code within the very large main code base, in being able to handle some degree of pressure gracefully, and in being able to function within the multi-faceted spirit of the project.  
Inactive Core DeveloperThis is a Core Developer who has not committed any code for a duration of 6 or more months.  They retain commit access to the repositories but do not have any input on the management of future releases.
ContributorThese are individuals who contribute bug fixes, features or other enhancements to existing projects.  This group of users does not possess commit access to the repositories but may actively work on Jira issues and submit new code for Reviews and subsequent incorporation into SVN

Submission of Code

To ensure the quality of code, all code must undergo a peer review.  This process ensures that the quality of code is good and follows a given project's standards but in a collaborative process meant to improve upon efforts and not diminish a contributor or developer's efforts.

Project Lead and Core Developers

Project Leads and Core Developers utilize SVN as their primary way of managing their submissions:

  1. The Developers creates a new JIRA ticket or assigns themselves to an existing JIRA ticket.  If a new ticket, they outline what they are attempting to do.
  2. Latest trunk is checked out.
  3. Existing classes are temporarily locked that they will be modifying.  (Locks will be cleared every Sunday at 5:00pm PST)
  4. The core developer commits their changes, making note of what they have done in the message and the JIRA issue numbers
  5. Final step is to submit a review request with the effected changesets and referencing the JIRA issue

Contributors

The following outlines a contributor's process to submit new code to the foundry:

  1. The Contributor creates a new JIRA ticket or assigns themselves to an existing JIRA ticket.  If a new ticket, they outline what they are attempting to do.
  2. Latest trunk is checked out.
  3. The contributor creates a diff patch and submits it as a Review ticket referencing the JIRA issue it relates to.

Review Process

The below outlines how code is reviewed

  • Any core developer may pick up a given review and perform their assessment
  • If no individual picks up a review, the Project Lead will assign reviewers to the request
  • Once a review has been completed, the outcome may be:
    • Accepted - The reviewer recommends that the functionality goes in and the code is complete
    • Needs Fixing - There are minor issues with the contribution and needs resolution before being Accepted
    • Rejected - The patch has been rejected
  • If a review has been rejected, the contributor or the developer may request it to be "re-reviewed" up to one time.

Release Cycles

The "Project Lead" will manage a set of releases in Jira with a set of Target Date.  The inclusion of specific JIRA issues into a given release is up to the Project Lead and Core Developers.  Updates to the released packages, tagging in the SVN and Wiki updates are the responsibility of the Project Lead or an individual they delegate the responsibility to.

Licensing of Contributions

To ease the management of licenses, all code submitted shall be required to be licensed under the Eclipse Public License (EPL).  Please review the "Copyright and Attribution" documentation to understand how to apply copyright statements to new classes created and derivative works you commit to the projects.