Hello, everyone.

After 2+ years of repeating disagreements with Portage maintainer(s)
I have finally decided to fork Portage. My little fork uses technical
name of 'portage[mgorny]' [1] (to distinguish it from mainline Portage),
and aims to focus on cleaning up code and adding useful features with
less concern for infinite bug-by-bug compatibility.

Detailed rationale in README [2].


Before installing
-----------------
This is a bleeding-edge, strictness-first fork of Portage. It is
intended for developers and power users mostly. Things will break.
You will eventually be asked to remove files deprecated 5+ years ago.
Developer mistakes will harm you (but someone needs to find them
and report them!)

Dynamic dependencies are off by default (following Council decision
from 3.5yr ago). If you haven't rebuilt your system recently, you may
need to use '--changed-deps' once. Afterwards, things should work fine
unless developers screw up, and then you should report bugs.

Only ~arch version at the moment.


Installing
----------
To switch to my fork of Portage, just:

  emerge -vn sys-apps/portage-mgorny

Note that you may need to:

  emerge --deselect sys-apps/portage app-portage/repoman

(repoman is integrated back into Portage)

You may also need to upgrade all revdeps of Portage since the newest
versions were bumped with updated dependencies.

Please note that due to misdesign, Portage will abort upon having to
unmerge itself on first install. However, it is a harmless failure
and portage[mgorny] will be installed already at the point, so upon
restarting it will just finish cleaning up.


Merge plan
----------
I do intend to regularly merge from mainline Portage, and preserve
reasonable compatibility (especially in terms of API). I also plan to
keep reasonably good commit quality as to make it easier for Portage
developers to merge back. However, this is not my primary concern.


Releases
--------
I plan to make frequent releases. I'm planning to version the releases
by sequential values of fourth version component from the last Portage
release. For example, since the last Portage release is 2.3.24, I have
just released portage-mgorny-2.3.24.1, the next release will
be 2.3.24.2, etc. until Portage 2.3.25 is released.

The releases are made against *git HEAD* and not respective Portage
versions, i.e. 2.3.24.1 is [2.3.24 + changes in mainline + my changes].
The matching versions are mostly meant to make >= deps easier, i.e. you
can reasonably assume portage-mgorny-2.3.24* will have all the new APIs
of portage-2.3.24.

The release notes [3] list any major changes I make. They do not list
the respective changes in mainline Portage, sorry.


Bugs, features and requests
---------------------------
I'm open to your feedback, including things that were rejected
by mainline Portage team. For best efficiency, please report bugs
on GitHub [4] and/or open pull requests [5].

Enjoy!


[1]:https://github.com/mgorny/portage
[2]:https://github.com/mgorny/portage/blob/master/README
[3]:https://github.com/mgorny/portage/releases
[4]:https://github.com/mgorny/portage/issues
[5]:https://github.com/mgorny/portage/pulls

-- 
Best regards,
Michał Górny


Reply via email to