In drawing the dividing line between the distribution independent core and the distribution dependent components, we erred on the side of including too much in the core package. Since LifeKeeper essentially provides a High Availability harness for an operating system and its applications, it is much more closely bound to the way the applications it is protecting are bundled with the operating system than a normal program. For this reason, the lack of abstraction of our application control interfaces in the core product has caused considerable problems for us. Modifications to our Application Recovery Kits (the pieces that control and monitor applications under LifeKeeper protection) due to differences between Linux distributions is still fairly common.
In the initial release, the init system abstractions described in section 2.3 were not in place. This caused us quite a bit of anguish over daemons which are very difficult to start and stop except by using the init scripts. We solved this problem on an interim basis by using our file mapping functions described in section 2.2 to translate the location of the init scripts and just assumed they could be called as script start | stop in all distributions. (With the adoption of the Linux Standard Base, we will no longer have to assume that the start and stop actions are valid, as they will be required for all init scripts).