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 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.
The Policy, an essential element of the Debian Project, establishes the norms ensuring both the quality of the packages and perfect interoperability of the distribution. Thanks to this Policy, Debian remains consistent despite its gigantic size. This Policy is not fixed in stone, but continuously evolves thanks to proposals formulated on the mailing list. Amendments that are agreed upon by all interested parties are accepted and applied to the text by a small group of maintainers who have no editorial responsibility (they only include the modifications agreed upon by the Debian developers that are members of the above-mentioned list). You can read current amendment proposals on the bug tracking system:
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, and Jonathan Carter.
憲法也設立 '技術委員會'。發展者自身無法達成共識時由此委員會決策技術事宜。此外,當發展者無法解決自身職責所有的問題時,委員會就扮演顧問角色。祗有被爭議一方邀請後,才能涉入。
最後,憲法設立 '計畫秘書' 職位,負責各種選舉與爭議的投票事宜。
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 put into it.
這就是升級的唯一方法:做有用的事且顯示把事情做好。Debian '管理' 團體以增選方式管理,採用已有效奉獻且證明其能力的志願者。新的奉獻者看到這些團隊做了具有公共利益性質的工作就會主動加入協助。這就是 Debian 常被稱為 '任人唯賢'。
這種有效的管理方法保證在 Debian '關鍵' 團隊奉獻者的品質。不見得是完美的且偶而凸搥。選擇被團隊接受的發展者是隨興的,甚至不公平的。而且,不是每個人對這些團隊服務的期望是一樣的。有些人受不了等8天才能收錄新的 Debian 套件,也有人耐心等待3週毫無怨言。所以,有些團隊對 '服務品質' 經常不滿。

1.3.2. 使用者的積極角色

One might wonder if it is relevant to mention the users among those who work within the Debian project, but the answer is a definite yes: they play a critical role in the project. Far from being “passive”, some users run development versions of Debian and regularly file bug reports to indicate problems. Others go even further and submit ideas for improvements, by filing a bug report with a severity level of “wishlist”, or even submit corrections to the source code, called “patches” (see 節 1.3.2.3, “Sending fixes”).

1.3.2.1. Reporting bugs

The fundamental tool for submitting bugs in Debian is the Debian Bug Tracking System (Debian BTS), which is used by large parts of the project. The public part (the web interface) allows users to view all bugs reported, with the option to display a sorted list of bugs selected according to various criteria, such as: affected package, severity, status, address of the reporter, address of the maintainer in charge of it, tag, etc. It is also possible to browse the complete historical listing of all discussions regarding each of the bugs.
表層下的 Debian BTS,以電子郵件為基礎:儲存參與者寄發的電子郵件做為資訊。發送給 的電子郵件,將被指定為編號 12345 的錯誤。有權限的人可以敘明理由寄發另個電子郵件 '關閉' (表示該錯誤已解決或無關緊要) 該錯誤。新的錯誤應以指定的格式辨識有問題的套件再發送電子郵件給 。這個信箱 用於編輯與該錯誤有關的所有 '中介資訊'。
The Debian BTS has other functional features, as well, such as the use of tags for labeling bugs. For more information, see
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). 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 套件的次要錯誤的修訂,在下個穩定版才納入。

1.3.2.2. Translation and documentation

Additionally, numerous satisfied users of the service offered by Debian like to make a contribution of their own to the project. As not everyone has appropriate levels of expertise in programming, they may choose to assist with the translation and review of documentation. There are language-specific mailing lists to coordinate this work.

1.3.2.3. Sending fixes

More advanced users might be able to provide a fix to a program by sending a patch.
補丁是描述檔案修改的檔案。準確來說,包括移除或新增的程式碼清單,以及 (有時) 從參考文件取得的內容,用以取代修改的內文 (可以辨識取代的內容)。
修改該等檔案的工具名稱就是 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.
While the output of git diff is a file that can be shared with other developers, there are usually better ways to submit changes. If the developers prefer to get patches by email, they usually want patches generated with git format-patch so that they can be directly integrated in the repository with git am. This preserves commits meta-information and makes it possible to share multiple commits at once.
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. Other ways of contributing

All of these contribution mechanisms are made more efficient by users' behavior. Far from being a collection of isolated persons, users are a true community within which numerous exchanges take place. We especially note the impressive activity on the user discussion mailing list, (章 7, 解決問題與找到相關資訊 discusses this in greater detail).
使用者不僅自助 (也助人) 於直接影響他們的技術面,也討論奉獻 Debian 專案的最佳途徑與協助其向前行 — 經常出現改進的建議。
Debian 不僅持續自我推廣,其使用者在擴散方面也居功甚偉,口耳相傳其名聲。
This method works quite well, since Debian fans are found at all levels of the free software community: from install parties (workshops where seasoned users assist newcomers to install the system) organized by local LUGs or “Linux User Groups”, to association booths at large tech conventions dealing with Linux, etc.
Volunteers make posters, brochures, stickers, and other useful promotional materials for the project, which they make available to everyone, and which Debian provides freely on its website and on its wiki:

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, by Ben Armstrong, offering an appealing and easy to use Debian system for children;
  • Debian Edu, by Petter Reinholdtsen, focused on the creation of a specialized distribution for the academic and educational world;
  • Debian Med,由 Andreas Tille 製作,專供醫護領域使用;
  • Debian Multimedia, which deals with audio and multimedia work;
  • Debian GIS, which takes care of Geographical Information Systems applications and users;
  • Debian Astro, for both professionals and hobby astronomers;
  • Debian Science, working on providing researchers and scientists a better experience using Debian;
  • Freedombox, made to develop, design and promote personal servers running free software for private, personal communications;
  • Debian Games, providing games in Debian from arcade and adventure to simulation and strategy;
  • DebiChem, targeted at Chemistry, provides chemical suites and programs.
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. 管理團隊

Most administrative teams are relatively closed and recruit only by co-optation. The best means to become a part of one is to intelligently assist the current members, demonstrating that you have understood their objectives and methods of operation.
The ftpmasters are in charge of the official archive of Debian packages. They maintain the program that receives packages sent by developers and automatically stores them, after some checks, on the reference server (ftp-master.debian.org).
他們也檢查新增套件的授權條款,確保在納入它們之前,Debian 有權散布它們。被要求移除的套件,由發展者經由錯誤追蹤系統與 ftp.debian.org '虛擬套件' 向團隊提出。
The Debian System Administrators (DSA) team (), as one might expect, is responsible for system administration of the many servers used by the project. They ensure optimal functioning of all base services (DNS, Web, e-mail, shell, etc.), install software requested by Debian developers, and take all precautions in regards to security.
名單大師 管理郵寄名單的電子郵件伺服器。職責包括新增名單、處理送回 (無法送出的育知)、以及垃圾郵件過濾器 (未授權的批次郵件)。
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 TOOL GitLab, Git repository hosting and much more), 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 的縮寫)。然而,它們都是由小團隊撰寫的,祗需要高階程式技巧就能瞭解該等程式的運作方式。
The most important team is probably that for the Debian installation program, debian-installer, which has accomplished a work of momentous proportions since its conception in 2001. Numerous contributors were needed, since it is difficult to write a single program able to install Debian on a dozen different architectures. Each one has its own mechanism for booting and its own bootloader. All of this work is coordinated on the mailing list, under the direction of Cyril Brulebois.
這個 (極小的) debian-cd 程式團隊的目標更謙虛。由很多 '小小' 的奉獻者負責其架構,因為主要的發展者無法知道全部的細微之處,也不知道從CD-ROM 安裝的正確方式。
需要多個團隊彼此合作才能夠將程式包裝起來:以 為例,企圖保證 Debian 專案的每個層面都達到既定的品質。 根據各地的建議列出 Debian 政策。負責每個架構的團隊 () 編繹所有的套件,若有需要,再改編供特定架構使用。
其他的團隊管理最重要的套件以免重擔放在單一團隊的肩上;在 C 程式庫與 ,C 編繹器 郵寄名單,或 Xorg 在 (此社群以 X Strike Force 聞名)。