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

Các Debian developer phải chịu nhiều trách nhiệm, và với vai trò là thành viên chính thức của dự án, họ có ảnh hưởng rất lớn đối với hướng đi của dự án. Một nhà phát triển Debian thường chỉ chịu trách nhiệm cho ít nhất một package, nhưng tùy vào thời gian rảnh rỗi và mong muốn, họ có quyền tham gia vào nhiều team, và chịu nhiều trách nhiệm hơn trong dự án.
Bảo trì các package là một hoạt động có tính tổ chức, tuân thủ theo document hoặc thậm chí được quy định. Trên thực tế, việc này phải tuân theo tất cả các chuẩn được thiết lập bởi Chính sách Debian. May mắn thay, có rất nhiều công cụ tạo điều kiện thuận lợi cho maintainer. Do đó, nhà phát triển có thể tập trung vào các chi tiết của package và thực hiện các task phức tạp hơn, như là sửa lỗi.
Chính sách, là một phần không thể thiếu của dự án Debian, nhằm thiết lập các chuẩn để đảm bảo cả về chất lượng của package lẫn khả năng tương tác hoàn hảo của bản phân phối. Nhờ vào Chính sách này, Debian vẫn duy trì tính nhất quán mặc cho kích cỡ khổng lồ của nó. Chính sách này không giữ nguyên cố định, mà liên tục cải tiến nhờ vào các đề xuất dựa trên mailing list . Các sửa đổi được tất cả các bên liên quan đồng ý sẽ được chấp nhận và áp dụng vào văn bản bởi một nhóm nhỏ những maintainer không có trách nhiệm biên tập (họ chỉ thêm vào các chỉnh sửa được các nhà phát triển Debian đồng ý - tức là những thành viên trong danh sách kể trên). Bạn có thể đọc các đề xuất chỉnh sửa hiện tại trên hệ thống truy vết lỗi (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ọ.
Kể từ khi thành lập, dự án được liên tục dẫn dắt bởi Ian Murdock, Bruce Perens, Ian Jackson, Wichert Akkerman, Ben Collins, Bdale Garbee, Martin Michlmayr, Branden Robinson, Anthony Towns, Sam Hocevar, Steve McIntyre, Stefano Zacchiroli và Lucas Nussbaum.
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.
“Cuộc bỏ phiếu toàn diện” được ghi chép đầy đủ trong hiến pháp, từ giai đoạn thảo luận ban đầu cho đến lúc đếm số phiếu bầu. Chi tiết hơn xem tại:
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

Có thể bạn sẽ thắc mắc liệu có cần thiết phải đề cập đến người dùng trong số những người làm việc trong dự án Debian không, và câu trả lời là có: họ đóng vai trò sống còn đối với project. Khác hẳn với “người dùng thụ động”, nhiều người dùng sử dụng các phiên bản development (đang được phát triển) của Debian và thường xuyên gửi báo cáo lỗi để chỉ ra các vấn đề. Số khác thậm chí đi xa hơn và submit các ý tưởng phát triển, bằng cách gửi báo cáo lỗi cùng với mức độ nghiêm trọng của “wishlist”, hay thậm chí submit các bản sửa chữa của source code, gọi là “patches” (xem tại PHẦN CƠ BẢN Patch, cách để gửi một bản sửa lỗi).
Ngoài ra, rất nhiều người dùng thỏa mãn với dịch vụ của Debian muốn được đóng góp một phần vào dự án. Không phải ai cũng có đủ trình độ thích hợp cho việc lập trình, họ có thể giúp đỡ bằng việc dịch thuật và review các tài liệu kĩ thuật. Có nhiều mailing list theo ngôn ngữ cụ thể để họ hợp tác với nhau làm việc này.
Tất cả cơ chế đóng góp này ngày càng trở nên hiệu quả hơn nhờ cách ứng xử của người dùng. Khác với việc là một tập hợp những người hoạt động độc lập, người dùng Debian là một cộng đồng thật sự mà trong đó diễn ra rất nhiều trao đổi. Chúng tôi đặc biệt lưu ý các hoạt động ấn tượng diễn ra trên mailing list thảo luận của người dùng, (Chương 7, Solving Problems and Finding Relevant Information thảo luận chi tiết hơn về vấn đề này).
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.
Phương pháp này hoạt động khá ổn, bởi vì fan của Debian có mặt ở tất cả các level của cộng đồng phần mềm tự do: từ các bên cài đặt (các workshop nơi mà người dùng lâu năm hướng dẫn người mới cài đặt hệ thống) tổ chức bởi LUG (Linux User Group) địa phương, đến việc liên kết với các gian hàng tại các hội thảo công nghệ lớn liên quan đến Linux, etc.
Những người tình nguyện làm ra các posters, tờ rơi, nhãn dán, và các vật trang trí hữu ích khác để quảng bá cho dự án, giúp chúng có đủ cho tất cả mọi người, và được Debian cung cấp miễn phí trên website:

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-Junior, bởi Ben Armstrong, cung cấp một hệ điều hành Debian hấp dẫn và dễ dàng sử dụng cho trẻ em;
  • Debian-Edu, bởi Petter Reinholdtsen, tập trung vào tạo ra một bản phân phối chuyên môn hóa dành cho thế giới học thuật;
  • 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-Desktop tập trung vào desktop và tích hợp ảnh nghệ thuật cho theme mặc định;
  • Debian GIS quản lý các ứng dụng Hệ thống thông tin địa lý và người dùng;
  • Cuối cùng là Debian Accessibility, phát triển Debian để đáp ứng nhu cầu của người khuyết tật.
Danh sách này rất có thể sẽ được mở rộng theo thời gian và nhận thức phát triển về thế mạnh của các dự án con Debian. Nhờ việc được hỗ trợ đầy đủ bởi cơ sở hạ tầng Debian hiện tại, người ta có thể chú trọng vào việc bổ sung những giá trị đích thực, mà không cần lo lắng về việc duy trì đồng bộ với Debian, bởi vì chúng được phát triển bên trong dự án.

1.3.3.2. Team quản lý

Hầu hết các team quản lý tương đối kín tiếng và chỉ tuyển thêm bằng cách kết nạp thành viên. Cách tốt nhất để trở thành một phần của họ là giúp đỡ các thành viên hiện tại một cách thông minh, chứng tỏ rằng bạn hiểu được mục tiêu và cách thức hoạt động của họ.
Các Ftpmaster phụ trách kho lưu trữ chính thức (official archive) của các package Debian. Chúng duy trì chương trình tiếp nhận các package được gửi về từ các nhà phát triển và tự động lưu trữ, sau vài cuộc kiểm tra, trên 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”.
Team Debian System Administrators (DSA) (), như bạn có thể đoán, chịu trách nhiệm cho việc quản trị hệ thống của nhiều server được sử dụng bởi dự án. Họ đảm bảo hoạt động tối ưu cho tất cả dịch vụ cơ bản (DNS, Web, e-mail, shell, etc.), cài đặt phần mềm được yêu cầu bởi các Debian developers, và thực hiện tất cả các biện pháp đề phòng liên quan đến bảo mật.
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).
Mỗi dịch vụ cụ thể đều có team quản trị của riêng nó, thường bao gồm những người tình nguyện đã cài đặt (và chính họ cũng thường xuyên lập trình các tool tương ứng). Đó là trường hợp của hệ thống truy vết lỗi (BTS), package tracker, alioth.debian.org (FusionForge server, xem tại CÔNG CỤ FusionForge, con dao lính tây của hợp tác phát triển), các services có sẵn trênqa.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.
Team quan trọng nhất có thể là đội ngũ tạo ra các chương trình cài đặt Debian, debian-installer, đã hoàn tất một tỉ lệ lớn công việc kể từ ngày được thành lập vào năm 2001. Cần rất nhiều các cộng tác viên, bởi vì rất khó để viết một chương trình đơn lẻ có thể cài đặt Debian trên hàng tá kiến trúc máy tính khác nhau. Mỗi kiến trúc đều có cơ chế riêng cho việc khởi động (booting) và có bootloader riêng. Tất cả công việc này được phối hợp với nhau tại mailing list, dưới sự chỉ đạo của 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).