Forks and Variants

From OpenFOAMWiki
Revision as of 19:35, 8 November 2014 by Wyldckat (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

1 Introduction

Because OpenFOAM® as a software toolbox is licensed under the GNU General Public License, this means that you can freely create your own modified version of this toolbox, as long as you respect the trade mark and guide lines, listed here:


2 Definitions

Fork
The idea behind forking is that when several changes to the code are made, the distribution of the modified group of changes should use a different name from the original project, to avoid confusion, and should follow the policies and guidelines mentioned above.
A more detailed explanation is explained at Wikipedia: Fork (software development)
Variant
This is the denomination mostly used when the changes to the complete source code package don't seem substantial enough to require a fully dedicated source code branch for supporting the changes made. This usually occurs for situations where the changes are done only a few times for a particular version of a software or even when the changes are only provided as patch files.
Nonetheless, these variants must still abide to the policies and guidelines mentioned above.
Distribution methodologies
Given that the GNU General Public License allows to charge a fee for using software that has this license, there are mainly three kinds of distribution:
  1. Completely open to the general public, where anyone can download, contribute and use without any fees.
  2. Strictly commercial, where the software is only available for a fee.
  3. Hybrid commercial model, where the software is partially or completely available without a fee, contributions may or may not be allowed and that has support fees associated to it.


3 Forks

Here is a list of known forks that originated from OpenFOAM, sorted alphabetically:

Caelus-CML
Description: Currently in version 4.10 (October 2014), it's officially a fork of OpenFOAM 2.1.1. It has been specially created for having a renewed, fully validated and documented source code base.
Status: Periodic releases.
Distribution method: Hybrid commercial model, made available freely to the public.
engys' own builds of OpenFOAM
Description: They provide their own builds of OpenFOAM, included with their own GUI solutions. It's not clearly identified as being a fork, but it's expected that the amount of changes made to the original source code would make it suitable to be identified as a fork.
Distribution method: Strictly commercial.
iconCFD
Description: From the description on their website, the level of modifications made to the code base it originated from, it should definitely allow for it to be tagged as being a fork. More specifically, it might even be forked from the predecessor of OpenFOAM, namely FOAM that was developed by Nabla Limited.
Distribution method: Strictly commercial.
foam-extend
Description: Currently in version 3.1, it's formerly known as OpenFOAM 1.6-ext, this is now essentially a fork from OpenFOAM 1.6.x and is a project unrelated to OpenCFD/ESI to incorporate new features developed by the community. Bug fixes from OpenFOAM 1.7.x and 2.x are merged into this fork with some delay. If you are missing a feature in the official branch, this is a good place to look if someone else developed it (also see Main_OFextendFeatures and Extend-bazaar).
Distribution method: Completely open to the general public.
Status: Periodic releases.
FreeFOAM
Description: Currently in version 0.1.2, is essentially a fork of OpenFOAM. It has been tracking the original source code to at least version OpenFOAM 2.1. The objective of this fork was to create a code base that relied on CMake to make the code compilable on any platform; along with using Python for assisting in scripting capabilities, instead of relying on sh/bash scripting.
Distribution method: Completely open to the general public.
Status: Currently distributed with Debian


4 Variants

There are several variants currently in existence, where the most common ones are originated by the need to port OpenFOAM to other platforms. Most of these examples are already documented at the following wiki pages:

  • Windows - where are listed the several known ports for Windows;
  • Installation/Windows - where there is a more comprehensive list of known patches for modifying OpenFOAM to work on Windows;
  • Installation/Mac OS - where are listed several instructions that usually rely on patches for modifying OpenFOAM to work on Mac OS.