METAMOD uses a large number of external libraries and this number has increased greatly during the conversion to Catalyst. This document describes the how dependencies will be handled and why we have chosen to handlen them in this way.
Underlying this discussion is a guiding principle that external dependecies is the reponsible of each project. This should increase developer productivity as external libraries can be used when they are available and new features and bug fixes will be available sooner. The downside is that dependency handling takes time. With the solution proposed below we expect that the time required for dependency handling will be minimal.
In general handling dependencies is hard! There is no perfect solution to all the problems that can arise when it comes to dependencies as there are often conflicting requirements and the underlying infrastructure is not good enough (e.g. different Perl module installers cause problems).
Some of the problems we come across when using CPAN modules:
To reach our goals and solve the problems we will do the following:
An alternative solution is to only use the Ubuntu package repositories and then persuade the Server section to make available Ubuntu server images for each Ubuntu release. We then restrict our selves to only the CPAN packages available in Ubuntu. If we need other package we make .deb packages for those packages and put them on the internal Ubuntu package repository. We also push them to Debian so that they will automatically included in the later distribution. This simplifies the dependency management somewhat, but does not make it easy to install METAMOD outside an Ubuntu/Debian environment and can give conflict when it comes to requirement on packages for different projects.