Software on a computing platform such as Haiku is typically distributed as a package. Without a packaging system it would be hard for users to install software and because software often depends on other software, the chain of dependencies would be difficult for a user to resolve themselves. To orchestrate the distribution and management of the packages, Haiku has a packaging system which consists of applications, online tools, on-host tools and software libraries. One aspect of the packaging system is the coordination and identification of repositories.
An overview of the inner workings of package management on Haiku.
Why have people been able to install software applications in Microsoft Windows for decades without a package manager and without needing to worry about a difficult chain of dependencies?
…I’ve been using nothing but Linux for the past 20 years (and occasionally Haiku) 😀 so I don’t know. I’m just curious. I do know I much prefer the way software is handled by package managers, like they are in Linux distributions, Android, and Haiku.
Because Windows (and Mac) Software dump all dependencies in the programs directory. Or they put it elsewhere and Windows keeps track of the correct libraries for the software through Windows Side-by-side (SXS). Waste of disk space but memory is cheap nowadays i guess.
drcouzelis,
On the other hand I’d argue that windows was notorious for DLL hell. It used to be very common that you downloaded an application and you’d need to update ms runtime libraries, install active-x updates, hunt down some random ocx files, etc. Hunting down dependencies on windows was stressful in part because you’d inevitably find the DLLs on some dodgy websites, which would often work but ugh that felt so sketchy. This got better over time especially as 3rd party visual basic controls became less popular, and more dependencies were distributed with the application or windows update, but I still find myself having to occasionally download dependencies on windows. I got into the practice of archiving the dependencies alongside the applications that needed them.
It’s so much easier to let the package manager handle it in linux, for most users that’s all they’ll ever need. That is until one needs to install software outside of the repos. As a developer I often install applications from source. Usually I install the “*-dev” dependencies from the repos without issue, but sometimes that’s incompatible and DLL hell raises it’s ugly head forcing me to manually install dependencies that are not being managed by the distribution. :-/