chiark / gitweb /
add some spaces between attributes, sidestepping #430792.
[developers-reference.git] / resources.dbk
1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
3     "">
4 <chapter id="resources">
5 <title>Resources for Debian Developers</title>
6 <para>
7 In this chapter you will find a very brief road map of the Debian mailing
8 lists, the Debian machines which may be available to you as a developer, and
9 all the other resources that are available to help you in your maintainer work.
10 </para>
11 <section id="mailing-lists">
12 <title>Mailing lists</title>
13 <para>
14 Much of the conversation between Debian developers (and users) is managed
15 through a wide array of mailing lists we host at <literal><ulink
16 url=""></ulink></literal>.  To find out
17 more on how to subscribe or unsubscribe, how to post and how not to post, where
18 to find old posts and how to search them, how to contact the list maintainers
19 and see various other information about the mailing lists, please read <ulink
20 url=""></ulink>.  This section will only
21 cover aspects of mailing lists that are of particular interest to developers.
22 </para>
23 <section id="mailing-lists-rules">
24 <title>Basic rules for use</title>
25 <para>
26 When replying to messages on the mailing list, please do not send a carbon copy
27 (<literal>CC</literal>) to the original poster unless they explicitly request
28 to be copied.  Anyone who posts to a mailing list should read it to see the
29 responses.
30 </para>
31 <para>
32 Cross-posting (sending the same message to multiple lists) is discouraged.  As
33 ever on the net, please trim down the quoting of articles you're replying to.
34 In general, please adhere to the usual conventions for posting messages.
35 </para>
36 <para>
37 Please read the <ulink
38 url="">code of conduct</ulink>
39 for more information.
40 </para>
41 </section>
43 <section id="core-devel-mailing-lists">
44 <title>Core development mailing lists</title>
45 <para>
46 The core Debian mailing lists that developers should use are:
47 </para>
48 <itemizedlist>
49 <listitem>
50 <para>
51 <email></email>, used to announce
52 important things to developers.  All developers are expected to be subscribed
53 to this list.
54 </para>
55 </listitem>
56 <listitem>
57 <para>
58 <email></email>, used to discuss various
59 development related technical issues.
60 </para>
61 </listitem>
62 <listitem>
63 <para>
64 <email></email>, where the Debian Policy is
65 discussed and voted on.
66 </para>
67 </listitem>
68 <listitem>
69 <para>
70 <email></email>, used to discuss various
71 non-technical issues related to the project.
72 </para>
73 </listitem>
74 </itemizedlist>
75 <para>
76 There are other mailing lists available for a variety of special topics; see
77 <ulink url=""></ulink> for a list.
78 </para>
79 </section>
81 <section id="mailing-lists-special">
82 <title>Special lists</title>
83 <para>
84 <email></email> is a special mailing list for
85 private discussions amongst Debian developers.  It is meant to be used for
86 posts which for whatever reason should not be published publicly.  As such, it
87 is a low volume list, and users are urged not to use
88 <email></email> unless it is really necessary.
89 Moreover, do <emphasis>not</emphasis> forward email from that list to anyone.
90 Archives of this list are not available on the web for obvious reasons, but you
91 can see them using your shell account on <literal></literal>
92 and looking in the <filename>~debian/archive/debian-private</filename>
93 directory.
94 </para>
95 <para>
96 <email></email> is a special mailing list used as
97 a grab-bag for Debian related correspondence such as contacting upstream
98 authors about licenses, bugs, etc.  or discussing the project with others where
99 it might be useful to have the discussion archived somewhere.
100 </para>
101 </section>
103 <section id="mailing-lists-new">
104 <title>Requesting new development-related lists</title>
105 <para>
106 Before requesting a mailing list that relates to the development of a package
107 (or a small group of related packages), please consider if using an alias (via
108 a .forward-aliasname file on, which translates into a
109 reasonably nice <replaceable></replaceable> address) or
110 a self-managed mailing list on <link linkend="alioth">Alioth</link> is
111 more appropriate.
112 </para>
113 <para>
114 If you decide that a regular mailing list on is really what
115 you want, go ahead and fill in a request, following <ulink
116 url="">the HOWTO</ulink>.
117 </para>
118 </section>
120 </section>
122 <section id="irc-channels">
123 <title>IRC channels</title>
124 <para>
125 Several IRC channels are dedicated to Debian's development.  They are mainly
126 hosted on the <ulink url="">Open and free technology
127 community (OFTC)</ulink> network.  The <literal></literal> DNS
128 entry is an alias to <literal></literal>.
129 </para>
130 <para>
131 The main channel for Debian in general is <emphasis>#debian</emphasis>.  This
132 is a large, general-purpose channel where users can find recent news in the
133 topic and served by bots.  <emphasis>#debian</emphasis> is for English
134 speakers; there are also <emphasis></emphasis>,
135 <emphasis>#debian-fr</emphasis>, <emphasis>#debian-br</emphasis> and other
136 similarly named channels for speakers of other languages.
137 </para>
138 <para>
139 The main channel for Debian development is <emphasis>#debian-devel</emphasis>.
140 It is a very active channel since usually over 150 people are always logged in.
141 It's a channel for people who work on Debian, it's not a support channel
142 (there's <emphasis>#debian</emphasis> for that).  It is however open to anyone
143 who wants to lurk (and learn).  Its topic is commonly full of interesting
144 information for developers.
145 </para>
146 <para>
147 Since <emphasis>#debian-devel</emphasis> is an open channel, you should not
148 speak there of issues that are discussed in
149 <email></email>.  There's another channel for
150 this purpose, it's called <emphasis>#debian-private</emphasis> and it's
151 protected by a key.  This key is available in the archives of debian-private in
152 <filename></filename>, just
153 <command>zgrep</command> for <emphasis>#debian-private</emphasis> in all the
154 files.
155 </para>
156 <para>
157 There are other additional channels dedicated to specific subjects.
158 <emphasis>#debian-bugs</emphasis> is used for coordinating bug squashing
159 parties.  <emphasis>#debian-boot</emphasis> is used to coordinate the work on
160 the debian-installer.  <emphasis>#debian-doc</emphasis> is occasionally used to
161 talk about documentation, like the document you are reading.  Other channels
162 are dedicated to an architecture or a set of packages:
163 <emphasis>#debian-bsd</emphasis>, <emphasis>#debian-kde</emphasis>,
164 <emphasis>#debian-jr</emphasis>, <emphasis>#debian-edu</emphasis>,
165 <emphasis>#debian-sf</emphasis> (SourceForge package),
166 <emphasis>#debian-oo</emphasis> (OpenOffice package) ...
167 </para>
168 <para>
169 Some non-English developers' channels exist as well, for example
170 <emphasis>#debian-devel-fr</emphasis> for French speaking people interested in
171 Debian's development.
172 </para>
173 <para>
174 Channels dedicated to Debian also exist on other IRC networks, notably on the
175 <ulink url="">freenode</ulink> IRC network, which was
176 pointed at by the <literal></literal> alias until 4th June 2006.
177 </para>
178 <para>
179 To get a cloak on freenode, you send Jörg Jaspert &lt;; a
180 signed mail where you tell what your nick is.  Put cloak somewhere in the
181 Subject: header.  The nick should be registered: <ulink
182 url="">Nick Setup Page</ulink>.  The
183 mail needs to be signed by a key in the Debian keyring.  Please see <ulink
184 url="">Freenodes
185 documentation</ulink> for more information about cloaks.
186 </para>
187 </section>
189 <section id="doc-rsrcs">
190 <title>Documentation</title>
191 <para>
192 This document contains a lot of information which is useful to Debian
193 developers, but it cannot contain everything.  Most of the other interesting
194 documents are linked from <ulink url="">The
195 Developers' Corner</ulink>.  Take the time to browse all the links, you will
196 learn many more things.
197 </para>
198 </section>
200 <section id="server-machines">
201 <title>Debian machines</title>
202 <para>
203 Debian has several computers working as servers, most of which serve critical
204 functions in the Debian project.  Most of the machines are used for porting
205 activities, and they all have a permanent connection to the Internet.
206 </para>
207 <para>
208 Most of the machines are available for individual developers to use, as long as
209 the developers follow the rules set forth in the <ulink
210 url="">Debian Machine Usage Policies</ulink>.
211 </para>
212 <para>
213 Generally speaking, you can use these machines for Debian-related purposes as
214 you see fit.  Please be kind to system administrators, and do not use up tons
215 and tons of disk space, network bandwidth, or CPU without first getting the
216 approval of the system administrators.  Usually these machines are run by
217 volunteers.
218 </para>
219 <para>
220 Please take care to protect your Debian passwords and SSH keys installed on
221 Debian machines.  Avoid login or upload methods which send passwords over the
222 Internet in the clear, such as telnet, FTP, POP etc.
223 </para>
224 <para>
225 Please do not put any material that doesn't relate to Debian on the Debian
226 servers, unless you have prior permission.
227 </para>
228 <para>
229 The current list of Debian machines is available at <ulink
230 url=""></ulink>.  That web page contains
231 machine names, contact information, information about who can log in, SSH keys
232 etc.
233 </para>
234 <para>
235 If you have a problem with the operation of a Debian server, and you think that
236 the system operators need to be notified of this problem, the Debian system
237 administrator team is reachable at
238 <email></email>.
239 </para>
240 <para>
241 If you have a problem with a certain service, not related to the system
242 administration (such as packages to be removed from the archive, suggestions
243 for the web site, etc.), generally you'll report a bug against a
244 ``pseudo-package''.  See <xref linkend="submit-bug"/> for information on how to
245 submit bugs.
246 </para>
247 <para>
248 Some of the core servers are restricted, but the information from there is
249 mirrored to another server.
250 </para>
251 <section id="servers-bugs">
252 <title>The bugs server</title>
253 <para>
254 <literal></literal> is the canonical location for the Bug
255 Tracking System (BTS).
256 </para>
257 <para>
258 It is restricted; a mirror is available on <literal>merkel</literal>.
259 </para>
260 <para>
261 If you plan on doing some statistical analysis or processing of Debian bugs,
262 this would be the place to do it.  Please describe your plans on
263 <email></email> before implementing anything,
264 however, to reduce unnecessary duplication of effort or wasted processing time.
265 </para>
266 </section>
268 <section id="servers-ftp-master">
269 <title>The ftp-master server</title>
270 <para>
271 The <literal></literal> server holds the canonical copy of
272 the Debian archive (excluding the non-US packages).  Generally, package uploads
273 go to this server; see <xref linkend="upload"/> .
274 </para>
275 <para>
276 It is restricted; a mirror is available on <literal>merkel</literal>.
277 </para>
278 <para>
279 Problems with the Debian FTP archive generally need to be reported as bugs
280 against the <systemitem role="package"></systemitem>
281 pseudo-package or an email to <email></email>, but also see
282 the procedures in <xref linkend="archive-manip"/> .
283 </para>
284 </section>
286 <section id="servers-non-us">
287 <title>The non-US server</title>
288 <para>
289 The non-US server <literal></literal> was discontinued with
290 the release of sarge.  The pseudo-package <systemitem
291 role="package"></systemitem> still exists for now.
292 </para>
293 </section>
295 <section id="servers-www">
296 <title>The www-master server</title>
297 <para>
298 The main web server is <literal></literal>.  It holds the
299 official web pages, the face of Debian for most newbies.
300 </para>
301 <para>
302 If you find a problem with the Debian web server, you should generally submit a
303 bug against the pseudo-package, <systemitem
304 role="package"></systemitem>.  Remember to check whether or not
305 someone else has already reported the problem to the <ulink
306 url="">Bug Tracking System</ulink>.
307 </para>
308 </section>
310 <section id="servers-people">
311 <title>The people web server</title>
312 <para>
313 <literal></literal> is the server used for developers' own web
314 pages about anything related to Debian.
315 </para>
316 <para>
317 If you have some Debian-specific information which you want to serve on the
318 web, you can do this by putting material in the
319 <filename>public_html</filename> directory under your home directory on
320 <literal></literal>.  This will be accessible at the URL
321 <literal><replaceable>your-user-id</replaceable>/</literal>.
322 </para>
323 <para>
324 You should only use this particular location because it will be backed up,
325 whereas on other hosts it won't.
326 </para>
327 <para>
328 Usually the only reason to use a different host is when you need to publish
329 materials subject to the U.S.  export restrictions, in which case you can use
330 one of the other servers located outside the United States.
331 </para>
332 <para>
333 Send mail to <email></email> if you have any
334 questions.
335 </para>
336 </section>
338 <section id="servers-cvs">
339 <title>The CVS server</title>
340 <para>
341 Our CVS server is located on <literal></literal>.
342 </para>
343 <para>
344 If you need to use a publicly accessible CVS server, for instance, to help
345 coordinate work on a package between many different developers, you can request
346 a CVS area on the server.
347 </para>
348 <para>
349 Generally, <literal></literal> offers a combination of local CVS
350 access, anonymous client-server read-only access, and full client-server access
351 through <command>ssh</command>.  Also, the CVS area can be accessed read-only
352 via the Web at <ulink url=""></ulink>.
353 </para>
354 <para>
355 To request a CVS area, send a request via email to
356 <email></email>.  Include the name of the requested CVS
357 area, the Debian account that should own the CVS root area, and why you need
358 it.
359 </para>
360 </section>
362 <section id="dchroot">
363 <title>chroots to different distributions</title>
364 <para>
365 On some machines, there are chroots to different distributions available.  You
366 can use them like this:
367 </para>
368 <screen>
369 % dchroot unstable
370 Executing shell in chroot: /org/
371 </screen>
372 <para>
373 In all chroots, the normal user home directories are available.  You can find
374 out which chroots are available via
375 <literal></literal>.
376 </para>
377 </section>
379 </section>
381 <section id="devel-db">
382 <title>The Developers Database</title>
383 <para>
384 The Developers Database, at <ulink url=""></ulink>, is an
385 LDAP directory for managing Debian developer attributes.  You can use this
386 resource to search the list of Debian developers.  Part of this information is
387 also available through the finger service on Debian servers, try
388 <command>finger</command> to see what it reports.
389 </para>
390 <para>
391 Developers can <ulink url="">log into the
392 database</ulink> to change various information about themselves, such as:
393 </para>
394 <itemizedlist>
395 <listitem>
396 <para>
397 forwarding address for your email
398 </para>
399 </listitem>
400 <listitem>
401 <para>
402 subscription to debian-private
403 </para>
404 </listitem>
405 <listitem>
406 <para>
407 whether you are on vacation
408 </para>
409 </listitem>
410 <listitem>
411 <para>
412 personal information such as your address, country, the latitude and longitude
413 of the place where you live for use in <ulink
414 url="">the world map of Debian
415 developers</ulink>, phone and fax numbers, IRC nickname and web page
416 </para>
417 </listitem>
418 <listitem>
419 <para>
420 password and preferred shell on Debian Project machines
421 </para>
422 </listitem>
423 </itemizedlist>
424 <para>
425 Most of the information is not accessible to the public, naturally.  For more
426 information please read the online documentation that you can find at <ulink
427 url=""></ulink>.
428 </para>
429 <para>
430 Developers can also submit their SSH keys to be used for authorization on the
431 official Debian machines, and even add new * DNS entries.  Those
432 features are documented at <ulink
433 url=""></ulink>.
434 </para>
435 </section>
437 <section id="archive">
438 <title>The Debian archive</title>
439 <para>
440 The Debian GNU/Linux distribution consists of a lot of packages
441 (<filename>.deb</filename>'s, currently around 9000) and a few additional files
442 (such as documentation and installation disk images).
443 </para>
444 <para>
445 Here is an example directory tree of a complete Debian archive:
446 </para>
447 <screen>
448 /stable/main/
449 dists/stable/main/binary-i386/
450 dists/stable/main/binary-m68k/
451 dists/stable/main/binary-alpha/
452      ...
453 dists/stable/main/source/
454      ...
455 dists/stable/main/disks-i386/
456 dists/stable/main/disks-m68k/
457 dists/stable/main/disks-alpha/
458      ...
460 dists/stable/contrib/
461 dists/stable/contrib/binary-i386/
462 dists/stable/contrib/binary-m68k/
463 dists/stable/contrib/binary-alpha/
464      ...
465 dists/stable/contrib/source/
467 dists/stable/non-free/
468 dists/stable/non-free/binary-i386/
469 dists/stable/non-free/binary-m68k/
470 dists/stable/non-free/binary-alpha/
471      ...
472 dists/stable/non-free/source/
474 dists/testing/
475 dists/testing/main/
476      ...
477 dists/testing/contrib/
478      ...
479 dists/testing/non-free/
480      ...
482 dists/unstable
483 dists/unstable/main/
484      ...
485 dists/unstable/contrib/
486      ...
487 dists/unstable/non-free/
488      ...
490 pool/
491 pool/main/a/
492 pool/main/a/apt/
493      ...
494 pool/main/b/
495 pool/main/b/bash/
496      ...
497 pool/main/liba/
498 pool/main/liba/libalias-perl/
499      ...
500 pool/main/m/
501 pool/main/m/mailx/
502      ...
503 pool/non-free/n/
504 pool/non-free/n/netscape/
505      ...
506 </screen>
507 <para>
508 As you can see, the top-level directory contains two directories,
509 <filename>dists/</filename> and <filename>pool/</filename>.  The latter is a
510 “pool” in which the packages actually are, and which is handled by the
511 archive maintenance database and the accompanying programs.  The former
512 contains the distributions, <emphasis>stable</emphasis>,
513 <emphasis>testing</emphasis> and <emphasis>unstable</emphasis>.  The
514 <filename>Packages</filename> and <filename>Sources</filename> files in the
515 distribution subdirectories can reference files in the
516 <filename>pool/</filename> directory.  The directory tree below each of the
517 distributions is arranged in an identical manner.  What we describe below for
518 <emphasis>stable</emphasis> is equally applicable to the
519 <emphasis>unstable</emphasis> and <emphasis>testing</emphasis> distributions.
520 </para>
521 <para>
522 <filename>dists/stable</filename> contains three directories, namely
523 <filename>main</filename>, <filename>contrib</filename>, and
524 <filename>non-free</filename>.
525 </para>
526 <para>
527 In each of the areas, there is a directory for the source packages
528 (<filename>source</filename>) and a directory for each supported architecture
529 (<filename>binary-i386</filename>, <filename>binary-m68k</filename>, etc.).
530 </para>
531 <para>
532 The <filename>main</filename> area contains additional directories which hold
533 the disk images and some essential pieces of documentation required for
534 installing the Debian distribution on a specific architecture
535 (<filename>disks-i386</filename>, <filename>disks-m68k</filename>, etc.).
536 </para>
537 <section id="archive-sections">
538 <title>Sections</title>
539 <para>
540 The <emphasis>main</emphasis> section of the Debian archive is what makes up
541 the <emphasis role="strong">official Debian GNU/Linux distribution</emphasis>.
542 The <emphasis>main</emphasis> section is official because it fully complies
543 with all our guidelines.  The other two sections do not, to different degrees;
544 as such, they are <emphasis role="strong">not</emphasis> officially part of
545 Debian GNU/Linux.
546 </para>
547 <para>
548 Every package in the main section must fully comply with the <ulink
549 url="">Debian Free Software
550 Guidelines</ulink> (DFSG) and with all other policy requirements as described
551 in the <ulink url="">Debian Policy
552 Manual</ulink>.  The DFSG is our definition of “free software.” Check out
553 the Debian Policy Manual for details.
554 </para>
555 <para>
556 Packages in the <emphasis>contrib</emphasis> section have to comply with the
557 DFSG, but may fail other requirements.  For instance, they may depend on
558 non-free packages.
559 </para>
560 <para>
561 Packages which do not conform to the DFSG are placed in the
562 <emphasis>non-free</emphasis> section.  These packages are not considered as
563 part of the Debian distribution, though we support their use, and we provide
564 infrastructure (such as our bug-tracking system and mailing lists) for non-free
565 software packages.
566 </para>
567 <para>
568 The <ulink url="">Debian Policy
569 Manual</ulink> contains a more exact definition of the three sections.  The
570 above discussion is just an introduction.
571 </para>
572 <para>
573 The separation of the three sections at the top-level of the archive is
574 important for all people who want to distribute Debian, either via FTP servers
575 on the Internet or on CD-ROMs: by distributing only the
576 <emphasis>main</emphasis> and <emphasis>contrib</emphasis> sections, one can
577 avoid any legal risks.  Some packages in the <emphasis>non-free</emphasis>
578 section do not allow commercial distribution, for example.
579 </para>
580 <para>
581 On the other hand, a CD-ROM vendor could easily check the individual package
582 licenses of the packages in <emphasis>non-free</emphasis> and include as many
583 on the CD-ROMs as it's allowed to.  (Since this varies greatly from vendor to
584 vendor, this job can't be done by the Debian developers.)
585 </para>
586 <para>
587 Note that the term section is also used to refer to categories which simplify
588 the organization and browsing of available packages, e.g.
589 <emphasis>admin</emphasis>, <emphasis>net</emphasis>,
590 <emphasis>utils</emphasis> etc.  Once upon a time, these sections (subsections,
591 rather) existed in the form of subdirectories within the Debian archive.
592 Nowadays, these exist only in the Section header fields of packages.
593 </para>
594 </section>
596 <section id="s4.6.2">
597 <title>Architectures</title>
598 <para>
599 In the first days, the Linux kernel was only available for Intel i386 (or
600 greater) platforms, and so was Debian.  But as Linux became more and more
601 popular, the kernel was ported to other architectures, too.
602 </para>
603 <para>
604 The Linux 2.0 kernel supports Intel x86, DEC Alpha, SPARC, Motorola 680x0 (like
605 Atari, Amiga and Macintoshes), MIPS, and PowerPC.  The Linux 2.2 kernel
606 supports even more architectures, including ARM and UltraSPARC.  Since Linux
607 supports these platforms, Debian decided that it should, too.  Therefore,
608 Debian has ports underway; in fact, we also have ports underway to non-Linux
609 kernels.  Aside from <emphasis>i386</emphasis> (our name for Intel x86), there
610 is <emphasis>m68k</emphasis>, <emphasis>alpha</emphasis>,
611 <emphasis>powerpc</emphasis>, <emphasis>sparc</emphasis>,
612 <emphasis>hurd-i386</emphasis>, <emphasis>arm</emphasis>,
613 <emphasis>ia64</emphasis>, <emphasis>hppa</emphasis>,
614 <emphasis>s390</emphasis>, <emphasis>mips</emphasis>,
615 <emphasis>mipsel</emphasis> and <emphasis>sh</emphasis> as of this writing.
616 </para>
617 <para>
618 Debian GNU/Linux 1.3 is only available as <emphasis>i386</emphasis>.  Debian
619 2.0 shipped for <emphasis>i386</emphasis> and <emphasis>m68k</emphasis>
620 architectures.  Debian 2.1 ships for the <emphasis>i386</emphasis>,
621 <emphasis>m68k</emphasis>, <emphasis>alpha</emphasis>, and
622 <emphasis>sparc</emphasis> architectures.  Debian 2.2 added support for the
623 <emphasis>powerpc</emphasis> and <emphasis>arm</emphasis> architectures.
624 Debian 3.0 added support of five new architectures: <emphasis>ia64</emphasis>,
625 <emphasis>hppa</emphasis>, <emphasis>s390</emphasis>, <emphasis>mips</emphasis>
626 and <emphasis>mipsel</emphasis>.
627 </para>
628 <para>
629 Information for developers and users about the specific ports are available at
630 the <ulink url="">Debian Ports web pages</ulink>.
631 </para>
632 </section>
634 <section id="s4.6.3">
635 <title>Packages</title>
636 <para>
637 There are two types of Debian packages, namely <emphasis>source</emphasis> and
638 <emphasis>binary</emphasis> packages.
639 </para>
640 <para>
641 Source packages consist of either two or three files: a
642 <filename>.dsc</filename> file, and either a <filename>.tar.gz</filename> file
643 or both an <filename>.orig.tar.gz</filename> and a
644 <filename>.diff.gz</filename> file.
645 </para>
646 <para>
647 If a package is developed specially for Debian and is not distributed outside
648 of Debian, there is just one <filename>.tar.gz</filename> file which contains
649 the sources of the program.  If a package is distributed elsewhere too, the
650 <filename>.orig.tar.gz</filename> file stores the so-called <emphasis>upstream
651 source code</emphasis>, that is the source code that's distributed by the
652 <emphasis>upstream maintainer</emphasis> (often the author of the software).
653 In this case, the <filename>.diff.gz</filename> contains the changes made by
654 the Debian maintainer.
655 </para>
656 <para>
657 The <filename>.dsc</filename> file lists all the files in the source package
658 together with checksums (<command>md5sums</command>) and some additional info
659 about the package (maintainer, version, etc.).
660 </para>
661 </section>
663 <section id="s4.6.4">
664 <title>Distributions</title>
665 <para>
666 The directory system described in the previous chapter is itself contained
667 within <emphasis>distribution directories</emphasis>.  Each distribution is
668 actually contained in the <filename>pool</filename> directory in the top-level
669 of the Debian archive itself.
670 </para>
671 <para>
672 To summarize, the Debian archive has a root directory within an FTP server.
673 For instance, at the mirror site, <literal></literal>, the
674 Debian archive itself is contained in <ulink
675 url="">/debian</ulink>, which is a common
676 location (another is <filename>/pub/debian</filename>).
677 </para>
678 <para>
679 A distribution comprises Debian source and binary packages, and the respective
680 <filename>Sources</filename> and <filename>Packages</filename> index files,
681 containing the header information from all those packages.  The former are kept
682 in the <filename>pool/</filename> directory, while the latter are kept in the
683 <filename>dists/</filename> directory of the archive (for backwards
684 compatibility).
685 </para>
686 <section id="sec-dists">
687 <title>Stable, testing, and unstable</title>
688 <para>
689 There are always distributions called <emphasis>stable</emphasis> (residing in
690 <filename>dists/stable</filename>), <emphasis>testing</emphasis> (residing in
691 <filename>dists/testing</filename>), and <emphasis>unstable</emphasis>
692 (residing in <filename>dists/unstable</filename>).  This reflects the
693 development process of the Debian project.
694 </para>
695 <para>
696 Active development is done in the <emphasis>unstable</emphasis> distribution
697 (that's why this distribution is sometimes called the <emphasis>development
698 distribution</emphasis>).  Every Debian developer can update his or her
699 packages in this distribution at any time.  Thus, the contents of this
700 distribution change from day to day.  Since no special effort is made to make
701 sure everything in this distribution is working properly, it is sometimes
702 literally unstable.
703 </para>
704 <para>
705 The <link linkend="testing">testing</link> distribution is generated
706 automatically by taking packages from unstable if they satisfy certain
707 criteria.  Those criteria should ensure a good quality for packages within
708 testing.  The update to testing is launched each day after the new packages
709 have been installed.  See <xref linkend="testing"/> .
710 </para>
711 <para>
712 After a period of development, once the release manager deems fit, the
713 <emphasis>testing</emphasis> distribution is frozen, meaning that the policies
714 which control how packages move from <emphasis>unstable</emphasis> to
715 <emphasis>testing</emphasis> are tightened.  Packages which are too buggy are
716 removed.  No changes are allowed into <emphasis>testing</emphasis> except for
717 bug fixes.  After some time has elapsed, depending on progress, the
718 <emphasis>testing</emphasis> distribution is frozen even further.  Details of
719 the handling of the testing distribution are published by the Release Team on
720 debian-devel-announce.  After the open issues are solved to the satisfaction of
721 the Release Team, the distribution is released.  Releasing means that
722 <emphasis>testing</emphasis> is renamed to <emphasis>stable</emphasis>, and a
723 new copy is created for the new <emphasis>testing</emphasis>, and the previous
724 <emphasis>stable</emphasis> is renamed to <emphasis>oldstable</emphasis> and
725 stays there until it is finally archived.  On archiving, the contents are moved
726 to <literal></literal>).
727 </para>
728 <para>
729 This development cycle is based on the assumption that the
730 <emphasis>unstable</emphasis> distribution becomes <emphasis>stable</emphasis>
731 after passing a period of being in <emphasis>testing</emphasis>.  Even once a
732 distribution is considered stable, a few bugs inevitably remain — that's why
733 the stable distribution is updated every now and then.  However, these updates
734 are tested very carefully and have to be introduced into the archive
735 individually to reduce the risk of introducing new bugs.  You can find proposed
736 additions to <emphasis>stable</emphasis> in the
737 <filename>proposed-updates</filename> directory.  Those packages in
738 <filename>proposed-updates</filename> that pass muster are periodically moved
739 as a batch into the stable distribution and the revision level of the stable
740 distribution is incremented (e.g., ‘3.0’ becomes ‘3.0r1’, ‘2.2r4’
741 becomes ‘2.2r5’, and so forth).  Please refer to
742 <link linkend="upload-stable">uploads to the <emphasis>stable</emphasis>
743 distribution</link> for details.
744 </para>
745 <para>
746 Note that development under <emphasis>unstable</emphasis> continues during the
747 freeze period, since the <emphasis>unstable</emphasis> distribution remains in
748 place in parallel with <emphasis>testing</emphasis>.
749 </para>
750 </section>
752 <section id="s4.6.4.2">
753 <title>More information about the testing distribution</title>
754 <para>
755 Packages are usually installed into the `testing' distribution after they have
756 undergone some degree of testing in unstable.
757 </para>
758 <para>
759 For more details, please see the <link linkend="testing">information about
760 the testing distribution</link>.
761 </para>
762 </section>
764 <section id="experimental">
765 <title>Experimental</title>
766 <para>
767 The <emphasis>experimental</emphasis> distribution is a special distribution.
768 It is not a full distribution in the same sense as `stable' and `unstable' are.
769 Instead, it is meant to be a temporary staging area for highly experimental
770 software where there's a good chance that the software could break your system,
771 or software that's just too unstable even for the <emphasis>unstable</emphasis>
772 distribution (but there is a reason to package it nevertheless).  Users who
773 download and install packages from <emphasis>experimental</emphasis> are
774 expected to have been duly warned.  In short, all bets are off for the
775 <emphasis>experimental</emphasis> distribution.
776 </para>
777 <para>
778 These are the <citerefentry> <refentrytitle>sources.list</refentrytitle>
779 <manvolnum>5</manvolnum> </citerefentry> lines for
780 <emphasis>experimental</emphasis>:
781 </para>
782 <screen>
783  http://ftp.<replaceable>xy</replaceable> experimental main
784 deb-src http://ftp.<replaceable>xy</replaceable> experimental main
785 </screen>
786 <para>
787 If there is a chance that the software could do grave damage to a system, it is
788 likely to be better to put it into <emphasis>experimental</emphasis>.  For
789 instance, an experimental compressed file system should probably go into
790 <emphasis>experimental</emphasis>.
791 </para>
792 <para>
793 Whenever there is a new upstream version of a package that introduces new
794 features but breaks a lot of old ones, it should either not be uploaded, or be
795 uploaded to <emphasis>experimental</emphasis>.  A new, beta, version of some
796 software which uses a completely different configuration can go into
797 <emphasis>experimental</emphasis>, at the maintainer's discretion.  If you are
798 working on an incompatible or complex upgrade situation, you can also use
799 <emphasis>experimental</emphasis> as a staging area, so that testers can get
800 early access.
801 </para>
802 <para>
803 Some experimental software can still go into <emphasis>unstable</emphasis>,
804 with a few warnings in the description, but that isn't recommended because
805 packages from <emphasis>unstable</emphasis> are expected to propagate to
806 <emphasis>testing</emphasis> and thus to <emphasis>stable</emphasis>.  You
807 should not be afraid to use <emphasis>experimental</emphasis> since it does not
808 cause any pain to the ftpmasters, the experimental packages are automatically
809 removed once you upload the package in <emphasis>unstable</emphasis> with a
810 higher version number.
811 </para>
812 <para>
813 New software which isn't likely to damage your system can go directly into
814 <emphasis>unstable</emphasis>.
815 </para>
816 <para>
817 An alternative to <emphasis>experimental</emphasis> is to use your personal web
818 space on <literal></literal>.
819 </para>
820 <para>
821 When uploading to unstable a package which had bugs fixed in experimental,
822 please consider using the option <literal>-v</literal> to
823 <command>dpkg-buildpackage</command> to finally get them closed.
824 </para>
825 </section>
827 </section>
829 <section id="codenames">
830 <title>Release code names</title>
831 <para>
832 Every released Debian distribution has a <emphasis>code name</emphasis>: Debian
833 1.1 is called `buzz'; Debian 1.2, `rex'; Debian 1.3, `bo'; Debian 2.0, `hamm';
834 Debian 2.1, `slink'; Debian 2.2, `potato'; Debian 3.0, `woody'; Debian 3.1,
835 sarge; Debian 4.0, etch.  There is also a ``pseudo-distribution'', called
836 `sid', which is the current `unstable' distribution; since packages are moved
837 from `unstable' to `testing' as they approach stability, `sid' itself is never
838 released.  As well as the usual contents of a Debian distribution, `sid'
839 contains packages for architectures which are not yet officially supported or
840 released by Debian.  These architectures are planned to be integrated into the
841 mainstream distribution at some future date.
842 </para>
843 <para>
844 Since Debian has an open development model (i.e., everyone can participate and
845 follow the development) even the `unstable' and `testing' distributions are
846 distributed to the Internet through the Debian FTP and HTTP server network.
847 Thus, if we had called the directory which contains the release candidate
848 version `testing', then we would have to rename it to `stable' when the version
849 is released, which would cause all FTP mirrors to re-retrieve the whole
850 distribution (which is quite large).
851 </para>
852 <para>
853 On the other hand, if we called the distribution directories
854 <emphasis>Debian-x.y</emphasis> from the beginning, people would think that
855 Debian release <emphasis>x.y</emphasis> is available.  (This happened in the
856 past, where a CD-ROM vendor built a Debian 1.0 CD-ROM based on a pre-1.0
857 development version.  That's the reason why the first official Debian release
858 was 1.1, and not 1.0.)
859 </para>
860 <para>
861 Thus, the names of the distribution directories in the archive are determined
862 by their code names and not their release status (e.g., `slink').  These names
863 stay the same during the development period and after the release; symbolic
864 links, which can be changed easily, indicate the currently released stable
865 distribution.  That's why the real distribution directories use the
866 <emphasis>code names</emphasis>, while symbolic links for
867 <emphasis>stable</emphasis>, <emphasis>testing</emphasis>, and
868 <emphasis>unstable</emphasis> point to the appropriate release directories.
869 </para>
870 </section>
872 </section>
874 <section id="mirrors">
875 <title>Debian mirrors</title>
876 <para>
877 The various download archives and the web site have several mirrors available
878 in order to relieve our canonical servers from heavy load.  In fact, some of
879 the canonical servers aren't public — a first tier of mirrors balances the
880 load instead.  That way, users always access the mirrors and get used to using
881 them, which allows Debian to better spread its bandwidth requirements over
882 several servers and networks, and basically makes users avoid hammering on one
883 primary location.  Note that the first tier of mirrors is as up-to-date as it
884 can be since they update when triggered from the internal sites (we call this
885 push mirroring).
886 </para>
887 <para>
888 All the information on Debian mirrors, including a list of the available public
889 FTP/HTTP servers, can be found at <ulink
890 url=""></ulink>.  This useful page also includes
891 information and tools which can be helpful if you are interested in setting up
892 your own mirror, either for internal or public access.
893 </para>
894 <para>
895 Note that mirrors are generally run by third-parties who are interested in
896 helping Debian.  As such, developers generally do not have accounts on these
897 machines.
898 </para>
899 </section>
901 <section id="incoming-system">
902 <title>The Incoming system</title>
903 <para>
904 The Incoming system is responsible for collecting updated packages and
905 installing them in the Debian archive.  It consists of a set of directories and
906 scripts that are installed on <literal></literal>.
907 </para>
908 <para>
909 Packages are uploaded by all the maintainers into a directory called
910 <filename>UploadQueue</filename>.  This directory is scanned every few minutes
911 by a daemon called <command>queued</command>,
912 <filename>*.command</filename>-files are executed, and remaining and correctly
913 signed <filename>*.changes</filename>-files are moved together with their
914 corresponding files to the <filename>unchecked</filename> directory.  This
915 directory is not visible for most Developers, as ftp-master is restricted; it
916 is scanned every 15 minutes by the <command>katie</command> script, which
917 verifies the integrity of the uploaded packages and their cryptographic
918 signatures.  If the package is considered ready to be installed, it is moved
919 into the <filename>accepted</filename> directory.  If this is the first upload
920 of the package (or it has new binary packages), it is moved to the
921 <filename>new</filename> directory, where it waits for approval by the
922 ftpmasters.  If the package contains files to be installed by hand it is moved
923 to the <filename>byhand</filename> directory, where it waits for manual
924 installation by the ftpmasters.  Otherwise, if any error has been detected, the
925 package is refused and is moved to the <filename>reject</filename> directory.
926 </para>
927 <para>
928 Once the package is accepted, the system sends a confirmation mail to the
929 maintainer and closes all the bugs marked as fixed by the upload, and the
930 auto-builders may start recompiling it.  The package is now publicly accessible
931 at <ulink url=""></ulink> until it is really
932 installed in the Debian archive.  This happens only once a day (and is also
933 called the `dinstall run' for historical reasons); the package is then removed
934 from incoming and installed in the pool along with all the other packages.
935 Once all the other updates (generating new <filename>Packages</filename> and
936 <filename>Sources</filename> index files for example) have been made, a special
937 script is called to ask all the primary mirrors to update themselves.
938 </para>
939 <para>
940 The archive maintenance software will also send the OpenPGP/GnuPG signed
941 <filename>.changes</filename> file that you uploaded to the appropriate mailing
942 lists.  If a package is released with the <literal>Distribution:</literal> set
943 to `stable', the announcement is sent to
944 <email></email>.  If a package is released with
945 <literal>Distribution:</literal> set to `unstable' or `experimental', the
946 announcement will be posted to
947 <email></email> instead.
948 </para>
949 <para>
950 Though ftp-master is restricted, a copy of the installation is available to all
951 developers on <literal></literal>.
952 </para>
953 </section>
955 <section id="pkg-info">
956 <title>Package information</title>
957 <section id="pkg-info-web">
958 <title>On the web</title>
959 <para>
960 Each package has several dedicated web pages.
961 <literal><replaceable>package-name</replaceable></literal>
962 displays each version of the package available in the various distributions.
963 Each version links to a page which provides information, including the package
964 description, the dependencies, and package download links.
965 </para>
966 <para>
967 The bug tracking system tracks bugs for each package.  You can view the bugs of
968 a given package at the URL
969 <literal><replaceable>package-name</replaceable></literal>.
970 </para>
971 </section>
973 <section id="madison">
974 <title>The <command>madison</command> utility</title>
975 <para>
976 <command>madison</command> is a command-line utility that is available on
977 <literal></literal>, and on the mirror on
978 <literal></literal>.  It uses a single argument corresponding
979 to a package name.  In result it displays which version of the package is
980 available for each architecture and distribution combination.  An example will
981 explain it better.
982 </para>
983 <screen>
984 $ madison libdbd-mysql-perl
985 libdbd-mysql-perl |   1.2202-4 |        stable | source, alpha, arm, i386, m68k, powerpc, sparc
986 libdbd-mysql-perl |   1.2216-2 |       testing | source, arm, hppa, i386, ia64, m68k, mips, mipsel, powerpc, s390, sparc
987 libdbd-mysql-perl | 1.2216-2.0.1 |       testing | alpha
988 libdbd-mysql-perl |   1.2219-1 |      unstable | source, alpha, arm, hppa, i386, ia64, m68k, mips, mipsel, powerpc, s390, sparc
989 </screen>
990 <para>
991 In this example, you can see that the version in <emphasis>unstable</emphasis>
992 differs from the version in <emphasis>testing</emphasis> and that there has
993 been a binary-only NMU of the package for the alpha architecture.  Each version
994 of the package has been recompiled on most of the architectures.
995 </para>
996 </section>
998 </section>
1000 <section id="pkg-tracking-system">
1001 <title>The Package Tracking System</title>
1002 <para>
1003 The Package Tracking System (PTS) is an email-based tool to track the activity
1004 of a source package.  This really means that you can get the same emails that
1005 the package maintainer gets, simply by subscribing to the package in the PTS.
1006 </para>
1007 <para>
1008 Each email sent through the PTS is classified under one of the keywords listed
1009 below.  This will let you select the mails that you want to receive.
1010 </para>
1011 <para>
1012 By default you will get:
1013 </para>
1014 <variablelist>
1015 <varlistentry>
1016 <term><literal>bts</literal></term>
1017 <listitem>
1018 <para>
1019 All the bug reports and following discussions.
1020 </para>
1021 </listitem>
1022 </varlistentry>
1023 <varlistentry>
1024 <term><literal>bts-control</literal></term>
1025 <listitem>
1026 <para>
1027 The email notifications from <email></email> about bug
1028 report status changes.
1029 </para>
1030 </listitem>
1031 </varlistentry>
1032 <varlistentry>
1033 <term><literal>upload-source</literal></term>
1034 <listitem>
1035 <para>
1036 The email notification from <command>katie</command> when an uploaded source
1037 package is accepted.
1038 </para>
1039 </listitem>
1040 </varlistentry>
1041 <varlistentry>
1042 <term><literal>katie-other</literal></term>
1043 <listitem>
1044 <para>
1045 Other warning and error emails from <command>katie</command> (such as an
1046 override disparity for the section and/or the priority field).
1047 </para>
1048 </listitem>
1049 </varlistentry>
1050 <varlistentry>
1051 <term><literal>default</literal></term>
1052 <listitem>
1053 <para>
1054 Any non-automatic email sent to the PTS by people who wanted to contact the
1055 subscribers of the package.  This can be done by sending mail to
1056 <literal><replaceable>sourcepackage</replaceable></literal>.
1057 In order to prevent spam, all messages sent to these addresses must contain the
1058 <literal>X-PTS-Approved</literal> header with a non-empty value.
1059 </para>
1060 </listitem>
1061 </varlistentry>
1062 <varlistentry>
1063 <term><literal>summary</literal></term>
1064 <listitem>
1065 <para>
1066 Regular summary emails about the package's status.  Currently, only progression
1067 in <emphasis>testing</emphasis> is sent.
1068 </para>
1069 </listitem>
1070 </varlistentry>
1071 </variablelist>
1072 <para>
1073 You can also decide to receive additional information:
1074 </para>
1075 <variablelist>
1076 <varlistentry>
1077 <term><literal>upload-binary</literal></term>
1078 <listitem>
1079 <para>
1080 The email notification from <command>katie</command> when an uploaded binary
1081 package is accepted.  In other words, whenever a build daemon or a porter
1082 uploads your package for another architecture, you can get an email to track
1083 how your package gets recompiled for all architectures.
1084 </para>
1085 </listitem>
1086 </varlistentry>
1087 <varlistentry>
1088 <term><literal>cvs</literal></term>
1089 <listitem>
1090 <para>
1091 CVS commit notifications, if the package has a CVS repository and the
1092 maintainer has set up forwarding commit notifications to the PTS.
1093 </para>
1094 </listitem>
1095 </varlistentry>
1096 <varlistentry>
1097 <term><literal>ddtp</literal></term>
1098 <listitem>
1099 <para>
1100 Translations of descriptions or debconf templates submitted to the Debian
1101 Description Translation Project.
1102 </para>
1103 </listitem>
1104 </varlistentry>
1105 <varlistentry>
1106 <term><literal>derivatives</literal></term>
1107 <listitem>
1108 <para>
1109 Information about changes made to the package in derivative distributions (for
1110 example Ubuntu).
1111 </para>
1112 </listitem>
1113 </varlistentry>
1114 </variablelist>
1115 <section id="pts-commands">
1116 <title>The PTS email interface</title>
1117 <para>
1118 You can control your subscription(s) to the PTS by sending various commands to
1119 <email></email>.
1120 </para>
1121 <variablelist>
1122 <varlistentry>
1123 <term><literal>subscribe &lt;sourcepackage&gt; [&lt;email&gt;]</literal></term>
1124 <listitem>
1125 <para>
1126 Subscribes <replaceable>email</replaceable> to communications related to the
1127 source package <replaceable>sourcepackage</replaceable>.  Sender address is
1128 used if the second argument is not present.  If
1129 <replaceable>sourcepackage</replaceable> is not a valid source package, you'll
1130 get a warning.  However if it's a valid binary package, the PTS will subscribe
1131 you to the corresponding source package.
1132 </para>
1133 </listitem>
1134 </varlistentry>
1135 <varlistentry>
1136 <term><literal>unsubscribe &lt;sourcepackage&gt; [&lt;email&gt;]</literal></term>
1137 <listitem>
1138 <para>
1139 Removes a previous subscription to the source package
1140 <replaceable>sourcepackage</replaceable> using the specified email address or
1141 the sender address if the second argument is left out.
1142 </para>
1143 </listitem>
1144 </varlistentry>
1145 <varlistentry>
1146 <term><literal>unsubscribeall [&lt;email&gt;]</literal></term>
1147 <listitem>
1148 <para>
1149 Removes all subscriptions of the specified email address or the sender address
1150 if the second argument is left out.
1151 </para>
1152 </listitem>
1153 </varlistentry>
1154 <varlistentry>
1155 <term><literal>which [&lt;email&gt;]</literal></term>
1156 <listitem>
1157 <para>
1158 Lists all subscriptions for the sender or the email address optionally
1159 specified.
1160 </para>
1161 </listitem>
1162 </varlistentry>
1163 <varlistentry>
1164 <term><literal>keyword [&lt;email&gt;]</literal></term>
1165 <listitem>
1166 <para>
1167 Tells you the keywords that you are accepting.  For an explanation of keywords,
1168 <link linkend="pkg-tracking-system">see above</link>.  Here's a quick
1169 summary:
1170 </para>
1171 <itemizedlist>
1172 <listitem>
1173 <para>
1174 <literal>bts</literal>: mails coming from the Debian Bug Tracking System
1175 </para>
1176 </listitem>
1177 <listitem>
1178 <para>
1179 <literal>bts-control</literal>: reply to mails sent to
1180 <email></email>
1181 </para>
1182 </listitem>
1183 <listitem>
1184 <para>
1185 <literal>summary</literal>: automatic summary mails about the state of a
1186 package
1187 </para>
1188 </listitem>
1189 <listitem>
1190 <para>
1191 <literal>cvs</literal>: notification of CVS commits
1192 </para>
1193 </listitem>
1194 <listitem>
1195 <para>
1196 <literal>ddtp</literal>: translations of descriptions and debconf templates
1197 </para>
1198 </listitem>
1199 <listitem>
1200 <para>
1201 <literal>derivatives</literal>: changes made on the package by derivative
1202 distributions
1203 </para>
1204 </listitem>
1205 <listitem>
1206 <para>
1207 <literal>upload-source</literal>: announce of a new source upload that has been
1208 accepted
1209 </para>
1210 </listitem>
1211 <listitem>
1212 <para>
1213 <literal>upload-binary</literal>: announce of a new binary-only upload
1214 (porting)
1215 </para>
1216 </listitem>
1217 <listitem>
1218 <para>
1219 <literal>katie-other</literal>: other mails from ftpmasters (override
1220 disparity, etc.)
1221 </para>
1222 </listitem>
1223 <listitem>
1224 <para>
1225 <literal>default</literal>: all the other mails (those which aren't automatic)
1226 </para>
1227 </listitem>
1228 </itemizedlist>
1229 </listitem>
1230 </varlistentry>
1231 <varlistentry>
1232 <term><literal>keyword &lt;sourcepackage&gt; [&lt;email&gt;]</literal></term>
1233 <listitem>
1234 <para>
1235 Same as the previous item but for the given source package, since you may
1236 select a different set of keywords for each source package.
1237 </para>
1238 </listitem>
1239 </varlistentry>
1240 <varlistentry>
1241 <term><literal>keyword [&lt;email&gt;] {+|-|=} &lt;list of keywords&gt;</literal></term>
1242 <listitem>
1243 <para>
1244 Accept (+) or refuse (-) mails classified under the given keyword(s).  Define
1245 the list (=) of accepted keywords.  This changes the default set of keywords
1246 accepted by a user.
1247 </para>
1248 </listitem>
1249 </varlistentry>
1250 <varlistentry>
1251 <term><literal>keywordall [&lt;email&gt;] {+|-|=} &lt;list of keywords&gt;</literal></term>
1252 <listitem>
1253 <para>
1254 Accept (+) or refuse (-) mails classified under the given keyword(s).  Define
1255 the list (=) of accepted keywords.  This changes the set of accepted keywords
1256 of all the currently active subscriptions of a user.
1257 </para>
1258 </listitem>
1259 </varlistentry>
1260 <varlistentry>
1261 <term><literal>keyword &lt;sourcepackage&gt; [&lt;email&gt;] {+|-|=} &lt;list of keywords&gt;</literal></term>
1262 <listitem>
1263 <para>
1264 Same as previous item but overrides the keywords list for the indicated source
1265 package.
1266 </para>
1267 </listitem>
1268 </varlistentry>
1269 <varlistentry>
1270 <term><literal>quit | thanks | --</literal></term>
1271 <listitem>
1272 <para>
1273 Stops processing commands.  All following lines are ignored by the bot.
1274 </para>
1275 </listitem>
1276 </varlistentry>
1277 </variablelist>
1278 <para>
1279 The <command>pts-subscribe</command> command-line utility (from the <systemitem
1280 role="package">devscripts</systemitem> package) can be handy to temporarily
1281 subscribe to some packages, for example after having made an non-maintainer
1282 upload.
1283 </para>
1284 </section>
1286 <section id="pts-mail-filtering">
1287 <title>Filtering PTS mails</title>
1288 <para>
1289 Once you are subscribed to a package, you will get the mails sent to
1290 <literal><replaceable>sourcepackage</replaceable></literal>.
1291 Those mails have special headers appended to let you filter them in a special
1292 mailbox (e.g.  with <command>procmail</command>).  The added headers are
1293 <literal>X-Loop</literal>, <literal>X-PTS-Package</literal>,
1294 <literal>X-PTS-Keyword</literal> and <literal>X-Unsubscribe</literal>.
1295 </para>
1296 <para>
1297 Here is an example of added headers for a source upload notification on the
1298 <systemitem role="package">dpkg</systemitem> package:
1299 </para>
1300 <screen>
1301 -Loop:
1302 X-PTS-Package: dpkg
1303 X-PTS-Keyword: upload-source
1304 X-Unsubscribe: echo 'unsubscribe dpkg' | mail
1305 </screen>
1306 </section>
1308 <section id="pts-cvs-commit">
1309 <title>Forwarding CVS commits in the PTS</title>
1310 <para>
1311 If you use a publicly accessible CVS repository for maintaining your Debian
1312 package, you may want to forward the commit notification to the PTS so that the
1313 subscribers (and possible co-maintainers) can closely follow the package's
1314 evolution.
1315 </para>
1316 <para>
1317 Once you set up the CVS repository to generate commit notifications, you just
1318 have to make sure it sends a copy of those mails to
1319 <literal><replaceable>sourcepackage</replaceable></literal>.
1320 Only the people who accept the <emphasis>cvs</emphasis> keyword will receive
1321 these notifications.
1322 </para>
1323 </section>
1325 <section id="pts-web">
1326 <title>The PTS web interface</title>
1327 <para>
1328 The PTS has a web interface at <ulink
1329 url=""></ulink> that puts together a lot of
1330 information about each source package.  It features many useful links (BTS, QA
1331 stats, contact information, DDTP translation status, buildd logs) and gathers
1332 much more information from various places (30 latest changelog entries, testing
1333 status, ...).  It's a very useful tool if you want to know what's going on with
1334 a specific source package.  Furthermore there's a form that allows easy
1335 subscription to the PTS via email.
1336 </para>
1337 <para>
1338 You can jump directly to the web page concerning a specific source package with
1339 a URL like
1340 <literal><replaceable>sourcepackage</replaceable></literal>.
1341 </para>
1342 <para>
1343 This web interface has been designed like a portal for the development of
1344 packages: you can add custom content on your packages' pages.  You can add
1345 static information (news items that are meant to stay available indefinitely)
1346 and news items in the latest news section.
1347 </para>
1348 <para>
1349 Static news items can be used to indicate:
1350 </para>
1351 <itemizedlist>
1352 <listitem>
1353 <para>
1354 the availability of a project hosted on
1355 <link linkend="alioth">Alioth</link> for co-maintaining the package
1356 </para>
1357 </listitem>
1358 <listitem>
1359 <para>
1360 a link to the upstream web site
1361 </para>
1362 </listitem>
1363 <listitem>
1364 <para>
1365 a link to the upstream bug tracker
1366 </para>
1367 </listitem>
1368 <listitem>
1369 <para>
1370 the existence of an IRC channel dedicated to the software
1371 </para>
1372 </listitem>
1373 <listitem>
1374 <para>
1375 any other available resource that could be useful in the maintenance of the
1376 package
1377 </para>
1378 </listitem>
1379 </itemizedlist>
1380 <para>
1381 Usual news items may be used to announce that:
1382 </para>
1383 <itemizedlist>
1384 <listitem>
1385 <para>
1386 beta packages are available for testing
1387 </para>
1388 </listitem>
1389 <listitem>
1390 <para>
1391 final packages are expected for next week
1392 </para>
1393 </listitem>
1394 <listitem>
1395 <para>
1396 the packaging is about to be redone from scratch
1397 </para>
1398 </listitem>
1399 <listitem>
1400 <para>
1401 backports are available
1402 </para>
1403 </listitem>
1404 <listitem>
1405 <para>
1406 the maintainer is on vacation (if they wish to publish this information)
1407 </para>
1408 </listitem>
1409 <listitem>
1410 <para>
1411 a NMU is being worked on
1412 </para>
1413 </listitem>
1414 <listitem>
1415 <para>
1416 something important will affect the package
1417 </para>
1418 </listitem>
1419 </itemizedlist>
1420 <para>
1421 Both kinds of news are generated in a similar manner: you just have to send an
1422 email either to <email></email> or to
1423 <email></email>.  The mail should indicate which package
1424 is concerned by having the name of the source package in a
1425 <literal>X-PTS-Package</literal> mail header or in a <literal>Package</literal>
1426 pseudo-header (like the BTS reports).  If a URL is available in the
1427 <literal>X-PTS-Url</literal> mail header or in the <literal>Url</literal>
1428 pseudo-header, then the result is a link to that URL instead of a complete news
1429 item.
1430 </para>
1431 <para>
1432 Here are a few examples of valid mails used to generate news items in the PTS.
1433 The first one adds a link to the cvsweb interface of debian-cd in the Static
1434 information section:
1435 </para>
1436 <screen>
1437 : Raphael Hertzog &lt;;
1438 To:
1439 Subject: Browse debian-cd CVS repository with cvsweb
1441 Package: debian-cd
1442 Url:
1443 </screen>
1444 <para>
1445 The second one is an announcement sent to a mailing list which is also sent to
1446 the PTS so that it is published on the PTS web page of the package.  Note the
1447 use of the BCC field to avoid answers sent to the PTS by mistake.
1448 </para>
1449 <screen>
1450 : Raphael Hertzog &lt;;
1451 To:
1452 Bcc:
1453 Subject: Galeon 2.0 backported for woody
1454 X-PTS-Package: galeon
1456 Hello gnomers!
1458 I'm glad to announce that galeon has been backported for woody. You'll find
1459 everything here:
1460 ...
1461 </screen>
1462 <para>
1463 Think twice before adding a news item to the PTS because you won't be able to
1464 remove it later and you won't be able to edit it either.  The only thing that
1465 you can do is send a second news item that will deprecate the information
1466 contained in the previous one.
1467 </para>
1468 </section>
1470 </section>
1472 <section id="ddpo">
1473 <title>Developer's packages overview</title>
1474 <para>
1475 A QA (quality assurance) web portal is available at <ulink
1476 url=""></ulink> which displays a table
1477 listing all the packages of a single developer (including those where the party
1478 is listed as a co-maintainer).  The table gives a good summary about the
1479 developer's packages: number of bugs by severity, list of available versions in
1480 each distribution, testing status and much more including links to any other
1481 useful information.
1482 </para>
1483 <para>
1484 It is a good idea to look up your own data regularly so that you don't forget
1485 any open bugs, and so that you don't forget which packages are your
1486 responsibility.
1487 </para>
1488 </section>
1490 <section id="alioth">
1491 <title>Debian *Forge: Alioth</title>
1492 <para>
1493 Alioth is a fairly new Debian service, based on a slightly modified version of
1494 the GForge software (which evolved from SourceForge).  This software offers
1495 developers access to easy-to-use tools such as bug trackers, patch manager,
1496 project/task managers, file hosting services, mailing lists, CVS repositories
1497 etc.  All these tools are managed via a web interface.
1498 </para>
1499 <para>
1500 It is intended to provide facilities to free software projects backed or led by
1501 Debian, facilitate contributions from external developers to projects started
1502 by Debian, and help projects whose goals are the promotion of Debian or its
1503 derivatives.
1504 </para>
1505 <para>
1506 All Debian developers automatically have an account on Alioth.  They can
1507 activate it by using the recover password facility.  External developers can
1508 request guest accounts on Alioth.
1509 </para>
1510 <para>
1511 For more information please visit <ulink
1512 url=""></ulink>.
1513 </para>
1514 </section>
1516 <section id="developer-misc">
1517 <title>Goodies for Developers</title>
1518 <section id="lwn">
1519 <title>LWN Subscriptions</title>
1520 <para>
1521 Since October of 2002, HP has sponsored a subscription to LWN for all
1522 interested Debian developers.  Details on how to get access to this benefit are
1523 in <ulink
1524 url=""></ulink>.
1525 </para>
1526 </section>
1528 </section>
1530 </chapter>