Hvordan samarbeide på GitHub

Hvis du ikke allerede vet, er GitHub en utrolig effektiv måte å samarbeide på utviklingsprosjekter. Gir et sted for alle som har en Internett-tilkobling for å ha en avenue hvor de kan dele koden med verden gratis (for ikke å nevne de robuste støtteverktøyene for kildeinspeksjon og enkel visning av begåhistorier). GitHub har blitt vedtatt av mange store open source-prosjekter som deres primære hjem for samarbeid og bidrag.

Men hvordan går du med og bidrar til et prosjekt? Jo, du vet hvordan du bruker Git til å spore endringer i filer og skyve disse filene til en server. Men det er store fordeler med å bli involvert i større open source-prosjekter, og GitHub er uten tvil det beste stedet å starte. I dag skal vi diskutere noen få veieregler for samarbeid på åpen kildekodeprosjekt, og gi deg den kunnskapen og intuisjonen du trenger for å bli involvert.


Start Liten

Ikke vær redd for å starte små

En av de viktigste tingene å forstå når du kommer i gang med samarbeid om open source-prosjekter, er å gjenkjenne din rolle. Ofte er det mange ting du som utvikler kan gjøre som ikke involverer å være en ekstremt smart programmerer. Faktisk er frykt for å være en utilstrekkelig programmerer ofte en grunn til at folk ikke blir involvert i open source-prosjekter til å begynne med. Ikke vær redd for å starte små: i stedet for å prøve å fikse en stor feil eller omskrive en hel modul, kan du prøve å finne ting som mangler i dokumentasjon eller tester på tvers av enheter, eller til og med enkle syntaksfeil og grammatikkproblemer (som denne fra GitHub bruker mzgol).

Disse oppgavene er en god måte å få foten i døren som en bidragsyter til prosjektet uten å prøve å ta på seg mer enn du kan håndtere. Registrer deg for CodeTriage for å få automatiserte GitHub-problemer sendt til innboksen din. Hvis man treffer innboksen din som du føler deg trygg på, kan du ta på, jobbe med den og sende en forespørselsforespørsel. (Vi snakker om hvordan du gjør det litt lenger nede i innlegget.)


Lær prosjektets økosystem

Med en samarbeidsprosess har et sett av konvensjoner trolig blitt vedtatt. Dette kan inkludere et ordforrådssett, en måte å bidra til og formattere forpliktende meldinger, en viss samarbeidsrytme som bidragsyterne har avtalt, eller til og med syntaktiske standarder som er etablert. Før du prøver å bli involvert i et prosjekt, les alle dokumenter relatert til disse tingene. For eksempel har GitHub standardisert a CONTRIBUTING.md fil (se retningslinjene for å bli involvert med jQuery for et grundig eksempel). Disse veiledningene vedlikeholdes av folkene som også opprettholder kodebase og master gren.

En annen måte å forstå prosjektets økosystem på er å bare se på eksisterende kodebase og git logg. Å lese gjennom commit-meldingene og lese gjennom kodestilen, kan fortelle deg mye om et prosjekt. Les gjennom prosjektets dokumentasjon, og bruk ordforrådet som brukes slik at bidragene dine opprettholder kontinuitet og viser en lignende stemme.

Når du er en del av prosjektets kulturelle økosystem, hvordan har du det egentlig bidra med kode?


Pull-Request Workflow for Code Contribution

Arbeidsflyten for bidragskoden kan virke skremmende først.

Arbeidsflyten for bidragskoden kan virke skremmende først. Det viktigste å huske er å følge de mønstre og standarder som skisseres av prosjektet du arbeider med (som vi allerede har diskutert). Den generelle arbeidsflyten som GitHub støtter, er ganske enkel.

  1. Fork målrepo til din egen konto.
  2. Klone repoen til din lokale maskin.
  3. Sjekk ut en ny "emneregion" og gjør endringer.
  4. Skyv emnet grenen til gaffelen din.
  5. Bruk diff viewer på GitHub for å lage en trekkforespørsel via en diskusjon.
  6. Gjør eventuelle forespurte endringer.
  7. Trekkforespørselen blir deretter slått sammen (vanligvis i hovedgrenen), og emnet grenen slettes fra oppstrøms (mål) repo.

I denne arbeidsflyten ser du kanskje mange variasjoner for et gitt prosjekt. For eksempel varierer navngivningskonvensjonene for emnegrener. Noen prosjekter bruker konvensjoner som bug_345, hvor 345 er ID # av et GitHub-problem som er arkivert. Noen prosjekter foretrekker kortere forpliktelser enn andre. Her er en rekke kommandoer som vil fullføre arbeidsflyten ovenfor.

Trinn 1: Forking

Fork repo på GitHub.com



Trinn 2: Kloning

Klon repo ved hjelp av nettadressen i høyre sidefelt:

git klone [email protected]: jcutrell / jquery.git

Trinn 3: Legge til oppstrøms-fjernkontrollen

Bytt inn i klonet katalog og deretter på dette punktet kan du legge til oppstrøms fjernkontrollen:

cd jquery git fjernkontroll legg til oppstrøms [email protected]: jquery / jquery.git

Dette vil nå tillate deg å trekke inn endringer fra kilden lokalt og slå sammen dem, slik som:

 git hente oppstrøms git fusjon oppstrøms / master

Trinn 4: Sjekk ut en emnetavdeling

Men før du lager dine egne endringer, må du sjekke et emneområde:

git checkout -b enhancement_345

Trinn 5: Forplikte

Nå kan du gjøre endringene dine, og opprette en forpligning som sporene bare de endringene.

git commit -am "legger til et smileyface til dokumentasjonen."

Trinn 6: Pushing

Deretter skyver du dette emnet grenen til din egen gaffel av prosjektet.

git push-opprinnelsesforbedring_345

Trinn 7: Opprette en trekkforespørsel

Til slutt vil du opprette en trekkforespørsel. Først, gå til gaffelen din i repo. Du kan se en "dine nylig pressede grener", og i så fall kan du velge "Sammenlign og trekk forespørsel". Ellers kan du velge avdelingen din fra rullegardinmenyen, og deretter klikke "Pull Request" eller "Sammenligne" øverst til høyre for reposeksjonen.


Lag en forespørselsforespørsel via Sammenlign og trekk forespørsel knapp.

Opprette en trekkforespørsel via avgreningsmenyen.

Enten av disse tar deg til en side der du kan opprette en trekkforespørsel og kommentere forespørselen. Denne siden inneholder også en visualisering av endringene du har gjort. Dette gjør det enkelt for prosjektadministratoren å se hva du har gjort og ta enklere beslutninger om det er hensiktsmessig å slå sammen din forpliktelse. Hvis de har spørsmål, kan de spørre dem i kommentarene; de kan også be deg om å rydde opp din forespørselsforespørsel og sende inn igjen, og deretter lukke trekkforespørselen.

Vær oppmerksom på at det er utrolig viktig at du viser administratorene en full respekt for prosjektet; Tross alt kan du alltid bruke din gaffelversjon av koden, og hvis de valgte ikke å trekke inn endringene, er det fordi de har muligheten til å gjøre det. Husk, ifølge Github Employee Zach Holmans inntak i "Hvordan GitHub bruker GitHub til å bygge GitHub", er trekkforespørsler samtaler. Slik skal de behandles; i stedet for å forvente at du forplikter deg til å bli akseptert, bør du bare forvente at det vil åpne samtale om koden du skrev.


GitHub Problemer + Pull Requests = Prosjektledelse Zen

GitHub tilbyr GitHub Issues, som er en robust måte å lage dokumenterte, interaktive, automatiserte samtaler om feil eller funksjoner for et gitt prosjekt. Mens problemer kan deaktiveres, er de aktivert som standard. Det er mange fantastiske funksjoner som problemer har innebygd, men en av de viktigste funksjonene er integrasjonen med trekkforespørsler. En bruker kan referere til et problem i sin forpliktelsesmelding ved bare å inkludere nummerets nummer i commit-meldingen. For eksempel:

git commit -am "Legge til en header; fixes # 3"

Denne meldingen vil automatisk markere problemet # 3 som lukket når den tilhørende trekkforespørselen er akseptert. Denne typen automatisering gjør GitHub til et fantastisk verktøy for utviklingsprosjektledelse.


Søk etter sekundære kanaler for samarbeid

Ofte har store åpenkildeprosjekter nytte av mange forskjellige typer samarbeid.

Ikke bli fanget opp og tenk at den eneste måten du kan bidra med, er gjennom trekkforespørsler. Ofte har store åpenkildeprosjekter nytte av mange forskjellige typer samarbeid. For eksempel var et prosjekt som Ruby on Rails beryktet for det samfunnet; dette fellesskapet ville svare på spørsmål på forum og i IRC chatroom for å bidra til å bygge kunnskap om rammen, og også kunne bidra til å drive fremtidens retning for rammen ved å snakke om ideer og avdekke feil.

Disse samarbeidskanaler åpnes vanligvis som støttemiljøer som nevnt tidligere, for eksempel fora og chatrom. Det kan også være e-postkjeder, møter eller konferansesamtaler som bidrar til å definere prosjektets retning og skape et livlig, produktivt samfunn rundt prosjektet. Uten denne typen fellesskap er trekkforespørsler langt mindre effektive.


Mest av alt, det handler om din holdning

Husk at åpen kilde er drevet av folk som har den holdningen som deler kunnskap og bygger samarbeidende intelligens, er et verdifullt arbeid. Ditt engasjement i disse prosjektene vil være mest effektivt hvis du nærmer deg et gitt prosjekt med den nysgjerrige holdningen som spør "hvordan kan jeg hjelpe?" heller enn en lukket holdning som sier "Jeg skal hjelpe, men jeg vil." Folk i open source-verdenen ønsker å jobbe med folk som er oppriktig drevet for å hjelpe andre.


Konklusjon

Hvis du er interessert i å bli involvert i et åpen kildekode-prosjekt, flott! Husk at hvis du nærmer deg prosjektet med riktig holdning og begynner liten, kan du se navnet ditt på trekkforespørsler sammenføyet til kode som distribueres til mennesker over hele verden og brukes hver dag. Ta deg tid til å lære om prosjektet og menneskene som er involvert i prosjektet. Utvikle en reell interesse for å hjelpe prosjektet til å bli bedre. Kraften til GitHub og åpen kildeverden fortsetter å vokse hver dag; begynn å samarbeide med andre utviklere, og du kan være en del av den verden!