[exim-dev] Exim Release Policy: trial run for 4.75

Top Page
Delete this message
Reply to this message
Author: Phil Pennock
Date:  
To: exim-dev
Subject: [exim-dev] Exim Release Policy: trial run for 4.75
Folks,

The maintainers have looked over my proposed Release Policy for Exim,
and are roughly happy with its outline so far. So, time for comment
by the wider exim-dev community, before presentation to exim-users: yes,
there are plenty of users on the -dev list who don't develop, but still.

Those who actually provide patches and feedback on code deserve our
support and a longer window for comment.

If wiki user "PhilPennock" is still in the bottom-right corner, then:
http://wiki.exim.org/EximReleasePolicyProposedDraft
is my proposal. The page revision history is at:
http://wiki.exim.org/EximReleasePolicyProposedDraft?action=info
and I'll include a plaintext dump below.

As will be clear if you read it, it's less a hard policy than a setting
out of "normal" expectations.

Since nobody else has spoken and I rushed 4.74 for the security issues,
my plan is to drive the 4.75 release. As part of this, I'm going to use
this release policy; if feedback means I change the policy, that can
happen too, while it's in use. This is the trial run, after all.

Once this has baked a little, it will move from the wiki into The Exim
Specification.

The first two paragraphs excluded. :)

Regards,
-Phil

============================8< cut here >8==============================

Exim Release Policy

This is a proposal from one maintainer, not vetted or approved. It is provided
for consideration. It might become the consensus policy, or it might be
ridiculed into a hasty deletion. Just because something is stated here, that
does not mean it is an actual policy.

Some parts of this were decided at a meet-up of the maintainers in June 2010.

Who decides; enforceability

Exim is a volunteer project, with contributions from many people and
coordination from The Exim Maintainers, the people with commit access to the
main git repository. None of the maintainers are paid to provide public Exim
support, so nobody can commit to any form of "SLA" or guarantee. If we fail to
release according to this policy, that's just life.

If, in the best discretion of the people putting together a release, it is
necessary to diverge from this policy, even completely contradicting it, that
is entirely acceptable.

This policy lays down the expectations of what we plan to do in the normal or
predictable cases, if there is someone available with sufficient time to
shepherd a release. It is nothing more and is not a binding commitment.

Release triggers

  * There is no fixed schedule for release.
  * We aim for at least one release every six months, and if we have been idle
    then we just release with what we have.
  * If there is a bug-fix for a security-impacting problem, then:
      + We will obtain a CVE number
      + We will discuss with OS packagers the severity of the issue
      + If the problem permits privilege escalation from untrusted local users
        to any user, it will warrant urgent release
      + If the problem permits remote code execution, this is considered
        Critical and it will warrant urgent release and possibly the creation
        of a branch, so that a release can be put out which contains *only*
        this fix.
      + If the problem permits privilege escalation from the Exim run-time
        user, then this is serious and will act as a trigger for a hurried
        release, but will not on its own trigger a fire-drill. If there is also
        a problem permitting untrusted local users to escalate privileges to
        the Exim run-time user, or for remote code execution as the Exim
        run-time user, then this becomes Critical.
  * The "Release Engineer" or "Release Coordinator" shall simply be "whoever
    steps forward".


Release numbering

  * We will preserve lexical comparison of version numbers, so there will not
    be a "4.9901" release or a "4.100" release. If we make it up to 4.99, then
    the release following "4.99" will be "5.00".
  * We may jump version numbers at our discretion, when considering the
    features included.
  * If we introduce backwards-incompatible changes, then the major number will
    be increased. Eg, "5.23" followed by "6.00". But if we just reached 5.99,
    then 6.00 will not be significant in this manner.
  * There are no current plans for a grand rewrite.


Release verification

  * All releases will be PGP signed. This includes all "tarballs" (code,
    documentation) and the release announcement.
  * The release announcement will include, within its text, cryptographic
    checksums of our choosing. We reserve the right to switch algorithm.
  * These releases will be performed by a PGP key belonging to an individual
    maintainer. A shared, group, PGP key is deliberately not part of our trust
    model.
  * The PGP key will contain an identity ("uid") which includes the
    maintainer's real name and an email address which is @exim.org
  * PGP keys are identified by the uids and each has its own signatures in the
    "Web of Trust". To be valid, the @exim.org uid will have been signed by a
    group of the other Exim maintainers. In PGP speak, multiple maintainers
    have keys "in the strong set", although the binding of the @exim.org might
    not be. If another uid is more trusted by your client's trust paths, then
    it is up to your discretion to decide whether or not you accept that name
    as an Exim Maintainer.


Release Candidates & Buggy Releases

  * Except in the most Critical emergencies, a release shall be preceded by at
    least one "Release Candidate".
  * Except when prompted by security issues, the intention to cut the first RC
    shall have been announced ahead of time on the Exim Users mailing-list.
  * More RCs are a matter of judgement for the person coordinating the release.
  * Unless pushed by a security problem, there will be at least one week
    between the first RC and the final release, with sufficient time to bake.
  * People with commit on the master repository should not be committing new
    features or major reworkings in the time between the first RC and the
    actual release, to provide as stable and simple a set-up for the volunteer
    performing a release.
  * Problems to be addressed in this period shall include bugs of code or of
    documentation, build issues, portability concerns and the like.
      + It's probably too late to address missing features
      + Uncommitted bug-fixes from Bugzilla are fair game for complaint
      + Sub-system maintainers whose bug-fixes have been overlooked should be
        able to get those added ASAP and the Release Engineer should consider
        then merging overlooked feature changes to the tree after the release.
  * A Critical security problem may be issued as a minimal change against the
    last stable release, as a "branch" in the code tree and the Release
    Engineer may choose to entirely skip a public RC process in that scenario.
  * We are dependent upon people testing the RCs to ensure platform
    compatibility of the final release, across both OSes and component
    versions.
      + Those who test RCs get to ensure that their platform is a first-class
        supported platform for a release, and the final release should be
        cleanly buildable and working on their platform.
      + We make no demands upon our users and do not expect RCs to be tested in
        a production environment, but we do ask that people at least try to
        compile and build the RC and send a test mail with it.
          o This shouldn't be more than 30 minutes work total
          o If you have a structured environment, with configurations in
            revision history, the time consists of reading the release notes
            (README.UPDATING, NewStuff and ChangeLog), adjusting your Local/
            Makefile as needed and kicking off a build, then testing sending
            mail with the new release.
          o We greatly appreciate assistance from those with an environment
            that lets them "canary" a change in production, and any feedback
            from such testing is likely to receive the greatest attention from
            the Release Engineer. But we do not consider this the typical
            approach to testing RCs and accept this as a Very Nice Bonus,
            should it happen.
      + Those who wait until a release is issued before testing will get such
        support as we can offer; typically, patches will be written. We will
        not rush to build a new release. OS packagers are experienced at
        maintaining an extra patch for compatibility, and others with
        significant issues should be attempting to track an RC.
      + If we push new releases as fast as possible to fix issues post-release,
        that just encourages people to wait for a release before testing and
        creates a burden for everyone else on every other platform, as a common
        approach is to stay "up-to-date with releases, additional patches only
        as needed" and multiple releases per month create undue burden.
      + The Release Engineer, as a volunteer, is not subject to demands that
        they immediately do more work to satisfy people who did not themselves
        put forward any effort until it was too late to help a release.
      + In the event of a release being problematic on some platform, we expect
        to provide patches to those issues; we expect OS packagers are likely
        to just use those patches; we will wait long enough for all the OS/
        platform variants to shake loose any issues, before we get around to
        cutting another release. This might be a couple of weeks. Since it is
        expected that a security fix not thus be dependent upon the new release
        happening, there should be a Release Candidate process on a normal
        schedule for this follow-up release, to avoid cascading problems.
      + The follow-up release will not be constrained to be bug-fixes only
        (unless the Release Engineer so chooses). Other committers shall be
        free to commit feature patches or re-workings to the code-base at any
        time after a release. A reward for trying RCs is that your feedback is
        addressed in a stable environment where only bug-fixes are being
        applied and you do not need to contend with some other new feature
        causing headaches come the next release.


Conclusion

This policy tries to balance the volunteer effort, against the breadth of usage
and dependency upon Exim and the impact of releases. It provides incentives to
test Release Candidates and disincentives to leave testing until after a
Release. It establishes baseline expectations of what is "reasonable behaviour"
but does not establish any enforceable right.

While constructive, well-argued feedback is appreciated, if you are neither an
active contributor to the Exim community nor a packager for a major OS variant,
we shall not necessarily address your concerns. This policy is for us the
maintainers, to keep us from burn-out, to better serve the community of Exim
users.

Thank you for using Exim. Please work with us to improve it.

============================8< cut here >8==============================