Product SiteDocumentation Site

1.3. Wewnętrzne prace w projekcie Debian

Obfite wyniki końcowe, uzyskane przez projekt Debian, pochodzą jednocześnie z działań w obrębie infrastruktury. Działania te wykonywane są przez doświadczonych twórców Debiana, począwszy od indywidualnych lub zbiorowych prac programistów, tworzących i modyfikujących pakiety Debiana, a kończąc na informacjach zwrotnych od użytkowników.

1.3.1. Twórcy Debiana (ang. the Debian Developers)

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.
Utrzymywanie pakietów jest działalnością poddaną pewnym ograniczeniom proceduralnym, które są dobrze udokumentowane lub nawet regulowane. W rezultacie, aktywność, którą często określa się terminem „opieka nad pakietami" (stąd określenie „opiekun pakietu" — ang. package maintainer) musi być zgodna ze wszystkimi standardami ustanowionymi przez Politykę Debiana (ang. Debian Policy). Na szczęście jest wiele narzędzi, które ułatwiają pracę opiekunów pakietów. Twórca może więc skupić się na specyfice swojego pakietu, i na innych, bardziej złożonych zadaniach, takich jak śledzenie i likwidowanie błędów.
Polityka, zasadniczy element Projektu Debian, ustanawia normy zapewniające zarówno jakość pakietów, jak i doskonałą interoperacyjność dystrybucji. Dzięki swojej Polityce, Debian pozostaje spójny, niezależnie od gigantycznego rozmiaru. Ta polityka nie jest niezmienna, lecz podlega ewolucji dzięki propozycjom, formułowanym na liście dyskusyjnej . Poprawki, uzgadniane przez wszystkie zainteresowane strony, są akceptowane i wprowadzane do tekstu Polityki poprzez małą grupę opiekunów, niemających odpowiedzialności wydawniczej (wprowadzają oni tylko te poprawki, które są uzgodnione przez twórców Debiana — członków wyżej wspomnianej listy). Bieżące propozycje poprawek można przeczytać w systemie śledzenia błędów:
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.
Szczególnie, lider ma rzeczywistą władzę. Głosy liderów mają moc wiążącą; lider może podjąć dowolną decyzję, której wykonanie nie jest już w mocy kogoś innego i może delegować część swoich obowiązków.
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.
Konstytucja określa też „komitet techniczny". Zasadniczą rolą tego komitetu jest decydowanie o sprawach technicznych w sytuacji, gdy twórcy nie mogą ze sobą dojść do porozumienia w jakiejś kwestii technicznej. Mówiąc inaczej, komitet odgrywa rolę doradczą, gdy twórcy nie udaje się podjąć decyzji, za jaką jest odpowiedzialny. Warto zapamiętać, że komitet techniczny angażuje się tylko wtedy, gdy jest poproszony, aby być jedną ze stron potencjalnego konfliktu.
W końcu, konstytucja określa stanowisko „sekretarza projektu", który jest odpowiedzialny za organizację głosowania, związanego z różnymi wyborami i rezolucjami ogólnymi.
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.
Jest to jedyny sposób, aby zasłużyć sobie na szacunek: zrobić coś pożytecznego i pokazać, że się pracowało dobrze. Wiele „administracyjnych" zespołów Debiana działa za pomocą kooptacji, preferując wolontariuszy, którzy już efektywnie przyczynili się do czegoś i potwierdzili swoje kompetencje. Publiczna natura pracy tych zespołów sprawia, że nowi współpracownicy mogą obserwować tę pracę i mogą zacząć pomagać bez specjalnych przywilejów. Z tego powodu Debian jest często określany mianem „merytokracji".
Ta efektywna metoda operacyjna gwarantuje jakość współpracowników w „kluczowych" zespołach Debiana. W żaden jednak sposób metoda ta nie jest doskonała i okazjonalnie ujawniają się również ci, którzy nie akceptują tego sposobu działania. Dobór twórców, akceptowanych w zespołach, może wydawać się trochę arbitralny lub nawet nieuczciwy. Co więcej, nie każdy ma te samą definicję służby na rzecz innych, oczekiwaną przez te zespoły. Dla niektórych nie do zaakceptowania jest fakt oczekiwania przez osiem dni na włączenie nowego pakietu Debiana, natomiast inni cierpliwie czekają na to samo przez trzy tygodnie, bez problemu. Tak więc, pojawiają się regularne skargi ze strony „niezadowolonych" na temat „jakości usług" tych zespołów.

1.3.2. Aktywna rola użytkowników

Można się zastanawiać, czy warto zaliczać „zwykłych" użytkowników do tych współpracowników, którzy działają wewnątrz projektu Debian. Odpowiedzią jest definitywne TAK: odgrywają oni kluczową rolę w tym projekcie. Niektórzy użytkownicy, będąc dalekimi od bycia „pasywnymi", uruchamiają testowe wersje Debiana i regularnie wypełniają raporty o błędach, wskazując na problemy. Inni idą jeszcze dalej i przesyłają pomysły ulepszeń wypełniając raport o błędzie zawierający „listę życzeń" lub nawet przesyłają poprawki kodu źródłowego, zwane „łatkami" (ang „patches"). Zobacz pasek boczny Sekcja 1.3.2.3, „Wysyłanie poprawek”.

1.3.2.1. Raportowanie błędów

Podstawowym narzędziem do śledzenia błędów Debiana jest The Debian Bug Tracking System (Debian BTS), który używany jest przez duże części projektu. Część publiczna (interfejs WWW) pozwala użytkownikom na podgląd wszystkich zgłoszonych błędów, z opcją wyświetlania posortowanej listy błędów zgodnie z różnymi kryteriami, takimi jak: pakiet, który podlega błędowi, poważność błędu (stopień zagrożenia), status, adres poczty elektronicznej osoby zgłaszającej błąd, adres poczty opiekuna odpowiedzialnego za pakiet, itd. Możliwe jest też przeglądanie historycznej listy wszystkich dyskusji odnoszących się z osobna do każdego błędu.
Mówiąc bardziej szczegółowo, Debian BTS jest oparty na poczcie elektronicznej: wszystkie informacje, które przechowuje, pochodzą z wiadomości przesyłanych przez różne zaangażowane w ten proces osoby. Dowolny e-mail przesłany na adres będzie więc przypisany do historii błędu jako numer 12345. Autoryzowane osoby mogą "zamknąć" błąd pisząc wiadomość opisującą powody decyzji zamknięcia na adres (błąd jest zamknięty wtedy, gdy wskazany problem jest rozwiązany lub nie ma już znaczenia). Nowy błąd jest raportowany poprzez przesłanie e-mail na adres , zgodnie ze specyficznym formatem, który identyfikuje problematyczny pakiet. Adres pozwala na modyfikację wszystkich "meta-informacji", odnoszących się do błędu.
Debian BTS ma też inne funkcjonalne cechy, takie jak użycie znaczników do etykietowania błędów. Więcej informacji, zobacz:
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).
Narzędzie do raportowania błędów jest nakierowane, przede wszystkim, na wersje testowe, i właśnie w tych wersjach błędy będą naprawiane. Zmiany w stabilnej wersji Debiana nie są mile widziane, z bardzo nielicznymi wyjątkami, dotyczącymi aktualizacji zabezpieczeń lub innych ważnych aktualizacji (jeśli, na przykład, pakiet nie działa w ogóle). Korekta drobnych błędów w pakiecie Debiana musi więc czekać do następnej, stabilnej wersji.

1.3.2.2. Tłumaczenie i dokumentacja

Dodatkowo, wielu zadowolonych użytkowników usługi, oferowanej przez Debiana, chciałoby mieć swój udział w tworzeniu projektu. Ponieważ nie każdy ma odpowiednie poziom doświadczenia w programowaniu, można więc wybrać pomoc w tłumaczeniu i dokonywaniu przeglądów dokumentacji. Istnieją listy dyskusyjne, specyficzne dla poszczególnych języków, które koordynują tę pracę.

1.3.2.3. Wysyłanie poprawek

Bardziej zaawansowani użytkownicy mogą być w stanie dostarczyć poprawkę do programu poprzez przesłanie łatki.
„Łata" jest to plik opisujący zmiany dokonane w pliku lub plikach odniesienia. Szczególnie, łatka będzie zawierać listę wierszy, które mają być usunięte z kodu lub do niego dodane, jak też (czasami) wiersze wzięte z innego tekstu odniesienia, zamieniające modyfikacje kontekstowe (łatki pozwalają zidentyfikować umiejscowienia zmian, jeśli zmieniły się numery wierszy).
Narzędzie, używane do zastosowania modyfikacji, podanych w takim pliku, jest nazywane po prostu „łatką" (ang. patch). Narzędzie, które ją tworzy jest nazywane diff i używane jest w następujący sposób:
$ diff -u plik.stary plik.nowy >plik.łata
Plik plik.łata zawiera instrukcje do zamiany treści z pliku.starego na plik.nowy. Można go do kogoś przesłać, a ten ktoś może następnie ten plik użyć do odtworzenia pliku.nowego z dwóch innych, w ten sposób:
$ łata -p0 plik.stary <plik.łata
Plik, plik.stary, jest teraz identyczny z plikiem plik.nowy.
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.
Podczas gdy wynik komendy git diff jest plikiem, który może być współdzielony z innymi programistami, zwykle istnieją lepsze sposoby wprowadzania zmian. Jeśli programiści wolą otrzymywać łatki pocztą elektroniczną, zazwyczaj chcą łatek generowanych za pomocą git format-patch, aby można je było bezpośrednio zintegrować z repozytorium za pomocą git am. Zachowuje to metainformacje o zatwierdzeniach i umożliwia współdzielenie wielu zatwierdzeń jednocześnie.
Ten przepływ pracy oparty na poczcie e-mail jest nadal popularny, ale zwykle jest zastępowany przez użycie żądań scalania (ang. merge requests) lub żądań ściągnięcia (ang. pull requests) za każdym razem, gdy oprogramowanie jest hostowane na platformie takiej jak GitHub lub GitLab — a Debian używa GitLab na swoim serwerze salsa.debian.org. W tych systemach, po utworzeniu konta, rozwidlasz (ang. fork) repozytorium, efektywnie tworząc kopię repozytorium na własnym koncie, a następnie możesz sklonować to repozytorium i wprowadzić do niego własne zmiany. Stamtąd interfejs sieciowy zasugeruje przesłanie żądania scalania (ang. merge request), powiadamiając programistów o wprowadzonych zmianach, ułatwiając im przeglądanie i akceptowanie zmian jednym kliknięciem.

1.3.2.4. Inne sposoby wnoszenia wkładu

Wszystkie te mechanizmy współpracy działają bardziej efektywnie dzięki zachowaniom użytkowników. Użytkownicy, których w żaden sposób nie można określić mianem zbioru wyizolowanych osób, tworzą prawdziwą społeczność, w której mają miejsce liczne wymiany. Szczególnie chcemy zwrócić uwagę na imponującą aktywność na liście dyskusyjnej (Rozdział 7, Rozwiązywanie problemów i poszukiwanie informacji omawia to bardziej szczegółowo).
Użytkownicy nie tylko pomagają sobie wzajemnie (i innym) w kwestiach technicznych, bezpośrednio ich dotyczących, ale także dyskutują na temat najlepszych sposobów, za pomocą których można przyczyniać się do projektu Debian. Dzięki temu pomagają poruszać się do przodu, a dyskusje prowadzą często do sugestii na temat ulepszeń.
Ponieważ Debian nie przeznacza funduszy na jakąkolwiek własną kampanię promocyjną, więc jego użytkownicy odgrywają istotną rolę w rozpowszechnianiu projektu, zapewniając mu renomę poprzez przekazywanie sobie informacji "z ust do ust".
Metoda ta działa całkiem dobrze, ponieważ fanów Debiana można znaleźć na wszystkich poziomach społeczności wolnego oprogramowania: od spotkań instalacyjnych (są to warsztaty, podczas których doświadczeni użytkownicy pomagają początkującym w instalacji systemu), które są organizowane przez lokalne "Grupy Użytkowników Linuksa" (ang. "Linux User Groups" — LUG), na dużych konwencjach stowarzyszeń dotyczących Linuksa kończąc.
Wolontariusze tworzą plakaty, broszury, naklejki i inne przydatne materiały promocyjne w ramach projektu, które udostępniają wszystkim, a które Debian dostarcza za darmo na swojej 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, stworzony przez Andreas Tille, dedykowany dziedzinom medycznym;
  • 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, skierowany do chemików, dostarcza pakiety i programy chemiczne.
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. Zespoły Administracyjne

Większość zespołów administracyjnych ma względnie zamknięty charakter, a ich członkowie są rekrutowani jedynie poprzez dobranie nowego członka do zespołu. Najlepszym sposobem, aby stać się częścią jednego z tych zespołów, jest inteligentne wsparcie obecnych członków. W ten sposób można wykazać, że się zrozumiało ich cele i metody działania.
Ftpmasters są odpowiedzialni za oficjalne archiwum pakietów Debiana. Członkowie zespołu zarządzają programem, przyjmującym pakiety wysłane przez twórców. Program, po pewnych sprawdzeniach, automatycznie je zachowuje na serwerze referencyjnym (ftp-master.debian.org).
Zanim włączą nowe pakiety do istniejącego korpusu pakietów Debiana — muszą też zweryfikować wszystkie licencje tych pakietów, aby upewnić się, że Debian może je rozpowszechniać. Gdy twórca pragnie usunąć jakiś pakiet, zwraca się z tym do zespołu za pomocą systemu śledzenia błędów (ang. bug tracking system) i wysyła "pseudo-pakiet" na ftp.debian.org.
Zespół Administratorów Systemu Debian (ang. The Debian System AdministratorsDSA) (), jak tego można oczekiwać, jest odpowiedzialny za administrację systemu wielu serwerów używanych w projekcie. Członkowie Zespołu zapewniają optymalne funkcjonowanie wszystkich podstawowych usług (DNS, Web, e-mail, shell, etc.), instalowanie oprogramowania żądanego przez twórców Debiana, i podejmują wszystkie kroki wstępne dotyczące bezpieczeństwa.
listmasters administrują serwerem e-mail, który zarządza listami dyskusyjnymi. Tworzą nowe listy, obsługują "odbicia" (ang. bounces), czyli uwagi o niedostarczeniu e-mail, i zarzadzają filtrami spamu (niechcianej, masowej poczty elektronicznej).
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 NARZĘDZIE GitLab, hosting repozytorium Git i wiele więcej), the services available on qa.debian.org, lintian.debian.org, buildd.debian.org, cdimage.debian.org, etc.

1.3.3.3. Zespoły twórców, Zespoły przekrojowe

Zespoły twórców, odmiennie niż zespoły administracyjne, są raczej szeroko otwarte, nawet dla zewnętrznych współpracowników. Nawet jeśli Debian nie ma powołania do tworzenia oprogramowania, projekt potrzebuje konkretnych programów, aby osiągnąć własne cele. Oczywiście narzędzia, opracowane na wolnych licencjach, wykorzystują metody już sprawdzone w świecie wolnego oprogramowania.
Debian opracował małe, własne oprogramowanie, ale niektóre programy przyjęły odrębne systemy, których sława wykroczyła poza zakres projektu. Dobrymi przykładami są: dpkg, program do zarządzania pakietami Debiana (w rzeczywistości, jest to skrót od angielskiej nazwy pakietu Debiana — PacKaGe — ogólnie wymawiany jako "dee package") i apt, narzędzie do automatycznej instalacji dowolnego pakietu Debiana i jego zależności, gwarantujące spójność systemu po aktualizacji (jego nazwa jest skrótem do ang. Advanced Package Tool — zaawansowane narzędzie pakietowania). Zespoły, odpowiedzialne za te narzędzia, są stosunkowo niewielkie, ponieważ do uzyskania całkowitego zrozumienia działania tego typu programów wymagany jest raczej wysoki poziom umiejętności programowania.
Najważniejszym zespołem jest prawdopodobnie zespół zajmujący się programem instalacji Debiana, debian-installer, który wykonuje pracę w nieporównywalnie większych niż inne zespoły, począwszy do 2001 roku. Zespół ten potrzebuje wielu współpracowników, ponieważ trudno jest napisać pojedynczy program, który może zainstalować Debiana na wielu różnych architekturach sprzętowych. Każda architektura ma własny mechanizm rozruchu i własny program rozruchowy. Cała ta praca jest koordynowana za pomocą listy dyskusyjnej , pod kierownictwem Cyrila Bruleboisa.
Zespół (bardzo mały) programu debian-cd ma jeszcze bardziej skromny cel. Wielu "małych" współpracowników jest odpowiedzialnych za wyznaczona im "własną" architekturę sprzętową, ponieważ główny twórca nie może (nie musi) znać wszystkich subtelności oprogramowania, ani dokładnego sposobu uruchomienia instalatora z CD-ROM.
Wiele zespołów musi współpracować z innymi osobami w zakresie pakietowania: próbuje, na przykład, zapewniać jakość na wszystkich poziomach projektu Debian. Na liście rozwija się polityka Debiana, zgodnie z propozycjami od wszystkich zespołów. Zespoły odpowiedzialne za każdą architekturę () kompilują wszystkie pakiety, przystosowując je, w razie potrzeby, do konkretnej architektury.
Inne zespoły zarządzają najważniejszymi pakietami, aby w zapewnić ich utrzymanie bez nadmiernego obciążania pracą jednego współpracownika (jednego zespołu); tak jest w przypadku biblioteki C i kompilatora C, na liście , albo Xorg na liście (Ta grupa jest również znana jako X Strike Force).