Linked by Andrew Hudson on Mon 20th Jun 2011 17:19 UTC
BeOS & Derivatives Haiku Alpha 3 has been in development for more than 14 months. In that time more than 800 bugs have been identified and fixed, major sections have been updated, applications have been added and updated, and great progress has been made in supporting additional hardware. Here is a summary of updates, more details can be found here. Also inside, interviews with some core Haiku developers.
Thread beginning with comment 477862
To read all comments associated with this story, please click here.
A rant about package management...
by Halo on Mon 20th Jun 2011 18:19 UTC
Halo
Member since:
2009-02-10

A long rant about Haiku's proposed dependency resolution follows, ignore it if you're not interested...

I lost whatever interest I had in Haiku when they announced they were adding a package manager with dependency resolution. It was the last nail in the coffin for me. Windows, Mac OS X, Android, iOS, and WebOS don't do it, and there's a reason for that. Dependency resolution is user unfriendly and completely unnecessary unless the OS consists of a web of interweaving dependencies rather than a single coherent whole and needs to be retrofitted into an existing platform (i.e. Linux).

The disadvantages of dependency resolution massively outweigh the advantages. The advantages are saving HDD space and bandwidth (increasingly a non-issue in the 21st century, and in practice only marginally beneficial with different versions) and security (libraries can be updated at once but that's a minefield in itself: do you risk your applications being broken by an update out of your control?), the disadvantages are encouraging a web of open-source external dependencies (and, as a consequence, encouraging ports of open source Linux software rather than native applications), and huge amounts of developer and user complexity. The last one really is the killer from my perspective.

A great desktop operating system would let you download any software as a single file and run it by double clicking. You should be able to 'install' it by copying that file into an 'apps' directory, and uninstall it by deleting the file. Moving applications from one PC to another is a matter of copying that single file. An update mechanism could be provided by including an update URL in the metadata and including a software updater in the OS. Any package manager would simply be a simplified 'official' way of downloading applications - nothing more, nothing less. Really, really simple and intuitive.

Providing multiple entry-points for CLI apps would be messier, but could still be done with packages by putting them in their own directory, listing the entry-points in metadata, and making them accessible either via './package/blah' or globally via a PATH variable (this would require metadata and keeping track of directory changes, but Haiku's FS has the functionality to deal with that anyway). It's a bit more complex but users of CLI applications will almost certainly be able to grasp it.

All of this is feasible and is conceptually really simple and really user-friendly. Instead, Haiku is implementing something much more complex inspired by what's absolutely necessary in Linux due to a distributed development model and backwards compatibility. They're developing a complex application mostly from scratch with its own UI paradigms to do functionality that could potentially be done with files in Tracker. Madness. I can't imagine Be doing that if they were still around.

Edited 2011-06-20 18:32 UTC

Reply Score: 5

AndrewZ Member since:
2005-11-15

There are many good reasons to have a package manager for Haiku. If you have ever installed one of the thousands of BeOS or Haiku apps from Haikuware you will find there are dependency challenges. Older BeOS apps need GCC2 libs to run correctly. Newer apps run with different GCC4 libs. And apps in development need a mix of other libs also in development. Currently there are several work-arounds, none of which are easy for the casual user.

You can download a 'big fat library install' with a bunch of libs all at a certain revision. This will work for some apps but breaks others. And when you install different apps, they too need different versions of the libs.

You can manage this manually with sym links, on an app-by-app basis. But it is a pain. And this is better done by automation.

Having a package manager is a really good idea for Haiku. For these reasons alone.

Edited 2011-06-20 18:33 UTC

Reply Parent Score: 6

Halo Member since:
2009-02-10

Riddle me this: Why doesn't Mac OS X have any problems with dependencies? Why can't the Haiku developers just tell application developers that libraries should be included in application bundles?

BeOS does have dependency problems that Haiku inherits. BeOS was also made at a time when shared libraries made sense. If you're on a 28.8k modem with less than a gig of hard disk space, sharing dependencies is an attractive prospect.

It's not 1995 anymore, though, and you'll struggle to find anyone that cares that they have a dozen copies of Qt on their PC.

Edited 2011-06-20 19:04 UTC

Reply Parent Score: 2

umccullough Member since:
2006-01-26

Windows, Mac OS X, Android, iOS, and WebOS don't do it, and there's a reason for that.


I honestly hate this discussion - it's just bikeshed in the end... but I have to comment:

Windows most certainly does have a notion of package management - they started doing that with windows 9x - the add/remove programs is a form of this. The registry keeps track of shared lib references so that installers/uninstallers can decide when a shared lib is still in use. Microsoft eventually tried to clean up the disaster of 3rd party installers by offering MSI to developers to help with versioning of libraries and installation to the proper locations. These are all aspects of package management, without the "evil name" that gets everyone all in a frenzy.

OS X benefits from including most of the shared libs already in the system. I don't use it, but I understand that common frameworks such as python and java are included in the OS itself - preventing the developers from having to include that stuff if they wish to use it. Furthermore, there are package management solutions for OS X such as MacPorts - to help people use software that isn't otherwise packaged the way you want it to be.

WebOS and iOS are sort of walled-garden systems - the users (and developers) aren't meant to screw with them.

Android falls into the above category as well, but out of all the options you list - it's the only one that is open source (although, that's debatable given that manufacturers tend to lock it down on their devices)...

In an open source operating system, the creator of the OS can't really define the limitations for the developers. With all of the closed source commercial ventures mentioned above, the vendors are making very strict rules... if you don't follow them, you're SOL. It's pretty damn hard to set similar restrictions on a fully open source x86 OS that anyone can download and compile themselves.

Adding package management features provides at least some form of guidelines that will allow users to access software that developers are producing. From what I gathered, it will encourage "all-in-one" bundles anyway, so I don't understand why people get so bent out of shape about this every time the topic comes up.

Reply Parent Score: 8

JAlexoid Member since:
2009-05-19

I'll add to that, that Android does have a notion of separate and updateable libraries. See Adobe Air apps on Android.

Reply Parent Score: 2

Halo Member since:
2009-02-10

I honestly hate this discussion - it's just bikeshed in the end...


Then ignore it. Seriously.

Windows most certainly does have a notion of package management - they started doing that with windows 9x - the add/remove programs is a form of this. The registry keeps track of shared lib references so that installers/uninstallers can decide when a shared lib is still in use. Microsoft eventually tried to clean up the disaster of 3rd party installers by offering MSI to developers to help with versioning of libraries and installation to the proper locations. These are all aspects of package management, without the "evil name" that gets everyone all in a frenzy.


You've missed my point, so I'll repeat it succinctly:

THE PROBLEM IS WITH DEPENDENCY RESOLUTION.

"Package management" is just the Linux term for installing/uninstalling software. There is plenty of approaches to it but that's obviously core functionality. Personally, I don't like the term because it's loaded with presumptions. Incidentally, it's actually Haiku developers who took the phrase "Package Management" from their survey and translated it to mean there was a clamouring for a Linux-style package manager. Look it up. I've moaned about this presumption before.

Anyhow, you're right: Windows does have the idea of installing/uninstalling software (like all modern OSes). It also has the concept of shared libraries and the manifest to avoid dependency/DLL hell (but NOT dependency resolution, but something as nearly as crappy).

Why does Windows have a manifest? Because they thought shared libraries were a good idea in the early 90s and they wanted to preserve backwards compatibility. Not because it's a good idea. In fact, it's such a terrible idea that Microsoft has discouraged it "for over a decade" (http://blogs.msdn.com/b/oldnewthing/archive/2011/06/20/10176772.asp...).

Windows packaging also sucks. It's unnecessarily complicated, requires installers, and no unified update mechanism. No stupid dependency resolution, though: usually what you download is what you need. No interweaving webs of open source dependencies. Windows installers are generally standalone.

OS X benefits from including most of the shared libs already in the system. I don't use it, but I understand that common frameworks such as python and java are included in the OS itself - preventing the developers from having to include that stuff if they wish to use it.

All OSes should include the functionality of common shared libraries as native functionality. Windows, Android etc do that too.

Linux doesn't, but that's more due to Linux's decentralised model, which isn't one that Haiku seems to be following.

Furthermore, there are package management solutions for OS X such as MacPorts - to help people use software that isn't otherwise packaged the way you want it to be.

What percentage of Mac users use MacPorts, though? It's not officially sanctioned or installed by default.

WebOS and iOS are sort of walled-garden systems - the users (and developers) aren't meant to screw with them.

That has very little bearing on the merits
of dependency resolution, though.

An exploit in a library or the size of packages are the same, whether or not the systems are walled-gardens or not, or whether they're open or closed source. They could have chosen either.

Android falls into the above category as well, but out of all the options you list - it's the only one that is open source (although, that's debatable given that manufacturers tend to lock it down on their devices)...

Android isn't a walled-garden (I can download standalone APKs and run them on my handset), and again, it has little bearing on their choice.

For the record, I don't think "open source" should matter. It should be about the best damn software, not an ideology. Open source will win when it'll be the best overall, not because it's the open source.

Firefox eventually won because it was good. Mozilla lost because it was crap.
In an open source operating system, the creator of the OS can't really define the limitations for the developers. With all of the closed source commercial ventures mentioned above, the vendors are making very strict rules... if you don't follow them, you're SOL. It's pretty damn hard to set similar restrictions on a fully open source x86 OS that anyone can download and compile themselves.

Apple can't force people to use bundles rather than MacPorts on Mac OS X. Steam has replaced installers on Windows for games because installering and updating sucks. On Android, Amazon's Appstore is competing with Google's Android Market.

It's all about brand and the users. Haiku's advantage is that it's a single OS that is centralised and integrated, allowing it to make make sane defaults and force them through. Haiku is similar to Mozilla in that regard.

Adding package management features provides at least some form of guidelines that will allow users to access software that developers are producing.

Having a method of installation/uninstallation/updating is good. Having a way of getting software is good. No arguments there.

From what I gathered, it will encourage "all-in-one" bundles anyway, so I don't understand why people get so bent out of shape about this every time the topic comes up.

Even if it does, unless all packages are bundles and there's no dependency resolution, you end up with all the disadvantages. That's the problem.

If there's dependency resolution, you've just added a crapload of mental complexity onto users, even if only 10% of packages use it. That's without going into the development effort required.

You can never be sure that you can simply run an application and it'll just work without downloading more. You can never be sure that you can copy an application from one PC to another without the Internet and it'll just work. You can never be sure how big an application and its dependencies are at any given time. You can't never be sure that deleting a bundle will also delete its dependencies etc etc.

You'll also end up with one primary installation method and another being treated as second-fiddle. It's inevitable. Chances are that the package manager will win... which will mean more ports, increase the amount of dependencies, and reduce the chances of commercial software catching on. That's a huge issue that has massively set back Linux.

Anyway, that's my argument. I expect it'll be ignored but I feel I have to try.

Reply Parent Score: 1

drcouzelis Member since:
2010-01-11

A great desktop operating system would let you download any software as a single file and run it by double clicking. You should be able to 'install' it by copying that file into an 'apps' directory, and uninstall it by deleting the file. Moving applications from one PC to another is a matter of copying that single file.


All of this is possible with the new plans for the Haiku package manager and package format.

Why can't the Haiku developers just tell application developers that libraries should be included in application bundles?


Libraries CAN be included in application bundles in the new Haiku package format. They'll run perfectly, even if you have another version of the library installed.

It sounds to me like you have a bad case of "WHY CAN'T EVERYONE DO IT THE WAY I THINK IS THE BEST?" ;)

Reply Parent Score: 8

Halo Member since:
2009-02-10

.

Edited 2011-06-21 00:51 UTC

Reply Parent Score: 1

stippi Member since:
2006-01-19

You are listing the basic pro and con arguments. The problem is I don't come the same conclusion as you.

For one thing, I think that being able to update one dependency for security reasons and fix all apps using that component is a killer feature.

Second, shared libraries don't only save diskspace and bandwidth, it also means that they are loaded only once in memory, which reduces application start up time and system memory usage.

Third is that my experience is completely opposite to yours. With the systems that do it right in your oppinion, I have experienced bad failures. Hunting down and installing software on both Windows and Mac OS has been a nightmare at times, while it has been *consistently* a no-brainer on my Ubuntu installs. As an example, try getting Subversion installed on Mac OS X or Windows and get it running over SSH in Eclipse. Hint: It is impossible without googling for snippets of error messages, wading through unanswered forum entries of fellow sufferers, until you finally find someone who tells you what config file to edit. And that is only an example. The other weekend I have had a lot of fun trying to install video encoding software on Windows 7 which will produce Theora, WebM and MP4 files suitable for HTML 5 video streaming: Hint I did not encode a single video on that weekend. All this stuff is a no-brainer on Ubuntu, the only reason I even attempted it in Windows 7 is because I have cut my videos with Sony Vegas and thought I could possible render directly from Vegas. Fat chance...

The bottom line is that installing software on Ubuntu is very, very user friendly, through package management and dependency resolution. The PPA universe is awesome, too. I don't care whether copying a package to another computer will do something useful, I rather care that my setups are mirrored, there are other, more elegant solutions, than to copy files around.

Reply Parent Score: 1