Open source – jak dorzucić swoje trzy grosze do większego projektu?

Praca nad własnym projektem jest świetnym sposobem do rozwijania się w kierunku, w którym to Ty właśnie chcesz, nauki we własnym tempie i rozwiązywania Twoich problemów. Jednakże ma to też swoje ograniczenia, a mianowicie nad Twoim projektem pracujesz tylko Ty. Jeśli chcesz uczyć się od innych programistów i sprawdzić jak pracuje się w programistycznym zespole bądź też zwyczajnie w świecie pasjonuje Cię konkretne narzędzie open source i chciałabyś dołożyć do niego swoją cegiełkę – to warto zastanowić się nad dołączeniem do zespołu, który pracuje nad danym projektem open source’owym. I w tym tekście pokażę Ci, że to wcale nie takie skomplikowane!
 

Wpis ten powstał w ramach cyklu postów “Projekt z PSS”. Przeczytaj też:
Dlaczego warto pisać dokumentację?
Czy Twój idealny projekt programistyczny musi mieć sens?

Projekty open source – o co właściwie chodzi?

Projekty open source, to takie, których kod źródłowy jest dostępny publicznie. Z reguły pracuje nad nimi kilka osób, utrzymując i rozwijając dany projekt. Wiele firm decyduje się na upublicznienie kodu źródłowego implementowanych rozwiązań, a także deleguje swoich pracowników, którzy w ramach swoich obowiązków wspierają tego typu narzędzia. Google, Facebook i inne firmy technologiczne już dawno temu zauważyły korzyści płynące z używania rozwiązań open source i chętniej dzielą się też swoim dorobkiem, upubliczniając kod źródłowy i pomagając rozwijać istniejące rozwiązania. 
 
Projekty open source’owe są tworzone przez społeczności programistów i fakt, że kod jest otwarty, niesie ze sobą wiele korzyści. Im więcej osób ma okazję przyjrzeć się danemu rozwiązaniu, tym większe szanse na znalezienie błędów w kodzie i potencjalnych zagrożeń. Ponadto, projekty, które rozwijają się w ten sposób, mogą też rozwijać się szybciej – znowu, im więcej potencjalnych rąk do pracy, tym lepiej!
 

Jakie Ty możesz mieć korzyści z pracy nad większym projektem open source?

Dorzucenie własnej cegiełki do projektu open source z reguły nie wiąże się z żadną gratyfikacją. Można by wręcz powiedzieć, że oddajesz swoją pracę za darmo (chyba że jesteś akurat członkinią zespołu Google’a oddelegowaną do pracy właśnie z open source )! Jednak pragnę zachęcić Cię do spojrzenia na to z odrobinę innej strony, bo okazuje się, że kontrybuowanie do projektów open source może przynieść Ci sporo korzyści i pomóc Ci się rozwinąć.
 
Po pierwsze zyskujesz doświadczenie z pracy w zdalnym zespole – zdalnie się komunikujesz, zdalnie ustalasz zakres zmian, które wprowadzisz, a później wspólnie doprowadzacie Twój commit do stanu idealnego. Wiele osób, szczególnie na początku swojej kariery w roli programistów, nie ma wiele doświadczeń tego typu poza grupowymi zadaniami w szkole czy na studiach. Dlatego warto skorzystać z takiej możliwości. Taki zdalny zespół ma też najprawdopodobniej zdefiniowane różne procesy (np. w jaki sposób planowane są zmiany i wypuszczane nowe wersje), które będziesz w stanie podejrzeć od środka!
 
Po drugie masz szansę nauczyć się czegoś od innych osób oraz otrzymać konstruktywną opinię na temat swojej pracy. To bardzo cenna lekcja – sami nie widzimy swoich błędów bądź też nie zdajemy sobie sprawy, że je popełniamy. Wszelkie uwagi są więc bardzo cenne – czy to dotyczące zmian kosmetycznych w kodzie i stylu, czy też analiza implementacji i sugestie jak zrobić coś bardziej wydajnie, jak coś lepiej przetestować etc. Może to też być pierwszy raz, kiedy to Ty zostaniesz poproszona o zrobienie code review cudzego kodu!  
 
Po trzecie – będziesz mogła pracować nad czymś o innej skali niż gdyby był to tylko Twój osobisty projekt. Myśl o tym, że Twój kod pomaga rozwiązać problem wielu innych osób i programistów ze świata, na pewno połechta Twoje ego!  Nauczysz się również nawigować wewnątrz dużego, nieznanego Ci wcześniej repozytorium, a także debugować problemy w większych i bardziej skomplikowanych projektach!
 
A na koniec weź też pod uwagę, że dodanie “open source contributor” w swoim CV na pewno zachęci do Ciebie kolejnych rekruterów, którzy jeszcze chętniej będą z Tobą rozmawiać o nowym stanowisku!
 

Jak dołączyć do swojego pierwszego projektu?

Ponieważ projekty open source utrzymywane są przez społeczność użytkowników, z reguły udostępniają one pewne zasady współpracy, żeby uniknąć późniejszego chaosu i problemów z komunikacją. Jeśli więc chcesz dołączyć do jakiegoś projektu i dorzucić do niego swoją cegiełkę w postaci kodu – musisz te reguły poznać i ich przestrzegać.
 
Gdzie szukać reguł i kontaktu?
Jak wiesz już z tekstu o dokumentacji, na GitHubie jest możliwość publikowania stron wiki oraz tworzenia stron projektów, na których można znaleźć wiele informacji, w tym te kontaktowe. Standardowo jednak, twórcy projektów open source w swoim repozytorium udostępniają plik CONTRIBUTING, w którym informują o dokładnych zasadach i oczekiwaniach od współpracowników. 
 
 
Najlepszym miejscem do kontaktu z twórcami oprogramowania jest wykorzystanie “issue trackera” przy repozytorium (chyba że informacje w projekcie precyzują inne preferowane kanały kontaktu). Po prostu kliknij zakładkę Issues, a następnie stwórz nowe! Podaj tam informację o tym, czego Twoim zdaniem w projekcie brakuje, opisz proponowane rozwiązanie i zaoferuj, że sama zajmiesz się implementacją. Warto też przejrzeć wcześniej stworzone tickety, żeby sprawdzić, czy nie było już dyskusji na podobny temat oraz, czy nikt inny nie pracuje obecnie nad tym zagadnieniem. Zamiast wymyślać nowy “ficzer” warty implementacji, możesz wybrać jeden z już istniejących i zgłosić się jako ochotniczka do wykonania danego zadania!
 
W większych projektach tickety oznaczane są odpowiednimi kolorami i labelami, dzięki czemu łatwiej je wyszukiwać i organizować. Wiele zespołów stosuje tę praktykę i oznacza łatwiejsze tickety (tzw. “beginners”, czyli odpowiednie do implementacji dla osób początkujących) w odpowiedni sposób. Ponadto zwróć też uwagę na labele typu “help needed” w jasny sposób komunikujące, że brakuje rąk do pracy nad danym zagadnieniem. I wtedy wchodzisz Ty – cała na biało!
 
Po otrzymaniu odpowiedzi na swoje zgłoszenie od opiekunów projektu i otrzymania zielonego światła – przejdź do działania!
 

Twój pierwszy Pull Request!

Jeśli masz już to upragnione zielone światło (i różowe wypieki na twarzy z ekscytacji) możesz przejść do działania. Zacznij od skopiowania repozytorium do swojego profilu (w githubie nazywa się to forkiem i służy do tego przycisk w prawym górnym rogu). Dzięki temu możesz pracować w obrębie własnej kopii całego repozytorium – tworzyć nowe gałęzie, wysyłać nowe commity, testować, psuć i naprawiać – i jednocześnie nie wpłynie to na stan oryginalnego projektu. Po sforkowaniu repozytorium sklonuj je na swój komputer (tak jak opisałam to w artykule o Twoim pierwszym projekcie na github) i zacznij pracę nad implementacją!
 
 
Po zakończeniu pracy – kiedy już uznasz, że warto swój kod przedstawić opiekunom projektu – utwórz swój pierwszy Pull Request!
 
 
Pull Request (w skrócie PR) to sposób powiadomienia twórców i opiekunów projektu o tym, że chcielibyśmy, żeby nasz kod został dodany do głównego projektu. Pull request otworzysz, klikając przycisk na githubie w widoku forka projektu. Po jego kliknięciu będziesz mogła wypełnić informacje o swojej implementacji, a także odwołać się do numeru ticketa, w którym zadeklarowałaś chęć pomocy i dostarczenia rozwiązania. Zwróć uwagę na to, że niektóre projekty (zwykle w pliku CONTRIBUTING) wymagają przestrzegania konkretnego formatu w opisie – tak, żeby całość była spójna w obrębie repozytorium.
 
Po utworzeniu nowego Pull request pojawi się on w głównym projekcie wraz z informacją o tym, kto został wyznaczony do przejrzenia Twojej implementacji i ostatecznego jej zaakceptowania. Recenzent może poprosić Cię o wprowadzenie dodatkowych zmian, ale pamiętaj, że to normalne i nie ma powodu do stresu. Recenzent ocenia Twój kod, a nie Ciebie.
 
Jak tylko Twoje zmiany zostaną zaakceptowane, twórcy wciągną je do projektu, a Ty oficjalnie będziesz mogła się już tytułować “open source contributor”. A ja mam nadzieję, że spodoba Ci się na tyle, że nie będzie to Twoja ostatnia cegiełka w świecie open source!