How to Contribute to OpenFOAM

OpenFOAM is a large piece of software (of the order of 1.5 million lines of code) in a complex area of scientific application.  Since its open source release in 2004, it has become the CFD software of choice for many thousands of people from industry, government laboratories, academic institutions, etc., who download OpenFOAM and use it for free. With such a large user base, sometimes working on mission-critical applications, we have a responsibility to maintain OpenFOAM as a robust, efficient, and scalable CFD software package for a wide range of applications.

OpenFOAM is accessible to everyone and some of those who can access it wish to participate in its development. Like every major open source project, the community that develops OpenFOAM has evolved its own distinct ways of operating which allows it to function smoothly to maintain quality in an environment which is complex. OpenFOAM’s development process may appear strange and intimidating to new developers, but there are good reasons and solid experience behind it. The development community is engaged in the job of developing OpenFOAM; people who spend more time debating the development process than contributing code offer little to OpenFOAM.

How the Development Process Works

At any one time there are 2 versions of OpenFOAM under development, accessible to the public through the OpenFOAM source code repositories at GitHub.

  • OpenFOAM-dev: the current development line of OpenFOAM.
  • OpenFOAM-?: the source code for compilation on Linux distributions, including all the latest bug fixes, whose name includes the current major version number, i.e. OpenFOAM-11

Approximately once a year (see the OpenFOAM Release History), OpenFOAM-dev is released as a new major version of OpenFOAM (under a new version number).  Maintenance of the existing OpenFOAM-? version ceases and a new OpenFOAM-? repository is created based on OpenFOAM-dev which will then include new bug fixes for the new version of OpenFOAM moving forward. Like most open source software, there is no published development roadmap — what goes in the code depends on individual contributions, and what their customers ask for.  There is also no definite release schedule; typically a new major version is released, following consolidation of a number of new large developments.

Effective Contribution

OpenFOAM is run by a group of individuals who willingly contribute to it.  Like most open source projects, it is governed by a meritocracy: contributors gain greater influence the more they contribute work that is relevant, maintainable and good quality.  Effective contribution requires individuals working on one common, continuously-evolving code base, i.e. OpenFOAM-devThey need to communicate effectively about developments, from the planning stage of a project.  Being part of this community involves building long term relationships, based on trust and commitment.

We appreciate that new contributors may be uneasy about code quality and acknowledge that quality assessment is quite subjective.  However, we publish advice on code quality and coding style, which contributors should endeavour to follow.  Code quality generally improves the more a contributor participates in the project.

The community is sometimes contacted by someone saying “I have some code, put it in OpenFOAM”, e.g. a student completing a PhD with OpenFOAM.  As a means of contributing this is generally ineffective.  Contributions like this are usually badly designed without involvement from experienced members of the community in the planning stage; they are usually developed in an old version of OpenFOAM, rather than OpenFOAM-dev , which may include the same functionality by the time the community is contacted; and, the quality is usually poor without interaction with the community.  In the end, it can be more costly for an experienced developer to integrate such a contribution that write the code from scratch — but without funding to do so, the development cannot be undertakne, so nothing is included.

Getting Involved

Contributing to OpenFOAM requires time to develop experience, relationships and  trust, and to write code.  Therefore, get involved as soon as possible.  A good place to start interacting with the community is the issue tracking system.  They appreciate the efforts of those that report issues, are responsive, provide convenient test cases and run tests.  Providing a good-quality bug fix is greatly appreciated, especially if it relates to something that is of no direct relevance to the individual providing the fix.

When an individual offers a significant bug fix, or a new development, the OpenFOAM Foundation requires that they sign the OpenFOAM Foundation Contributor Agreement. The Agreement transfers ownership of the code or grants sufficient rights to the Foundation to allow it to be able to take legal action against those who infringe the OpenFOAM licence — thereby protecting the interests of all who have contributed to it. For further explanation of the purpose of the Agreement, and the licensing of OpenFOAM, see the article OpenFOAM is Free Software.