Paul de Vrieze wrote:
The promissed glep on package manager requirements. Please comment on it. There are some parts that may be controversial (portage has in the past not provided support for reverting to stable either), but please keep the discussion on topic.

Paul



s/primary/official/g

This primary business is silly IMHO. GCC is Gentoo's official compiler, baselayout is the "official" init system, etc...

There is precedent here, and you are ignoring it.

Basically this whole GLEP is a reactive farse. I realize thats not your intention, you seriously want a defined manner in which many package managers can live. However reading the GLEP it seems to be built completely against Paludis; stacking the deck as it were. However I left other comments below ;)




------------------------------------------------------------------------

[Gentoo] <http://www.gentoo.org/> [*Gentoo Linux Home <http://www.gentoo.org/>*] [*GLEP Index <http://www.gentoo.org/proj/en/glep>*] [*GLEP Source <http://www.gentoo.org/proj/en/glep/glep-0049.txt>*]

GLEP:   49
Title:  Alternative Package Manager requirements
Version:        2214
Last-Modified: 2006-05-20 14:51:41 +0200 (Sat, 20 May 2006) <http://www.gentoo.org/cgi-bin/viewcvs.cgi/xml/htdocs/proj/en/glep/glep-0049.txt?cvsroot=gentoo>
Author: Paul de Vrieze <pauldv at gentoo.org>,
Status: Draft
Type:   Standards Track
Content-Type:   text/x-rst <glep-0002.html>
Created:        18-May-2006
Post-History:   19-May-2006

------------------------------------------------------------------------

Contents

    * Abstract <#abstract>
    * Motivation <#motivation>
    * Rationale <#rationale>
    * Backwards Compatibility <#backwards-compatibility>
    * Categories of package managers <#categories-of-package-managers>
    * Package manager requirements <#package-manager-requirements>
          o primary package manager requirements
            <#primary-package-manager-requirements>
          o candidate primary package manager requirements
            <#candidate-primary-package-manager-requirements>
          o secondary package manager requirements
            <#secondary-package-manager-requirements>
          o third party package manager requirements
            <#third-party-package-manager-requirements>
    * transition phases <#transition-phases>
          o primary package manager transition phase
            <#primary-package-manager-transition-phase>
          o Secondary package manager to candidate primary package
            manager transition
            
<#secondary-package-manager-to-candidate-primary-package-manager-transition>
          o Third party to other transition
            <#third-party-to-other-transition>
    * References <#references>
    * Copyright <#copyright>


  Abstract <#id7>

This GLEP describes four classes of package managers. What the requirements for them are, and what support they can receive.


  Motivation <#id8>

To set a standard that package managers that seek gentoo project approval and support should adhere to.


  Rationale <#id9>

Currently portage is showing its age. The code of portage does not seem to be salvageable for new versions. There are two known alternative package managers that claim a level of portage compatibility. These alternatives are paludis <http://paludis.berlios.de/> [1] <#id1> and pkgcore <http://gentooexperimental.org/~ferringb/bzr/pkgcore/> [2] <#id3>. Before these alternatives are developed further, a set of rules should be created to level the playing field and ensuring that decisions can be made clearly.


  Backwards Compatibility <#id10>

Not a problem for this GLEP. There is no previous standard as the issue did not exist before. This GLEP is to prevent future compatibility issues.


If there is Official and 'everything else" I think this whole section can be dropped.

  Categories of package managers <#id11>

We distinguish four categories of package managers. While a package manager can transition from one category to another, it can not be in two categories at the same time. It can be in a state of transition though.

/Primary Package Manager/
    There is one primary package manager. Currently this position is
    held by portage. The primary package manager is assigned by the
    council and all packages in the official tree must be installable by
    a useable version of the primary package manager.
/Candidate Primary Package Managers/
    A candidate Primary Package Manager does aim, or show an aim, at
    replacing the current primary package manager. At a point where the
    package manager is deemed stable a decision must be made whether
    this package manager should become the new primary package manager.
    At that point the primary package manager transition phase
    <#primary-package-manager-transition-phase> starts.
/Secondary Package Managers/

    A secondary package manager is a package manager that coexists with
    the primary package manager, while not aiming to replace it. Package
    managers that would fall into this category are:

        * Experimental package managers. Package managers whose purpose
          it is to try out new features.
        * Focussed package managers. For example a package manager that
          allows the use of rpm formatted binary packages would be an
          example.

/Third Party Package Managers/
    A third party package manager is any package manager that lacks
    recognition from gentoo as being in any other category. A third
    party package manager may or may not have a gentoo package, but is
    not supported beyond that.


  Package manager requirements <#id12>

As a package manager is in a state of higher support there are higher requirements to it. The purpose of these requirements is to ensure the unity of the distribution and the package tree. For this purpose it is needed that there is only one primary package manager.

One official package manager, but many can be used.



    primary package manager requirements <#id13>

The primary package manager is the package manager that sets the standards for the tree. All ebuilds in the tree must function with the primary package manager. As the primary package manager sets the standard it does not have to maintain compatibility with other package managers.

This outlook inhibits innovation in the tree. I agree with stephen, in that the tree should set the standard. If you want a new feature in the tree, I think a proposal would be good ( not a GLEP necessarily, but a tree proposal ). I think crap goes in that is not discussed in advance...

One could say, the official package manager sets the standard such that someone needs to have support in the package manager for it to operate properly.

However in many industries you find the opposite. First a standard is set, then a prototype (reference board, whathaveyou) is created, then it is released for companies to use. Here you want the opposite. The feature as an idea is created, portage implements it, then the other package managers copy it? Sounds silly ;)

The primary package manager does however have the responsibility that it must be very stable. The primary package manager must maintain compatibility with old versions of itself for extended periods of time. This compatibilty time is set by the council. The suggested time would be one year from the point that there is a compatible stable version for all supported architectures.

To be honest even portage never did this. We waited "as long as we felt necessary" and then broke compat.


Another compatibilty requirement for the primary package manager is a limited forward compatibility. It must always be possible to transition from the unstable version of the primary package manager to a stable version. This may be done either by first introducing reading compatibility for a new format and only having write support later. Another way would be the provision of a conversion tool that ensures that the on disk information maintained by the package manager is supported by the stable package manager.

The primary package manager is maintained on official gentoo infrastructure, under control of gentoo developers.

This has no reasoning behind it, in my eyes.



    candidate primary package manager requirements <#id14>

A candidate primary package manager aims to replace the primary package manager. The council is responsible for deciding whether this is done. The requirements are there to ensure that it is actually possible to transition a candidate primary package manager into the primary package manager.

First of all, there must exist a transition path. This means that the on disk data of the primary package manager can be used by (or converted to a format usable by) the candidate primary package manager.

Second, there must be a test path. It must be possible for the developers to test out the candidate primary package manager on their working systems. This means that the transition path must exist. This also means that there are no serious obstacles for reverting to the current primary package manager.

Third, there must exist an ebuild test path. It must be possible for package managers to test ebuilds in one tree for both the primary as well as the candidate primary package manager. It is not an issue if this requires a special mode for the candidate primary package manager. It is not an issue either if compatibilty can be achieved by unmerging the package in the candidate primary package manager.

Fourth, there must be support. This means that the package manager is actively maintained under control of gentoo. If it is not maintained on gentoo infrastructure, the means must be there to move the package manager, with its change history, to gentoo infrastructure. This means that it must be maintained on a gentoo supported versioning system, or on a version system whose history can be converted to a gentoo supported versioning system.

Again I don't see a reason for it to be on Gentoo infra, or even for it to be managed by Gentoo developers offsite. As long as it's active. One could say Portage is a bit dormant, sure bugs get fixed features...take a while, as many people will note :)



    secondary package manager requirements <#id15>

A secondary package manager is a package manager that instead of directly aiming at replacing portage as primary package manager. As such a secondary package manager does not set the standard on the tree, but follows the standard set by the primary package manager.

There are two kinds of secondary package managers. The first kind is formed by those that do not maintain their own installed package database, but work with the package database of the primary package manager. While these package managers can put additional information in the database, these entries must remain compatible with the primary package managers. Verification, reference, and deinstallation by the primary package manager must remain functional.

The second kind is formed by those package managers that maintain their own package database, or a package database incompatible with the primary package manager. To ensure the secondary role of these package managers the support in the tree for these package manager is provided along with restrictions.

The first restriction is that no packages in the tree must rely on the secondary package manager. While packages may provide a level of support (while being compatible with the primary package manager) this may not result in a significant increase of features. If this were allowed, this would mean that while they technically work with the primary package manager, there would be significant incentive to use the secondary package manager. As the use of this secondary package manager disallows the paralel use of the primary package manager, this would result in users using the secondary package manager as their primary package manager.

Users are allowed to make their own choices. However by making the tree favor a package manager that is not the primary package manager, this will lead to the secondary package manager becomming the effective primary package manager. As this will be a decision by default instead of a concious choice by the council, this is an undesirable result.

There is one exclusion for the restriction of packages that only work with or have significant improvements with the secondary package manager. That is packages that by their nature are only usable with this secondary package manager. An example would be a graphical frontend to the secondary package manager.

If a secondary package manager works along the primary package manager, but by itself does not have the capabilities of becoming a primary package manager the risks of choice by default are lower. As a result, the council could choose to allow the inclusion of packages that work only or significantly better with this secondary package manager. For example at a point where there is a stable, functional, package manager that can handle RPM format packages, the council could decide to include these packages directly in the tree, instead of using wrapper scripts for those packages that are only provided in the RPM format. Such a decision does imply that the maintainers of the primary package manager must take this secondary package manager into account.


    third party package manager requirements <#id16>

A third party package manager is just that. It is a package manager without any support within gentoo. As there is no control by gentoo over the package manager this means that there are no requirements on the package manager.

This complete lack of control however also translates to the fact that gentoo can not make package manager specific changes to support this package manager. Package manager specific means that it is possible to request changes that make the tree more independent of the primary package manager. These changes must however be agnostic of the package manager, and only make it easier to have alternative package managers.


  transition phases <#id17>


    primary package manager transition phase <#id18>

A candidate primary package manager can be chosen to become primary package manager. This can only happen by council decision. This decision can only be made when the candiate primary package manager is stable on all stable architectures. (all architectures except experimental ones).

After the decision has been made to replace the primary package manager, the transition phase starts. The use of the old stable package manager must remain supported for a period of 6 months. This means that core packages must be installable by this package manager. Further the possibility to convert the system automatically to the new primary package manager must be available for at least 18 months, but preferably longer (enable installing the new package manager from the old one).

During the transition phase packages are allowed in the tree that use the new features of the new primary package manager. While backward compatibility with the previous primary package manager must be maintained a forward compatibility is no longer needed.


    Secondary package manager to candidate primary package manager
    transition <#id19>

The transition from secondary package manager to candidate primary package manager is straightforward. The secondary package manager must satisfy all requirements for a candidate primary package manager. At that point its maintainers can announce that they are changing the status to candidate primary package manager. This allows a greater support from gentoo in achieving that goal.


    Third party to other transition <#id20>

When a third party package manager wants to transition into one of the other categories (except primary package manager) it must satisfy all requirements for that category.


  References <#id21>

[1] <#id2>        http://paludis.berlios.de/

[2] <#id4>        http://gentooexperimental.org/~ferringb/bzr/pkgcore/

[3] <#id6>        http://www.opencontent.org/openpub/


  Copyright <#id22>

This document is copyright 2006 by Paul de Vrieze and licensed under the Open Publication License <http://www.opencontent.org/openpub/> [3] <#id5>.

------------------------------------------------------------------------
View document source <glep-pkg.txt>. Generated on: 2006-05-20 12:51 UTC. Generated by Docutils <http://docutils.sourceforge.net/> from reStructuredText <http://docutils.sourceforge.net/rst.html> source.


------------------------------------------------------------------------

GLEP: 49
Title: Alternative Package Manager requirements
Version: $Revision: 2214 $
Last-Modified: $Date: 2006-05-20 14:51:41 +0200 (Sat, 20 May 2006) $
Author: Paul de Vrieze <[EMAIL PROTECTED]>,
Status: Draft
Type: Standards Track
Content-Type: text/x-rst
Created: 18-May-2006
Post-History: 19-May-2006


Abstract
========

This GLEP describes four classes of package managers. What the requirements for
them are, and what support they can receive.


Motivation
==========

To set a standard that package managers that seek gentoo project approval and
support should adhere to.


Rationale
=========

Currently portage is  showing its age. The  code of portage does not  seem to be
salvageable for new  versions. There are two known  alternative package managers
that claim a  level of portage compatibility. These  alternatives are `paludis`_
and `pkgcore`_.  Before these alternatives are developed further, a set of rules
should be created to level the  playing field and ensuring that decisions can be
made clearly.


Backwards Compatibility
=======================

Not a problem for this GLEP. There is no previous standard as the issue did not
exist before. This GLEP is to prevent future compatibility issues.


Categories of package managers
==============================

We distinguish four categories of package managers. While a package manager can
transition from one category to another, it can not be in two categories at the
same time. It can be in a state of transition though.

*Primary Package Manager* There is one primary package manager. Currently this position is held by
   portage.  The primary  package manager  is assigned  by the  council  and all
   packages in the official tree must be installable by a useable version of the
   primary package manager.

*Candidate Primary Package Managers*
   A candidate  Primary Package Manager does  aim, or show an  aim, at replacing
   the current primary package manager. At  a point where the package manager is
   deemed stable  a decision  must be made  whether this package  manager should
   become the  new primary package manager.  At that point  the `primary package
   manager transition phase`_ starts.

*Secondary Package Managers*
   A  secondary package  manager is  a package  manager that  coexists  with the
   primary package  manager, while  not aiming to  replace it.  Package managers
   that would fall into this category are:

   - Experimental package managers. Package managers  whose purpose it is to try
     out new features.

   - Focussed package  managers. For example  a package manager that  allows the
     use of rpm formatted binary packages would be an example.


*Third Party Package Managers*
   A third party  package manager is any package  manager that lacks recognition
   from gentoo as being in any other category. A third party package manager may
   or may not have a gentoo package, but is not supported beyond that.


Package manager requirements
============================

As  a  package  manager is  in  a  state  of  higher  support there  are  higher
requirements to it. The purpose of  these requirements is to ensure the unity of
the distribution and the package tree.  For this purpose it is needed that there
is only one primary package manager.


primary package manager requirements
------------------------------------

The primary package  manager is the package manager that  sets the standards for
the  tree. All  ebuilds  in the  tree  must function  with  the primary  package
manager. As  the primary package manager sets  the standard it does  not have to
maintain compatibility with other package managers.

The primary package manager does however have the responsibility that it must be
very stable.  The primary package  manager must maintain compatibility  with old
versions of itself  for extended periods of time. This  compatibilty time is set
by the council. The  suggested time would be one year from  the point that there
is a compatible stable version for all supported architectures.

Another compatibilty  requirement for the  primary package manager is  a limited
forward  compatibility.  It must  always  be  possible  to transition  from  the
unstable version of the primary package manager to a stable version. This may be
done either by first introducing reading compatibility for a new format and only
having write support  later. Another way would be the  provision of a conversion
tool that ensures that the on disk information maintained by the package manager
is supported by the stable package manager.

The primary package manager is maintained on official gentoo infrastructure,
under control of gentoo developers.


candidate primary package manager requirements
------------------------------------------------

A  candidate  primary  package  manager  aims to  replace  the  primary  package
manager.  The council  is responsible  for deciding  whether this  is  done. The
requirements are  there to ensure that  it is actually possible  to transition a
candidate primary package manager into the primary package manager.

First of all,  there must exist a  transition path. This means that  the on disk
data of  the primary package manager  can be used  by (or converted to  a format
usable by) the candidate primary package manager.

Second, there  must be a test  path. It must  be possible for the  developers to
test out  the candidate primary package  manager on their  working systems. This
means that  the transition path  must exist. This  also means that there  are no
serious obstacles for reverting to the current primary package manager.

Third, there  must exist an ebuild test  path.  It must be  possible for package
managers  to test  ebuilds in  one tree  for  both the  primary as  well as  the
candidate primary package manager. It is not an issue if this requires a special
mode for  the candidate primary  package manager. It  is not an issue  either if
compatibilty can be  achieved by unmerging the package  in the candidate primary
package manager.

Fourth, there must  be support. This means that the  package manager is actively
maintained  under  control  of  gentoo.  If  it  is  not  maintained  on  gentoo
infrastructure, the  means must be there  to move the package  manager, with its
change history, to gentoo infrastructure.  This means that it must be maintained
on a  gentoo supported versioning system,  or on a version  system whose history
can be converted to a gentoo supported versioning system.


secondary package manager requirements
--------------------------------------

A secondary package manager is a package manager that instead of directly aiming
at replacing  portage as  primary package manager.  As such a  secondary package
manager does not set  the standard on the tree, but follows  the standard set by
the primary package manager.

There are two  kinds of secondary package managers. The first  kind is formed by
those that do  not maintain their own installed package  database, but work with
the  package  database of  the  primary  package  manager. While  these  package
managers  can put  additional information  in the  database, these  entries must
remain compatible  with the  primary package managers.  Verification, reference,
and deinstallation by the primary package manager must remain functional.

The second  kind is  formed by  those package managers  that maintain  their own
package database,  or a package  database incompatible with the  primary package
manager. To ensure  the secondary role of these package  managers the support in
the tree for these package manager is provided along with restrictions.

The first restriction is that no packages in the tree must rely on the secondary
package  manager. While packages  may provide  a level  of support  (while being
compatible  with  the  primary  package  manager)  this  may  not  result  in  a
significant increase  of features.  If this were  allowed, this would  mean that
while they  technically work  with the primary  package manager, there  would be
significant incentive to  use the secondary package manager. As  the use of this
secondary  package manager  disallows the  paralel  use of  the primary  package
manager, this would result in users using the secondary package manager as their
primary package manager.

Users are allowed to make their own  choices. However by making the tree favor a
package manager that  is not the primary package manager, this  will lead to the
secondary package  manager becomming the  effective primary package  manager. As
this will be a decision by default  instead of a concious choice by the council,
this is an undesirable result.

There is  one exclusion for the restriction  of packages that only  work with or
have  significant  improvements with  the  secondary  package  manager. That  is
packages  that by  their  nature are  only  usable with  this secondary  package
manager.   An example would  be a  graphical frontend  to the  secondary package
manager.

If a secondary  package manager works along the primary  package manager, but by
itself does not have the capabilities  of becoming a primary package manager the
risks of choice by  default are lower. As a result, the  council could choose to
allow the inclusion of packages that work only or significantly better with this
secondary  package manager.  For example  at a  point where  there is  a stable,
functional, package  manager that  can handle RPM  format packages,  the council
could decide  to include these packages  directly in the tree,  instead of using
wrapper  scripts  for  those  packages   that  are  only  provided  in  the  RPM
format. Such a  decision does imply that the maintainers  of the primary package
manager must take this secondary package manager into account.


third party package manager requirements
----------------------------------------

A third party package manager is just  that. It is a package manager without any
support within gentoo. As there is no control by gentoo over the package manager
this means that there are no requirements on the package manager.

This complete  lack of control however  also translates to the  fact that gentoo
can  not  make  package  manager   specific  changes  to  support  this  package
manager. Package manager  specific means that it is  possible to request changes
that  make the  tree  more independent  of  the primary  package manager.  These
changes must however be agnostic of the package manager, and only make it easier
to have alternative package managers.


transition phases
=================

primary package manager transition phase
----------------------------------------

A  candidate primary package  manager can  be chosen  to become  primary package
manager. This  can only happen  by council decision.  This decision can  only be
made  when  the  candiate  primary  package  manager is  stable  on  all  stable
architectures. (all architectures except experimental ones).

After the  decision has been  made to replace  the primary package  manager, the
transition phase starts.  The use of  the old stable package manager must remain
supported  for a  period of  6 months.  This means  that core  packages  must be
installable  by this  package manager.  Further the  possibility to  convert the
system automatically to the new primary package manager must be available for at
least  18 months,  but  preferably  longer (enable  installing  the new  package
manager from the old one).

During the  transition phase packages are allowed  in the tree that  use the new
features of the  new primary package manager. While  backward compatibility with
the previous primary package manager  must be maintained a forward compatibility
is no longer needed.


Secondary package manager to candidate primary package manager transition
-------------------------------------------------------------------------

The  transition from  secondary  package manager  to  candidate primary  package
manager  is straightforward.  The  secondary package  manager  must satisfy  all
requirements  for  a  candidate  primary  package manager.  At  that  point  its
maintainers can announce that they  are changing the status to candidate primary
package manager.  This allows  a greater support  from gentoo in  achieving that
goal.


Third party to other transition
-------------------------------

When a third party package manager wants to transition into one of the other
categories (except primary package manager) it must satisfy all requirements for
that category.


References
==========

.. _paludis: http://paludis.berlios.de/
.. _pkgcore: http://gentooexperimental.org/~ferringb/bzr/pkgcore/
.. _Open Publication License: http://www.opencontent.org/openpub/


Copyright
=========

This document is copyright 2006 by Paul de Vrieze and licensed under the
`Open Publication License`_.


--
gentoo-dev@gentoo.org mailing list

Reply via email to