Changes between Version 1 and Version 2 of DistributedDevelopmentProcess


Ignore:
Timestamp:
Jan 18, 2011, 5:37:20 PM (12 years ago)
Author:
Dean Michael Berris
Comment:

Initial set of definitions for the distributed development process.

Legend:

Unmodified
Added
Removed
Modified
  • DistributedDevelopmentProcess

    v1 v2  
    1010* '''We want to increase community participation in different aspects of the project like testing, promotion, documentation, BoostCon, and  standardization.''' At the moment there's a lot of work to be done for Boost libraries but a lot of it has not been properly identified and publicized. This is coupled with the high barrier to entry for contributors and you have only a small community of developers trying to do all the work that other non-developers may very well be able to do. With regard to standardization, there are Boost C++ Libraries that would be great to have in the ISO standard -- the effort of championing these libraries currently fall on the shoulders of just the library maintainer, which can be done by others already in the committee or someone else willing to champion that effort.
    1111* '''We want to enable the Boost project to scale up to have more than one distribution.''' As it is at the moment there is only one Boost C++ Library distribution which contains all the accepted libraries.
     12
     13== Definitions ==
     14
     15Before moving on to the specifics, we need to define a few terms we're using:
     16
     17* A '''Contributor''' is a person who does at least one of the following:
     18  * Submit patches to library code, documentation, build systems, tests, and anything materially tangible that's considered part of a library project (logos, websites, blog entries, etc.).
     19  * Reports issues with the library which means she has used it in a given context and is considered a testing contribution.
     20  * Merges patches into the a library on his personal branch/fork of the library and runs tests locally on his system.
     21  * Runs regression tests for a particular Boost distribution (see distribution below).
     22  * Shepherds contributions in from other sources into the main library.
     23  * Donates money or resources to making sure that the library effort continues.
     24* A '''Distribution''' is a collection of reviewed and accepted libraries. There can be many different types of distributions some of which are listed below:
     25  * Theme-based distributions (Metaprogramming, Algorithms, Containers, etc.)
     26  * Layer-based distributions (Core, Utilities, Extensions)
     27  * Maturity-based distributions (Stable, Unstable, etc.)
     28* A '''Release Manager''' is a person who:
     29  * Pulls together published versions of the libraries in the distribution that she manages.
     30  * Coordinates the efforts of contributors for libraries that are part of the distribution to get a given release tested, packaged, and distributed for general availability.
     31  * Signs off (literally, with his GPG Key, see "Web of Trust" below) on all changes merged into a release.
     32* The '''Web of Trust''' system relies on:
     33  * Contributors having signed GPG keys and publicly available public keys who sign all their contributions as well as those they shepherd into his own branch/fork.
     34  * Library Maintainers who have their signed GPG keys and publicly available public keys who pull in contributions from contributors and signs off on all their changes as well.
     35  * Release Managers who have their signed GPG keys and publicly available public keys who sign all the changes they pull in and all the tags they define for releases.
     36  * The web of trust signifies:
     37    * If a Contributor's GPG key is signed by a library maintainer, then that contributor is eligible to become a library maintainer.
     38    * A Release Manager may choose to pull changes that are not library maintainer-signed in case a library maintainer is not active or not available.
     39    * If a Release Manager chooses to sign a Contributor's key, that makes the Contributor eligible for maintaining a library which may potentially have the original library maintainer unavailable; in this situation, a Contributor is promoted to Library Maintainer from the trust system.
     40    * If two or more Release Managers sign either a Contributor's or Library Maintainer's key, that makes that person eligible to become a release manager of the distribution or distributions where the signing release managers are release managers of.
     41    * It is preferred -- but not required -- that people sign keys only if they have met in person or that they can say with reasonable certainty that this person they're signing the keys of is actually someone they trust. It's suggested that BoostCon or local Boost User Group events be the venue where key exchanges and key signings happen.
     42  * A Trusted Contributor, Trusted Library Maintainer, or Trusted Release Manager is a person who has at least two peers in the same or higher level (Contributor < Library Maintainer < Release Manager) signing with high trust levels.
     43* An '''Official Boost Release''' is an official release that is packaged and signed by a Trusted Release Manager.