Projekt jądra Linuksa, jak wiele innych projektów open-source, co pewnie czas przechodzi zmiany ewolucyjne, rewolucyjne a czasem nawet wojenne.

Linus znany jest z tego że czasami podejmuje nieco kontrowersyjne decyzje. Niektórych to razi, ale trzeba przyznać że efekt całościowy jest pozytywny, a decyzje przemyślane.

Częścią projektu w której takie decyzje często się zdarzają, jest planista czasu procesów. Krótkie wyjaśnienie dla osób nietechnicznych: na twoim komputerze, programy tak naprawdę nie działają równocześnie. Tak naprawdę zarządza tym taki planista, który co jakiś czas przełącza program który ma wykonywać procesor. Jeśli robi to odpowiednio dobrze/szybko - tobie wydaje sie że programy działają równocześnie (współbieżnie). Oczywiście na procesorach wielordzeniowych oraz systemach wieloprocesorowych może działać kilka programów na raz, ale nie więcej niż sumaryczna ilość rdzeni we wszystkich procesorach. Planista ten ma ciężki orzech do zgryzienia. Z jednej strony, aby wszystkie programy działały możliwie płynnie, powinien jak najczęściej przełączać. Niestety przełączanie kosztuje (czas), czyli im więcej czasu tracimy na przełączanie tym mniej maja go programy. Jeśli zdecydujemy sie na rzadsze przełączanie, nasz użytkownik może się zdenerwować że programy których używa nie działają tak płynnie jak by chciał, a np. program odtwarzający mp3, rwie dźwięk.

Problemy jest na tyle skomplikowany, że pisze się z tego doktoraty, a potężne korporacje wydają miliony dolarów na znalezienie optymalnych rozwiązań.

(Pomijam tu problemy takie jak czas rzeczywisty, priorytety, sprawiedliwość itp. Po prostu upraszczam sprawę dla czytelnika)

Przeboje i 'dziwne akcje' dotyczące planisty procesów, pamiętam jeszcze od czasów serii 2.2. Linus podejmował swoje decyzje, a sprawy z czasem miały się ku lepszemu. Parę lat temu pojawił się Con Kovilias, który, niezadowolony stanem spraw, zajął sie nimi. Zaowocowało to stworzeniem kilku wersji planistów jądra których głównym celem było sprawienie 'dobrego wrażenia' na użytkowniku typowego komputera domowego.

Były one niezłe, sam nawet przez jakiś czas ich używałem. Potem, zachęcony przez osoby korzystające z jego pracy, Con postanowił postarać się dołączyć swoje dzieło do głównej wersji Linuksa, rozwijanej przez Linusa.

Tu jednak napotkał na problemy. Po pierwsze, zażądano twardych liczb. Wyników miarodajnych testów, a nie tylko 'wrażeń' i 'odczuć'. Dodatkowo, zażądano, aby nowy planista w niemal wszystkich możliwych przypadkach, zachowywał się co najmniej nie gorzej niż ten dotąd zawarty w jądrze Linuksa.

Tego jednak Conowi nie udało się osiągnąć. Praca jednak nie poszła na marne, a idee zawarte w jego pracy zostały podchwycone przez innych, napisano zupełnie nowy kod i ten kod trafił do jądra.

Con w tym momencie, obraził się i ogłosił że zabiera swoje zabawki. Przedstawił się równocześnie jako wielki skrzywdzony, a Linusa (i jego najbliższych współpracowników) jako tyranów, nie zwracających na innych uwagi, a czasami zawłaszczających ich pracę.

to chyba w skrócie cały konflikt. Faktem jest że Con nigdy nie zaprezentował twardych liczb które udowadniałyby że jego planista jest najlepszą z możliwych opcji. Ponadto, jego podejście do pracy w zespole, było, lekko mówiąc, nieco nieadekwatne do oczekiwań.

W międzyczasie, padła idea oparcia planistów czasu procesor o system wtyczek, tak jak działa planista wejścia wyjścia (regulujący jaki i kiedy procesy mogą odczytywać dane z dysków, itp.). Pomysł ten został jednak odrzucony z kilku istotnych powodów:

  • planista procesów działa (w praktyce) na urządzeniach (procesorach) bardzo podobnych do siebie,
  • błędna konfiguracja planistów mogłaby znacznie obniżyć wydajność (względną) systemu,
  • planiści wejścia/wyjścia muszą pracować na bardzo różnych urządzeniach: dyski twarde, napędy optyczne, pamięci flash, taśmy. Każde z tych typów urządzeń ma swoje charakterystyczne cechy regulujące ich pracę i do każdego typu, planista dostępu powinien brać to pod uwagę, aby uzyskać możliwie najlepszą wydajność.

Moim, bardzo nieskromnym zdaniem, dobrze sie stało że planista Cona, ani idea wtyczek nie trafiła do jądra Linuksa. Jednocześnie przekonuje mnie zdanie Linusa, że planista czasu procesów powinien być jeden. Po zachowaniu Cona widać było że zachowuje sie nieco jak obrażona balerina - z jednej strony miałoby mu nigdy nie zależeć na włączeniu swojego kodu do głównego jądra, a z drugiej, kiedy spotyka sie z odmową, obraża się. Biorąc udział w tak rozległym projekcie, w dodatku opartym w dużej mierze na wolontariacie, trzeba wziąć pod uwagę że ludzie są różni i mają różne podejście. Należy jednak mieć szacunek dla osób o potwierdzonym dorobku, a kiedy mówią ci że robisz coś nie tak - głęboko sie nad sprawą zastanowić. Tak czy inaczej, nawet łatki najmniejszego z nas mogą trafić do głównego jądra :)