On package management

A lot of the focus for a better package management system is on rpms, debs, epkgs, etc., but there’s a large body software specific to platforms that aren’t distributions – think CPAN, PyPI, Gems, ASDF, HackageDB, etc. Many dependencies exist across these repositories, so unification is critical. This might not be straightforward (or possible). One issue is how the modules across these platforms should interface/bind to each other, and how they are configured in each other’s optional presence/absence (while preserving user configurations and resolving any conflicts).

Furthermore, there would ideally be smooth integration with non-snapshot versions of software (e.g. from local source files or source repositories like CVS/SVN/Darcs/etc.). This would be useful not only to bleeding-edge users, but also to developers, who can now easily deploy/run/debug their work.

.NET is probably the closest thing we have to such a unified system, with its strongly named, signed assemblies and a common language run-time. It’s also heavily object-oriented. The question is whether there is a system that can accommodate all the different programming paradigms and type systems we throw at it.

Until we can completely unify everything – which won’t happen anytime soon – I feel the community should refrain from trying to come up with half-way solutions. IMO things like DJB’s /package are hurting more than they’re helping. In the meantime, I highly recommend a little-known program named Toast for managing software that lies outside your distro’s native package management system. It’s a giant hack, but it’s damned effective.

Follow me on Twitter for stuff far more interesting than what I blog.