He's not dead, he's resting
Paludis is Going Into a Cave
The following applies to Gentoo, not Exherbo. Exherbo developers (Exherbo has no users) already know what’s going on there. I figure it’s worth having a clear source of information on this for Gentoo users, though, rather than making people rely upon rumours and third hand transcriptions of what’s been said on IRC.
The original Paludis client was more or less designed to be a less perverse version of
emerge, with additional options for things like querying. On the plus side, it made things slightly easier for Gentoo users to pick up. However:
- Users would be confused as to why things like
--show-use-descriptions, which is an option for the
--installaction, would not also do something with
--query. Funnily enough, users don’t seem to wonder why
emerge --sync --changelog --pretenddoesn’t work.
- We had to be extremely careful allocating short options. Thus, we only allocated short options when we were sure an option would regularly be used both enabled and disabled, since otherwise it could just go in
PALUDIS_OPTIONS. This worked well enough for users who were paying attention, but seemed to scare off certain people who jumped in without understanding what they were doing.
- It meant we regularly had to decide between breaking familiarity or doing something dumb just to make Portage converts comfortable.
I’ve never especially liked the result. It’s not close enough to
emerge to make learning zero cost, and it’s too close to
emerge to be a pleasant user interface. Fortunately, the UI and the library are mostly nicely separated, so we can fix this. The plan is as follows:
- A new client, named
cave, will be provided. All pretence of feeling anything like
emergehas been abandoned for
cave. Instead, the interface is roughly based upon
gitand similar tools.
- Depending upon whether or not we can be bothered, a second new client named
egressmay or may not be produced. If it is, it will be command-line-compatible with
emerge, and with a reasonably similar output format (within reason). I’m not convinced something like this would be worth the effort to write, although there are some Gentoo developers who insist that something that behaves almost identically to
emergeis a critical requirement for any official Gentoo package manager…
paludisclient will be deprecated and phased out.
To make things simpler, we’ve also decided to use the introduction of
cave to switch to the shiny new resolver. The shiny new resolver is a lot more flexible, a lot more powerful and a heck of a lot easier to maintain and modify than the old resolver. However, making the
paludis client use it would be quite a bit of work, so we’re not going to backport it.
There is no specific timeframe for any of this, and no estimates will be provided. There are, however, lists of things that need to be done.
- The Basic Functionality milestone contains all of the things that have to be done before we consider
caveto be ‘more or less usable’. Until this milestone is complete, we won’t be enabling
cavein any of the ebuilds on Gentoo, and we don’t recommend users sneakily enabling it themselves. Note in particular that some of the things not yet implemented include “displaying a user-readable error message rather than a big fat “UI not implemented!” when attempting an unsafe package uninstall, and “handle virtual blockers”.
- The Useful Functionality milestone contains all of the things that have to be done before we remove the
paludisclient. We will be making
caveeasily available before it includes every bit of functionality present in
paludis, but we won’t be forcing a switch until we’ve either implemented equivalents for every feature or decided we’re not going to support a particular feature at all.
- The Long Term Extras milestone contains things we’ll be doing at some point.
These milestones are probably incomplete, and are definitely open to arbitrary additions, removals, changes and being ignored based upon developer whims, available development time, bribery, patches, lack of interest, features looking fun or boring to code and the phase of the moon.
I realise this is probably futile, but I should stress that users should not attempt to enable or use
cave on Gentoo until we pass the Basic Functionality milestone. This isn’t taking away your fun — some of the not yet completed Basic Functionality items are necessary for basic usability and correct operation on Gentoo.