Submitting a Feature or Enhancement to the i2b2 tranSMART Foundation

 

In supporting our open platforms, the Foundation welcomes contributions of new tools to the platform including data exploration, visualization, and ETL tools.

 

Submission Guidelines

 

  • It must be pulled from, or easily merged with, the current master branch of the platform
  • It must be accompanied by appropriate unit and functional tests and associated data
  • It must conform to i2b2 tranSMART Foundation coding standards
  • It must be committed to the appropriate i2b2 tranSMART master branch by one of the Foundation official committers
  • It must be accompanied by appropriate documentation
  • It must be submitted with a signed DCO (Developer Certificate of Origin) SEE FORM

 

 

 

Contributed code Checklist
In order to be accepted, the following items need to be completed:

 

  • Final code that is built on the latest released branch from the Foundation GitHub
  • Documentation of the code: user documentation; test dataset; testing script; acceptance criteria.
  • Included in a beta release by the Release Manager and available to the PMC members and other interested users
  • When ready, included in the Release Candidate
  • The Release Candidate is made available to the Community for final testing for a period of 8-10 working days
  • At the end of the beta period, if no fatal or release stopping issues or defects are found, the PMC Chair creates an electronic poll for the PMC to vote, over a period of about 5 days
  • A Release is approved if at least 3 PMC members vote YES and there are more YES votes than NO Votes
  • The Release is then processed through a FINAL INSPECTION by using a tool such as scancode that examines the licenses and copyright across the entire code base
  • The Release Manager confirms the collection of any required DCO (Developer Certificate of Origin)

 

Foundation Responsibility

  • All necessary technical support to allow contributors to successfully
    integrate their code into the appropriate Foundation code repositories
  • Integration of contributor-supplied tests into the proper stages of the
    development, continuous integration, and release processes
  • Independent execution of functional tests, and certification of correct
    results, as part of the release process
  • Testing against all supported database backends
  • Integration of installation and upgrade procedures into the Foundation-supported installation and upgrade mechanisms

 

 

Contributor Responsibility

  • Description of enhancement
  • Development code, merged in to the Community Branch for the
    intended release
  • Database changes
  • Impact analysis
  • Unit and functional tests and test data
  • Installation prerequisites and documentation
  • Documentation
  • Ongoing defect review and repair (pre-release; post release)

 

Description of enhancement

  • A brief (less than one page) description of your enhancement.
  • Email address of a party responsible for the enhancement, to whom questions can be addressed during the evaluation, integration and release processes.

Development code

  • Where is your code located?
  • Has it been developed from a fork of, or can it be easily merged into,
    a Foundation master branch ?
  • What is the state of development;
  • are there known issues that would have to be addressed to create a
    production-quality version of the enhancement ?
  • Are there future enhancements that are planned but not yet implemented ?

     

Database changes

  • Does your enhancement requires changes to the current i2b2 or tranSMART database model?
  • Provide upgrade scripts for users of the existing database model(s)
  • Indicate whether you have developed your enhancement for Postgres, Oracle, or both
  • The Foundation will provide support to ensure that the functionality is available with both.

Impact analysis

  • Please provide an analysis of the impact your enhancement may be expected to have on other parts of the system, as well as existing system functionality that could impact your enhancement were it to change.
  • For example: changing the database model may require changes to data loading (ETL) routines; or a change to the core database API with respect to high-dimensional data may affect how your enhancement retrieves data from the API.

Unit and functional tests

Every new feature must be accompanied by:

  • Unit tests
  • Functional tests
  • Accompanying test data
  • These tests will be executed as part of the continuous integration process for all releases in which the feature is included, and must pass quality review by the PMC prior to release.
  • Automated tests are strongly preferred using Bamboo

Installation

  • Provide installation prerequisites and documentation.
  • If needed, the Foundation will provide scripts that include the enhancement in the installation process as well as in containerised deployments such as VMs and Docker containers.

Documentation

  • The enhancement must be accompanied by both developer and end-user documentation.
  • Developer documentation can be part of the code repository on GitHub.
  • End-user documentation may be in the form of documents and/or video tutorials.