One thing that many newcomers to Linux discover when installing applications on their systems is that they’d always have to install directly from the internet – – most times. To add to the web of these technicalities, different distributions (distros) support different format for distributing and utilizing their applications (e.g. the .deb for Debian-based systems and .rpm for Redhat-based). With a situation like this, if for instance you encounter an app in a friend’s PC (running fedora) that you love and would like to have in yours, you couldn’t just copy the app’s binary package to your Ubuntu PC and install. You’d rather hope that there is a .deb equivalent package for that app, before you’d be able to install.
Though this has it advantage, which is ensuring that the latest copy of an application is installed and also to eliminate having to download many supporting softwares that could make a Linux installation bloated. But it more or less a scary endeavor to engage in by a ‘fresher’ in FOSS. Especially for user coming from a windows world where instantly an app in windows XP, could be installed in Vista, 7, 8 or 10 using the same (single) file following the same pattern.
This idea of different distro, different packaging (with all the hassles accompanying it) is what is termed fragmentation. It has always been a major drawback for the adoption of Linux at the desktop level. And also the development apps for Linux desktop. Imagine a situation where a developer has to release an app for Linux: he would have to develop apps for the many different distros using different packaging formats, with their strict individual conventions and standards. Also considering the man-hours that would be spent in maintenance and testing would be through the roof (or if I could say heavenly). The fact that Linux distros change (as a result of upgrade of course) constantly would put such a developer on his toes – – or on his bums – – So as to keep avoid his apps becoming incompatible with the OS it’s supposed to work on. This is nightmare that no developer would want to behold. So most developers rather work on proprietary systems, like windows, even though they might release and share the source code (like in free software).
A universal Software Package System…
For Linux to be able to conquer the desktop, there must exist a universal software package system for Linux distros. For me, a major reason would be for the easy distribution and sharing of applications by Linux users even if they are different distro. Since it would be fulfilling a very crucial aspect of the conditions that would make a software truly ‘free’.
A system I think would be a truly universal software packaging system (USPS) for Linux should have some qualities that include the following;
Available to all Linux distros; so that an app developed once could easily become available on as many distribution as possible almost simultaneously.
Relatively stable/static; unlike the Linux distro (starting from the kernel itself) that are regularly being updated and changed unexpectedly. This would make/enable developers not to constantly worry about their apps becoming obsolete within a short period of time.
Provide backward compatibility; that is even if a new version of a distro is released apps could still be uploaded on older supported version of the distro.
Not compromise functionality, integrity and security; it should not make the OS work less as it should because for example a .deb package is installed on fedora. And should be very, very secure.
There are some software packaging system that are trying to work around these highlighted areas of a USPS. The prominent ones currently in the air are the snap package system (supported by canonical, the developers of Ubuntu) and flatpak system (supported by Redhat, the developers of fedora).
In as much as the intentions of these systems and their developers are genuine and inspiring but, to me, their approach seems more about branding than the unification of software packaging for Linux. It reminds me of the famous quote ‘A house divided against itself cannot stand’. A true USPS should be among other things first of all be universal. Meaning it should be able to unify the diversity of Linux distros out there – – Instead of creating a diversity of USPS. A situation where developers of different distros would now have to choose a particular USPS would take us back to where we began in the first place – – fragmentation.
The low adoption of both the snap and flatpak systems already give us a clue to show this, because adoption has been all about ideology (where developers stand) than the unification of app packaging system. Some people in the FOSS community have argued that instead of canonical and redhat rolling out new USPSes they could have put effort together to develop an alternative, AppImage, which has been around for as long as about 10 years (i.e. since 2006).
To be able to celebrate the richness of varieties that exist in the Linux ecosystem a truly USPS would be as step in the right direction. For me, fragmentation in Linux could be reduced to a have minimum when software packaging technologies converge, rather than the opposite that is being seen in the FOSS community. Only time would tell.
But what do you think?…Tell us in the Comment below.