W kwietniu tego roku system kontroli wersji Git obchodzi swoje 10 urodziny. Cała historia zaczęła się w 2005 roku, kiedy to Linus Torvalds ogłosił pierwszą publiczną wersję i projekt zaczął samodzielnie hostować swój własny kod. Z okazji tak wielkiego wydarzenia, Jennifer Cloer z Linux.com przeprowadziła wywiad z Linusem Torvaldsem, twórcą Linuxa i Git’a, wywiad na temat tego narzędzia. Wybraliśmy najważniejsze informacje z tekstu i zrobiliśmy autorskie tłumaczenie. Prosimy czytelników o wyrozumiałość :-)
Dlaczego stworzyłeś Gita?
Torvalds: Nigdy nie chciałem tworzyć systemu kontroli wersji tak naprawdę, ponieważ była to najmniej interesująca czynność na świecie (za wyjątkiem baz danych), a dodatkowo nienawidziłem wszystkich systemów kontroli wersji z pełną pasją. I wtedy pojawił się długo wyczekiwany BitKeeper i zmienił sposób, w jaki mogłem przeglądać źródła. BK miał większość funkcji, których potrzebowałem, trzymał lokalną kopię repozytorium, a rozproszone mergowanie było dużym wyzwaniem. Chciałbym tutaj zaznaczyć, iż jednym z wielu problemów rozproszonych systemów kontroli wersji jest zarządzanie prawami dostępu do repozytorium. BitKeeper w pewien sposób rozwiązywał ten mankament, poprzez tworzenie lokalnego repozytorium. Ale posiadał także wiele innych bolączek, jak choćby zmiana nazwy oraz brak otwartego kodu. Wielu ludzi przez ten ostatni fakt nie chciało go w ogóle używać. Koniec końców, BK był użwany przez najważniejszych deweloperów jądra Linux, a dzięki temu że nasz kody był wolnym oprogramowaniem, to mogliśmy go używać za darmo. Pomógł w pewnym sensie rozwijać nam jądro, ale nadal istniało sporo innych problemów.
W jakiś czas potem Tridge (Andrew Tridgell) rozpoczął próby z inżynierią wsteczną na protokole BitKeeper, co było sprzeczne z licencją programu. Spędziłem wiele tygodni (być może nawet miesięcy), będąc mediatorem pomiędzy Tridge i Larrym McVoy-em, ale koniec końców to nic nie pomogło. W tym momencie stwierdziłem, że nie mogę używać dalej BK, ale nie chciałem wracać do czasów sprzed jego użytkowania. Dodatkowo, w tamtym okresie istniało kilka innych systemów kontroli wersji, które starały się być rozproszonymi systemami kontroli wersji, ale żaden z nich nie sprawdził się dobrze zdalnie. Miałem pewne wymagania w kwestii wydajności pracy zdalnej, które nie były spełnione i obawiałem się o integralność kodu oraz czas pracy. Zdecydowałem się więc napisać swój własny system kontroli wersji.
Jak się zabrałeś do tego? Przesiedziałeś cały weekend na pisaniu, czy robiłeś to etatowo?
Torvalds: Aktualnie możecie zobaczyć, jak działa Git w pełni swojej okazałości, nie licząc jego początków. Zajęło to dokładnie jeden dzień, aby zrobić cały system samohostującym się, dzięki czemu mogłem rozpocząć commitowanie pierwszych linii kodu i używać go. Praca odbywała się głównie za dnia, ale zdarzały się commity po północy, a nawet o 2 nad ranem. Pierwszy commit do Gita to był kod jego samego i dzięki temu mieliśmy wgląd w to, jak się wszystko odbywa i co można jeszcze poprawić.
Git został napisany w około 10 dni, a za gotowość do pracy uznaliśmy pierwszy commit kodu jądra Linux, który nie był wbrew pozorom taki trudny. Zanim rozpoczęliśmy w ogóle prace na nowym systemem kontroli wersji, długo rozmyślałem nad ideą działania, jakie problemy możemy napotkać i jak ich w przyszłości uniknąć.
Czy Git rozwija się według Twoich oczekiwań? Czy są jakieś ograniczenia obecnie?
Torvalds: Jestem bardzo szęśliwy, że powstał Git. Działa nadzwyczaj dobrze dla rozwoju jądra Linux i spełnia wszystkie moje oczekiwania. Najbardziej interesujące jest, jak wiele innych projektów również wdrożyło Gita u siebie. Oczywiście przez cały okres można było zobaczyć, jak problematyczne jest zmieniane systemów kontroli wersji. Dobrym przykładem są systemy CVS i RCS, które istniały bardzo długo.
Jak myślisz, dlaczego Git posiada tak dużą popularność?
Torvalds: Sądzę, że powody niezadowolenia z innych systemów kontroli wersji były dokładnie takie same, co ja miałem w przypadku BitKeepera i czasów przed nim. Wiele projektów próbowało naprawić jedną lub kilka pomniejszych funkcji, ale żaden z nich nie pomyślał o całkowicie nowym podejściu, jak my w kwestii Gita. Wielu ludzi nie lubiło naszego systemu, do czasu gdy poznali zalety rozproszonego systemu kontroli wersji, w postaci łatwych i niezawodnych kopii zapasowych, oraz prywatnych repozytoriów, gdzie nie trzeba się martwić o prawa dostępu w głównym repo.
Linus Torvalds – LinuxCon Europe 2014. Autor:
Czy Git przetrwa wiecznie? Czy sądzisz, że w ciągu nabliższych 10 lat powstanie inny system kontroli wersji? Czy będziesz jego współautorem?
Torvalds: Nie zamierzam pisać żadnego innego systemu póki co. Być może zobaczymy coś nowego w przeciągu 10 lat, ale mogę zagwarantować, że będzie to podobne do Gita. Oczywiście Git nie jest idealny, ale posiada wszystko to zaimplementowane w taki sposób, w jaki nie miały nigdy wcześniej inne system kontroli wersji.
Dlaczego Git tak dobrze działa w przypadku jądra Linux?
Torvalds: Git został zaprojektowany do naszego stylu pracy, więc jest poniekąd jego częścią. Został także przystosowany do bycia wydajnym przy wielkich projektach, jak jądro Linux. Prócz tego miał uprościć czynności, które były trudne do zrobienia, przed jego powstaniem, a które robimy codziennie.
Weźmy taki przykład. Koncepcja łączenia kodu w czasach przed Gitem była naprawdę problematyczna, ponieważ należało zaplanować to z wyprzedzeniem, żeby nie narobić bałaganu w kodzie. Dla mnie było to nie do zaakceptowania, ponieważ każdego dnia wykonuję dziesiątki mergów, a dodatkowo największe zmiany nie powinny się same łączyć, powinny być wpierw testowane. Najwięcej czasu powinno zajmować mi napisanie wyjaśnienia danego merge-a, a sam proces wysyłania i łączenia powinien zajmować kilka sekund.
Git zatem był projektowany i pisany pod moje wymagania, i to doskonale widać.
Dla kogo jest tak naprawdę Git?
Torvalds: Z Gitem możesz wykonywać pracę na wiele różnych sposobów. Jest to naprawdę potężny zestaw narzędzi, który ułatwia pracę w grupie. Możecie wykonywać swoją pracę na wiele różnych sposobów, testować lokalnie i wszystko nadal działa. Najlepszym sposobem nauki Gita jest poznanie jego podstaw i nie próbowanie funkcji, których nie potrzebujesz w danym momencie.
Git sam w sobie trudny był jedynie na początku swojego istnienia, czyli około 6 – 12 miesięcy, kiedy był tworzony od zera. Był to okres, gdzie musieliśmy dopracować go na tyle, aby technologia działała i nikt wtedy nie myślał o aż takiej łatwości użycia, czy oczywistości. Teraz jest już zupełnie inaczej.
Innym powodem, dla którego wiele osób uważa Gita za trudnego jest odmienny sposób działania. Przez wiele lat ludzie wykonywali czynności w CVS, a Git nie jest ani trochę podobny do tego systemu. Komendy i sposób działania zostały zaprojektowane od zera, dlatego wielu deweloperom może się to wydawać dość trudne na początku.
I Git nie był niepotrzebnie różny. Odmienność była wymagana. Jakby teraz dać programiście, który używał od długiego czasu Gita, skorzystać z systemu CVS, to uznałby to za zbyt skomplikowane. To samo było w przypadku osób korzystających z CVS i próbujących Gita.
Czy bez Gita rozwój jądra Linux byłby na takim samym poziomie, jak obecnie?
Torvalds: Myślę, że tak. Oczywiście ktoś inny napisałby wtedy rozproszony system kontroli wersji podobny do Gita i równie wydajny. Zdecydowanie potrzebujemy obecnie systemów takich, jak Git.
Jaka jest Twoja opinia o GitHub?
Torvalds: GitHub to świetna usługa hostingowa i nie mam nic przeciwko niej. Jedynymi zastrzeżeniami dla mnie, jako platformy deweloperskiej to: commitowanie, wysyłanie kodu, śledzenie zmian itp, nie działa tak jak powinno. Nie jest to nawet tak blisko, jak to się by miało w przypadku jądra. Jest zbyt ograniczone.
Powodem tego jest sposób, w jaki jądro Linux jest rozwijane. Ale drugim czynnikiem jest również interfejs GitHuba, który został źle zaprojektowany. Commity tam wykonywane nie posiadają dobrego systemu wiadomości. Oczywiście deweloperzy ciągle naprawiają te niedoskonałości, dzięki czemu zaczyna to działać poprawnie, ale nigdy nie będzie to dobre dla rozwoju jądra Linux.
Czy znalazłeś najciekawsze zastosowanie Gita lub GitHuba?
Torvalds: Jestem szczęśliwy, że rozpoczęcie nowego projektu jest tak niezwykle proste. Normalnie hostowanie projektu jest bardzo trudne, a GitHub i Git uczyniły to zadanie niezwykle prostym, szczególnie dla małych projektów. Nie ma znaczenia, jaki to jest projekt; a jedynie co Ty jesteś w stanie stworzyć.
Czy posiadasz jakieś poboczne projekty na dzień dzisiejszy, które byłyby w stanie zdobyć podobną popularność na wiele lat?
Torvalds: Póki co nic, ale dam znać w razie czego.
Znalazłem dwa drobne błędy: „nielubiło” oraz „przetwa” :)
Błędów jest zatrzęsienie, ale i tak ciekawie się czyta.
„Nigdy nie chciałem komputerów tworzyć systemu kontroli wersji tak naprawdę”
to z translatora?
Też mi się tak właśnie wydawało. Czytałem to ze trzy razy chyba :D
„ponieważ była to najmniej interesująca czynności na świecie (za
wyjątkiem baz danych), a dodatkowo nienawidziłem wszystkich systemów
kontroli wersji z pełną pasją”
Ludzie, kto to tłumaczył? Macię jakąś korektę przed wypuszczeniem arta?
Dzięki! Takie wpisy aż miło się czyta, a nie notka na dwa zdania :)