Linux, Git i obrażanie ludzi

Linus Torvalds. Człowiek, który stworzył Linuxa i Gita. Który nadal zarządza rozwojem kernela. Który dla wielu jest bogiem open source’u. To jego wizja sprawiła, że Linux z ciekawostki dla piwniczniaków stał się ważnym elementem świata IT. Codziennie miliony programistów używa Linuxa do pracy, zapisuje swój kod w repozytorium Gita, a na końcu tej drogi aplikacje lądują czy to na serwerach z Linuxem czy nawet na urządzeniach mobilnych, w których jądrem jest właśnie Linux. Projekty Torvaldsa zmieniły świat technologii w gigantycznym stopniu, ale też pośrednio mają duży wpływ na wiele innych dziedzin życia.

Co więcej rozwój Linuxa jest szybszy niż kiedykolwiek. Codziennie dodawanych jest 10000 linii kodu, usuwanych jest 8000, a 1800 jest zmienianych. W każdym nowym wydaniu lądują łatki od ponad 1000 osób z całego świata. Jak sam Linus powiedział na Open Source Leadership Summit 2017 Linux to projekt społeczny, który mimo, że dotyczy technologii, to w dużej mierze opiera się na budowaniu sieci zaufania, dzięki której można zapewnić jakość projektu. To właśnie zajęło 25 lat - budowanie społeczności, która będzie mogła tworzyć oprogramowanie open source w takim tempie i o tak wysokiej jakości, że zmienia ono świat.

W tym kontekście dość ciekawe wydaje się to jak sam Linus wchodzi w interakcje z ludźmi. Często sprowadza się to do tego, że ich po prostu wyzywa. Jest to zdecydowanie największa kontrowersja wokół jego osoby i chciałem pokazać na co stać twórcę Linuxa.

 

Tytułem wprowadzenia, na Aalto Talk powiedział:

Lubię obrażać ludzi, bo myślę, że ludzie, którzy się obrażają powinni być obrażani.

dorzucę jeszcze coś o postrzeganiu siebie:

Mam zawsze rację. Tym razem mam ją nawet bardziej niż zwykle.

i może przypomnę jak się przedstawił na Linux Expo w 1998:

Nazywam się Linus Torvalds i jestem twoim bogiem.

Myślę, że taka filozofia otwiera znaczne pole manewru. Nawet biorąc pod uwagę, że ostatni cytat był żartobliwy. Trzeba jednak przyznać, że rzadko słyszymy takie stwierdzenia od kogokolwiek innego.

Zacznę spokojnie, bo zdania Linusa na temat C+:

C++ to okropny język. Jest jeszcze bardziej okropny, gdy weźmiesz pod uwagę, że używa go tak wielu programistów o niskich standardach, że jest o wiele łatwiej wygenerować nim totalne gówno.

Pewne jest też, że jeżeli Linusowi nie spodoba się kod, który zawrzesz w pull requeście do Linuxa, to dość dosadnie się do tego odniesie:

Twój kod to gówno. I nie naprawiłeś niczego. [...] Ja j*bie, co z wami jest nie tak ludzie?

Czasem też bardzo się denerwuje. Przykładowo czytanie po jednym bajcie na raz działa na niego jak czerwona płachta na byka:

Oczywiście chciałbym również zasugerować, że ktokolwiek był geniuszem, który pomyślał, że czytanie danych przy pomocy JEDNEGO J*BANEGO BAJTU NA RAZ przez wywołania systemowe to dobry pomysł należy wstecznie zabortować. Kto do cholery robi tak debilne rzeczy? Jak to się stało, że nie umarł on jako dziecko - mając na uwadze, że prawdopodobnie był za głupi by znaleźć cycka, którego miał ssać.

Nie jest też dobrym pomysłem dodawanie do kernela kodu, który zawiera zawoalowaną logikę i dziwne wg Linusa funkcje pomocnicze:

Kod wydaje się *zaprojektowany* by używać tej nowej funkcji “overflow_usub()”. To wydaje się być wymówką by jej używać.

I to jest zaj*biście marna wymówka dla tego upośledzenia.

Przykro mi, ale nie dodajemy nowych idiotycznych interfejsów dla nowego idiotycznego kodu w tym stylu.

Mimo, że gdy się zdenerwuje to klnie jak szewc czasem brakuje mu już epitetów:

Nie ma wystarczająco przekleństw w języku angielskim, więc teraz będę musiał cię nazwać perkeleen vittupää by wyrazić moje obrzydzenie i frustrację związaną z tym badziewiem.

To by było takie małe notowanie listy przebojów jeżeli chodzi o obrażanie ludzi. Przypominam jednak, że w sumie można też obrażać firmy:

Na usprawiedliwienie Linusa pragnę dodać, że wcześniej mówił o tym jak współpraca z Nvidią się nie układa. W ogóle relacje z producentami sprzętu są ciężkie. Dziennikarz zapytał Torvaldsa czy chciałby coś przekazać firmom, które nie udostępniają specyfikacji technicznej koniecznej do zapewnienia kompatybilności ich produktów z Linuxem. W odpowiedzi dostał:

Czy “mam nadzieję, że umrzecie wszyscy bolesną śmiercią” jest zbyt mocne?

Dziesiątki pikantnych cytatów dotyczą też Microsoftu. Mimo to Linus na łamach New York Timesa zaprzeczał jakoby firma z Redmond była na jego celowniku:

By być nemesis musisz aktywnie próbować coś zniszczyć, czyż nie? Naprawdę, nie jest moim celem zniszczenie Microsoftu. To będzie zupełnie niezamierzony skutek uboczny.

Bronił tej tezy na twitterze ponad 10 lat później:

Microsoft nie jest zły, po prostu robią bardzo kiepskie systemy operacyjne.

W ostatnich latach coraz większy nacisk w środowisku IT kładzie się na kulturę dyskusji, tworzenie środowiska wolnego od dyskryminacji. Stąd wprowadzanie polityk Code of Conduct w wielu firmach IT i projektach open source. Dużą częścią CoC jest promowanie różnorodności. A co Linus na to?

Najważniejszą częścią open source’u jest to, że ludziom pozwala się się robić to w czym są dobrzy, a cały ten temat [o różnorodności] jest tylko detalem i nie jest tak istotny.

Do standardów narzucanych mu z zewnątrz twórca Linuxa nie chce się nagiąć. Mówiąc delikatnie nie ceni ich zbyt bardzo:

Bo jeśli chcesz, żebym “zachowywał się profesjonalnie”, to mogę ci powiedzieć, że nie jestem zainteresowany. Siedzę sobie w moim domowym biurze w szlafroku. Tak samo jak nie zamierzam zacząć nosić krawata, tak również nie kupuję sztucznej uprzejmości, kłamstw, biurowej polityki, wbijania komuś noża w plecy, zachowań pasywno-agresywnych i używania modnych słówek. Bo TO jest efektem “profesjonalnego zachowania”: ludzie zaczynają uciekać się do wszelakich bardzo brzydkich rzeczy, bo są zmuszeni podejmować działania wynikające z naturalnych instynktów w nienaturalny sposób.

Prawo do obrażania innych bronił w 2014 na DebConfie w ten sposób:

Nie szanuję ludzi dopóki nie uważam, że zasługują na szacunek. Są ludzie, którzy myślą, że szacunek to coś, co powinno być im dane, a tak się składa, że jestem jedną z osób, która radośnie powie: nie, na szacunek powinno się zapracować. I bez zapracowania sobie na niego nie będziesz go mieć. To naprawdę takie proste.

Nieco zabawne jest, że w każdym z nas siedzi taki mały Linus. Niby te cytaty mogą być szokujące, ale gdybym miał być ze sobą szczerym, to pod nosem nieraz podobnie zakląłem gdy zobaczyłem pull requesta czy od juniora czy to od kogoś, kto jeszcze nie zbadał dobrze zależności w projekcie. Tylko tyle, że się hamuję i wiem, że lepiej jest przegadać problem, bo z tą osobę będę kontynuować współpracę. W moim interesie jest, żeby wyciągnęła wnioski. Nawet wolę nie myśleć ile razy mój kod wywołał takie reakcje u innych. Inna sprawa, że Linus zupełnie się nie krępuje.

 

Dużo z tego co wyżej przytoczyłem bierze się z wartości jakimi kieruje się Torvalds. Sam twierdzi “Nie dbam o ciebie. Dbam o technologię i kernel - to są rzeczy dla mnie ważne”. Na początku gdy zabierałem się do pisania tego artykułu to co zrobił dla świata open source nieco mi się kłóciło z jego skłonnością do mieszania ludzi z błotem. Może to dziwnie zabrzmi, ale im więcej czytam o nim, tym bardziej układa mi się to w spójną całość. Z jednej strony widać po tym co tworzy, pisze i mówi jak bardzo ceni wolność wyrażania siebie. Praca nad Linuxem zdecydowanie jest wyrażeniem tego w co wierzy i kim jest. Z drugiej samo to nie uzasadnia jeszcze ostrego języka w dyskusjach o kodzie. Trzeba dodać magiczny składnik, jakim jest wielkie ego (“Mam ego rozmiaru małej planety”) i to, że mierzy innych swoją miarą. Z pewnością jest osobą wybitną i większości śmiertelników ciężko sprostać jego standardom. I to jest to co komplikuje relacje Linusa ze światem. Gdy już pozna daną osobę i chce z nią pracować mówi o niej w samych superlatywach. Gdy ktoś nie sprosta jego wymaganiom staje się Microsoftem albo Nvidią.

Linus jest też zwolennikiem ciężkiej pracy na realnymi problemami. Zdecydowanie bardziej woli to od wizjonerskiego myślenia. Mówił o tym na prezentacji TED:

W zasadzie czułem się lekko niekomfortowo na TED-zie przez dwa ostatnie dni, bo tu dużo się dzieje wokół wizji, prawda? I ja nie jestem wizjonerem. Nie mam planu pięcioletniego. Jestem inżynierem. Zupełnie nie mam problemu ze wszystkimi ludźmi, którzy chodzą dookoła i patrzą w chmury czy też gwiazdy, i mówią “Chcę tam polecieć”. Ale ja patrzę na ziemię i chcę załatać dziurę, która jest zaraz przede mną zanim w nią wpadnę. Taką osobą jestem.

A ostatnio na wspomnianym Open Source Leadership Summit 2017 mówił:

Często porównuję rozwój oprogramowania do biologicznego procesu ewolucji. Mam na myśli, że to nie jest inteligentny projekt. Jestem w samym środku tego procesu i mogę z całą pewnością powiedzieć, że tak jest, niezależnie od tego co sobie myślisz.

Innowacja, o której tyle mówi branża, to bzdura. Każdym może wymyślać innowacje. [...] Chrzanić to, to bez znaczenia. 99% to zrobienie swojej roboty.

Tak, zdecydowanie widać tu kontrast z inną wielką postacią ze świata IT. Stevem Jobsem (przepraszam wszystkich za wspomnienie tu jego osoby, ale nie mogłem już się powstrzymać). I tak, Torvalds jest tu inżynierem, Jobs wizjonerem. Kto faktycznie zrobił więcej dla naszej branży zostawiam do oceny Wam.

Jaki jest Linus każdy widzi. Uczmy się od niego pracowitości i umiejętności rozwiązywania problemów. To co stworzył w ogromnym stopniu ułatwia nam pracę każdego dnia. Dla mnie jest inspiracją jeśli chodzi o życie w zgodzie ze swoimi wartościami. Znakomicie na jego przykładzie widać, że akceptuje zarówno dobre jak i niewygodne strony takiego stylu życia. Warto też uczyć się od niego szczerości, tylko może... bez wyzywania ludzi i… z większym szacunkiem dla drugiego człowieka, i... bez przerostu ego.