Jak szybko rozwija się jądro Linuksa?

The Linux Foundation opublikowało raport dot. rozwoju jądra systemu Linuks. Dokument zawiera 20 stron i w dość przejrzysty sposób udziela odpowiedzi na pytania, jak szybko kernel jest rozwijany? przez kogo? w jaki sposób? oraz kto to wszystko sponsoruje.

Słowem wstępu.

Kernel jest oprogramowaniem działającym w najniższej warstwie systemu Linuks, odpowiada za zarządzanie sprzętem, uruchamianie programów użytkowników, oraz dba o bezpieczeństwo i integralność całego systemu operacyjnego. Pierwsza wersja kernela pojawiła się w 15 października 1991 roku i została napisana przez Linusa Torvaldsa. Jest to najszybciej rozwijający się projekt Open Source, a do tego bardzo dobrze udokumentowany. Rozwój jądra oparty jest o model release-time, co oznacza, że nowe wersje pojawiają się co 2-3 miesiące.

Kto rozwija kernel?

Kernel rozwijany jest przez programistów z całego świata, wolontariuszy, pracowników firm, wolnych strzelców.

Wśród tych liczb mamy też naszego rodaka, Bartłomieja Żołnierkiewicza który mieści się w TOP 5 developerów pod względem ilości zmian w jądrze (dane liczone od 2.6.12)

Dlaczego firmy wspierają rozwój jądra systemu?

Odpowiedź w sumie jest prosta, każdej firmie zależy by jej sprzęt był jak najlepiej wspierany w każdym liczącym się systemie operacyjnym. Firmy takie jak IBM, Intel, HP, Fujitsu etc. dbają o to by ich sprzęt działał poprawnie pod kontrolą Linuksa, firmy tj. Red Hat, Novell, Montavista (urządzenia inteligentne oparte o Linuksa), chcą dostosowywać jądro systemu do swoich potrzeb, natomiast Samsung, Nokia, Sony ubierają w niego kamery, telefony, telewizory. Proste i logiczne, każdy ma w tym cel i każdy na tym zyskuje.

Dodatkowym atutem dla firmy jest umieszczenie jej nazwy w kodzie ;-)

Ile to w sumie będzie linii?

Ilość linii kodu dla poszczególnych wydań kernela w wersji 2.6.X


(kliknij, żeby powiększyć)

Ostatnie wydanie 2.6.35 zawiera 13 milionów linii kodu... Niech każdy programista w tym momencie spróbuje sobie wyobrazić ile to jest... ;-) Dla porównania projekt serwera WWW Apache 2.2.17 zawiera ~350k linii.

Bardzo chętnie zobaczyłbym jak wyglądają analogiczne dane dla kernela Windows... ;-)

Po więcej szczegółów odsyłam bezpośrednio do raportu (pdf).

  • rez

    ju mast belif: ju ken bi a tap madl! a tak serio to bardzo się cieszę, że varlog żyje :-) w piątek wypijemy za jego dobrą kondycję!

  • D3LLF

    Jedna rzecz na którą warto zwrócić uwagę - ilość linii często może fałszować informacje o faktycznych zmianach w kodzie, ze względu na umieszczanie w kernelu BLOB'ów z firmwarem sprzętu.

  • Dokładnie tak, wszystko też zależy od sposobu pisania kodu:

    int main(void) { // 1 linia

    lub

    int main(void) // 2 linie
    {

    itd... myślę, że tą liczbę należy traktować orientacyjnie z delikatnym przymrużeniem oka, niemniej robi wrażenie ;-)

  • sojmek

    Jeden obowiązujący standard formatowanie kodu: http://lxr.linux.no/linux/Documentation/CodingStyle

  • Paweł Szołtysek

    Do pełni szczęścia przydałaby się informacja kiedy które jądro zostało opublikowane.

  • Pingback: Pingwiny w lodówce…()

  • Andrzej Fałszywy

    B. ciekawe.
    Jedyne czego osobiście nieco mi zabrakło to dat - jak np. w czasie rozwijały się poszczególne wersje kernela - LoC/wersja nie jest aż tak obrazowe dla normalnych ludzi.
    (abstrahując że LoC też nie jest, ale rozumiem uproszczenie)

  • Podmieniłem wykres, nowy zawiera już daty wydań poszczególnych wersji kernela. ;-)

  • sjd

    Sam uzywam glownie BSD i linux od 94 roku. Jednak dla mnie takie dane statystyczne znacza cos innego.
    Ilosc linii kodu przeklada sie glownie na spadek jakosci poprzez wzrost ilosci bugow. To zjawisko mozna latwo zaobserwowac, sledzac ilosc zgloszonych bledow. (srednia branzowa 18 bugs/1kSLoC)
    Ilosc kodu moze swiadczyc jedynie o nakladzie prac jaki poniesiono na programowanie i odpluskwianie i sa to wartosci znaczne.
    Chyle kapelusza.
    Niemniej 13,5 MLoC wrazenie robi, nawet jezeli po podzieleniu na ilosc developerow i czas (czyli wartosc srednia) wyjdzie daleko, daleko skromniej od pracy przecietnego programisty (190 LoC per developer rocznie *).

    Jak to mowia dane statystyczne znacza zupelnie co innego jezeli patrzy sie na nie z innej strony. :-)

    Pozdrawiam
    sjd

    * Rozklad wytezenia pracy w rzeczywistosci jest mocno nieliniowy.