Contributing to art

We distinguish at least three different kinds of contributions to art

  • Improvements to existing art functionality (bug fixes)
  • Extensions to art (feature additions)
  • Addition of new toolkits

Improvements to existing art functionality

The art development team maintains an issue tracker that should be used to file reports for suspected bugs, or requests for new features. In addition, we accept patches with suggested fixes.

Extensions to art

Extensions to art are often developed in collaboration between the art development team and users of art. The same procedure can be followed for art proper, or for any of the Scientific Computing Division products upon which art is based.

The preferred method of collaboration is the forking model. The steps in this model are:

  1. Create a clone of the repository to which you want to contribute code; put the clone is some public place, possibly the Fermilab Redmine site.
  2. Make your modifications to the project code. Make sure you have tests
    that exercise your new code, and that all the existing tests still work.
  3. Push your commit(s) to the repository you created in (1).
  4. Send a pull request to the mailing list.

Addition of new toolkits

Sometimes members of an experiment have developed a body of code they believe will be of use to other experiments, but which is not a direct addition to an existing product. Such a product is a candidate for contribution to the art ecosystem as a new toolkit, for distribution along with the other toolkits associated with art.

To be contributed in this fashion, the code in question must conform to accepted best practices, and must have tests that verify its functionality. It must support being built using cetbuildtools. Some support and guidance from the Scientific Computing Division can be made available to help modify relevant contributions to meet these requirements.

A toolkit contributed in this fashion becomes part of the art suite of tools; it will be made available to all users of art, built for all supported platforms, and so forth. The original author may retain shared ownership, or may give over ownership to the Scientific Computing Division. If the author wishes to retain shared ownership, he or she must be willing to provide support for other experiments’ needs.