Product SiteDocumentation Site

1.3. Hoạt động nội bộ của dự án Debian

Thành quả phong phú của dự án Debian nhờ cơ sở hạ tầng được tạo ra từ sự chung sức đồng thời của nhiều nhà phát triển Debian có kinh nghiệm, từ các sản phẩm (các package Debian) của cá nhân hay tập thể các developer, và từ feedback của người dùng.

1.3.1. Các nhà phát triển 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, 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:
Chính sách cung cấp một lượng đáng kể các khía cạnh kĩ thuật cho việc packaging (đóng gói package). Kích cỡ của dự án cũng đặt ra nhiều vấn đề cho việc tổ chức; vốn được giải quyết bởi Hiến Pháp Debian, là thứ thiết lập nên cấu trúc và phương tiện dành cho việc ra quyết định vấn đề. Nói cách khác, là một hệ thống quản lý chính thống.
Hiến pháp này định rõ một số lượng nhất định các vai trò và vị trí, cùng với trách nhiệm và quyền hạn cho mỗi vị trí. Đáng chú ý rằng, các nhà phát triển Debian luôn là người có quyền đưa ra quyết định cuối cùng bằng một cuộc bỏ phiếu toàn diện, việc đa số có đủ năng lực nắm được ba phần tư (75%) số phiếu là cần thiết để tạo ra một thay đổi quan trọng (ví dụ như những người ảnh hưởng đến the Foundation Documents). Tuy nhiên, hàng năm các nhà phát triển lại bầu ra một “leader” để thay mặt họ trong các cuộc họp, và đảm bảo công tác phối hợp nội bộ giữa các team với nhau. Cuộc bầu chọn này luôn là chủ đề cho các cuộc tranh luận kịch liệt. Vai trò của người lãnh đạo không được định rõ một cách chính thức trong bất kì tài liệu nào: các ứng cử viên thường đề xuất định nghĩa riêng của họ về vị trí này. Thực tế là, vai trò của người lãnh đạo bao gồm việc đại diện để ra mắt truyền thông, phối hợp giữa các team “nội bộ”, và cung cấp hướng dẫn chung cho dự án, mà ở đó các nhà phát triển có thể liên kết với nhau: góc nhìn của DPL được phê duyệt ngầm định bởi một đa số các thành viên của dự án.
Đặc biệt là, người lãnh đạo có quyền hành thật sự; lá phiếu của họ quyết định kết quả hòa; họ có thể đưa ra bất kì quyết định nào mà không cần quyền hạn của bất kì ai khác, và có thể ủy thác một phần trách nhiệm của họ.
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, Mehdi Dogguy, Chris Lamb and Sam Hartman.
Hiến pháp cũng định rõ một “Ủy ban kỹ thuật”. Vai trò chính của ủy bàn là quyết định các vấn đề kỹ thuật khi các nhà phát triển có liên quan không đạt được một thỏa thuận chung. Về phương diện khác, ủy ban này đóng vai trò cố vấn cho bất kì nhà phát triển nào thất bại trong việc ra quyết định với thứ mà họ đang chịu trách nhiệm. Cần lưu ý rằng họ chỉ tham gia khi được mời vào bởi một trong các bên kể trên.
Cuối cùng, hiến pháp định rõ vị trí của một “thư ký dự án”, người sẽ phụ trách việc tổ chức các cuộc bầu phiếu liên quan đến nhiều cuộc bầu chọn và bỏ phiếu toàn diện.
The “general resolution” 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:
Kể cả khi hiến pháp thiết lập một nền dân chủ giả lập, thực tế đời thường khá khác biệt: Debian tuân theo các rules của phần mềm tự do một cách tự nhiên: người làm ra thứ gì phải quyết định cách sử dụng chúng. Rất nhiều thời gian bị phí phạm chỉ để tranh luận về những công trạng tương ứng đối với các cách tiếp cận vấn đề khác nhau; giải pháp được chọn sẽ là giải pháp đầu tiên vừa đảm bảo chức năng vừa thỏa mãn mọi người… sẽ đến từ thời gian mà một người tài giỏi đã bỏ vào đó.
Đó là cách duy nhất để đạt được tín nhiệm: làm một thứ gì đó hữu ích và chứng minh rằng nó hoạt động tốt. Nhiều nhóm “điều hành” Debian hoạt động bằng cách kết nạp, ưu tiên những người tình nguyện đã đóng góp một cách hiệu quả và chứng minh được năng lực của họ. Tính chất public của công việc cho phép các cộng tác viên mới quan sát và bắt đầu giúp đỡ mà không cần đặc quyền nào. Đó là lý do mà Debian thường được mô tả như một “chế độ trọng dụng nhân tài”.
Phương pháp hoạt động hiệu quả này đảm bảo chất lượng của các cộng tác viên trong team “chính” của Debian. Phương pháp này chưa thực sự hoàn hảo và thỉnh thoảng có những người không chấp nhận cách thức hoạt động này. Việc lựa chọn các nhà phát triển được chấp nhận vào nhóm dường như khá tùy tiện, hay thậm chí không công bằng. Hơn nữa, không phải ai cũng có chung định nghĩa về dịch vụ mà các team đó trông đợi. Vơi nhiều người, thật không thể chấp nhận được khi phải đợi 8 ngày để thêm vào một package Debian mới, trong khi những người khác có thể đợi 3 tuần mà không có vấn đề gì. Giống như vậy, còn nhiều lời phàn nàn giận dữ khác về “chất lượng dịch vụ” từ một vài team.

1.3.2. Vai trò chủ động của người dùng

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 Phần 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.
Hệ thống Debian BTS dựa trên e-mail (email based): mọi thông tin nó lưu giữ đều đến từ tin nhắn của nhiều người tham gia khác nhau. Bất kì e-mail gửi tới sẽ được gán vào lịch sử của bug số 12345. Những người quản lý sẽ “close” một bug bằng cách gửi tin nhắn trình bày lý do của việc close bug cho địa chỉ (một bug được close khi vấn đề được giải quyết hoặc không còn liên quan nữa). Lỗi mới được báo cáo bằng cách gửi e-mail đến tùy vào format cụ thể xác định package được nói tới. Địa chỉ cho phép sửa đổi tất cả “meta-information” liên quan tới lỗi.
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).
Công cụ này ban đầu nhắm đến các phiên bản development, là nơi các lỗi sẽ được fix. Về cơ bản, các thay đổi không được chào đón trong phiên bản Debian ổn định, với rất ít ngoại lệ cho các bản cập nhật bảo mật hoặc các bản cập nhật quan trọng khác (nếu như một package hoàn toàn không hoạt động được). Một bản sửa chữa của một lỗi nhỏ trong package Debian, buộc phải chờ cho đến phiên bản ổn định tiếp theo.

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 là một file mô tả các thay đổi sắp được thực hiện trên một hay nhiều file có liên quan. Cụ thể hơn, nó chứa một danh sách các dòng sẽ được thêm vào hoặc xóa đi khỏi mã nguồn, cũng như các dòng được lấy ra từ văn bản có liên quan, thay thế các phần sửa đổi trong ngữ cảnh (chúng cho phép nhận biết vị trí các phần bị thay đổi nếu số dòng bị thay đổi).
Công cụ được dùng để áp dụng các thay đổi trong các file đấy đơn giản gọi là patch. Công cụ tạo ra nó được gọi là diff, và được dùng như sau:
$ diff -u file.old file.new >file.patch
File file.patch chứa các chỉ dẫn cho việc thay đổi nội dung của file file.old thành file.new. Chúng ta có thể gửi nó cho người khác, sau đó họ sẽ dùng nó để lại tạo ra file.new từ hai file còn lại, như sau:
$ patch -p0 file.old <file.patch
File, file.old, giờ đã giống hệt với file.new.
In practice, most software is 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, (Chương 7, Solving Problems and Finding Relevant Information discusses this in greater detail).
Người dùng không chỉ giúp chính họ (và người khác) về các vấn đề kĩ thuật ảnh hưởng trực tiếp đến họ, mà họ còn thảo luận về những cách tốt nhất để đóng góp và giúp dự án Debian tiến về phía trước — những thảo luận thường xuyên mang đến đề xuất cho sự thay đổi.
Bởi vì Debian không dùng quỹ vào các chiến dịch tự quảng bá, cho nên người dùng đóng vai trò quyết định trong việc truyền thông, đảm bảo danh tiếng của dự án thông qua việc truyền miệng.
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. Các team và dự án con

Ngay từ khi bắt đầu, Debian đã được tổ chức xoay quanh concept về source packages, mỗi package đều có maintainer hoặc một nhóm maintainer. Nhiều team hoạt động chung với nhau, đảm bảo việc quản lý cơ sở hạ tầng, quản lý các task không hướng đến bất kì package cụ thể nào (đảm bảo chất lượng, Chính sách Debian, trình cài đặt (installer), v..v.), cùng với hàng loạt các team phát triển xung quanh các dự án con.

1.3.3.1. Các dự án con hiện tại của Debian

Tạo ra Debian của chính họ! Một dự án con là một nhóm những người tình nguyện quan tâm đến việc thích ứng Debian phục vụ cho các nhu cầu cụ thể. Vượt xa khỏi việc lựa chọn các nhóm chương trình hướng đến một lĩnh vực nhất định (giáo dục, y tế, truyền thông đa phương tiện, v..v.), các dự án con cũng bao gồm việc cải thiện các package hiện tại, đóng gói các phần mềm còn thiếu, thay đổi bộ cài đặt (installer), tạo ra các documentation, và còn hơn thế nữa.
Đây là danh sách nhỏ các dự án con hiện tại:
  • Debian Jr., 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 world;
  • Debian Med, bởi Andreas Tille, dành riêng cho lĩnh vực Y khoa;
  • Debian Multimedia dành cho việc xử lý âm thanh và đa phương tiện;
  • Debian GIS quản lý các ứng dụng Hệ thống thông tin địa lý và người dùng;
  • Debian Accessibility, improving Debian to match the requirements of people with disabilities;
  • Debian Science, finally, working on providing researchers and scientists a better experience using Debian.
  • 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 sub-projects. 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. Team quản lý

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).
Chúng phải xác nhận giấy phép của tất cả package mới, để chắc rằng Debian có thể phân phối được, trước khi thêm chúng vào danh sách các package hiện tại. Khi một nhà phát triển muốn xóa đi một package, họ gọi team này thông qua hệ thóng truy vết lỗi và ftp.debian.org “pseudo-package”.
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.
Các listmaster quản trị e-mail server mà quản lý các mailing lists. Họ tạo ra các list mới, xử lý các bounces (thông báo gửi đi thất bại), và duy trì lọc spam (hàng loạt email không mong muốn).
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 of 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. Nhóm phát triển, nhóm đa chức năng

Không giống như nhóm quản trị, nhóm phát triển tương đối cởi mở hơn, thậm chí đối với các cộng tác viên bên ngoài. Kể cả khi Debian không có nhiệm vụ tạo ra phần mềm, dự án vẫn cần nhiều chương trình đặc biệt để đáp ứng nhu cầu của mình. Tất nhiên, được phát triển dưới giấy phép phần mềm tự do, những công cụ này có thể tận dụng những phương pháp đã được chứng minh từ những nơi khác trong thế giới phần mềm tự do.
Debian đã tự phát triển một ít phần mềm, nhưng những phần mềm đó lại đóng vai trò quan trọng, và danh tiếng của chúng đã lan rộng vượt ra ngoài phạm vi của dự án. Một ví dụ tốt là dpkg, chương trình quản lý package (trên thực tế, nó là từ viết tắt của Debian PacKaGe, và thường phát ấm là “dee-package”), và apt, một công cụ tự động cài đặt bất kì package Debian nào, và dependency (các gói phụ thuộc) của nó, đảm bảo tính nhất quán của hệ thống sau khi upgrade (tên của nó viết tắt cho từ Advanced Package Tool). Tuy nhiên, team của họ nhỏ hơn nhiều, bởi vì cần có khả năng lập trình tốt để có thể hiểu được tổng thể cách hoạt động của các chương trình như thế này.
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.
Team (rất nhỏ) thiết kế nên debian-cd thậm chí còn có mục tiêu khiêm tốn hơn. Nhiều cộng tác viên “nhỏ” chịu trách nhiệm cho kiến trúc máy tính của họ, bởi vì các developer chính không thể nào biết hết tất cả những chi tiết, cũng như cách chính xác để khởi động bộ cài đặt từ CD-ROM.
Nhiều team phải hợp tác với nhau trong hoạt động packaging (đóng gói): ví dụ, để đảm bảo chất lượng tại tất cả level của dự án Debian. list phát triển Chính sách Debian dựa trên đề xuất từ mọi nơi. Các team phụ trách mỗi kiến trúc máy tính () biên dịch tất cả package, thích ứng chúng với kiến trúc máy tính cụ thể, nếu cần thiết.
Các team khác quản lý các package quan trọng nhất để đảm bảo sự bảo trì mà không cần đặt quá nhiều gánh nặng cho họ; đây là trường hợp với thư viện C và , trình dịch C trên list, hoặc Xorg trên (nhóm này còn được biết đến với tên gọi X Strike Force).