Jak mogę znaleźć dobry projekt typu open source, do którego można dołączyć? [Zamknięte]


152

Właśnie zacząłem pracować rok temu i chcę dołączyć do projektu open source z tych samych powodów, co inni: pomóż stworzyć coś użytecznego i dalej rozwijać swoje umiejętności.

Mój problem polega na tym, że nie wiem, jak znaleźć projekt, w którym pasowałbym.

Jak znaleźć projekt przyjazny dla początkujących? Jakich atrybutów powinienem szukać? Jakie są znaki ostrzegawcze, że projekt może nie być prawo pasuje? Czy są jakieś narzędzia, które pomogą dopasować ludzi do projektów typu open source?

Jest to podobne pytanie tutaj , ale to pytanie ma związek z pracą i ogranicza się do PHP / Drupal.


9
Fajnie, właśnie spojrzałem na ArsTechnica i zobaczyłem to pytanie jako artykuł. Oto link. arstechnica.com/business/guides/2012/03/…
Evan Plaice

Odpowiedzi:


111

Mój pierwszy wkład typu open source dotyczył biblioteki, z której wcześniej korzystałem (i bez której byłbym bardzo cierpiał) przy poprzednim opłaconym projekcie. Podczas pierwszego użycia zauważyłem błąd w kodzie, więc utworzyłem łatkę, dołączyłem do projektu i przesłałem ją do przeglądu.

Około 8 miesięcy później, kiedy miałem trochę wolnego czasu, zdecydowałem, że oddam (i popracuję nad umiejętnościami programistycznymi), wnosząc większy wkład w projekt. Sklonowałem repozytorium i zacząłem zapoznawać się z bazą kodów. Po kilku tygodniach przesyłania drobnych poprawek do bazy kodu i monitorowania żądań funkcji, podniosłem prośbę o funkcję, aby dodać całkiem znaczący moduł do projektu.

Ponieważ generowanie wielu indywidualnych poprawek jest dość żmudne dla jakiegokolwiek znaczącego rozwoju, sklonowałem repozytorium do gałęzi w git hub i zacząłem wycinać kod. Kilka tygodni i kilka tysięcy linii kodu później kierownik projektu i ja pracowaliśmy poprzez integrację i testowanie moich poprawek w bibliotece w sposób, który działał spójnie z resztą bazy kodu.

Był to nieoceniony proces, którego wiele się nauczyłem:

  • Kiedy zaczynałem, nie wiedziałem, jak korzystać z Git, do końca mogłem biegle tworzyć zdalne gałęzie śledzące i łączyć je lub bazować na gałęzi głównej bez przerywania potu.
  • Zacząłem w VS 2008 i zakończyłem migrację do Linuksa i Monodevelop, aby pracować nad pisaniem kodu (ponieważ VS jest opóźniony w standardzie Unicode, a zakończenia linii to taki problem w git). Okazuje się, że w * nix niewiele można zrobić, co można zrobić w * dows.
  • Nigdy wcześniej nie przeprowadzałem żadnych testów jednostkowych, Nunit to bułka z masłem, a pisanie testów jednostkowych jest dość elementarne.
  • Musiałem nauczyć się połykać język i słuchać, a także ćwiczyć cierpliwość. Nie ma sensu umacniać swojej pozycji w projekcie open source, ponieważ każdy zaangażowany ma wiedzę (prawdopodobnie więcej niż ty) i jest w stanie zaakceptować / odrzucić twoje pomysły na podstawie braku dostarczenia substancji. To jednocześnie niezwykle upokarzające i satysfakcjonujące.
  • Samo spojrzenie jednego wykwalifikowanego programisty na dużą bazę mojego kodu zwróciło uwagę na wady w moim stylu, których nigdy wcześniej nie brałem pod uwagę (a także na błędy w jego kodzie). Dla mnie nauczyłem się, że łatwiej / lepiej jest definiować stałe, niż używać wiązki magicznych liczb ze szczegółowymi komentarzami.

Ten konkretny projekt opierał się na generowaniu i dekodowaniu pakietów sieciowych na wszystkich poziomach protokołów sieciowych. Osobiście interesuję się sieciami niższego poziomu, więc wspaniale było rozmawiać z innym programistą o wspólnych zainteresowaniach i wiedzy w tej dziedzinie.

Jeśli chcesz po prostu zmoczyć stopy: znajdź projekt, z którego już korzystasz; sklonuj repozytorium; i zacznij sprawdzać, czy możesz naprawić niektóre błędy i / lub dodać testy jednostkowe. Patrzenie na czyjąś bazę kodów wydaje się przerażające, ale jest to niezwykle cenna umiejętność do nauczenia się. Prześlij kilka poprawek. Możesz oczekiwać, że Twój kod zostanie najpierw dokładnie zbadany. Nie przejmuj się, to normalna część procesu zdobywania zaufania administratorów projektu.

Po ustanowieniu bazy merytorycznej z projektami administratorzy zaczynają szukać więcej obowiązków, takich jak proponowanie nowych funkcji lub prośba o przydzielenie ich do realizacji żądań funkcji.

Jeśli nie możesz znaleźć już istniejącego projektu w jednej z głównych sieci repozytorium open source (github, sourceforge, kod Google), pomyśl o aplikacji, której naprawdę chciałbyś użyć, która jeszcze nie istnieje i uruchom własną.

Przygotuj się na upokorzenie i oczekuj, że praca zostanie odrzucona na rzecz dalszych zmian. Mit, że każdy może dodać kod do projektu open source, jest całkowicie fałszywy. Zawsze jest między tobą strażnik i dostęp push. Im lepszy kod, tym mniej będzie on analizowany na dłuższą metę, gdy zdobędziesz zaufanie administratorów projektu. Jeśli to twój projekt, będziesz strażnikiem.

Aktualizacja:

Właśnie się nad tym zastanowiłem i zdałem sobie sprawę, że nie zawracałem sobie głowy wspominaniem, do którego projektu odnosi się większość mojej odpowiedzi. Dla tych, którzy chcą wiedzieć, jest to SharpPcap . Główny programista Chris Morgan jest bardzo profesjonalny i rzeczowy. Wykonuje kawał dobrej roboty zarządzając projektem i nauczył mnie wiele o tym, czego potrzeba, aby dojrzeć projekt OSS.

Ze względu na osobiste ograniczenia czasowe nie byłem w stanie wnieść kodu od ponad roku, ale nadal staram się oddawać, czając się na przepełnieniu stosu i od czasu do czasu odpowiadając na pytania dotyczące SharpPcap.


czy możesz zasugerować popularną stronę w tym zakresie?
Aditya P

2
@AdityaGameProgrammer Kładę większy nacisk na poszukiwanie konkretnego projektu, a nie witryny hostingowej typu open source. Witryny hostingowe są tylko wysypiskiem dla projektów typu open source, a niektóre projekty zostaną przeniesione do różnych witryn, jeśli można znaleźć lepsze funkcje (tj. Obsługiwane są konkretne licencje, lepsza kontrola wersji, lepsze narzędzia do śledzenia błędów itp.). Już wymieniłem kilka. Najpopularniejsze są IMHO, github, kod Google i sourceforge. Launchpad (używa kontroli wersji bazaru) to miejsce, w którym odbywa się większość prac nad Ububtu / Linux.
Evan Plaice

2
@AdityaGameProgrammer (cd.) Github, sourceforge i kod Google to kipiące masy projektów. Ponieważ sourceforge istnieje już dłużej, prawdopodobnie znajdziesz o wiele więcej martwych / osieroconych projektów. O wiele łatwiej jest znaleźć projekt do przyłączenia się, jeśli najpierw poświęcisz trochę czasu na zastanowienie się, co Cię interesuje. Wyjątkiem jest, jeśli chcesz zorganizować własny projekt. Następnie poświęć trochę czasu, aby rozejrzeć się za funkcjami, które najlepiej pasują do Twojego zwykłego procesu programowania.
Evan Plaice

Dzięki. Moje wcześniejsze próby znalezienia jednego na sourceforge doprowadziły mnie do ogromnej liczby martwych / osieroconych projektów.
Aditya P

28

Oto, co proponuję, aby znaleźć idealne dopasowanie:

  1. Jeśli masz projekt typu open source, z którego już korzystasz, znasz go i którym się interesujesz, powinien on być pierwszym kandydatem do wypróbowania. Inaczej myśleć o tym, co będzie chciał robić w ogóle i szukać projektu w tej dziedzinie.

  2. Kiedy znajdziesz potencjalny projekt, nie spiesz się. Spróbuj użyć go sam. Czy jest tak dobry w akcji, jak się wydawało z opisu i recenzji? Jeśli nie, nie jest to kompletny ogranicznik pokazu; może jest to okazja, aby wskoczyć i naprawdę coś zmienić. W końcu nikt nie potrzebuje innego programisty, aby uzyskać idealny produkt. Daje to jednak ważne informacje na temat tego, czy chcesz wziąć udział w tym projekcie, a jednocześnie zyskujesz doświadczenie z nowej technologii w obszarze, który Cię interesuje.

  3. Również zanim zaczniesz inwestować zbyt dużo czasu w projekt i poznać jego tajniki, zastanów się nad listami dyskusyjnymi projektu, forami, a nawet systemem śledzenia błędów przez kilka tygodni. Jeśli zaczniesz regularnie przyczyniać się do projektu, poświęcisz mu dużo czasu.

Zastanów się: czy lubisz się tam kręcić, czy może jest to dla ciebie trudne? Czy wydaje się, że ten projekt ma dobrą i energiczną społeczność, czy powoli umiera? Czy wydaje się, że rdzenni ludzie zachęcają przybyszów i mentorują ich, czy będziecie sami?

Wykonaj te czynności dla kilku projektów, potencjalnie w różnych obszarach, a prawdopodobieństwo dołączenia do niewłaściwego zespołu jest mniej prawdopodobne. Takie doświadczenie może potencjalnie zniechęcić cię do powtórzenia tego w przyszłości.

Jeszcze kilka myśli:

Jeśli projekt, który naprawdę Cię interesuje, jest głośny, z wieloma programistami i aktywnością wokół niego, prawdopodobnie będziesz miał trudność z ustaleniem wystarczającej reputacji, aby uzyskać, powiedzmy, przyznanie praw lub interesującą rolę w społeczności. W takim przypadku rozważ dołączenie do powiązanego projektu ubocznego o mniejszej widoczności. Na przykład zamiast próbować przyczyniać się do jQuery, spróbuj znaleźć wtyczkę jQuery, która będzie dla ciebie odpowiednia. Później możesz rozważyć „przejście w górę”.

Jeśli podoba Ci się projekt, ale czujesz się zastraszony jego rozmiarem, złożonością lub wymaganiami dotyczącymi jakości kodu, rozważ rozpoczęcie od roli pomocniczej, takiej jak testowanie, konserwacja dokumentacji lub weryfikacja raportu o błędzie. Jeśli zapytasz na liście mailingowej projektu, jakiej pomocy potrzebują w tej chwili, chętnie cię tam poprowadzą. :)

W ten sposób poznasz projekt i zbudujesz tam swoją reputację, przyczyniając się do niego znacznie więcej, niż gdybyś zaczął przesyłać łaty niespełniające standardów, które byłyby wielokrotnie odrzucane, dopóki nie będą gotowe.

Ostatni i najważniejszy: jeśli zostaniesz spalony w jednym miejscu, idź dalej; nie poddawaj się.

Mam nadzieję, że to pomaga.


2
+1 dla „rozważ rozpoczęcie roli pomocniczej”. Pisanie testów jest naprawdę łatwe, a dokładne przyjrzenie się testom daje dobre wyobrażenie o tym, co kod stara się osiągnąć. Dokumentacja to dobry sposób na zrozumienie „większego obrazu”, a weryfikacja błędów jest dobrym punktem wejściowym o niskiej barierze do przełamania lodów. Praca nad rzeczami, które programiści zwykle zaniedbują, pokazuje, że Twoim celem jest poprawa projektu, a twój wkład nie polega wyłącznie na ego. Problemy z ego mogą utrudniać życie opiekunom projektów, dlatego muszą uważać na tego rodzaju rzeczy.
Evan Plaice,

9

Zdecydowanie polecam znalezienie projektu open source, który ma szczere zainteresowanie i którego aktywnie używasz .

Powód jest prosty: robi różnicę między obowiązkiem a hobby.

Spójrz na swój komputer. Jakie oprogramowanie na nim zainstalowałeś, czyli Open Source? Domyślam się, że to Chrome lub Firefox, a może klient Open Office lub Instant Messenger. Czy są idealne, czy jest tylko drobiazg, który chciałbyś zmienić, gdybyś mógł?

Jeśli tak, to nadszedł czas, aby coś z tym zrobić.


8

Proponuję znaleźć (lub rozpocząć) projekt tak jak ludzie robili od lat, zacznij używać oprogramowania Open Source do robienia rzeczy. Może się to wydawać trywialne, a może nawet zbyt uproszczone. Jednak naprawdę trudno jest opisać satysfakcję z używania czegoś, znalezienia błędu, pobrania źródła i naprawienia go. Lub może go zmienić, aby działał tak, jak chcesz.

Nie rąbaj też po to, żeby się zaangażować. 95% moich łat do jądra Linuksa nigdy nie ujrzy światła dziennego, wiem na pewno, że nikt nie chciałby ich poza mną, i prawdopodobnie byłbym zmuszony poddać się ocenie psychiatrycznej, gdyby jakikolwiek inny kompetentny haker jądra kiedykolwiek je widział. Ale nadal cieszę się z mojej realizacji, piglatin_printk()która rozpoczęła się jako gag 1 kwietnia kilka lat temu :)

Chociaż tak, uzyskanie kodu i procesu myślowego przed wieloma innymi kompetentnymi osobami jest bezcenne, podobnie jak nauka komunikacji i współpracy. Projekt solo to świetny sposób, aby pokazać ci, czego nie robić. Wskazówka to coś więcej niż tylko oprogramowanie do kontroli wersji, listy mailingowe i narzędzie do śledzenia błędów.

Aby zacząć, proponuję kopanie wokół Ohloh znaleźć oprogramowanie, które może być zainteresowany w użyciu , jako pierwszy. Pobierz go, zbuduj, baw się nim. Następnie idź złap coś innego. W końcu zaczniesz chcieć coś ulepszyć lub uświadomisz sobie, że masz ochotę wprowadzić coś zupełnie inaczej niż to, co znalazłeś.

Kolejną rzeczą, która pomaga, jest praca dla otwartej przyjaznej firmy. Moja firma intensywnie korzysta z Xen, więc nie mam problemu ze znalezieniem interesujących błędów i ich naprawieniem, ponieważ i tak musielibyśmy to zrobić. Nie mają również nic przeciwko pracownikom uczestniczącym w takich pracach, jak specyfikacje RFC i projekty specyfikacji, ponieważ ostatecznie będziemy wykorzystywać wyniki.


+1 piglatin_printk ()? Brzmi zabawnie. Chciałbym zobaczyć to w akcji. Nic dziwnego, że większość poprawek do jądra Linuksa została odrzucona. W tak krytycznym projekcie nie ma miejsca na zabawę / kreatywność. Na szczęście istnieje wiele mniejszych projektów, które mają znacznie niższą barierę wejścia do akceptowania kodu - nawet jeśli wkład wymaga trochę pracy przed zatwierdzeniem.
Evan Plaice

1
@EvanPlaice Nie zostały odrzucone, po prostu nigdy nie zostały przesłane;)
Tim Post

7

OpenHatch został stworzony specjalnie do tego.

Cytować:

OpenHatch to organizacja non-profit, której celem jest dopasowanie potencjalnych współpracowników wolnego oprogramowania do społeczności, narzędzi i edukacji.

Możesz przeglądać projekty według typu, technologii, wymaganego poziomu umiejętności itp. I znaleźć to, co pasuje do twojego poziomu.


Świetna mała strona :) Można również sprawdzić freecode.com
nha

4

Jedną z rzeczy, które wielokrotnie zauważyłem, gdy chodzi o ludzi, którzy chcą rozpocząć pracę nad oprogramowaniem open source, jest to, że ogarnia ich ogrom złożoności i ogrom dużych projektów. Kilka lat temu napotkałem ten sam problem i z własnego doświadczenia najlepiej nie patrzeć od razu na większe projekty.

Po spędzeniu czasu na oglądaniu projektów, które mogą mi się spodobać, zdałem sobie sprawę, że wciąż są poza moim zasięgiem, a potem zacząłem pracować nad bardzo małymi projektami. Chciałbym po prostu opublikować kod na Githubie, niezależnie od tego, czy jest on naprawdę istotny, czy też inne osoby zaczną go używać. W końcu ludzie mogą zacząć interesować się tym, co robisz. Nawet w przeciwnym razie zyskasz pewność siebie i umiejętności techniczne, aby powoli przechodzić do większych i bardziej popularnych projektów.


3

Istnieje nowa strona internetowa specjalnie dla tego o nazwie Code 52, która zachęca nowych programistów do angażowania się w open source, rozpoczynając nowy projekt OSS co tydzień.

Chodzi o to, że będzie to mniej zniechęcające dla osób, które nigdy wcześniej nie były zaangażowane w open source i miejmy nadzieję, że będą bardziej skłonne do angażowania się również w inne projekty OSS.


1
Patrzyłem na to i mam kilka notatek do dodania. Code52 jest kierowany przez 3 programistów z firmy Readify, którzy twierdzą, że zdobyli tytuł „Partnera roku 2012 firmy Microsoft”. Chociaż projekty są hostowane na GitHub, każdy z nich jest napisany w WinJS (tj. Docelowy Win8) i zawiera licencję publiczną Microsoft. Z pobieżnego wyglądu MPL jest kopiowane, ale ma pewne ograniczenia wymagające od instrumentów pochodnych dziedziczenia tej samej lub podobnej licencji. To znaczy bardziej przypomina licencję GPL niż znacznie mniej restrykcyjną licencję MIT.
Evan Plaice

Projekt wygląda bardzo atrakcyjnie, ale nie mogę się oprzeć wrażeniu, że jest to nowo powstały program Digital Sharecropping Open Source Developer stworzony przez Microsoft w celu zapełnienia nowego ekosystemu Windows 8 bez wydawania ani grosza. Nie brzmi jak czapeczka z cienkiej folii z brodą na szyi, ale MS nie ma najlepszej reputacji, jeśli chodzi o integrację z Open Source.
Evan Plaice

1
-1 Wygląda na to, że ta strona w zasadzie zmarła (nie więcej aktualizacji) ponad rok temu
Michael Durrant

3

Polecam lekturę: http://open-advice.org/ .

Ma na celu pomoc tym, którzy tworzą i utrzymują społeczności, oraz tym, którzy nie są pewni, do której chcą się przyłączyć lub jak to zrobić.

Jeśli to nie wystarczy, znajdź projekt, który ma misję, która rezonuje z tobą, lub rozwidl się i wnieś wkład w taki, który jest już dla ciebie użyteczny.

Powodzenia.


3

Kiedy zaczynałem, szukałem opcji online i znalezienie początku, w którym można zatopić zęby, okazało się trudne.

Do niektórych projektów trudno jest przyczynić się nie dlatego, że są zbyt zaawansowane, ale dlatego, że społeczność nie jest przyjazna. Więc nie zniechęcaj się, gdy uderzysz w ścianę.

Podczas wyszukiwania postanowiłem stworzyć listę 10 projektów open source, które początkujący mogą zacząć wspierać bez stresujących procesów. Oto link do użycia:

Dziesięć projektów dla początkujących do wsparcia i nauki

Mam nadzieję, że okaże się to pomocne i zawsze możesz dodać więcej, jeśli znajdziesz fajne!


czy mógłbyś wyjaśnić więcej na temat tego, co robi i dlaczego polecasz to jako odpowiedź na zadane pytanie? „Tylko odpowiedzi” nie są mile widziane na Stack Exchange
gnat

2

Sugeruję, aby rozpocząć projekt samodzielnie na interesujący Cię temat.

Wiele można się nauczyć, pracując nad projektem w ogóle. Nie trzeba sprawdzać, jak ktoś inny koduje, aby dowiedzieć się, jak lepiej kodować. I czasami rzeczywiście zobaczysz, czego nie robić, ponieważ inni ludzie często nie są bardziej doświadczeni niż ty.

Zwykle pomaga zobaczyć kod innej osoby, ale kod innego użytkownika napotkasz w swoim projekcie tylko za pomocą używanych bibliotek i komponentów.

Doświadczenie nauczy cię dobrych i złych praktyk.


1
Chociaż myślę, że to świetny pomysł, robienie tego jako projekt dla początkujących może być zastraszające. Zwłaszcza, gdy nie masz recenzji kodu ani innych osób, które mogłyby dodać dane wejściowe. Moje własne projekty przeszły wiele przeróbek i tysiące wierszy kodu, ponieważ nikt nie powiedział mi, że X jest lepszy, problem nadal mam. Dołączenie do ustalonego projektu znacznie przyspieszy naukę
TheLQ

@TheLQ: Wydaje mi się, że to zależy od twojego doświadczenia, zrobienie czegoś od zera nauczy cię wielu lekcji i rzeczy, których nie nauczyłbyś się, dołączając do zespołu, który ma już wiele rzeczy do zrobienia. Moim zdaniem są dobre i złe strony o twoim lub cudzym projekcie.
Brian R. Bondy

@TheLQ Całkowicie się zgadzam. Dołączenie do już istniejącego projektu jest bardzo cennym doświadczeniem, ponieważ daje wyobrażenie o tym, w jaki sposób zarządza się projektami typu open source i jak zorganizowana jest organizacja. Po pracy nad czyimś udanym projektem, krokiem do stworzenia własnego projektu był spacer po parku.
Evan Plaice,

2

Jestem właścicielem projektu w kodzie Google i szukam współpracowników. (Jednak nie wykorzystam tej odpowiedzi do celów reklamowych). Dlatego moja opinia może być dla Ciebie interesująca.

Najpierw musisz dowiedzieć się, co Cię interesuje. Następnie rozwinąć wiedzę specjalistyczną w niektórych dziedzinach związanych z Twoimi zainteresowaniami. Następnie znajdź projekt, w którym twoja wiedza jest wymagana i potrzebna.

Im mniejszy projekt, tym mniej współpracowników już tam jest, tym większe są szanse na znalezienie współpracowników i można skontaktować się bezpośrednio z autorami / właścicielami projektu. Powiedz im a) jaka jest twoja wiedza specjalistyczna b) gdzie widzisz, że można ją zastosować w projekcie c) co według ciebie możesz osiągnąć.

Pamiętaj: znajomość jednego lub dwóch głównych języków programowania nie jest wiedzą specjalistyczną.


Jak doradziłbyś komuś, kto powinien zająć się określaniem, czym jest zainteresowany, lub zdobywaniem wiedzy specjalistycznej w tych obszarach?
Adam Lear

2
@Anna Nie jestem pewien, czy rozumiem twoje pytanie. Mam na myśli setki tematów - od rzeczy niskiego poziomu, takich jak protokoły sieciowe lub wewnętrzne działanie GPU, po wysoce abstrakcyjne, niemal matematyczne tematy (parsowanie, systemy typów, teoria kategorii itp.). Największy geniusz nie opanuje ich wszystkich i będzie szczęśliwy, mając kogoś, kto jest ekspertem w dziedzinie, w której on, geniusz, nie jest. Ale jakie są twoje zainteresowania, kto może to powiedzieć poza tobą?
Ingo

1
Tak, odkrywanie zainteresowań jest być może dość osobiste (lub rada oznacza „spróbuj różnych rzeczy i zobacz, co lubisz”), ale co z zdobywaniem wiedzy specjalistycznej? Mówisz, że to coś więcej niż znajomość kilku języków. Biorąc pod uwagę nowy temat / przedmiot, co byś zrobił, aby zdobyć tę wiedzę? Dla mnie dołączenie do projektu OSS byłoby częścią tego procesu, ale jeśli dobrze cię czytam, sugerujesz, abyś był ekspertem przed dołączeniem do projektu.
Adam Lear

Co ja bym zrobił? Czytać książki. Czytaj pliki PDF. Porozmawiaj z kimś, kogo znasz lub w sieci. Wypróbuj coś. Ćwiczyć. Odpowiedz na wszystkie pytania dotyczące SO dotyczące tego tematu. Pewnego dnia zauważ, że niewielu wie lepiej od ciebie. - Nie bierz mnie zbyt dosłownie w odniesieniu do „eksperta”, ale pamiętaj, że w projektach open source, ponieważ jest to dobrowolne, nie ma sposobu, aby zmusić kogoś do pracy - stąd ludzie, którzy wiedzą, co robią i którzy chcą aby to zrobić , są bardzo mile widziane.
Ingo
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.