For the End User
- An optional new configuration system, making it much easier to operate upon
groups of related packages, much easier to maintain multiple systems (or chroots)
and much easier to set options on a per-package or per-repository basis.
- Performance. Paludis can be an order of magnitude faster than other package
- Low dependency bloat. No Python, no big external crypto libraries.
- Native security (GLSA) integration.
- Proper multiple repository support, not constrained by a limited 'overlay'
- Support for repositories containing things other than ebuilds.
- License filtering.
- Hook scripts, for running code after a certain action occurs.
- User definable package sets.
- Ability to sync multiple repositories, natively, using SVN, CVS, Git etc.
- Ability to uninstall packages with dependencies, and safely remove unneeded
- Ability to continue with a collection of installs after a failure, and to resume
failed compiles far more flexibly than offered by Portage.
- Ability to see why a package is really being pulled in, rather than relying
upon the rather crude '--tree' offered by Portage.
- Much improved output:
cave show makes it easy to get a useful summary
of information about a package, and
cave resolve can be configured to show
relevant information (e.g. USE flag descriptions and an explanation of why a package
is being pulled in).
- Secure (un)installation of set*id files, preventing your system from being left
vulnerable after having replaced a vulnerable application.
- Ability to use slot, use, repository and ranged version dependencies in dependency
- Ability to see all packages that need unmasking in one go, rather than one package
at a time.
- Ability to automatically reinstall scm (svn, cvs etc.) packages after a given period
(daily, weekly, ...).
- Ability to manage packages even where no ebuild is available.
For the Ebuild Developer
- Full and correct circular dependency resolution.
- Deep dependency resolution even when not upgrading everything.
- Support for 'experimental' (read: 'still not implemented in Portage') EAPI proposals
(use dependencies, ranged version specs, -scm and -try version specs, src_uri arrows etc).
- Ability to deliver news items to the end user.
- Much more useful diagnostics.
For the Programmer
- Proper client / library separation.
- API documentation and code examples.
- A sane OO API.
- Consistent interfaces for different repository types.
- Test suites and extensive static checking, to check the impact of changes.
- Type safe interfaces, for catching programming errors at compile time.
- A choice of programming language for external tools.