/[dep]/web/deps/dep0.mdwn
ViewVC logotype

Contents of /web/deps/dep0.mdwn

Parent Directory Parent Directory | Revision Log Revision Log


Revision 199 - (show annotations) (download)
Mon Aug 1 23:11:35 2011 UTC (21 months, 3 weeks ago) by plessy
File size: 15550 byte(s)
Corrected the URL to the DEP howto.
1 [[!meta title="DEP-0: Introducing Debian Enhancement Proposals (DEPs)"]]
2
3 Title: Introducing Debian Enhancement Proposals (DEPs)
4 DEP: 0
5 State: CANDIDATE
6 Date: 2009-07-26
7 Drivers: Stefano Zacchiroli <zack@debian.org>,
8 Adeodato Simó <dato@net.com.org.es>,
9 Lars Wirzenius <liw@iki.fi>
10 URL: http://dep.debian.net/deps/dep0
11 License: http://www.jclark.com/xml/copying.txt
12 Abstract:
13 Workflow for managing discussions about improvements to Debian
14 and archiving their outcomes.
15
16
17 Introduction
18 ------------
19
20 This is a proposal to organize discussions about Debian enhancements,
21 reflect their current status and, in particular, to archive their
22 outcomes, via a new lightweight process based on Debian Enhancement
23 Proposals (DEPs). This idea is loosely based on existing similar systems
24 such as RFCs and Python PEPs. It is also completely opt-in, and does not
25 involve any new committees, powers, or authorities.
26
27
28 Motivation
29 ----------
30
31 Currently, when having discussions about improvements to Debian, it is
32 not always clear when consensus has been reached, and people willing to
33 implement it may start too early, leading to wasted efforts, or delay it
34 indefinitely, because there's not clear indication it is time to begin. At the
35 same time, potential adopters of an enhancement may not be able to
36 easily assess whether they should use said implementation or not,
37 because it's difficult to know whether it adjusts to the consensus
38 reached during the discussion period.
39
40 Our normative documents rely on wide adoption of a practice before
41 documenting it, and adopters can be reluctant to make use of it before a
42 clear indication that a practice has some consensus behind it. This
43 creates a hard to break loop that this process hopes to alleviate, by
44 providing a mechanism to reflect the status of each proposal, including
45 whether it has reached consensus or not.
46
47 Secondly, we lack at the moment a central index in which to list such
48 proposals, which would be useful to see at a glance what open fronts
49 there are at a given moment in Debian, and who is taking care of them
50 and, additionally, to serve as a storage place for successfully
51 completed proposals, documenting the outcome of the discussion and the
52 details of the implementation.
53
54 By using this process, people involved in developing any enhancement can
55 help to build such index, with very little overhead required on their
56 part.
57
58
59 Workflow
60 --------
61
62 A "Debian enhancement" can be pretty much any change to Debian,
63 technical or otherwise. Examples of situations when the DEP process
64 might be or might have been used include:
65
66 * Introducing new debian/control fields (Homepage, Vcs-*).
67 * Making debian/copyright be machine parseable.
68 * Agreeing upon a meta-package name or virtual package name.
69 * Deciding on a procedure for the Debconf team for assigning travel
70 sponsorship money.
71 * Formalizing existing informal processes or procedures, e.g.,
72 the procedure for getting a new architecture added to the archive, or
73 getting access to piatti.debian.org to run QA tests.
74
75 The workflow is very simple, and is intended to be quite lightweight:
76 an enhancement to Debian is suggested, discussed, implemented, and
77 becomes accepted practice (or policy, if applicable), in the normal
78 Debian way. As the discussion progresses, the enhancement is assigned
79 certain states, as explained below. During all the process, a single URL
80 maintained by the proposers can be used to check the status of the
81 proposal.
82
83 The result of all this is:
84
85 1. an implementation of the enhancement and
86 2. a document that can be referred to later on without having to dig
87 up and read through large discussions.
88
89 The actual discussions should happen in the usual forum or forums for
90 the topic of the DEP. This way, DEPs do not act as yet another forum to
91 be followed. For example, a DEP suggesting changes to www.debian.org
92 graphical design should happen on debian-www, as usual.
93
94 In the same way, DEPs do not give any extra powers or authority to
95 anyone: they rely on reaching consensus in the traditional Debian way,
96 by engaging in discussions on mailing lists, IRC, or real life meetings
97 as appropriate, and not by consulting an external body for a decision.
98 To be acceptable, this consensus includes agreement from affected
99 parties, including those who would have to implement it or accept an
100 implementation.
101
102 The person or people who do the suggestion are the "drivers" of the
103 proposal and have the responsibility of writing the initial draft, and
104 of updating it during the discussions, see below.
105
106
107 Proposal states
108 ---------------
109
110 <div style="float: right; text-align: center;">
111 [[!img deps/dep0/workflow.png size="500x250" alt="DEP state diagram"]]
112 <br />
113 <span style="font-size: xx-small">DEP workflow: state diagram</span>
114 </div>
115 A given DEP can be in one of the following *states*:
116
117 * DRAFT
118 * CANDIDATE
119 * ACCEPTED
120 * REJECTED
121 * OBSOLETE
122
123 The ideal progression of states is DRAFT -> CANDIDATE -> ACCEPTED, but
124 reality requires a couple of other states and transitions as well.
125
126 ### DRAFT state: discussion
127
128 * every new proposal starts as a DRAFT
129 * anyone can propose a draft
130 * each draft has a number (next free one from document index)
131 * normal discussion and changes to the text happen in this state
132 * drafts should include *extra* criteria for success (in addition to
133 having obtained consensus, see below), that is, requirements to
134 finally become ACCEPTED
135
136 #### DRAFT -> CANDIDATE: rough consensus
137
138 In order for a DEP to become CANDIDATE, the following condition should
139 be met:
140
141 * consensus exists for *what* should be done, and *how* it should be
142 done (agreement needs to be expressed by all affected parties, not
143 just the drivers; silence is not agreement, but unanimity is not
144 required, either)
145
146 ### CANDIDATE: implementation + testing
147
148 The CANDIDATE state is meant to prove, via a suitable implementation
149 and its testing, that a given DEP is feasible.
150
151 * of course, implementation can start in earlier states
152 * changes to the text can happen also in this period, primarily based
153 on feedback from implementation
154 * this period must be long enough that there is consensus that the
155 enhancement works (on the basis of implementation evaluation)
156 * since DEP are not necessarily technical, "implementation" does not
157 necessarily mean coding
158
159 #### CANDIDATE -> ACCEPTED: working implementation
160
161 In order for a DEP to become ACCEPTED, the following condition should
162 be met:
163
164 * consensus exists that the implementation has been a success
165
166 ### ACCEPTED: have fun
167
168 Once accepted:
169
170 * the final version of the DEP text is archived on
171 <http://dep.debian.net> for future reference
172 * if applicable, the proposed DEP change is integrated into
173 authoritative texts such as policy, developer's reference, etc.
174
175 #### {DRAFT, CANDIDATE} -> REJECTED
176
177 A DEP can become REJECTED in the following cases:
178
179 * the drivers are no longer interested in pursuing the DEP and
180 explicitly acknowledge so
181 * there are no modifications to a DEP in DRAFT state for 6 months or
182 more
183 * there is no consensus either on the draft text or on the fact that
184 the implementation is working satisfactorily
185
186 #### ACCEPTED -> OBSOLETE: no longer relevant
187
188 A DEP can become OBSOLETE when it is no longer relevant, for example:
189
190 * a new DEP gets accepted overriding previous DEPs (in that case the
191 new DEP should refer to the one it OBSOLETE-s)
192 * the object of the enhancement is no longer in use
193
194 ### {REJECTED, OBSOLETE}
195
196 In one of these states, no further actions are needed.
197
198 It is recommended that DEPs in one of these states carry a reason
199 describing why they have moved to such a state.
200
201
202 What the drivers should do
203 --------------------------
204
205 The only additional burden of the DEP process falls on the shoulders of its
206 drivers. They have to take care of all the practical work of writing
207 and maintaining the text, so that everyone else can just continue
208 discussing things as before. Driver's burden can be summarized as:
209
210 * Write the draft text and update it during discussion.
211 * Determine when (rough) consensus in discussion has been reached.
212 * Implement, or find volunteers to implement.
213 * Determine when consensus of implementation success has been reached,
214 when the testing of the available implementation has been satisfactory.
215 * Update the DEP with progress updates at suitable intervals, until the
216 DEP has been accepted (or rejected).
217
218 If the drivers go missing in action, other people may step in and
219 courteously take over the driving position.
220
221 **Note**: the drivers can of course participate in the discussion as
222 everybody else, but have no special authority to impose their ideas to
223 others. <q>DEP gives pencils, not hammers.</q>
224
225
226 Format and content
227 ------------------
228
229 A DEP is basically a free-form plain text file, except that it must
230 start with a paragraph of the following RFC822-style headers:
231
232 * Title: the full title of the document
233 * DEP: the number for this DEP
234 * State: the current state of this revision
235 * Date: the date of this revision
236 * Drivers: a list of drivers (names and e-mail addresses), in RFC822
237 syntax for the To: header
238 * URL: during DRAFT state, a link to the canonical place of the draft
239 (typically probably http://wiki.debian.org/DEP/DEPxxx or
240 http://dep.debian.net/deps/depXXX)
241 * Abstract: a short paragraph (formatted as the long Description in
242 debian/control)
243
244 (Additionally, REJECTED DEPs can carry a "Reason:" field describing
245 why they were rejected.)
246
247 The rest of the file is free form. If the DEP is kept in a wiki, using
248 its markup syntax is, of course, a good idea.
249
250 Suggested document contents:
251
252 * An introduction, giving an overview of the situation and the motivation
253 for the DEP.
254 * A plan for implementation, especially indicating what parts of Debian need
255 to be changed, and preferably indicating who will do the work.
256 * Preferably a list of criteria to judge whether the implementation has been
257 a success.
258 * Links to mailing list threads, perhaps highlighting particularly important
259 messages. If discussion happens on IRC, pointers to logs would be nice.
260
261
262 License
263 -------
264
265 The DEP must have a license that is DFSG free. You may choose the
266 license freely, but the "Expat" license is recommended. The
267 official URL for it is <http://www.jclark.com/xml/copying.txt> and
268 the license text is:
269
270 Copyright (c) <year> <your names>
271
272 Permission is hereby granted, free of charge, to any person obtaining
273 a copy of this software and associated documentation files (the
274 "Software"), to deal in the Software without restriction, including
275 without limitation the rights to use, copy, modify, merge, publish,
276 distribute, sublicense, and/or sell copies of the Software, and to
277 permit persons to whom the Software is furnished to do so, subject to
278 the following conditions:
279
280 The above copyright notice and this permission notice shall be included
281 in all copies or substantial portions of the Software.
282
283 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
284 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
285 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
286 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
287 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
288 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
289 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
290
291 The justification for this recommendation is that this license is one
292 of the most permissive of the well-known licenses. By using this
293 license, it is easy to copy parts of the DEP to other places, such as
294 documentation for Debian development or embedded in individual
295 packages.
296
297
298
299 Creating a DEP
300 --------------
301
302 The procedure to create a DEP is simple: send an e-mail to
303 `debian-project@lists.debian.org`, stating that you're taking the next
304 available number, and including the first paragraph of the DEP as
305 explained above. It is very important to include the list of drivers,
306 and the URL where the draft will be kept up to date. The next available
307 DEP number can be obtained by consulting <http://dep.debian.net>.
308
309 It is also a very good idea to mention in this mail the place where the
310 discussion is going to take place, with a pointer to the thread in the
311 mailing list archives if it has already started.
312
313 Additionally, drivers are welcome to maintain their DEPs, even in the
314 draft state, in a repository inside the `dep` Alioth project, following
315 the instructions at <http://dep.debian.net/depdn-howto>. They are free not to
316 do so, and in that case a DEP0 driver or some interested party will
317 update the `dep.debian.net` index with their DEP, and a pointer to the
318 URL they provided.
319
320
321 Revising an accepted DEP
322 ------------------------
323
324 If the feature, or whatever, of the DEP needs further changing later,
325 the process can start over with the accepted version of the DEP document
326 as the initial draft. The new draft will get a new DEP number. Once the
327 new DEP is accepted, the old one should move to OBSOLETE state.
328
329
330
331 License
332 -------
333
334 The following copyright statement and license apply to DEP0 (this
335 document).
336
337 Copyright (c) 2008-2009 Stefano Zacchiroli, Adeodato Simó, Lars Wirzenius
338
339 Permission is hereby granted, free of charge, to any person obtaining
340 a copy of this software and associated documentation files (the
341 "Software"), to deal in the Software without restriction, including
342 without limitation the rights to use, copy, modify, merge, publish,
343 distribute, sublicense, and/or sell copies of the Software, and to
344 permit persons to whom the Software is furnished to do so, subject to
345 the following conditions:
346
347 The above copyright notice and this permission notice shall be included
348 in all copies or substantial portions of the Software.
349
350 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
351 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
352 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
353 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
354 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
355 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
356 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
357
358 Changes
359 -------
360
361 * 2009-07-26:
362 [ Zack, Dato, Lars]
363 * Re-word state description: describe separately states and
364 transitions.
365 * Rename "DROPPED" status to "REJECTED"; inhibit "resurrection" of
366 REJECTED DEPs.
367 * Mention that dep.debian.net is the central archival place
368 * Stress that DEPs give no special powers to drivers, in the "driver
369 role" section
370 * Change the state of DEP0 to CANDIDATE
371
372 * 2008-06-12:
373 [ Lars Wirzenius ]
374 * Added a recommendation for the Expat license for new DEPs.
375 * Set this DEP to be licensed under the Expat license.
376
377 * 2008-05-29:
378 [ Lars Wirzenius ]
379 * Added section saying that a DEP should have a DFSG free license.
380
381 * 2008-01-15:
382 [ Adeodato Simó ]
383 * Add section about how to create a DEP.
384 * Rewrite "Introduction" (splitting "Motivation" off), and parts of
385 "Workflow" as well.
386
387 [ Lars Wirzenius ]
388 * Typo fixes.
389
390 * 2008-01-11: Minor tweaks by Zack (mostly cosmetic, but also
391 some more detailed specification of former more vague aspects)
392
393 * 2008-01-09: Various cleanups and tweaks by Lars, based on feedback
394 from several parties.
395
396 * 2007-12-01: Initial version written after some quick brainstorming at
397 the QA meeting in Extremadura, Spain, by Stefano, Adeodato, and Lars.
398

  ViewVC Help
Powered by ViewVC 1.1.5