root / dotorg / v5 / html / beps / bep_0001.rst

Revision 10537, 8.5 kB (checked in by dave, 11 months ago)

add "references and footnotes" section header.

Line 
1BEP: 1
2Title: The BitTorrent Enhancement Proposal Process
3Version: $Revision$
4Last-Modified: $Date$
5Author:  David Harrison <dave@bittorrent.com>
6Status:  Active Draft
7Type:    Process
8Created: 10-Jan-2008
9Post-History:
10
11What is a BEP
12=============
13
14BEP stands for BitTorrent Enhancement Proposal.  A BEP is a design
15document providing information to the BitTorrent community, or
16describing a new feature for the BitTorrent protocols. The BEP should
17provide a concise technical specification of the feature and a
18rationale for the feature.
19
20We intend BEPs to be the primary mechanisms for proposing new
21features, for collecting community input on an issue, and for
22documenting the design decisions that have gone into BitTorrent. The BEP
23author is responsible for building consensus within the community and
24documenting dissenting opinions.
25
26Because the BEPs are maintained as text files in a versioned
27repository, their revision history is the historical record of the
28feature proposal [#svn]_.
29
30BEP Types
31=========
32
33There are three kinds of BEP:
34
35  #. A Standards Track BEP describes an extension to one of the BitTorrent
36     protocols or a change in the behavior of one of the actors in these
37     protocols, where the actors are currently clients, trackers, and web
38     servers.
39
40  #. An Informational BEP describes a BitTorrent design issue, or
41     provides general guidelines or information to the BitTorrent
42     community, but does not propose an extension. Informational BEPs
43     do not necessarily represent a BitTorrent community consensus or
44     recommendation, so users and implementors are free to ignore
45     Informational BEPs or follow their advice.
46
47  #. A Process BEP describes a process surrounding BitTorrent, or
48     proposes a change to (or an event in) a process. Process BEPs are
49     like Standards Track BEPs but apply to areas other than the
50     BitTorrent protocols.  They are more than recommendations, and
51     users are typically not free to ignore them. Examples include
52     release schedules, procedures, guidelines, changes to the
53     decision-making process, and changes to the tools or environment
54     used in BitTorrent development.
55
56BEP Work FLow
57=============
58
59The BEP editors assign BEP numbers and change their status. The
60current BEP editors are David Harrison and Arvid Norberg. Please send
61all BEP-related email to <editor@bittorrent.org>.  Also see BEP Editor
62Responsibilities & Workflow below.
63
64The BEP process begins with a new idea for the BitTorrent
65protocols. It is highly recommended that a single BEP contain a single
66key proposal. The BEP editor reserves the right to reject BEP
67proposals if they appear unfocussed or overly broad. If in doubt,
68split your BEP into muliple BEPs.
69
70Each BEP must have a champion -- someone who writes the BEP using the
71style and format described below, shepherds the discussions in the
72appropriate forums, and attempts to build community consensus around
73the idea. The BEP champion should first post a description of the idea
74to the bitorrent-list@bittorrent.org.
75
76If the champion believes the idea warrants a BEP then the champion
77emails the BEP editor <editor@bittorrent.org> with a proposed title
78and a draft of the BEP. This draft must be written in BEP style as
79described below.
80
81If the BEP editor approves, he assigns the BEP a number, labels it as
82Standards Track, Informational, or Process, gives it status "Draft",
83and creates and checks-in the initial draft of the BEP to the
84subversion repository. The BEP editor will not unreasonably
85deny a BEP. Reasons for denying BEP status include duplication of
86effort, being technically unsound, not providing proper motivation or
87not addressing backwards compatibility. The BDFL (Benevolent Dictator
88for Life, Bram Cohen) can be consulted during the approval phase, and
89is the final arbiter of the draft's BEP-ability.
90
91If a pre-BEP is rejected, the author may elect to take the pre-BEP to
92the bittorrent-list@bittorrent.org mailing list seeking feedback and
93consesnsus from the community at large.  A proposal may be re-submitted
94after it has been revised.
95
96The champion is then responsible for marshaling community support for
97it. As updates are necessary, the BEP author can check in new versions
98if they have SVN commit permissions, or can email new BEP versions to
99the BEP editor for committing.
100
101Standards Track BEPs consist of two parts, a design document and a
102reference implementation. The reference implementation need not be
103complete when a BEP is submitted to the editors.  However Standards
104Track BEPs must include an implementation in at least one BitTorrent
105client with publicy available code before it can be considered Final.
106
107BEP champions are responsible for collecting community feedback on a
108BEP before submitting it for review. A BEP that has not been discussed
109on bittorrent-list@bittorrent.org will not be accepted. However, wherever
110possible, long open-ended discussions on public mailing lists should
111be avoided. Strategies to keep the discussions efficient include:
112setting up a separate SIG mailing list for the topic, having the BEP
113author accept private comments in the early design phases, setting up
114a wiki page, etc. BEP authors should use their discretion here.
115
116Once the authors have completed a BEP, they must inform the BEP editor
117that it is ready for review. BEPs are reviewed by the BDFL and his
118chosen consultants, who may accept or reject a BEP or send it back to
119the author(s) for revision. For a BEP that is pre-determined to be
120acceptable (e.g., it is an obvious win as-is and/or its implementation
121already exists in one or more popular BitTorrent clients) the BDFL may
122also initiate a BEP review, first notifying the BEP author(s) and
123giving them a chance to make revisions.
124
125For a BEP to be accepted it must meet certain minimum criteria. It
126must be a clear and complete description of the proposed
127enhancement. The enhancement must represent a net improvement. The
128proposed implementation, if applicable, must be functional and have
129been tested in live BitTorrent swarms.  Supporting results from
130analyses, testbed experiments and event-based simulations are also
131recommended where appropriate.  A Standards Track document should
132include the rationale behind a proposal and may briefly summarize
133analytical, simulation, or experimental results where necessary to
134illustrate or motivate the enhancement.  However, detailed analytical,
135simulation, and experiment results, especially comparing different
136approaches to the same problem should be omitted from Standards Track
137BEPs and instead cited from a published paper or a separate
138Informational BEP.
139
140Once a BEP has been accepted, the reference implementation must be
141completed. When the reference implementation is complete and accepted
142by the BDFL, the status will be changed to "Final".
143
144A BEP can also be assigned status "Deferred". The BEP author or editor
145can assign the BEP this status when no progress is being made on the
146BEP. Once a BEP is deferred, the BEP editor can re-assign it to draft
147status.
148
149A BEP can also be "Rejected". Perhaps after all is said and done it
150was not a good idea. It is still important to have a record of this
151fact.
152
153BEPs can also be replaced by a different BEP, rendering the original
154obsolete. This is intended for Informational BEPs, where version 2 of
155an API can replace version 1.
156
157The possible paths of the status of BEPs are as follows:
158
159.. image :: bep_0001_1.png
160
161
162History
163=======
164
165This document was derived heavily from PEP-0001 [#PEP-1]_.  In many places
166text was simply copied and modified.  Although the PEP-0001 text
167was written by Barry Warsaw, Jeremy Hylton, and David Goodger, they
168are not responsible for its use in the BitTorent Enhancement Process,
169and should not be bothered with technical questions specific to
170BitTorrent or the BEP process.  Please direct all comments to the
171BitTorrent editors <editor@bittorrent.org> or the BitTorrent mailing
172list <bittorrent-list@bittorrent.org>.
173
174Acknowledgements
175================
176
177Thanks to Barry Warsaw, David Goodger, and Guido van Rossum for their
178guidance.
179
180
181References and Footnotes
182========================
183
184.. [#svn] This historical record is available by the normal SVN
185          commands for retrieving older revisions. For those without direct
186          access to the SVN tree, you can browse the current and past BEP
187          revisions here: http://svn.bittorrent.org/beps/trunk/
188
189.. [#PEP-1] PEP-001: PEP Purposes and Guidelines, Warsaw, Hylton, Goodger.
190   (http://www.python.org/dev/peps/pep-0001)
191
192
193..
194   Local Variables:
195   mode: indented-text
196   indent-tabs-mode: nil
197   sentence-end-double-space: t
198   fill-column: 70
199   coding: utf-8
200   End:
Note: See TracBrowser for help on using the browser.