One key differentiator between different Linux
distributions has been the packaging system used. The same is happening
in the world of Illumos
distributions, some use IPS, some debian
uses pkgsrc, Tribblix
sticks true to the retro feel
of Solaris by using SVR4.
Overall, there's been a huge amount of effort expended on
packaging. Consider the replacement of SVR4 packaging with IPS - a huge
multi-year multi-person effort, that required almost the whole of
Solaris to be retooled to fit. And yet, this is all wasted effort.
When choosing a packaging system for Tribblix I deliberately
chose SVR4 for 3 reasons: it was compatible with what had gone before,
it was something I was familiar with, and it was reasonably lightweight
and simple. If I had come from a Linux background, I may well have just
gone with rpm or dpkg. The key is simplicity and minimal footprint.
What of packaging in the future? I see it largely
disappearing. You can see this in the consumerization of applications:
it's the App Store, not a package repository. Package management is
conspicuous by its absence in the modern world of IT. Looking at where
Ubuntu are heading
, you can see the same thing. That's not the only initiative - look at AppStream
for another example.
And that brings me back to using SVR4 in Tribblix - it's
about the lightest weight packaging option I have available. And frankly, it's
still far too bloated and complex. But it's merely an implementation
detail that is largely invisible, and I want it to become less visible than it is at present.
The point here is that
packages aren't relevant to users. Applications are. Which is why the
notion of overlays is central to Tribblix - at their simplest, overlays
are simply collections of packages (I could have used the term cluster,
but that already has meaning to the Solaris installer, although it was
never exposed to administrators later which was a terrible design), but the idea is that you manage
software at the level of abstraction of an overlay, rather than at a
Even as a unit of delivery, packages aren't that useful - they normally arise as build artifacts, which don't necessarily map well to user needs. And that's another thing - what constitutes a useful component of a package isn't fixed, but is very much context dependent. Worse, the possible contexts in which a package can be used isn't known ahead of time, so the packager cannot enumerate all the possible uses of the software they're packaging. And an individual package is almost never useful in isolation - most working applications are the leaf nodes of a large complex tree. Dependency management is another game where, if you play, you lose. Rather than tightly-coupled systems with strong dependency management, I'm looking for loosely coupled largely self contained units of delivery. If necessary, application bundles manage their own dependencies rather than relying on the system to do so.
Despite the title, it's not that packaging will disappear, but it will (I hope) become largely invisible.