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

Revision 11054, 9.5 kB (checked in by dave, 11 days ago)

BEP 0001 moves from draft to active process.

Line 
1BEP: 1
2Title: The BitTorrent Enhancement Proposal Process
3Version: $Revision$
4Last-Modified: $Date$
5Author:  David Harrison <dave@bittorrent.com>
6Status:  Active
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 reStructured 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 BEPs forum at forum.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 BEP forum seeking feedback and consesnsus from the community at large. 
93A proposal may be re-submitted after it has been revised.
94
95The champion is then responsible for marshaling community support for
96it. As updates are necessary, the BEP author can check in new versions
97if they have SVN commit permissions, or can email new BEP versions to
98the BEP editor for committing.
99
100Standards Track BEPs consist of two parts, a design document and a
101reference implementation. The reference implementation need not be
102complete when a BEP is submitted to the editors.  However Standards
103Track BEPs must include an implementation in at least one BitTorrent
104client with publicy available code before it can be considered Final.
105
106BEP champions are responsible for collecting community feedback on a
107BEP before submitting it for review. A BEP that has not been discussed
108in the BEPs forum on forum.bittorrent.org will not be
109accepted. However, wherever possible, long open-ended discussions in
110the BEP forum should be avoided. Strategies to keep the discussions
111efficient include: setting up a separate SIG forum for the topic,
112having the BEP author accept private comments in the early design
113phases, setting up a wiki page, etc. BEP authors should use their
114discretion 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
162Intellectual Property and BitTorrent Standards
163==============================================
164
165Any idea submitted in a BEP will not be considered for standardization
166if the idea is not in the public domain.  Before a BEP can be
167considered Final, all people (including the BEP authors) or entities
168with a claim on the intellectual property expressed in a BEP must
169assign in writing all intellectual property expressed in the BEP to
170the public domain.  If the BEP authors lack the power to assign
171intellectual property rights then they must disclose this fact before
172the BEP can be considered Final.
173
174Furthermore BEP authors should not knowingly propose anything in their
175BEPs that infringes on the intellectual property rights of others.
176
177This policy statement should not be construed as meaning that BEP
178authors are required to assign software implementations of any
179particular idea to the public domain.  BitTorrent implementors may
180retain all rights to their implementations.
181
182
183History
184=======
185
186This document was derived heavily from PEP-0001 [#PEP-1]_.  In many places
187text was simply copied and modified.  Although the PEP-0001 text
188was written by Barry Warsaw, Jeremy Hylton, and David Goodger, they
189are not responsible for its use in the BitTorent Enhancement Process,
190and should not be bothered with technical questions specific to
191BitTorrent or the BEP process.  Please direct all comments to the
192BitTorrent editors <editor@bittorrent.org> or the forums at
193forum.bittorrent.org.
194
195
196Acknowledgements
197================
198
199Thanks to Barry Warsaw, David Goodger, and Guido van Rossum for their
200guidance.
201
202
203References and Footnotes
204========================
205
206.. [#svn] This historical record is available by the normal SVN
207          commands for retrieving older revisions. For those without direct
208          access to the SVN tree, you can browse the current and past BEP
209          revisions here: http://bittorrent.org/trac/
210
211.. [#PEP-1] PEP-001: PEP Purposes and Guidelines, Warsaw, Hylton, Goodger.
212   (http://www.python.org/dev/peps/pep-0001)
213
214Copyright
215=========
216
217This document has been placed in the public domain.
218
219
220..
221   Local Variables:
222   mode: indented-text
223   indent-tabs-mode: nil
224   sentence-end-double-space: t
225   fill-column: 70
226   coding: utf-8
227   End:
Note: See TracBrowser for help on using the browser.