MercuryDPM is an actively developed open-source scientific research tool, which works on a 'kernel and driver' pattern. Some of the authors have used these sorts of packages before and often you run into the problem that you spend time developing your driver and then a new version of the kernel comes out and nothing works anymore. Then you have to spend time rewriting your driver to get back to square one. We are already quite happy with our interfaces for MercuryDPM version 1.x and expect them to change very little in the future. However, we will also give the following two guarantees. (I) Any driver code written for version 1.x will work in all future version 1.x kernels. New interfaces and modifications to interfaces will initially be introduced in parallel to the old interfaces. If an interface has been deprecated in version 2, the use of an old interface will throw a deprecated warning to the users that the interface is to be withdrawn in the next major kernel update and will explain how to convert to the new improved version. (II) There will not be more than one major kernel update per year. This means that any driver code written in the current version of the kernel is guaranteed to work in all new versions for the next two years, at least. Moreover, if after every major kernel update, i.e. once a year, you spend a little time responding to the warning your code generates it will always work in future version of the MercuryDPM kernel.

Please note the interface will change between versions 0.x and 1.x; this guarantee applies only to 1.x and higher. We currently have not fully stabilised the interfaces but this will happen shortly. However, we are already using the depreciated warning to indicate interfaces that will be withdrawn at version 1.x.

A note on our release numbers: Mercury versions are number ... Please note, the interfaces are already very stable but are still being slightly tweaked within the 0.x series. To reiterate the 0 series should still be considered a developing version.

How we release code. All new features are developed in a separate feature branch and when the feature is complete it is merged with the main development branch: the Trunk. When we are happy with a new set of features we make a copy of the Trunk with a new number and alpha e.g. 1.2.alpha. This version is then tested by a group of experienced MercuryDPM users for around 6 months and bug fixes are applied directly (if you like to join this group, please send us an e-mail). After this, the branch is made publicly available as 1.2.beta; and bug fixes are still directly applied. When we are happy that most of the bugs are out we release the code as 1.2.0. This version is never changed. If (or should I say when) a bug is found it is fixed in the 1.2.beta and then released as 1.2.1. The next bug fix then is released as 1.2.2 etc…

MercuryDPM is still actively being developed and we have many grand plans for future features and extensions. These include added smooth particle hydrodynamics, direct coupling with continuum solvers, graphics interface to aid ease of use, etc. Finally, if MercuryDPM does not have a feature you need, we are always open to collaborating and adding such a feature. Actually, some of our current features arose in exactly this fashion; for example, the rotating screw wall.