The lmonade platform
Large open source computer algebra systems, for example Macaulay2, polymake, SAGE and Singular, build on different components, such as GMP, LinBox, MPFR, NTL, Singular/Factory, cddlib, for basic functionality like multi-precision integer and floating point arithmetic, fast exact linear algebra and polynomial factorization. Given the myriad of different configuration of software and hardware present on users' computers, installing all these components reliably and getting them to work together is a tough problem. Each of these systems have inevitably developed a customized solution to address this issue.
If a user has two of these systems installed side by side, they get separate copies of the underlying libraries. Moreover, calling functions from both systems withing a single program leads to conflicts when these systems are linked together at a binary level. Having a unified installation of these systems is a prerequisite to writing interfaces between them.
lmonade creates a generic packaging framework, where installation recipes, bug-fixes and enhancements can be shared between various projects. This meta-distribution forms a prefixed environment where latest versions of scientific libraries can be installed and used without conflicts. To simplify development, header file locations and library paths are set automatically for software projects using standard build systems. lmonade can also set up a development environment for selected packages by checking out code from a VCS and installing required dependencies.
Building on a modified Gentoo Prefix base where the tool chain and system libraries installed on the host are used instead of rebuilding them in the prefix, lmonade boasts a flexible architecture. The Gentoo ecosystem is already rich in scientific software packages thanks to the Gentoo Science community. This is also complemented by sage-on-gentoo with numerous mathematics packages.
Although initially motivated by mathematical software, the lmonade framework can accommodate any development scenario where complex dependencies are involved and latest versions of libraries are preferred to stable but dated configurations. We hope that freeing researchers/developers from distribution concerns will allow them to concentrate on specialized reusable libraries instead of monolithic, hard to maintain systems.
Besides introducing conflicts when trying to link these systems together at the binary level, this scheme also encourages developers to maintain their own version of the component libraries where bug fixes or enhancements are not necessarily passed upstream so that everyone can benefit from them.
- a customizable software distribution that is
- installed easily as a user without administrator rights and
- configurable to create source distributions for software packages including their dependencies
- tools to set up a development environment for mathematical software packages
- automated build and regression testing framework which can be configured to test certain packages regularly, to check for
- correctness of results
- speed regressions
- build problems
Besides these we also support other projects to help mathematical software developers.