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