Reasons FOR a package manager

As a newbie (although with 30+ years of DOS/CPM/VersaDos/UNIX/Linux/Windows development background), I would like to see a package manager.

  • It will make things much easier for “drive-by” testers, which resemble the long term target users. All Haiku users in year 201x are NOT going to be “power users”, lets make it possible for them to install software. I have ended up with left-overs all over the place from installing FireFox and VNC on a nightly install system (R1A1 would not run on my H/W, the nightly install did).

  • At some point in time we/you need to deal with “library bloat”. If every package installed has it’s own copy of it’s support libs, the disk will fill up fast. In an “ideal world” I would like to see a common /lib directory setup as such:

At Install-

  1. Check for lib already installed.
    1a) If installed and the version is the same use installed.
    1b) If not installed or different version, install lib to /lib.
  2. Produce “link file” telling app where the different libs reside.

RunTime-

  1. Modify program loader to copy needed libs to program virtual memory space.

I don’t think anybody is really opposed to having a package manager. Some just believe that it should be done in an elegant Haiku-like way, and not be a copy of Linux. A Linux-like package manager is not the only way to make a package manager.

Library bloat will never be a real issue in Haiku, as it has a standardized API for most things that you in Linux have maybe 10 different libraries for, already in the OS and you’re encouraged to make your application as native as possible. So a well-designed application will not end up needing a lot of third-party libraries, most will probably be specific to the application at hand (Like if bsnes would be ported, it would have the libraries snesfilter, snesreader and supergameboy even if the rest would be native, but barely any other application uses these, so they might as well be included with the program).

Installing all third-party libraries system-wide is still a horrible idea, as it makes it very tricky to install a program if you’re not online and it’s a pain to move the application around between computers and so on.