Product SiteDocumentation Site

1.3. Debian 项目的内部工作

从有经验的 Debian 开发者、Debian 软件包里的个别或集体作品、以及用户的回馈,Debian 计划产出丰富的结果。

1.3.1. Debian 开发者

Debian developers have various responsibilities, and as official project members, they have great influence on the direction the project takes. A Debian developer is traditionally generally responsible for at least one package, but according to their available time and desire, they are free to become involved in numerous teams and projects, thus acquiring more responsibilities within the project.
Package maintenance is a relatively regimented activity, very documented, or even regulated. It must, in effect, comply with all the standards established by the Debian Policy. Fortunately, there are many tools that facilitate the maintainer's work. The developer can, thus, focus on the specifics of their package and on more complex tasks, such as “squashing“ bugs.
政策,是 Debian 项目中重要的元素,它是保障该发行版软件包品质与完美互通性的纲常。正因为有政策的约束,Debian 才能在愈来愈庞大的同时依然保持一致。然而,政策并非铭刻在石不能更改,要随着 邮件列表中型塑出的提案不断演进。修订案在所有关注的各方有所共识后,才会被一小群没有编辑责任的维护者编写 (他们只接纳前述邮件列表内众 Debian 开发者接受的修改提案)。目前臭虫追踪系统内的修订提案在此:
The Policy provides considerable coverage of the technical aspects of packaging. The size of the project also raises organizational problems; these are dealt with by the Debian Constitution, which establishes a structure and means for decision making. In other words, a formal governance system.
This constitution defines a certain number of roles and positions, plus responsibilities and authorities for each. It is particularly worth noting that Debian developers always have ultimate decision making authority by a vote of general resolution, wherein a qualified majority of three quarters (75%) of votes is required for significant alterations to be made (such as those with an impact on the Foundation Documents). However, developers annually elect a “leader” to represent them in meetings, and ensure internal coordination between varying teams. This election is always a period of intense discussions. The Debian Project leader's (DPL) role is not formally defined by any document: candidates for this post usually propose their own definition of the position. In practice, the leader's roles include serving as a representative to the media, coordinating between “internal” teams, and providing overall guidance to the project, within which the developers can relate: the views of the DPL are implicitly approved by the majority of project members.
特别地,领导人拥有真正的特权;他们的投票可以解决票数相等的问题;他们可以对某个尚未归属于任何人管辖名下的事件作出决定,同时可以将他们自己的一部分职责委托他人代为执行。
Since its inception, the project has been successively led by Ian Murdock, Bruce Perens, Ian Jackson, Wichert Akkerman, Ben Collins, Bdale Garbee, Martin Michlmayr, Branden Robinson, Anthony Towns, Sam Hocevar, Steve McIntyre, Stefano Zacchiroli, Lucas Nussbaum, Neill McGovern, Mehdi Dogguy, Chris Lamb, Sam Hartman, Jonathan Carter, and Andreas Tille.
宪章同样也定义了一个“技术委员会(technical committee)”。技术委员会的核心角色是对于那些在开发者之间尚未达成一致意见的技术事宜进行决策。除此以外,委员会则作为顾问角色,为任何无法为他们所负责的事宜作出决定的开发者提供帮助。值得一提的是,只有在相关问题方给委员会发送邀请时,委员会才会介入。
最后,宪章定义了一个“项目秘书”的职位,这一角色负责组织各种选举和决议的投票。
The “general resolution” (GR) procedure is fully detailed in the constitution, from the initial discussion period to the final counting of votes. The most interesting aspect of that process is that when it comes to an actual vote, developers have to rank the different ballot options between them and the winner is selected with a Condorcet method (more specifically, the Schulze method). For further details see:
Even if this constitution establishes a semblance of democracy, the daily reality is quite different: Debian naturally follows the free software rules of the do-ocracy: the one who does things gets to decide how to do them. A lot of time can be wasted debating the respective merits of various ways to approach a problem; the chosen solution will be the first one that is both functional and satisfying… which will come out of the time that a competent person puts into it.
这就是升级的唯一方法:做有用的事且显示把事情做好。Debian '管理' 团体以增选方式管理,采用已有效奉献且证明其能力的志愿者。新的奉献者看到这些团队做了具有公共利益性质的工作就会主动加入协助。这就是 Debian 常被称为 '任人唯贤'。
This effective operational method guarantees the quality of contributors in the “key” Debian teams. This method is by no means perfect, and occasionally there are those who do not accept this way of operating. The selection of developers accepted in the teams may appear a bit arbitrary, or even unfair. Furthermore, not everybody has the same definition of the service expected from these teams. For some, it is unacceptable to have to wait eight days for inclusion of a new Debian package, while others will wait patiently for three weeks without a problem. As such, there are regular complaints from the disgruntled about the “quality of service” from some teams.

1.3.2. 用户的积极角色

有的人可能会感到奇怪,不明白为什么要在讨论 Debian 计划内工作的成员时加入用户。答案是确定的:用户在整个计划中扮演了关键的角色。其中不只有“被动”的角色,更有部分用户会日常使用 Debian 的开发版本并定期提交错误报告以指出软件的缺陷和问题。还有一部分用户会更进一步提出改进的意见,以“愿望清单(wishlist)”等级的错误报告阐述自己的观点,甚至提交对源代码的修改提议,或称为“补丁”(参见 第 1.3.2.3 节 “发送修复和补丁”)。

1.3.2.1. 反馈缺陷

Debian 中提交缺陷报告的最基础工具是 Debian 缺陷跟踪系统(Debian BTS)。它在项目的许多地方都有应用。其公开部分(网页界面)可以让用户查看所报告的问题,并提供选项以根据不同的筛选条件给出一个列表。这些条件包括:受影响的软件包、问题严重性、状态、报告者的电子邮件地址、负责维护软件包人员的电子邮件地址、标签,等等。用户也可以在线浏览与这些问题相关的所有讨论的历史记录。
表层下的 Debian BTS 系统以电子邮件为基础:保存参与者寄发的电子邮件做为信息。发送给 的电子邮件,将被指定为编号 12345 的错误。有权限的人可以叙明理由寄发另个电子邮件 '关闭' (表示该错误已解决或无关紧要) 该错误。新的错误应以指定的格式辨识有问题的软件包再发送电子邮件给 。这个邮箱 用于编辑与该错误有关的所有“元信息”。
Debian BTS 还有其他功能特性,如使用标签标记不同的缺陷报告。如需了解更多信息,请参阅
Users can also use the command line to send bug reports on a Debian package with the reportbug tool. It helps making sure the bug in question hasn't already been filed, thus preventing redundancy in the system. It reminds the user of the definitions of the severity levels, for the report to be as accurate as possible (the developer can always fine-tune these parameters later, if needed, e.g. using the bts command). It helps writing a complete bug report, without the user needing to know the precise syntax, by writing it and allowing the user to edit it. This report will then be sent via an e-mail server (by default, a remote one run by Debian, but reportbug can also use a local server).
此工具最初针对 Debian 的开发版本设计,缺陷的修复也在开发版本上进行。自然地,Debian 的稳定发行版本则尽量不做改动;在此基础上存在一小部分例外,如安全更新或其它重要更新(例如,如果某个软件包突然完全无法工作)。因此,对 Debian 软件包中小问题的修复常常需要在下一个稳定发行版本中才能体现出来。

1.3.2.2. 翻译和文档

此外,很多对 Debian 满意的用户会为这个计划做出自己的贡献。因为不同贡献者的编程水平不尽相同,有些人会选择参与翻译与审核文档。不同语言有各自专门的邮件列表,用来协调相应的工作。

1.3.2.3. 发送修复和补丁

更多的进阶用户还可能通过发送补丁的方式来提供对程序问题的修复方法。
补丁是描述文件修改的文件。准确来说,包括移除或添加的代码清单,以及 (有时) 从参考文档取得的内容,用以取代修改的内文 (可以辨识取代的内容)。
修改文件的工具名为 patch。创建补丁的工具名为 diff,用法如下:
$ diff -u file.old file.new >file.patch
file.patch 文件包括变更 file.oldfile.new 的指令。可以发送给其他人,用于从另外两个文件重新创建 file.new,如:
$ patch -p0 file.old <file.patch
现在,文件 file.old 内容等同于 file.new
In practice, most software is currently maintained in Git repositories and contributors are thus more likely to use git to retrieve the source code and propose changes. git diff will generate a file in the same format as what diff -u would do and git apply can do the same as patch.
虽然git diff命令的输出文件也可以直接分享给其他开发者,但通常还有更好的办法提交更改。如果开发者偏向于通过邮件获取补丁,他们通常希望获得git format-patch生成的补丁,这样他们就能直接用git am命令将更改整合到仓库中。这种做法保留了提交的元数据,也让同时分享多个提交成为可能。
This email-based workflow is still popular, but it tends to be replaced by the usage of merge requests (or pull requests) whenever the software is hosted in a platform like GitHub or GitLab — and Debian is using GitLab on its salsa.debian.org server. On those systems, once you have created an account, you fork the repository, effectively creating a copy of the repository in your own account, and you can then clone that repository and push your own changes in it. From there, the web interface will suggest you to submit a merge request, notifying the developers of your changes, making it easy for them to review and accept your changes with a single click.

1.3.2.4. 其他贡献的方式

正是随着用户的不断参与,这些贡献途径才能越来越有效。用户并不仅仅是孤立的个体所组成的一个集合,用户们实际上是一个真正的社区,伴随着个体之间持续的信息交换。我们尤其注意到我们的用户邮件列表,,有十分活跃的交流活动。(第 7 章 问题的解决与相关信息的检索 一节对此有详细描述。)
用户们不仅会在直接影响他们的技术问题上自助(并帮助他人),也会讨论向 Debian 计划做出贡献以及使得计划继续前行的好方法——这些讨论经常能得出有用的改进建议。
Debian 不仅持续自我推广,其用户在扩散方面也居功甚伟,口耳相传其名声。
这些方法运作得不错,在自由软件社区的各个层面上都有 Debian 粉丝:从本地 Linux 用户社区(LUGs,即为“Linux 用户组”)组织的安装会(协助新手安装系统的工作坊)到大型技术会议中与 Linux 相关的展台,等等。
志愿者们制作海报、小册子、贴纸及其他的推广文宣,供社会大众取用;部分内容在 Debian 网站可自由取用:

1.3.3. Teams, Blends, and Sub-Projects

From the start, Debian has been organized around the concept of source packages, each with its maintainer or group of maintainers. Many work teams have emerged over time, ensuring administration of the infrastructure, management of tasks not specific to any package in particular (quality assurance, Debian Policy, installer, etc.), with the latest series of teams growing up around sub-projects and blends.

1.3.3.1. Existing Debian Sub-Projects and Blends

To each their own Debian! A sub-project is a group of volunteers interested in adapting Debian to specific needs. Beyond the selection of a sub-group of programs intended for a particular domain (education, medicine, multimedia creation, etc.), sub-projects are also involved in improving existing packages, packaging missing software, adapting the installer, creating specific documentation, and more. While a "blend" might not be exactly the same, it works quite similar and also tries to provide a solution for groups of people intending to use Debian for a particular domain. One could say that "Debian Pure Blends" is the successor of sub-projects.
Here is a small selection of current released Debian Pure Blends:
  • Debian Junior, offering an appealing and easy to use Debian system for children;
  • Debian Edu, focused on the creation of a specialized distribution for the academic and educational world;
  • Debian Med, dedicated to the medical field;
  • Debian Multimedia, which deals with audio and multimedia work;
  • Debian GIS, which takes care of Geographical Information Systems applications and users;
  • Debian Astro,适合专业人士和业余天文学家;
  • Debian Science, working on providing researchers and scientists a better experience using Debian;
  • Freedombox,旨在开发、设计和推广运行自由软件的个人服务器,用于隐蔽、个人通信;
  • Debian Games, providing games in Debian from arcade and adventure to simulation and strategy;
  • DebiChem,目标是化学领域,提供了化学工具套装和程序。
The number of projects will most likely continue to grow with time and improved perception of the advantages of Debian Pure Blends. Fully supported by the existing Debian infrastructure, they can, in effect, focus on work with real added value, without worrying about remaining synchronized with Debian, since they are developed within the project.

1.3.3.2. 管理团队

大部分的管理团队以相对封闭的增选方式招募成员。最好的加入方法是先协助现有成员开展工作,展示出您了解该团体的目标与运作方式。
ftpmaster 管理员负责管理 Debian 软件包的官方仓库。他们维护用于接收开发者传来的软件包的程序;经过一些检查后,软件包将被保存在目标服务器上 (ftp-master.debian.org)。
他们也检查添加软件包的授权条款,确保在纳入它们之前,Debian 有权散布它们。被要求移除的软件包,由开发者经由错误追踪系统与 ftp.debian.org '虚拟软件包' 向团队提出。
如众所期待,Debian 系统管理员DSA)团队()对计划所使用的多个服务器负责。其职责包括确保所有的基础服务(DNS、Web、e-mail、shell 等)正常运作、按照 Debian 开发者的要求在机器上安装软件以及关注系统运行安全相关事宜。
listmaster 管理邮件列表的电子邮件服务器。职责包括添加名单、处理送回 (无法送出的通知)、以及垃圾邮件过滤器 (未授权的邮件)。
Each specific service has its own administration team, generally composed of volunteers who have installed it (and also frequently programmed the corresponding tools themselves). This is the case for the bug tracking system (BTS), the package tracker, salsa.debian.org (GitLab server, see sidebar 工具 GitLab、Git 仓库托管和相关事项), the services available on qa.debian.org, lintian.debian.org, buildd.debian.org, cdimage.debian.org, etc.

1.3.3.3. 开发团队、翻译团队

不同于管理团队,开发团队较为开放,甚至可以说是置身于奉献者之外。Debian 自身不添加软件,计划仍需要外部软件满足其需要。当然,仍是在自由软件授权下发展,这些工具使用被自由软件世界验证的方法。
Debian 发展自己的小软件,但却是重要的软件,其名声远超越 Debian 计划本身。dpkg 是个例子,它是 Debian 软件包管理程序 (事实上,它是 Debian PacKaGe 的缩写,读成 'dee-package'),另一个是 apt,自动安装 Debian 软件包的工具,检查其相依性,保证安装后与系统一致 (其名称为 Advanced Package Tool 的缩写)。然而,它们都是由小团队撰写的,只需要高端程序技巧就能了解该程序的运作方式。
最重要的团队可能是处理 Debian 安装程序(debian-installer)的团队;他们自2001年问世以来完成了许多重要的任务。以一个程序提供十多种架构的 Debian 安装支持不是件简单的事,需要很多奉献者共同完成。每个架构需有自己的启动程序与引导程序。所有工作使用 邮件列表进行协调,在 Cyril Brulebois 领导下进行开发。
这个 (极小的) debian-cd 程序团队的目标更谦虚。由很多 '小小' 的奉献者负责其架构,因为主要的开发者无法知道全部的细微之处,也不知道从CD-ROM 安装的正确方式。
需要多个团队彼此合作才能够将程序包装起来:以 为例,企图保证 Debian 计划的每个层面都达到既定的品质。 根据各地的建议列出 Debian 政策。负责每个架构的团队 () 编绎所有的软件包,若有需要,再改编供特定架构使用。
其他的团队管理最重要的软件为避免将重担放在单一团队上;在 C 程序库 ,C 编绎器 邮件列表,或 Xorg (此社区以 X Strike Force 闻名)。