Package Management for Haiku

Blog post by zooey on Mon, 2011-01-03 18:49

"Make everything as simple as possible, but not simpler."

Starting my month of paid Haiku-work today, I was quite astonished to see the many emotional comments that have been added to the announcement. Clearly, the topic seems to be one of heavy likes and dislikes ...

Having read all those comments and most of the discussions we had earlier (on the wiki and on the mailing lists), I felt the need to start my blog with the quote given above - as, for me, that pretty much summarizes what there is to say about package management ...

Package Management - what is it?

Basically, package management is the means to tame and control that flee circus of all the different software components that make up your running system. Without any package management, each computer user would have to maintain those software components yourself, which after some time pretty much unavoidably leads to a more or less inconsistent (if not completely borked) system. In order to circumvent this, most OSes these days incorporate some kind of package management. Most Linux distributions come with pretty elaborate package managers, the BSDs have their ports tree, which is just another (albeit a bit simpler) way of managing packages. OSX pretends to do without package management only to rely on fink (plus others) to provide support for managing packages through the backdoor. With all those modern mobile OSes managing their software through a 'market' application, that pretty much leaves Windows as the lonely OS without package management (unless you consider Windows updates just that). But even on windows, many applications have chosen to implement an update service all by themselves, in effect providing a (rather crude) form of package management.

The parts of a package management system

Here's a list of the components that usually make up a package management system:

PACKAGE BUILD RECIPE (examples: .bep, control, .spec)
One or more files containing info about a specific package that describe how to to create a binary package from the sources. A recipe contains info about the dependencies the software has and which files (programs, libraries, data files) should be put where during installation.

PACKAGE BUILDER (examples: apt-build, haikuporter, rpmbuild)
A program used for building a specific package from its source, carefully following the actions defined in the recipe in order to convert the sources into a binary package.

PACKAGE FILE (examples: .deb, .ebuild, .hpkg, .pkg.tar.xz, .rpm)
A file type and data format that contains all the files and meta information that make up a specific binary software package.

PACKAGE ACTIVATOR (examples: dpkg, rpm, pkg_add, Haiku's package-fs)
A program that can activate/deactivate one or more packages (activation may involve actual installation of files, but not necessarily so). Keeps track of which packages have been activated.

REPOSITORY
A place where to store info about the available packages, usually along with the packages themselves, too.

PACKAGE MANAGER (examples: apt, emerge, pacman, smart, yum, zypper)
The heart of it all - a program which reads one or more given repositories (usually over network) and can be asked to download and activate available packages. It will automatically resolve any dependencies those packages may have on other packages. Additionally, the package manager can update packages and even complete systems.

These days, it is common to only ever communicate with the package management system through the GUI of the package manager - all the other components need not be visible to a user at all (depending on the involvement the user wants to have with system administration and/or development).

So why do some people hate package management that much?

Honestly, I don't really know - I'm using package management nearly on a daily basis (e.g. during my administrative work on the Haiku infrastructure). Without a package management system helping me out, many of my everyday tasks would be much more complicated and error-prone.

I reckon most of the agitation around package management stems from the fact that package management is a complicated matter. One can try hard to hide this fact, but in the end, it will always show through that some hard work has to be done behind the scenes (usually by the people packaging the software). People wish it were simpler and complain loudly, pointing at solutions that most of the time just hide the problems instead of solving them.

Of course, several earlier implementations of package management were really a PITA, I remember having to hunt for RPMs on the net that were dependencies of some other program I just wanted to try out. Doing that once can be frustrating already, but having to do it repeatedly made me want to wipe the dust of my C64 ...

But today, package management usually is unobtrusive and just works. However, I am still seing problems here and there, which I would like to avoid on Haiku, of course.

Requirements for each component

In order to get a baseline for my research work on the existing implementations, I thought it'd be a good idea to start with a list of requirements for all the individual components. I am then going to look at each implementation and determine just how well it fits Haiku's needs.

I am pretty sure I am going to miss a few requirements here, so please comment if you think anything is missing!

PACKAGE BUILD RECIPE

  • preferably contains info about from where to download the sources from
  • specifies which patches to apply
  • contains several basic attributes of the software (name, version, description, homepage, supported target platforms, ...)
  • specifies the build options and build script
  • specifies the dependencies of this software for several stages/scopes (build, install, test, ...)
  • specifies the set of resolvables that the resulting package provides (which may depend on the build options given)
  • supports giving different info for some target platforms (x86-gcc2 vs. ppc)
  • contains info about the licenses applicable to the software

-

PACKAGE BUILDER

  • uses a recipe to create a binary package for a given target platform
  • sets up a chroot()-like environment for each build, containing only the software's build-dependencies
  • enters the chroot()-env for the build in order to reduce the risk of the build process "picking up" installed software, which would create unintended (and untracked!) dependencies.
  • must support signing the resulting package with a given GPG-key
  • nice-to-have: support a mode for automatically invoking the test suite of the software and checking the result with expectations
  • nice-to-have: provides a helper program to convert any buildable software into a package file (by means of a trivial recipe or without any recipe whatsoever) - the resulting "faked" package can then be activated and will take part in dependency resolution

PACKAGE FILE

  • a single file containing all the info required for installing (i.e. activating the software contained in) the package
  • must support signatures with one or more GPG-keys
  • contains hashes for all files contained in the package in order to be able to validate installed files againts the original package contents
  • should be perfectly tailored for the requirements of the package activator, i.e. the activator dictates the format, not the builder

PACKAGE ACTIVATOR

  • show list of installed packages
  • install/update packags
  • remove/purge packages (remove keeps config files, purge deletes those, too)
  • verify packages against status quo
  • activate packages system-wide or per-user
  • nice-to-have: support installation of multiple versions of a package on the same level (system or user) - this probably needs to be supported by the individual packages in order to work
  • nice-to-have: automatically make backups of config files before package update
  • nice-to-have: show list of config files for a package (and allow to backup/restore/purge them)

REPOSITORY DETAILS

  • has name, description and URL
  • a repository must provide concise info about the packages it contains and their dependencies
  • provides a (GPG-)key used for signing all the packages in the repo
  • should preferably be accessible by a web-browser
  • there may be a correlated website, which offers additional services on top of the technical requirements, e.g. screenshots, reviews, user comments, etc.

PACKAGE MANAGER DETAILS

  • maintains (add, list, remove) a set of prioritised repositories (including user-defined repos)
  • show list of files contained in package
  • show the package owning a specific file
  • show all attributes (origin, version, release, resolvables, dependencies) of all packages
  • supports all actions of the package activator, with additional dependency resolving
  • supports activation of local packages (that were created locally or downloaded by some other means) with full dependency resolution
  • always computes all required actions and shows them to user before applying them
  • can search for packages with given attributes (name, resolvables)
  • can verify validity of whole dependency tree and offer actions to solve any problems
  • automatic update interval for repository information can be configured and switched off
  • supports listing and getting rid of dependency-only packages (which were being activated only as dependencies of some other package)
  • supports system updates (nice-to-have: actively, by offering to switch to a new release)
  • nice-to-have: supports limiting actions to a specific repository
  • nice-to-have: supports packet "pinning", i.e. specifying restrictions for specific packages with respect to their origin, release or version

Which implementations to look at?

I have currently planned to look at the following package managers (and their associated repository format[s]) in detail:

  • apt (with dpkg and rpm backends)
  • pacman
  • smart (support for many package formats)
  • yum (supports rpm only, AFAICS)
  • zypper (supports rpm only, AFAICS)

Additionally, I'll inspect at least these package formats and package activators:

  • dpkg/deb
  • hpkg/package-FS
  • rpm

Finally, I will spend some time with the different package build infrastructures, especially the ones used by Debian (apt-build), openSUSE (rpmbuild) and Arch Linux (pacman).

The special focus during these investigations will be on how easily each of those tools could be adjusted to work on/for Haiku - after all, many of these tools have been designed for a specific Linux distribution, which Haiku simply isn't (and doesn't want to be). On the other hand, I really hope that at least one of the package managers proves to cater for most of our needs, as writing one from scratch would be a *lot* of work.

Please do not hesitate to send your ideas my way ...

Comments

Re: Package Management for Haiku

In the past there was a discussion to include or not an editor by the name of vi (or vim). To the average user this is not an easy to use editor.
So it was not included, though I know some developers have mastered it in depth and still may use it today. There is nothing wrong with a dual approach IMHO.
For package management this could work too. Apps could be distributed using the OS X style AND, and here comes the need for a package management, for those with more experience, less bandwidth, smal harddrives, wanting to push their systems right to the max, there is the small efficient format.

Best of both worlds. Only on HAIKU.

Regards,

Arnold

Re: Package Management for Haiku

Thank you Arnold, a voice of sanity.

Re: Package Management for Haiku

Correct Arnold. Nothing wrong with a dual approach just a little more work and would make everyone happy. Users would choose which method was better for them when they first ran the package manager. I doubt they'd do a dual approach because you normally choose one way or the other and go with it but you never know.

With a bundled system approach I would be
FOR: Application + System (Library) Bundles (for large ones like Qt, SDL, Boost,)
AGAINST: Application Bundles Only

A simple example. I brought PokerTH to Haiku. It uses Qt+SDL+Boost with these libraries adding up to large size combined. Adrian ported Gnash to Haiku which uses SDL+Boost. So, installing & sharing the larger libraries (with system bundles) would only make sense. It would decrease package sizes by large amount. ie: I can live with duplicates of many similar small sized libraries on the drive

If we do only application bundles (with no system bundles) then we inflate the packages really large. So, not only do I download bigger packages but it takes lots more disk space. Also, the download server has to transfer bigger software packages to me & others. Multiply this by 100,000 users (in the future) and what happens then? Server would stay busy for longer by each user (create higher load) + would require higher download limit. Now, multiply this by say 30 applications per user and you clearly see both the user and the server hosting the files are affected. System library bundles would remove the larger libraries from application packages and cause only slightly larger application packages compared to package without bundled libaries.

Re: Package Management for Haiku

I agree with you but it is to the developer to choose the "right" packaging method for him and we should not force one of them.

For instance a developer can have a very large application and because he wants full control and stability he packages everything together ( QT, SDL, Boost), he can even make available two bundles, one with and one without system libs.

We can even be smarter and have a mechanism where when starting up our appstore we check which system bundles are already installed on the PC, and only present to download the app bundle version that doesn't include the system libs, so the issue of download size is solved.

Re: Package Management for Haiku

pedroeloy wrote:

I agree with you but it is to the developer to choose the "right" packaging method for him and we should not force one of them.

For instance a developer can have a very large application and because he wants full control and stability he packages everything together ( QT, SDL, Boost), he can even make available two bundles, one with and one without system libs.

We can even be smarter and have a mechanism where when starting up our appstore we check which system bundles are already installed on the PC, and only present to download the app bundle version that doesn't include the system libs, so the issue of download size is solved.

I disagree, developers "like engineers in other circles" tend to overcomplicate things. they also tend to be highly narrassitic bunchs of folks.

What we do is FORCE a stanrd on them. We force it becuase to really make the thing work properly, standards must be enforced.

The APP store is a great example of how this philosphy works.

Lets take QT for examples.

We force a one time install of the QT runtime to gain acess to QT apps. QT APPS must use the Master QT library, PERIOD.

sure its seems a bit abusive, but the end user should not be made to suffer becuase some developer is to lazy or to self righteous to simply update or use the standard QT library.

The best way to remove the problem, is to create a well defined system of standards, and enforce them.

even with a package manager, your still going to get broken or non functional software.

the whole argument is sideways.

also if you have a dedicated framework folder, you know where the framework is. So if the apps unzip to the QT framework folder, geuss what, they all ready have all the dependacys they need.

this reduces disk space worries.

So there are ways to properly design the software ecosystem up front. In the end some developers will complain but users will have a easier time.

App Store and a good solid design for frameworks and applications and bundling Easily fixs the problem you wish to resolve.

As for updating core system files. Well, go have a look at windows update. It works and is highly unobtrusive and people are familiar with it.

Go look at the things that are sucessful.

basing the anything on linux, is akin to studying abject fialure, becuase linux is a abject desktop computing fialure.

Look at sucessful systems Mac OSX and Windows.

they have it figured out.

Go learn something.

Having a APP store also help attract developers, becuase we get to pay them for their efforts and then the standards compliance just becomes a fact of life. It simply must be the way things are done, for Haiku to be sucesful. Modeling anything on linux aside from driver code is generally a very bad idea.

Re: Package Management for Haiku

thatguy wrote:

We force a one time install of the QT runtime to gain acess to QT apps. QT APPS must use the Master QT library, PERIOD.

Here's a hypothetical situation: A new version of Qt gets released with a feature a Haiku developer wants to implement in their app. The master Qt library isn't due to be updated for another 12 months when the next major Haiku release hits, and can't be updated before because too many applications rely on the current Qt version.

So let me get this straight, you want us to tell the developer "I'm sorry dude, we can't use different Qt versions concurrently. Why? thatguy said so. You'll just have to wait a year before you can improve your program"?

An appropriate response to such a statement might look like this:
http://cbullitt.files.wordpress.com/2009/04/middle_finger_flame.jpg

How many different application frameworks does Windows support? Lots. Yet, it's the most popular platform. How does that sit with your logic?

Re: Package Management for Haiku

Zeno Arrow wrote:
thatguy wrote:

We force a one time install of the QT runtime to gain acess to QT apps. QT APPS must use the Master QT library, PERIOD.

Here's a hypothetical situation: A new version of Qt gets released with a feature a Haiku developer wants to implement in their app. The master Qt library isn't due to be updated for another 12 months when the next major Haiku release hits, and can't be updated before because too many applications rely on the current Qt version.

So let me get this straight, you want us to tell the developer "I'm sorry dude, we can't use different Qt versions concurrently. Why? thatguy said so. You'll just have to wait a year before you can improve your program"?

An appropriate response to such a statement might look like this:
http://cbullitt.files.wordpress.com/2009/04/middle_finger_flame.jpg

How many different application frameworks does Windows support? Lots. Yet, it's the most popular platform. How does that sit with your logic?

Well with the app store model the QT framework maintainer earns some income, ergo keeping him financially interested in doing so. In thoery the QT app maintainer is the app maintainer for QT.

As for the dev needing newer features, thats tough. Better to hold the line and force compatability vrs breaking stuff all the time.

Thats how you keep your customers happy. Also these frameworks should undergo rigorus testing for compliance and stability before being allowed in the app store. So thats going to slow that process way down. The side benefit is the app developers will be aware of this and should be working with the QT framework maintainer hand in hand.

Thats how you resolve this issue. Just updating a few libs cuases more problems then it solves. What if the new libs aren't backwards compatible ? What if updating the libes to the next pendant breaks the existing apps except for the new one.

This is why package managers are so dangerous.

What haiku needs is a procedualry standardized software ecosystem that ensures compliance and functionality. Not a tool to destory application functioanlity. This is the achilles heel of linux, and its just one of many problems linux has with its bazzar market of software.

windows frameworks are rigoruosly tested for compliance and the ones that aren't don't get used much if at all. The whole purposed of .net was to help stabilize those API's and allow for more OS agnostic code in terms of windows versions.

So while your trying to climb out on a perch, your basis of fact has no merit.

Re: Package Management for Haiku

Quote:

Well with the app store model the QT framework maintainer earns some income, ergo keeping him financially interested in doing so. In thoery the QT app maintainer is the app maintainer for QT.

As I've mentioned before, an app store can just be a cash-driven front end to a basic package manager. If a developer chooses to release apps in this way, fine.

I'm sorry, I don't understand this line 'In thoery the QT app maintainer is the app maintainer for QT.', is there some sort of circular logic going on there? As far as I can see you said 'Qt App Maintainer = Qt App Maintainer', am I missing what you're saying? You do know Qt is a framework that other apps use right?

Quote:

Thats how you resolve this issue. Just updating a few libs cuases more problems then it solves. What if the new libs aren't backwards compatible ? What if updating the libes to the next pendant breaks the existing apps except for the new one.

No, that is not how you resolve the issue, you resolve the issue by allowing developers to use whichever version of libraries they want. Using Qt as an example, there is nothing stopping both Qt 4.6 and Qt 4.7 being installed alongside each other and being used at the same time, you're just limiting choice/developer freedom for no good reason.

Your argument that giving developers this choice makes the system more unstable is bogus, developers who want a good reputation test apps before they're released and give warnings about alpha/beta quality code. If, as a user, you choose to use a less cutting edge version of an app to avoid unforeseen bugs then that's fine, but don't say the rest of us can't run a new version as soon as the developer releases it.

Quote:

windows frameworks are rigoruosly tested for compliance and the ones that aren't don't get used much if at all. The whole purposed of .net was to help stabilize those API's and allow for more OS agnostic code in terms of windows versions.

I'm not just talking about .NET, I'm talking about ALL the application frameworks that exist on Windows; Qt, wxWidgets, Juce, etc... The point I was making is that Microsoft don't force developers into using specific frameworks (or in your extreme example, specific versions of frameworks), developers are free to choose the tools in Windows they want to use. Your argument is that offering that choice is tantamount to suicide in the computing world, my argument is that limiting frameworks has nothing to do with success, and Microsoft's success is the proof to back that up.

Re: Package Management for Haiku

Zeno Arrow wrote:

As I've mentioned before, an app store can just be a cash-driven front end to a basic package manager. If a developer chooses to release apps in this way, fine..

Its not needed, if the APP is in the APP store, it is already properly configured. If there is a framework requirement, dump that responsability back on the framework supplier/maintainer and the developer.

Zeno Arrow wrote:

I'm sorry, I don't understand this line 'In thoery the QT app maintainer is the app maintainer for QT.', is there some sort of circular logic going on there? As far as I can see you said 'Qt App Maintainer = Qt App Maintainer', am I missing what you're saying? You do know Qt is a framework that other apps use right?..

I am saying that in reality you should have a group/person who handles a framework like QT. Then all QT applications must be checked by that person for compliance. Developers using QT will also have to work with the Maintainer if they need version updates of library changes. They can be slipstreamed easily enough into new applications once a conformance test has been met.

Its called quality assurance.

Zeno Arrow wrote:

No, that is not how you resolve the issue, you resolve the issue by allowing developers to use whichever version of libraries they want. Using Qt as an example, there is nothing stopping both Qt 4.6 and Qt 4.7 being installed alongside each other and being used at the same time, you're just limiting choice/developer freedom for no good reason.

See my reply above. There should be 1 version of QT, this cuts down on wasted disk space "like its a concern with modern drives" and you get GUARENTEED COMPATABILITY. If the app needs to be recompiled modified for the next update of the frame work. So be it. Back to that quality assurance thing I just mentioned.

Zeno Arrow wrote:

Your argument that giving developers this choice makes the system more unstable is bogus, developers who want a good reputation test apps before they're released and give warnings about alpha/beta quality code. If, as a user, you choose to use a less cutting edge version of an app to avoid unforeseen bugs then that's fine, but don't say the rest of us can't run a new version as soon as the developer releases it..

To bad. I have never been of the opinion " and market research backs this" that newer is always better, especially when you run the potential of breaking comptability and conformance. I am saying sometimes less choice is better. Honestly, the market agrees. Also if you know anything about quality control you'd know that less choice is better. Especially with something as important as a framework.

Haiku needs very much to avoid being known as buggy and nonfunctional. The only way to prevent this is to Build the software ecosystem from the ground up to prevent it. You of course are always free to do whatever you wish with non haiku sanctioned or non app store software. However giving users a tool to destroy there operating system, IMHO is a bad idea. Leave that to third party hacks.

Zeno Arrow wrote:

I'm not just talking about .NET, I'm talking about ALL the application frameworks that exist on Windows; Qt, wxWidgets, Juce, etc... The point I was making is that Microsoft don't force developers into using specific frameworks (or in your extreme example, specific versions of frameworks), developers are free to choose the tools in Windows they want to use. Your argument is that offering that choice is tantamount to suicide in the computing world, my argument is that limiting frameworks has nothing to do with success, and Microsoft's success is the proof to back that up.

Yes it does, do you know what the worlds most popular office suite is ? I can assure you its a native MS product. How about accounting software ? how about most windows software. While its nice to stand around and say choice is good. Sure you can install whatever you like. But show me how many of those non MS sanctioned frameworks are reliable and robust.

What this essentially boils down to is this.

I think Haiku as a new OS needs to have a method of QUALITY ASSURANCE.

If that ends up limiting software choices, so be it. It would be better to have less selection but good functionality over alot of selection and massive compatability issues.

Henceforth why I say. Packagemanagers Solve NONE of these issues at all and in fact only serve to make them worse.

But your entitled to your opinion.

Re: Package Management for Haiku

thatguy wrote:

I am saying that in reality you should have a group/person who handles a framework like QT. Then all QT applications must be checked by that person for compliance. Developers using QT will also have to work with the Maintainer if they need version updates of library changes. They can be slipstreamed easily enough into new applications once a conformance test has been met.

Oh my christ, have you any idea of the implications of what you just wrote? Do you really expect the person maintaining a framework to also perform testing on every application that uses it? Do you know how much extra work that would be? Maintaining a framework like Qt is a decent sized job in itself, now you're asking them to be the software testing team for large software projects like KOffice too! Also, bear in mind people work on Haiku in their spare time. The responsibility for testing should lie with the developer of the application, with any bug reports relevant to the framework in use being filed with the framework maintainer.

Quote:

To bad. I have never been of the opinion " and market research backs this" that newer is always better, especially when you run the potential of breaking comptability and conformance. I am saying sometimes less choice is better. Honestly, the market agrees. Also if you know anything about quality control you'd know that less choice is better. Especially with something as important as a framework.

No, in this sense less choice is not better. A developer can choose to use a more mature version of a framework if they're aiming for maximum stability, but a developer should also be free to choose a newer framework version if they're trying to be more ambitious with application features. That's what I'm saying, it's up to the developer to make that decision, just like it's up to the user to make the decision about whether to use an application or not.

For what it's worth I'm an ISEB-qualified software tester and have worked in testing professionally, so I do have a fair idea of the importance of testing. Your heavy handed approach is not going to help build a vibrant development community for Haiku. If you're happy with putting developers off then be my guest and carry on, though in my opinion developers are the one thing Haiku needs most of all.

Re: Package Management for Haiku

Also if you know anything about quality control you'd know that less choice is better. Especially with something as important as a framework

@thatguy

Actually, I did do some academic study of the quality control process. The Quality Control process has nothing to do with choice of product on the free market. It deals with spot checking a small quantity of product that's being released by a producer, typically a commercial organization. In the software world, this is the equivalent of having a developer perform unit, usability, and performance tests on components of their software as it is being built. QA isn't something that's executed by the package manager, much as a normative user doesn't test Microsoft's software for them; the package manager software is a client that is performing an operation on the software on behalf of a user.

Ultimately, it is up to the developers to ensure that their packages compile and operate on a variety of platforms in a reliable way. The only thing that a package management system does is ensure that the dependencies specified by the developer are installed. This places the responsibility of delivering coherent, sane code onto the developer, an individual who must have a level-enough head to understand and identify what the software package dependencies are.

What you are proposing is punishment of competent software developers by limiting the choice of frameworks that all developers can use to write their software. This doesn't seem to follow the spirit of Free Software or a diverse community of developers whom all come together to provide software for free. Someone who has aptitude in Perl but not in PHP can still offer good software, just as someone who is a Ruby, C, Scheme or Lua developer can. People who develop in one particular standard of a language or a framework aren't any worse for doing it; it's what they had access to at the time and what they decided to write their software in.

What you are proposing does follow the spirit of Non-Free Software, where Project Managers and Executives must ensure that shareholders earn a return on their often costly material investment, often at the expense of employees and sometimes at the expense of useful features. Much of the software that Oracle, IBM, and Novell put out all have strict development requirements, and as a result, they have strict operational requirements as well, many of which irk and cause problems for customers to no end. Trust me.

Instead, as you mentioned, there should be some sort of minimum standards that packages should meet. Most of this can be accomplished by having basic compile and unit tests that run against the software. However, determining what the exact requirements for these tests are and when they should be run is difficult to determine, especially when the type of package management system to be used hasn't even been determined yet.

While your insistence on the need for Quality Assurance in Software is admirable, software packages should have multiple methods of being deployed. There is no One Deployment Method to Rule Them All because not everyone fits into a nice mold -- and trying to force people into that mold only upsets them. Open Source Software has the ability to remain flexible, something that is appealing, while remaining robust thanks to an active community with sensitive and perceptive developers.

But back to package management...

In short, stop placing all of the blame on package managers and begin placing some of it on developers of those packages; ultimately they are responsible and charged with writing software that meets good coding standards. You are correct in the fact that perhaps some additional package acceptance standards can be laid out, but instead of espousing amorphous global ideas and blasting others for disagreeing with you, come up with a concrete plan based on research and software development experience. In order to do this, though, you need to understand what kind of package manager is planning on being deployed. Instead of jumping the gun and assuming that the Haiku team will do nothing but write YACRAPAMAN (Yet Another Crappy Package Manager), give them the opportunity to get out of the gate and have a proof-of-concept product before deciding that no matter what they do, it sucks and is the worst thing to be given over to software.

After all, they're not really getting paid very well for the work they do...

sarienpalth wrote:

Also if you know anything about quality control you'd know that less choice is better. Especially with something as important as a framework

@thatguy

Actually, I did do some academic study of the quality control process. The Quality Control process has nothing to do with choice of product on the free market. It deals with spot checking a small quantity of product that's being released by a producer, typically a commercial organization. In the software world, this is the equivalent of having a developer perform unit, usability, and performance tests on components of their software as it is being built. QA isn't something that's executed by the package manager, much as a normative user doesn't test Microsoft's software for them; the package manager software is a client that is performing an operation on the software on behalf of a user.

Ultimately, it is up to the developers to ensure that their packages compile and operate on a variety of platforms in a reliable way. The only thing that a package management system does is ensure that the dependencies specified by the developer are installed. This places the responsibility of delivering coherent, sane code onto the developer, an individual who must have a level-enough head to understand and identify what the software package dependencies are.

What you are proposing is punishment of competent software developers by limiting the choice of frameworks that all developers can use to write their software. This doesn't seem to follow the spirit of Free Software or a diverse community of developers whom all come together to provide software for free. Someone who has aptitude in Perl but not in PHP can still offer good software, just as someone who is a Ruby, C, Scheme or Lua developer can. People who develop in one particular standard of a language or a framework aren't any worse for doing it; it's what they had access to at the time and what they decided to write their software in.

What you are proposing does follow the spirit of Non-Free Software, where Project Managers and Executives must ensure that shareholders earn a return on their often costly material investment, often at the expense of employees and sometimes at the expense of useful features. Much of the software that Oracle, IBM, and Novell put out all have strict development requirements, and as a result, they have strict operational requirements as well, many of which irk and cause problems for customers to no end. Trust me.

After all, they're not really getting paid very well for the work they do...

Obviously in your academic studies you missed the point where quality is designed into a product, its not a spot check of it.

that means hold versions of frameworks for longer preiods of time.

Packagemanager does absolutely nothing at all to fix any of the incompatability issues. It simply makes it easier to download and write software on the drive.

I say we punish application developers who refuse to write good quality applications inside of a reasonable set of boundrys. Good, bad or indifferent. Without a standardized method of creating, maintaing and assurance, the packagmanager does nothing to ensure that a haiku user will have a good experience and or continue to use the OS going forward.

I also say those who write good apps, should earn what they can, the app store allows them to do this.

Re: Package Management for Haiku

thatguy wrote:

Obviously in your academic studies you missed the point where quality is designed into a product, its not a spot check of it.

QA/software testing is about checking the software written matches the specifications. You cannot have good QA with just planning documents alone, you also need to 'spot check' that the code/design is up to spec. I can't believe you don't know this, it's fairly basic.

thatguy wrote:

Packagemanager does absolutely nothing at all to fix any of the incompatability issues. It simply makes it easier to download and write software on the drive.

A package manager doesn't cause incompatibility issues directly, it can't fix sloppy coding, and nor can you prevent users encountering a few bugs, no matter what you do. You don't fix a system by crippling its development, you fix it by testing it and correcting mistakes. This is the responsibility of the developer. Punishing developers by artificially restricting their options, punishing them preemptively for not testing, is retarded.

Re: Package Management for Haiku

Zeno Arrow wrote:

QA/software testing is about checking the software written matches the specifications. You cannot have good QA with just planning documents alone, you also need to 'spot check' that the code/design is up to spec. I can't believe you don't know this, it's fairly basic..

Great so it meets a specification. Are you famliar with ISO. do you know what ISO actually is. A way to ensure that you can perorm the same job over and over again, no matter how good or bad that job is. ISO ensure it will be done exactly the same every time.

I see nothing in packagae management that does anything to revolse the issue of poorly done software, it just allows you to install it. Nothing more. this is a collosal mistake here. Apple has it right and even they missed the boat.

Good quality always comes from a good process, In my industry that process exteneds beyond the drawing room. That means when a part goes to the machine shop and the machinist see the print, if he see a sharp edge that needs a radious, he kicks the design back to the engineer to make adustments.

Quality is a process and a philosophy, its not the product of testing, testing just ensures that a target has been met, but its doesn't show a way to arrive at it. This type of thinking is exaclty what cuased the massive quality fialures at many american manufacturing companies.

quality is a design philosphy and a design system. Testing isn't the only thing that controls it. Quality and conformance must be built into the system so that it avoids fialures before they occur. Rigorus standards Like ISO can help avoid this. But if you give no standards and do not enforce standards, you get a mess. There are ways to leave the framework oepn enough for inovation, but you can't just give people a tool to distribute applications and not put in a method to avoid a bad user experience.

Its like letting a 5 year old kid loose in a gun store. the end result will inevitably be a toss of the dice.

Zeno Arrow wrote:

A package manager doesn't cause incompatibility issues directly, it can't fix sloppy coding, and nor can you prevent users encountering a few bugs, no matter what you do. You don't fix a system by crippling its development, you fix it by testing it and correcting mistakes. This is the responsibility of the developer. Punishing developers by artificially restricting their options, punishing them preemptively for not testing, is retarded.

A package manager simply excerbates a problem that already exists, it makes it easier to make a mess. Nothing more. Haiku hasn;t reached a point where it needs to worry about installing apps, It doesn't even have a good formal methodology for creating, implementing and testing them yet.

The cart is most certainly in front of the horse here.

Re: Package Management for Haiku

thatguy wrote:

I see nothing in packagae management that does anything to revolse the issue of poorly done software, it just allows you to install it. Nothing more. this is a collosal mistake here. Apple has it right and even they missed the boat.

You don't use a package manager to implement testing. It's analogous to attempting to hammer a nail with a chainsaw; you're using the wrong tool for the job.

Either testing happens before the application reaches a repository, or the software is distributed through separate testing repo with users giving testing feedback to the developer.

In other words you're complaining about the lack of testing structure you perceive in the wrong thread.

Re: Package Management for Haiku

Zeno Arrow wrote:
thatguy wrote:

I see nothing in packagae management that does anything to revolse the issue of poorly done software, it just allows you to install it. Nothing more. this is a collosal mistake here. Apple has it right and even they missed the boat.

You don't use a package manager to implement testing. It's analogous to attempting to hammer a nail with a chainsaw; you're using the wrong tool for the job.

Either testing happens before the application reaches a repository, or the software is distributed through separate testing repo with users giving testing feedback to the developer.

In other words you're complaining about the lack of testing structure you perceive in the wrong thread.

I think your ignoring my point, My point is that you haven't even a way to make quality software, much less install it.

You can't use what doesn't work no matter how easy it is to download and copy to the disk.

Your fialing at this, and I now see why this topic even came up and why its now being discussed.

You must first create a system to spur the development or porting of quality applications, then you concern yourself with installing the product you have produced.

as it stands at the moment, there isn't even a product to use.

Its like buying conditioner for your hair before you have shampoo and running water.

Its doesn't do any good, but it makes your hair really shiny.

Re: Package Management for Haiku

thatguy wrote:

A package manager simply excerbates a problem that already exists, it makes it easier to make a mess. Nothing more. Haiku hasn;t reached a point where it needs to worry about installing apps, It doesn't even have a good formal methodology for creating, implementing and testing them yet.

The cart is most certainly in front of the horse here.

I won't comment on all your bickering about Haiku's development process lacking this and that - you are really missing the point of this topic.

Haiku is in desparate need of a package manager in order to be able to actually reliably build the many ported software packages that run on Haiku. Several of the core software packages being used by Haiku users and developers every day are ports: coreutils, gcc, flex, bison, subversion, ICU, openssh, openssl, ...
Building all those packages is a major effort which at this point in time really deserves some proper organization and design in order for it to work reliably. In order to build a single Haiku port, it is recommended to start from a clean system and only install the software that is required in order to build that package. Doing that manually is slow and error-prone, so it would be nice to be able to simply specify the build requirements and let a tool sort it out: enter the package manager. Package management is simply a requirement for reliable and reproducable build processes of large software trees.

If you would indeed know as much about software development processes as you claim, you would surely have heard about package management being one of its basic concepts these days.

In future, please try to think of something useful to contribute to the discussion instead of reiterating off-topic rants over and over again. Thank you.

Re: Package Management for Haiku

zooey wrote:
thatguy wrote:

A package manager simply excerbates a problem that already exists, it makes it easier to make a mess. Nothing more. Haiku hasn;t reached a point where it needs to worry about installing apps, It doesn't even have a good formal methodology for creating, implementing and testing them yet.

The cart is most certainly in front of the horse here.

I won't comment on all your bickering about Haiku's development process lacking this and that - you are really missing the point of this topic.

Haiku is in desparate need of a package manager in order to be able to actually reliably build the many ported software packages that run on Haiku. Several of the core software packages being used by Haiku users and developers every day are ports: coreutils, gcc, flex, bison, subversion, ICU, openssh, openssl, ...
Building all those packages is a major effort which at this point in time really deserves some proper organization and design in order for it to work reliably. In order to build a single Haiku port, it is recommended to start from a clean system and only install the software that is required in order to build that package. Doing that manually is slow and error-prone, so it would be nice to be able to simply specify the build requirements and let a tool sort it out: enter the package manager. Package management is simply a requirement for reliable and reproducable build processes of large software trees.

If you would indeed know as much about software development processes as you claim, you would surely have heard about package management being one of its basic concepts these days.

In future, please try to think of something useful to contribute to the discussion instead of reiterating off-topic rants over and over again. Thank you.

Packagae management is a answer to a problem that shouldn't exist. Its only a concern to linux users. Its a concern becuase linux lacks a good structure for developement and deployment of applications.

Off topic rants ? you fucking hilarious. Heres the truth. The Haiku team is making a wrong turn. do you think so many of your users could be wrong ?

Its not about wether I know specifically about software development. I do systems engineering. My job is to make sure groups A B and C all come up with a functional systems out of parts. I spend my life making sure disasters like this don't occur. I am good at it btw.

The customer "end users " should have a no tools, no assembly required mantra. If you are expecting to have users download and then autmatically compile applications. This has already fialed.

Fialure, Packamanagers are a distinct sing of it.

If it means a bit less software, so be it. If it means haiku won't attract developers who refuse to use native API's and approved tools kits, So be it.

If it means haiku avoid having alot of crappy apps, so be it.

I love these arguments, just becuase linux has 100,000 applications " what ever that number really is who cares " doesn't mean that is has 100,000 good applications.

More like 100 or less.

So its a dumb argument. Haiku developers should be focusing on a couple of really good solid apps, not worrying about the unix system structure and all of its inherent problems.

The reason you are seeing so much resistance, is becuase alot of users here are aware of the problem brining a package manage creates.

Your essentially opening the door to create hilinux. a fialure of massive proportions.

If a app isn't available, to bad. Get the app into a good solid conformant format, then you can sell it. But don't lower the bar. Raise the bar.

Re: Package Management for Haiku

We force a one time install of the QT runtime to gain acess to QT apps. QT APPS must use the Master QT library, PERIOD
...
sure its seems a bit abusive, but the end user should not be made to suffer becuase some developer is to lazy or to self righteous to simply update or use the standard QT library.

And once you update QT Master (since you said you have only one version installed) all the Apps that were using the old version will stop working all of a suddenth, there goes a happy user and developer :( ...

Re: Package Management for Haiku

pedroeloy wrote:

We force a one time install of the QT runtime to gain acess to QT apps. QT APPS must use the Master QT library, PERIOD
...
sure its seems a bit abusive, but the end user should not be made to suffer becuase some developer is to lazy or to self righteous to simply update or use the standard QT library.

And once you update QT Master (since you said you have only one version installed) all the Apps that were using the old version will stop working all of a suddenth, there goes a happy user and developer :( ...

The immnent idea is to stop the updating process nearly dead in its tracks. Its better to update later then sooner.

Also I don't see the purpose in changing the pendant on librarys so frequently. The system could simply ignore the decmial value after a specific version to avoid linking failures. IE there is version 1.0.0 and there is version 1.0.9

tell the system to ignore the last digit since its likely just a patch.or force the pendant numbering system to behave in that manner.

the other thing that needs adressing is how to cut down on all the damn changes. force a different catagorization scheme for pendants so a system Like I mentioned could work.

so we could have a 3 digit system like Tonestone mentioned and make that a system wide convention to cut down on library linking breakages.

Re: Package Management for Haiku

pedroeloy wrote:

We force a one time install of the QT runtime to gain acess to QT apps. QT APPS must use the Master QT library, PERIOD
...
sure its seems a bit abusive, but the end user should not be made to suffer becuase some developer is to lazy or to self righteous to simply update or use the standard QT library.

And once you update QT Master (since you said you have only one version installed) all the Apps that were using the old version will stop working all of a suddenth, there goes a happy user and developer :( ...

The immnent idea is to stop the updating process nearly dead in its tracks. Its better to update later then sooner.

Also I don't see the purpose in changing the pendant on librarys so frequently. The system could simply ignore the decmial value after a specific version to avoid linking failures. IE there is version 1.0.0 and there is version 1.0.9

tell the system to ignore the last digit since its likely just a patch.or force the pendant numbering system to behave in that manner.

the other thing that needs adressing is how to cut down on all the damn changes. force a different catagorization scheme for pendants so a system Like I mentioned could work.

so we could have a 3 digit system like Tonestone mentioned and make that a system wide convention to cut down on library linking breakages.

Re: Package Management for Haiku

thatguy wrote:

App Store and a good solid design for frameworks and applications and bundling Easily fixs the problem you wish to resolve.

As for updating core system files. Well, go have a look at windows update. It works and is highly unobtrusive and people are familiar with it.

Go look at the things that are sucessful.

basing the anything on linux, is akin to studying abject fialure, becuase linux is a abject desktop computing fialure.

Look at sucessful systems Mac OSX and Windows.

they have it figured out.

Go learn something.

Having a APP store also help attract developers, becuase we get to pay them for their efforts and then the standards compliance just becomes a fact of life. It simply must be the way things are done, for Haiku to be sucesful. Modeling anything on linux aside from driver code is generally a very bad idea.

I am not sure whether your comment counts as spam or whether you actually believe what you are saying, what I am sure about on the other hand is that Windows update does not work very well and is certainly not unobtrusive. Package management is the reason people switch from Windows. first of all Windows does not have an "APP store"in addition you stated that "basing the anything on linux, is akin to studying abject fialure, becuase linux is a abject desktop computing fialure. ", however you are implying that Ubuntu should be successful due to that fact that Ubuntu has an app store. How do you plan to go about implementing the back-end of this "APP" store, what is the simple clean way to do it (you don’t want over-complication after all). The answer is an existing package management system. they work.
and by the way,
GNU/Linux on the desktop IS NOT A FAILURE

Re: Package Management for Haiku

I think for large libraries you could include multiples on the system rather than package them into every application.

First I want to explain library numbering & then apply it to Qt example. Libraries are numbered Major.Minor.Micro (ie: Qt 4.5.1). The major will break binary compatibility, the minor may break compatibility and micro should not break it.

A very good description of library numbering from internet:
"When a new release only fixes bugs and doesn’t add new features or functionality, the micro version is incremented. When new features are added in a backwards compatible way, the minor version is incremented and the micro version is set to zero. When there are backwards incompatible changes, the major version is incremented and others are set to zero."
http://www.digip.org/jansson/doc/dev/apiref.html

So, you would only need the latest versions for Qt4.5 (4.5.3), Qt4.6 (4.6.3), Qt4.7 (4.7.1). In fact, the minor versions are not supposed to break compatibility but for safety we just provide them. You can start with say Qt4.6.0 and swap out with newer bug fixed one when ready until you hit the last one, Qt4.6.3

libpng went to 1.2.44 before moving onto 1.4.x branch. That's a lot of bug fixes. :-) You'd only need libpng.so.1.2.44 (the latest) to work with all programs which require libpng version 1.2. Since this is relatively smaller library, you could bundle with applications but also since you only have 1.2, 1.4 & now 1.5 you could also install these minor revisions system wide (application bundle). Of course, Haiku already includes widely used POSIX libraries like libpng.so as part of the OS. Searching Haiku I see libpng.so.1.4 (version 1.4.4) but no libpng.so.1.2
Actually, this is one library example where changing minor revisions broke compatibility. So, applications linked with version 1.2.x would require 1.2.44 to work properly. That's why people are scared of minor revisions because they can stop an application from working properly. Which can be fixed by either code changes + recompile or just recompile & getting program to link to newer library version.

Re: Package Management for Haiku

I'm sorry, but you're all just bike-shedding at this point.
First of all, for those still against it, this is not a question of whether Haiku will have a package management system or not--it will; we voted on this already (http://dev.haiku-os.org/wiki/FutureHaikuFeatures). The question is what this system will look like and how it will behave.
Zeno Arrow claims to be working on document describing his idea. If anyone has an idea he thinks is better, he should write his own, but continuing this discussion won't get anyone anywhere.

Re: Package Management for Haiku

Having a package manager just to maintain dependencies is a bit frustrating. Haiku could do so much more...
Haiku is different from other operating systems by the consistency with which components are well integrated together, to improve the user experience.
PackageManager could be used :

  1. by the Tracker to “identify” files for which you do not have yet a matching MIME type rule.
  2. by the Tracker to search a new application to “Open with”.
  3. by the MediaPlayer to find a codec for a new media format
  4. by the DeviceManager to find a driver.

To meet this need, a package may contain :

  1. files identification rules (with the filename's extension for entry point) giving the correct MIME type when matched
  2. the filetypes the included application handles
  3. the FourCC codes the included codec handles
  4. the devices list the included driver(s) handle(s) (DeviceClassID-VendorID-DeviceID...)

Repositories would extract these metadatas to build a database which could be queried by the PackageManager to find the expected resource among all the available ones .

So, the PackageManager could almost be forgotten when it came to technical stuff.

It's not necessary to achieve these features immediately, but we should provide the foundations to allow a future implementation. (I mean easily-readable Haiku-specific metadatas in the package)

Re: Package Management for Haiku

Cool ideas starsseed, definitely some potential there.

Re: Package Management for Haiku

Sorry for coming late to the party, but can I please strongly suggest you take a look at zero install to evaluate whether it could be used as a basis for haiku's package manager?

http://0install.net/

I use zero install for distributing most of the software I write, and think it's great. Moreover, I think it's model supports haiku's user-focused goals excellently. Benefits include:

- you can run software from anywhere on the internet, by dragging it to wherever you want to keep the launcher
- no central repository means there's no such thing as not having the dependencies available for some cool new package with crazy requirements
- no global state means each application's dependencies can be satisfied even if they would conflict with another package in a traditional package manager.
- you get the advantages of a flexible, cross-platform package manager with existing packages and a helpful community, rather than creating yet-another-package-manager and fragmenting the packaging world even further
- inbuilt support for consolidating all of an application's dependencies into one runnable package, for taking with you on a usb stick for example

The rox desktop (http://roscidus.com/desktop/) and I believe also the the sugar desktop (of OLPC fame; http://en.wikipedia.org/wiki/Sugar_Labs) already use zero install to distribute and applications, so it's not like it's a new and untested system. Both of these desktops are geared towards simplicity and ease of use for the user, which sounds a lot like haiku to me.

If you're concerned that the existing zero install interface may not fit with haiku, you should know that it's entirely possible to make a new frontend that fits with your OS - a windows frontend has recently been written and is already quite usable. In addition to that, the feed (package) format is extensible via xml, rich makes it possible to add your own haiku-specific information to packages if needed.

I hope you will consider using zero install, as I think it would offer tremendous advantages to haiku, and I would love to see more people using this excellent system.

Re: Package Management for Haiku

I have looked at 0install, but I don't think it's a very promising candidate:

  • AFAICS, it is aimed at managing additional applications, not so much at managing the components of the itself, however, I'd like to get a package management system that could cater for both, system packages as well as user installed packages.
  • Being decentralised is deemed as an advantage, I've experienced the contrary, actually, since during my tests 0install was not able to find some of the dependencies of the subversion package I tried to install. In the end, supporting different repositories all over the place is nice, but doesn't help if their contents aren't maintained properly. Otherwise, you're still borked.
  • Lastly, 0install (as most other package managers I've seen) would be difficult to combine with our intended use of package-fs as package activation backend.

In summary: I'd rather try to pick up some of the nicer concepts of 0install and apply them to our own implementation.

Re: Package Management for Haiku

I think that package management needs a bit of rethinking. From the comments, it's clear that just as many people value the ability to make a portable application as they do the ability to centrally manage applications. Were I planning this, I would probably take the following approach:

1. Create a registration mechanism for installed libraries and programs. That way any application can check to see if something is installed.
a. Allow for multiple concurrent versions to be installed.
b. Support machine and user installations.
2. Create a build mechanism for applications.
a. Allow packages to be built with locally stored dependencies.
b. Have a cascading reference path (package -> user -> machine)
c. Build with dynamic references to packages by default.
d. Create a versioning system that specifies major upgrades. That way developers can specify when their API changes.
e. Allow linking to specific versions or a specific major build.
f. Allow for multiple architectures to be supported in the same package. Provide a tool to strip unused architectures out.

After these pieces are done, you can fit in the extra pieces as they make sense. If you're looking at arch's pacman, I recommend also looking at some of its derivatives, such as clyde or packer, which support automated downloading and building from the AUR.

Thanks for working on this, by the way.

Re: Package Management for Haiku

If I may, it seems a bit premature to be discussing package management. Which isn't to say that it's not an important detail. But when new revisions bork applications left and right, it might be advisable to step back a moment and really consider all the options thoroughly.

Personally, I have my own issues with Linux package management. It works well for that operating system in part because it offers so *limited* a selection of software, and developers are more or less forced to continuously update their software in order to make it work.

I could see problems cropping up with a dpkg style system. Say there's an app you use, which for whatever reason has not been updated in some time, perhaps due to the maintainer having other obligations. This application relies in some library in order to function. During an update check, the package manager determines that in order to use the latest version of your web browser, this library would have to be updated. But the maintainers of the library deprecated a few calls essential to the other application. Now you have a broken app.

It's my opinion that a package manager would be best suited as an add-on. Other avenues may be more desirable in order to facilitate smooth operation of applications and ease of use by newcomers. The linux solution just isn't as flexible or intuitive to the everyday user.

The OS X model works just fine. Application bundles/installers allow the *developers* to decide which method is best for packaging and distributing their application in a way which shouldn't interfere with other applications, or cause the application to be broken in 2 years time.

Re: Package Management for Haiku

You might also look into the BSD ports system (or similarly, Gentoo's ebuild system). Source-based distributions have a lot of advantages over binary-only packaging. For one thing, packages can be compiled optimized for the system they are running on. For another, it allows the user a lot of flexibility in choosing which features to enable.

Re: Package Management for Haiku

IMHO many of the problems with 'package management' are really problems with the "dynamic loader" of a system. if the dynamic loader refused to load shared-libraries different than those the program was originally compiled against, a huge number of bugs could be eliminated.

perhaps if each shared library file was hashed at packaging-time, and the dynamic loader required the hash to match at load/runtime, it would be a start??? then, the entire package management system could be based around those hashes instead of around filenames and package names.

good luck to the Haiku team.. a very fascinating project.

Re: Package Management for Haiku

Before now i never knew that there were people out there(who were not payed by MS) who dislike package management. as far as packaging goes, i like the way Arch does it(makepkg). i think pacman is the solution. I would love to see pacman on Haiku. I would also like to see Ethernet and Wireless drivers for my system76 laptop so that i would not have to reboot into Arch or OpenSUSE to go to haikuware and this website.

Re: Package Management for Haiku

I think writing a package manager from zero will be less work than porting one from a linux distro. My experience is working with others' source code takes much more time.

My idea is to separate system upgrades and optional software. Upgrades could work with a simple un-tar, optional software (e.g. a new browser) could be handled in a package manager.

Why?
After a system upgrade, it is unnecessary to restore the old state. The new version needs to be backwards-compatible. This is quite bad in linux that you have to have two or more versions of gcc, libstdc, libreadline, etc.

Regarding to optional software, it is important to know what files and settings were on the disk before, so the user can easily remove the software.

A modern OS _do_ need a smart package manager; to resolve dependencies, to examine settings before installing/removing, to execute pre- and post-installation scripts etc.
And, unfortunately, it needs to be centralized within an official repository.

IMHO you should collect the good ideas from the existing package managers rather than integrating the so-called best one. This way, you can drop out unnecessary features and concentrate on the important ones.
So I dont think it will be lot of work. (not much more than writing a demo app)

Anyway, congrats for your efforts, it is a good job! At home, I already installed this to my wife's laptop :)

Re: Package Management for Haiku

Why are Windows and OSX dominant in the OS world? Because their applications are easy to install AND, for the most part, follow a structured release type. Windows runs .exe and OSX runs a universal app.

If you seriously want to contend with the big guys, you need to create a single standard. Hell, create a Haiku compiler for each language to create native apps. THEN run the whole thing through traditional repos and push updates to the apps modularly.

Haiku isn't Linux, right? So stop thinking of it as Linux.

There is nothing wrong with creating a standard or structure to open source.