plugins and packages and extensions and bundles, oh my!

I’ve had a gripe about open-source (okay, free software!) package management for the longest time.

I would give a kidney (I swear I nearly would) if my OS’s package manager managed all my packages.

But it does you say?

No. I just spent the last 10 minutes installing a plugin (Vim-Ruby) for Vim. First I decided which Vim package manager I should use. I chose Pathogen fairly arbitrarily. Then I checked whether Ubuntu itself packaged Pathogen. Yay, it does. Then I checked whether the Ubuntu version is fairly up to date. Yay, it is. Then I installed Pathogen via Synaptic hoping that it will stay current. This is not always the case. Ruby gems (and their attendant package managers (yes, plural!) Rubygems and Bundler) are a big not always the case. Then I install Vim-Ruby like so:

git clone git://github.com/vim-ruby/vim-ruby.git ~/.vim/bundle/vim-ruby

And then I have to remember to keep this up to date independently of apt.


Why, can’t sub package manager’s hook into the system package manager? I want to be able to go to one place to install a blob of code, be it a system level package, a language level package, an editor level package, a browser level package. Last I checked:

PHP             Pear
Ruby            Rubygems, (mention not RVM...)
Python          Eggs
Haskell         Cabal
Chrome          Extensions
Firefox         Add-ons
Eclipse         Aaaaaaargh
Vim             Pathogen
Emacs           ELPA (? I don't know, I'm a Vim guy)
Perl            CPAN
LaTeX           CTAN

There has to be a better way people. Even if it’s just exposing each plugin/package/extension sub-system to a central registry so that they appear centralised in Synaptic. I think I may have blogged about this before. In a fevered dream.

I’d be grateful for any corrections and more subsystems to add to the list, probably should make a wiki.

Don’t get me wrong, I appreciate the enormous coordination problem. But if we can do it at the OS level, can we not do it at the subsystem level. I guess it’s mostly programmers that’ll encounter this, or maybe it isn’t? There must be a better way.