Table of contents:
YES!
One of the main goals of the Open MPI project is to involve the greater HPC community.
There are many ways to contribute to Open MPI. Here are a few:
First check that this is not already a known issue by checking the FAQ and the mailing list archives. If you can't find your problem mentioned anywhere, it is most helpful if you can create a "recipe" to replicate the bug.
Please see the Getting Help page for more details on submitting bug reports.
Open MPI is distributed under the 3-clause BSD license.
We love code contributions!
All code contributions are submitted as pull requests on the Open MPI GitHub project.
We need to have an established intellectual property pedigree of the code in Open MPI. This means being able to ensure that all code included in Open MPI is free, open source, and able to be distributed under the BSD license. This prevents a situation where intellectual property gets into the Open MPI code base and then someone later claims that we owe them money for it. Open MPI is a free, open source code base. And we intend it to remain that way.
We enforce this policy by requiring all git commits to include a "Signed-off-by" token in the commit message, indicating your agreement to the Open MPI Contributor's Declaration.
This question is obsolete (as of November 2016). The Open MPI project used to require a signed Open MPI Third Party Contribution Agreement before we could accept code contributions.
However, we have changed our policy and now only require agreement with the Open MPI Contributor's Declaration.
See this FAQ entry for more details.
If you are unable to agree to the Contributor's Declaration, fear not — there are other ways to contribute to Open MPI. Here are some examples:
No problem.
While we are creating free / open-source software, and we would prefer if everyone's contributions to Open MPI were also free / open-source, we certainly recognize that other organizations have different goals from us. Such is the reality of software development in today's global economy.
As such, it is perfectly acceptable to make non-free / non-open-source contributions to Open MPI.
We obviously cannot accept such contributions into the main code base, but you are free to distribute plugins, enhancements, etc. as you see fit. Indeed, the the BSD license is extremely liberal in its redistribution provisions.
Please also see this FAQ entry about forking the Open MPI code base.
Yes... but we'd prefer if you didn't.
Although Open MPI's license allows third parties to fork the code base, we would strongly prefer if you did not. Forking is not necessarily a Bad Thing, but history has shown that creating too many forks in MPI implementations leads to massive user and system administrator confusion. We have personally seen parallel environments loaded with tens of MPI implementations, each only slightly different from the others. The users then become responsible for figuring out which MPI they want / need to use, which can be a daunting and confusing task.
We do periodically have "short" forks. Specifically, sometimes an origanization needs to release a version of Open MPI with a specific feature.
If you're thinking of forking the Open MPI code base, please let us know — let's see if we can work something out so that it is not necessary.
If your contribution was not accepted into the main Open MPI code base, there are likely to be good reasons for it (perhaps technical, perhaps due to licensing restrictions, etc.).
If you wrote a standalone component, you can still distribute this component independent of the main Open MPI distribution. Open MPI components can be installed into existing Open MPI installations. As such, you can distribute your component — even if it is closed source (e.g., distributed as binary-only) — via any mechanism you choose, such as on a web site, FTP site, etc.