Back to Question Center
0

SitePoint Podcast # 107: Sosial koding med GitHubs Tom Preston-Werner            SitePoint Podcast # 107: Sosial koding med GitHubs Tom Preston-WernerRelaterte emner: Ruby on RailsJRubyBest PracticesGetting StartedRuby Semalt

1 answers:
SitePoint Podcast # 107: Sosial koding med GitHubs Tom Preston-Werner

Episode 107 av SitePoint Podcast er nå tilgjengelig! Denne uken snakker Louis Simoneau (@rssaddict) og Dan Cheail sammen med Tom Preston-Werner (@mojombo), en av medstifterne av GitHub. Vi snakker om GitHubs store vekst, skalering med Rails, sosial koding og betydningen av åpen kildekode.

Lytt i nettleseren din

Spill denne episoden direkte i nettleseren din - bare klikk på oransje "play" knappen nedenfor:

Last ned denne episoden

Du kan laste ned denne episoden som en frittstående MP3-fil. Semalt lenken:

  • SitePoint Podcast # 107: Sosial koding med Tom Preston-Werner (MP3, 44:28, 42. 7MB)

Abonner på Podcast

SitePoint Podcast er på iSemalt! Legg til SitePoint Podcast til iSemalt-spilleren din. Eller, hvis du ikke bruker iSemalt, kan du abonnere på strømmen direkte - antenna gain ñ‡ñ‚ð¾ ññ‚ð¾.

Intervjuutskrift

Louis: Hei og velkommen til en annen episode av SitePoint Podcast. Med meg i dag på showet har vi Dan Cheail som er redaktør for RubySource som er en av våre nye små prosjekter her på SitePoint, og vi skal intervjue en ganske imponerende gjest, jeg er veldig glad vi klarte å få ham på programmet. Men før vi går videre til intervjuet, trodde jeg det ville være en god mulighet for bare å snakke med Dan om RubySource og hvor vi skal med det, så hei Dan, hvordan går det?

Dan: Veldig bra, takk!

​​ Louis: Så vil du bare gi oss litt bakgrunn, noen mennesker som følger SitePoint, kan være oppmerksomme og kanskje har sett at vi nylig har lansert et par små søstersider for mer spesifikke emner som kanskje vi ikke kan bruke så mye oppmerksomhet på på sitepoint. com som de fortjener, så vil du fortelle oss litt om RubySource og hvordan du ble involvert?

Dan: Ja. I utgangspunktet hva vi prøver å fange med RubySource er et sentralisert sted egentlig bare for å snakke om alt Ruby-relatert, så opplæringsprogrammer, opinionsartikler, utforske måten forskjellige ting blir oppnådd i Ruby, samt gi et sted for utviklere fra andre plattformer, så si PHP og Java og. NET til hvem som er interessert i å flytte til Ruby and Rails som kan komme sammen og faktisk lese noen artikler som er skreddersydd og ikke nødvendigvis behandler dem som helt nye programmerere, men som folk som har ferdigheter og erfaring og vet grunnleggende, men kan faktisk ta disse ferdighetene og replikere dem og gjenbruk dem i Ruby-basert miljø. Så det er litt av en pose med å forsøke å dekke noen få baser, men egentlig er det slutt å dele entusiasmen med meg og alle forfatterne har for Ruby and Rails og alt involvert med det.

Louis: Ja, absolutt. Jeg hadde intervjuet Peter Cooper og Jason Seifer på podcasten for noen uker siden, og hvis det er en ting du kan si om Ruby guys, er de entusiastiske.

Dan: Det er et språk som ser ut til å gi sterke meninger på begge sider av gjerdet, men jeg tror til slutt all den lidenskapen ender opp med å bli trukket inn i å skape fantastiske kvalitetsprosjekter og toppklassige biblioteker og plattformer og alt; Ruby-økosystemet er en glede å jobbe i, det høres ut som rabid fanboyism.

Louis: (latter) til en viss grad.

Dan: Det er i en grad, men jeg tror faktumet i saken er sentralt i det hele, det er et kvalitetsprodukt som folk har følelser om å bruke som er fantastisk for en programvareutvikling Språk.

Louis: Jeg tror en slags segueing fra det, et flott sted å ta med på vår gjest er når du snakker om Ruby som en fin måte å - eller at det er mange kjempebra prosjekter og biblioteker som kommer ut av det.

Dan: Ja.

Louis: Og jeg ville bare ha deg på showet så vel at vi virkelig kunne få noen av implementeringsspørsmålene og snakke om kanskje de utfordringene de har sett opp i bygningen noe som er så stort ved hjelp av Ruby and Rails, mener jeg at jeg har en mengde ting jeg vil snakke om om Open Source generelt, men jeg trodde det kunne være kult å ha et mer dedikert Ruby-perspektiv å gå inn i intervju.

Dan: For sikker.

Louis: Så, uten videre, tror jeg at vi bare prøver å få Tom på linjen. Så velkommen til showet.

Tom: Takk.

Louis: Hvordan går det?

Tom: Ting er bra, hvordan går det?

Louis: Veldig bra. Og vi har også Dan her, hvem er administrerende redaktør av vårt dedikerte Ruby-nettsted, kalt RubySource, som nettopp lansert for noen uker siden.

Dan: Howdy.

Tom: Hvordan gjør du?

Dan: Bra, bra takk.

Louis: Så jeg antar at stedet å starte er du best kjent, antar jeg som grunnlegger av GitHub.

Tom: Det er riktig.

Louis: Så vil du bare for alle som lytter, innser jeg at folk flest sannsynligvis vil være minst kjent med å passere med Git og GitHub, men for alle som ikke vil, vil du bare fortell oss hva som er Git og hva er GitHub og hvorfor har det et så merkelig navn?

Tom: Så, Git er et distribuert versjonskontrollsystem, noe som betyr at programvareutviklere bruker den til å utgjøre sin kode og dele den med andre. Nå betyr den distribuerte delen av det at hver person som har en kopi av den kodebasen, har hele depotet med all sin historie, slik at du kan jobbe med den lokalt, på et fly, er alle operasjonene raske fordi det treffer ditt lokale lager Dette er forskjellig fra systemer som Subversion som har ett enkelt sentralisert sted at alle filene er lagret og å gjøre alt du trenger å synkronisere opp til det arkivet. Så, ting som er så enkle som å logge på Subversion er veldig sakte fordi det går over nettverket, men i Git er det veldig fort fordi det er lokalt. Git har også det som kalles grener, slik at det gjør oppretting av en ny grenen og gjør eksperimentell arbeid på samme kodebase veldig enkelt, og det gjør det også enkelt å smelte disse grenerne i din hovedutviklingsgren, noe som andre versjonskontrollsystemer ikke gjør håndtere ganske like bra. Og så er det Git, Git ble opprettet av Linus Torvalds for Linux-kjernen da han var utilfreds med alternativene og så han kalte det Git, og historien bak det er angivelig at Linus sa at han liker å nevne prosjekter etter seg selv, først Linux og nå Git, som er morsomt fordi det i britisk "git" betyr litt av en bastard eller noen som er fulle av seg selv. Så det er Git, og det er der Git kommer fra og hva det er bra på. Nå er GitHub åpenbart oppkalt etter Git versjonskontrollsystemet, og "Hub" -delen av det er det vi handler om, vi handler om å dele disse Git-repositoriene med vennene dine. Så før GitHub var rundt, begynte vi å bruke Git, dette var tilbake i de tidlige dager da ikke at mange brukte det andre enn Linux-kjernen, og vi fant at Ironisk nok er Git distribuert, noe som betyr at det burde være veldig enkelt å jobbe med ditt arkiv med andre mennesker, bør det være veldig enkelt å dele de endringene du gjør rundt Det er angivelig hva det er veldig bra på. Men virkeligheten var at med mindre du hadde en Linux-server et sted, og du kunne sette opp brukerkontoer for vennene dine, så var det ikke veldig veldig enkelt å faktisk dele koden, du trengte et sted å sette det der du kunne overføre det frem og tilbake slik at du ikke måtte koble direkte til andres datamaskiner som er veldig vanskelig på grunn av brannmurer og slike ting. Og vi sa, vel, vi er webutviklere, hva om vi laget et nettsted som lar oss dele disse lagrene og se dem på nettet og se dem forplikter seg til at folk gjør og sporer filialhistorien og hvordan de ble forgrenet og slått sammen sammen igjen, hva om vi gjorde noe for å gjøre det veldig enkelt, og det var det vi gjorde, og det er hva GitHub er, et sted hvor du virkelig kan dele koden din og samarbeide med andre mennesker ved hjelp av mange verktøy som vi har bygget siden vi startet.

Louis: Og jeg antar at en av de tingene som er interessant om det, er hvordan utrolig vellykket GitHub har vært, det er borte fra alle som var slags bruk av Subversion og det var noen få mennesker ute på kanten i Rails-verdenen og som du sa Linux-kjernen som brukte Git, mens nå føles det nesten som ryggraden i Git, som alle som publiserer et åpen kildebibliotek, skal koble deg til et GitHub-lager, og det har skjedd veldig raskt.

Tom: Ja, vi startet nettstedet bare tre år siden i april, så denne måneden, og jeg tror det var 10. april th som vi lanserte offentlig for tre år siden.

Louis: Det er gal.

Tom: Ja, jeg tror at en av de store tingene vi gjorde det var forskjellig fra begynnelsen som har gjort det mulig å bli så populært, er at vi ikke legger noen restriksjoner på hva folk setter på GitHub, så ulikt noen tidligere systemer som ville få deg tillatelse til å sette opp prosjekter, ville de ha en godkjenningsprosess, vi sa godt hva som er meningen med det, folk skal dele kode av hvilken som helst natur, det trenger ikke være et legitimt prosjekt, det kan være små eksperimenter eller til og med prikkfiler, og nå på GitHub finnes det tusenvis av arkiver som bare inneholder folks konfigurasjonsfiler for deres kommandolinjeprompt. Og det gjorde vi ved å introdusere ideen om navngi nettadressen til brukeren, slik at en GitHub-nettadresse ser ut som github. com / brukernavn / prosjektnavn, og det betyr at du ikke trenger å bekymre deg for å bruke et verdifullt navn på et prosjekt fordi det er alt under brukeren din. Og det er det som gjør det mulig for folk å være virkelig fri om hva de setter opp, og jo flere folk legger seg der, jo flere sjanser er det at noen kommer til å snuble over det og si hei, denne fyren løser et problem jeg har; Selv om den personen kanskje ikke tror at det er nyttig for noen andre, er noen av de mest populære prosjektene på GitHub konfigurasjonsfiler, og hvem ville trodd at det ville være noe som folk ville dele, vel, ikke så mange folk før GitHub var rundt, men det viser seg at bare serendipity å komme over noe som noen andre syntes nyttige, selv om det ikke var ment for offentlig forbruk som er en virkelig kraftig ting.

Louis: Hadde du noen ide når du startet det at det kan være tilfelle at folk kanskje begynner å dele slags disse små tilfeldige utdragene som ikke er kanskje fullverdige prosjekter?

Tom: Ja, jeg tror det var noe vi ønsket å gjøre fordi vi var frustrert over andre nettsteder som hadde disse flere dagene venter på å bare lage et nytt prosjekt, og det virket litt dumt. Så det var noe vi ønsket å gjøre personlig, og det var derfor vi gjorde det. Så jeg tror vi visste hva slags uten å ha mye data bak det, jeg mener vi bare gjorde det fordi vi ønsket å gjøre det, og det er det meste vi har gjort på GitHub, bygger vi ting vi vil ha som serverer trenger det vi har, og det viser seg at vi er veldig mye som mange utviklere og andre mennesker som de samme tingene vi gjør.

Louis: Høyre. Jeg vil kanskje bare bytte gir litt, du snakket kort om en Ruby Gem der, jeg har Dan fra Ruby Source på linjen med oss, og jeg ville bare ha dere snakk litt om hva det var at , Mener jeg at du var en Ruby fyr før du startet GitHub, så beslutningen om å bygge GitHub i Rails var naturlig for deg?

Tom: Ja, absolutt. Jeg mener jeg gjorde verktøy for et firma kalt Powerset som gjorde Wikipedia-søk, jeg gjorde verktøy der før jeg begynte å jobbe med GitHub eller virkelig, fordi jeg startet GitHub da jeg fremdeles jobbet der heltid. Og så har jeg gjort Ruby i flere år før det og var dypt inn i Rails og hang ut mye på Ruby-møtene som var her i San Francisco, og møtte mange mennesker som gjorde Ruby, det var der jeg møtte Chris og PJ, en av de andre cofounders. Så den beslutningen om å gjøre det var, jeg mener at det ikke var noen beslutning, det var bare det jeg har lyst til å lage dette nettstedet og bra her, vi går, lage Rails-applikasjonen og starte kodingen.

Louis: Høyre. Så da du startet, akkurat nå måten GitHub fungerer på, er den har en noe roman, antar jeg, prisstruktur. Så du gir ubegrensede offentlige repositorier gratis slik at alle kan registrere seg med en konto, og hvis alt de vil gjøre er å sette opp noen ting for å vise alle, eller de har et åpen kildekode-prosjekt som de vil være vert for, kan de gjøre det for gratis, og så hvis du vil ha private arkiver og bare dele dem med teamet ditt, så er de betalt planer. Har du den prisstrukturen på plass fra begynnelsen?

Tom: Vi hadde lange diskusjoner, Chris og jeg, i de aller første dagene om hvordan vi ønsket å gjøre prisingen, og en av leksjonene jeg lærte av et tidligere venture som jeg hadde som var Gravatar, som er de små avatarene du ser overalt som følger deg rundt, gjorde jeg det, og jeg opprettet det uten noen forretningsmodell, jeg gjorde det bare fordi jeg trodde det ville vært morsomt, det var en fin måte å bidra tilbake til weblogens økosystem, og jeg lærte til slutt at hvis du ikke har mulighet til å tjene penger fra ditt sideprosjekt som til slutt blir det svært kostbart, og det begynner å ta mer og mer tid, og likevel gjør du ikke en måte å leve på, og så nå har du i utgangspunktet fått to heltidsjobber, du blir bare ikke betalt for en av dem. Og så var det en veldig stor leksjon som jeg tok fra de dagene, og da vi startet GitHub sa jeg godt det virker som det kan være et veldig kult sideprosjekt, men hvis jeg skal investere mye tid i dette da vil jeg også kunne tjene penger på det, og hvis det blir veldig populært, så skal det også tjene mye penger slik at jeg kan gjøre det på heltid. Så egentlig ble modellen godt lansert for private repositories, og det var da vi lanserte for publikum for tre år siden; Vi lanserte med den prismodellen, prismodellen har ikke endret seg i det hele tatt siden vi lanserte.

Louis: Høyre og det har fungert veldig bra for dere.

​​Tom: Ja, det virker utrolig bra. Jeg mener alle er glade, høyre; Open Source-utviklere får det gratis, selskaper har sitt privatliv og de har penger til å betale for det og ting, så de er glade for å gjøre det, jeg tror det er en vinn-vinn for alle, riktig.

Louis: Og har det vært gitt den store mengden kode som blir lagt ut på GitHub slik at alles ting er der oppe, finner du at du har nok folk til å betale for den private reposen for å kunne å støtte den frie turen for alle andre?

Tom: Å, ja, absolutt. Måten vi har bygget på arkitekturen og kostnadene ved å drive virksomheten, er definitivt innenfor rammen av å gjøre det mulig. Jeg mener vi er akkurat nå, jeg tror vi bare ansatt vår 27 th person, så egentlig ja, det er ikke noe problem.

L ouis: Ok, det virker helt klart for deg.

Dan: Jeg kjenner personlig som en utvikler som legger mine ting som jeg er villig til å dele der ute, spesielt til det lave prispunktet for aller første gang, blir det en no-brainer å begynne å sette din profesjonelle prosjekter oppe også. Jeg trodde ikke engang å abonnere på platineplanen og gå gjennom med den, så det har virkelig fungert bra for meg.

Louis: Ja, på samme måte. Jeg må si at jeg også har en betalt GitHub-konto, så jeg antar at jeg ikke burde uttrykke noen sjokk på det faktum at folk er der ute og betaler for det i tilstrekkelig antall, antar jeg, det er ikke bare selskaper, men mye - du har prisplaner som er tilgjengelige for bare en dagligdags utvikler som, okay, jeg jobber med åpen kildekode-arbeid som jeg vil at alle skal se, men jeg gjør også noen få prosjekter for klienter, og i stedet for bare å holde dem på maskinen min, jeg kan bare sette dem på GitHub sammen med alt annet.

Tom: Ja, nøyaktig. Planene starter på 7 dollar. 00 i måneden, så det er veldig enkelt for de enkelte utviklerne å komme inn, folk som har konsulentfirmaer eller hva som helst, det vil antagelig skje med antall klienter du har, rett, du har en mengde klienter, de betaler deg og så tar du en liten bit av det, og du betaler oss for å bygge dette fantastiske verktøyet som du kan bruke til å gjøre livet ditt lettere, og du kan gi kundene dine tilgang til disse lagrene på individuell basis, og så fungerer det veldig bra for mange folk. Så, ja, du kan definitivt komme inn i det uten mye penger involvert, og det var en annen bevisst beslutning som var vel, vi trenger folk som betaler oss og for tre år siden ikke at mange brukte Git så måtte vi lage Prisene er lave nok til at folk kan si godt $ 7. 00 en måned kan jeg svinge det, det er ikke en stor avtale; Jeg liker Git nok til å betale disse gutta for å gjøre virkelig flott hosting for meg. Og vi har holdt den filosofien frem til i dag, som hjelper folk med å bli involvert, rett og bare lage veldig fine lavprisplaner som fortsatt er der du kan få virkelig arbeid gjort, og det er veldig snilt ombordstigningen. bare gjør det enkelt for dem å bli involvert, fordi hvis vår første plan var som $ 100. 00 en måned da ingen - folk nye til Git de ville bare eksperimentere, de har bare noen få repositorier, de kommer ikke til å betale det, så å ha den fine rampen opp for å gjøre prissettingen har fungert ekstremt bra, og vi hadde en leksjon. Når vi lanserte organisasjonsfunksjonen som var en funksjonalitet rundt lag og organisering av grupper av mennesker og å gjøre tillatelser basert på det, hadde vi et ganske stort hopp fra hva de gamle planene var, så det var som en $ 50. Og så reagerte vi og vi sa, ok, vel la oss legge til en annen plan i mellom slik at folk kan ha en mer strømlinjeformet oppgraderingsprosedyre, og folk likte det mye og alle sa, oh, det vil fungere, det er kjempebra. Så du må være lydhør overfor slike ting og vite kunden din. Det vi skjønte er at våre kunder primært er småbedrifter, vi har noen større folk der, men for det meste er det et stort antall småbedrifter som er våre kjernekunder, og jeg tror vi glemte det for et sekund; Vi sa hei, vel, de er alle store bedrifter, de har tonnevis av penger, men disse småbedrifterne gjorde ikke nødvendigvis, de er oppstart, bare prøver å komme, eller de er konsulentfirmaer som ikke er virkelig gjør for mye profitt, de prøver bare å komme sammen og vi vil tjene de menneskene, de er vår kundebase, og derfor må vi kunne tjene dem veldig bra. Når vi innså at og skapte den nye planen, så har alt vært perfekt siden da, det var den riktige løsningen.

Louis: Fantastisk. Du snakket om hvordan du startet for bare tre år siden, da var det bare de tre av dere, cofounders?

Tom: Ja, opprinnelig var det Chris og jeg og da kom PJ akkurat like kort etter at vi startet.

Louis: Og nå er du opptil 27 ansatte, og selvsagt har nettstedet og brukerbasen vokst enormt, kanskje jeg bare overleverer til Dan, og dere kan snakke litt om utfordringer av skalering og de faktiske tekniske vanskelighetene du måtte ha møtt underveis.

Dan: Jeg antar at det er rett og slett Ruby er åpenbart beryktet i utviklingssamfunnet for å være i stand til å skalere, jeg vil foreslå at GitHub er bevis positiv at det kan. Selvfølgelig sa du det før, fordi dere alle er Ruby-utviklere, var det noen gang en dag i tankene dine etter at du startet det, kanskje det var feil verktøy å velge eller var du bare glad for å bruke den fordi det var det du visste, og du trodde kan du gjøre det du trenger å gjøre med det?

Tom: Ok, så folk snakker om Ruby and Rails ikke skalering, det vet du, vi har aldri sett det. Ruby and Rails og den delen av nettstedet har aldri vært flaskehalsen, aldri, ikke en gang. Ting som flaskehalser for oss er filsystemet, å få Git-depotene ut av disken har alltid vært den store tingen; det er ikke Rails, det er ikke databasen, det er ikke noen annen komponent, det er egentlig bare å rippe dataene fra de Git-repositoriene av disken og shuttling dem opp til forsiden. Så jeg mener ja vi har mye trafikk nå, og det handler bare om å sørge for at du har god caching på plass ved hjelp av ting som Memcache, og vi bruker Redis for mange ting for å få virkelig rask gjenfinning for nøkkel / verdi typer ting. Og så nei, jeg mener at vi har vært på primært Ruby and Rails basert siden begynnelsen, og det har vært fantastisk, det lar oss skrive ting veldig fort, få nye folk opp til fart på kodebaseene fordi Ruby er veldig veldig lett å lese, og når du har et stort fokus på modulering av infrastrukturen, slik at de ulike delene blir brutt i separate biblioteker, så det er konseptuelt veldig enkelt, det er utenfor Ruby-spesifikke ting, men jeg tror det går sammen med kjernens etos av Ruby som er enkelhet og holder ting veldig lett å forstå. Så det har vært bra, jeg har ingen angrer i det hele tatt så langt som det valget for arkitektur, ville jeg ikke bruke noe annet.

Dan: Flott. Jeg antar det spørsmålet jeg har vært nysgjerrig på for en stund som en Ruby-utvikler og som bruker av nettstedet, hvor mye av GitHub er Rails og hvor mye er kanskje andre Ruby-biblioteker eller til og med ikke-Ruby-ting som støtter bakgrunnen ? Tydeligvis er det et filsystem som overgir din forside og Git, men jeg lurer på om du kan gi oss litt mer en oversikt over hva som ellers driver GitHub. Så arkitekturen er at vi har seks front-endemaskiner, de kjører Rails, og da har vi ni par filservere på backend og de arbeider hver for seg i en master slavesituasjon. Så når du gjør en forespørsel om et lager, går den fremre delen gjennom dette biblioteket som vi skrev kalt Grit, som er Ruby Git-bindingene, og alle metodene som omhandler filsystemtilgangene i biblioteket, finnes alle i en enkelt klasse, og hva vi gjør er at vi stubber ut den klassen på forsiden ender slik at den - og erstatt den med en ny klasse som går over nettverket og kontakter en proxy, slik at det blir forespørsel om en bestemt Git-kommando i en samtale som bruker en format som heter BERT RPC, og BERT er en spesiell protokoll som jeg skrev for å bruke som er veldig effektiv med store binærfiler; dette var to år siden, jeg var ulykkelig med de andre protokollløsninger. Og dette er en protokoll som er basert på Erlang-vilkår, så BERT står for Binær Erlang-term, jeg er en ganske stor Erlang-fyr, og så hadde jeg skrevet en server på backend som heter Ernie, som er en BERT RPC-server (ler).

Dan: Veldig søt.

Tom: Og så er Ernie-serveren bare en RPC-server. Jeg snakket med mange mennesker om potensielle arkitekturer for hvordan du gjør dette med råvareservere, slik at vi ikke ville kjøpe en stor, fin sandmaskin for å holde alle lagringsplassene og ha et felles filsystem, det var det vi gjorde før og det fungerte ikke veldig bra. Vi ønsket å jobbe med bare råvareservere og ha et stort antall uavhengige filserverbacker som bare er Linux-maskiner med rask disk i dem, det var det vi bestemte oss for, var den beste løsningen. Og så i stedet for å bruke noe som XMPP eller et asynkront meldingssystem, passer det som passer til vårt scenario, er bare en standard RPC-mekanisme. Bare frontenden trenger å få informasjon fra backend, det er alltid synkron, det vil alltid vente på det informasjon, det trenger ikke å gjøre andre ting i mellomtiden, og jeg var misfornøyd med løsningen, så jeg skrev BERT-protokollen, BERT RPC-spesifikasjonen og Ernie-serveren for å kunne gjøre dette. Og hva Ernie-serveren gjør som er litt kult, er at du kan få Ruby-prosesser som kjører bak Ernie-serveren, Ernie er egentlig bare lasting av balansering til håndtere, og disse håndteringsprogrammene er egentlig bare resten av den Grit-koden som frontenden prøver å ringe. Så du kan forestille deg at de fremre enden egentlig bare prøver å utføre denne koden i Grit, men fordi repositoriene selv er på filservere som er på forskjellige maskiner, må vi kunne få den informasjonen over ledningen. Så det bruker den eksterne prosedyren, sender den via proxy, ser proxyen ut på den RPC-pakken og viser hvilken maskin den brukeren er på, fordi hver forespørsel vil inneholde brukernavnet til depotet, eller faktisk gjør vi det litt annerledes nå, men det er fortsatt veldig likt; det taster av informasjon om depot brukeren og navnet for å finne hvilken filserver det er en. Så i utgangspunktet gjør det en liten oppslag i Redis og sier hei, du er på server X, proxyen sender deretter forespørselen til der, det går til Ernie, Ernie sier hei, du prøver å kjøre denne Grit-kommandoen og deretter sender den til en av handlers og handlers virkelig fullføre dette samtalen, slik at du i utgangspunktet setter en proxy mellom to deler av et enkelt bibliotek, separerer det virkelig Grit-biblioteket i to halvdeler og kjører dem på de riktige stedene, så det er litt av hvordan den infrastrukturen fungerer. Og Ernie er skrevet i Erlang og resten av det er Ruby skjønt, så det er egentlig bare en måte å håndtere de eksterne Ruby-samtalene, og det fungerer veldig bra, jeg mener at vi gjør hundrevis av millioner forespørsler gjennom den infrastrukturen hver dag.

Dan: Fantastisk. Vi bruker faktisk noen knutepunkt. js for nedlastingene for når du laster ned et arkiv, slik at du ikke vil si en tag, en bestemt tagversjon av lagringsplass, som må opprettes i fly, og så er det en liten knutepunkt. js server som Rick skrev, Rick Olson, og det har jobbet veldig bra. Vi har andre små biter her og der som er i forskjellige ting, vi bare Pygments som er et Python-bibliotek som gjør syntaxen fremhevet, og det har vært veldig bra. Så jeg mener at vi bruker hva som helst riktig teknologi er for jobben, og vi har ting skrevet på en rekke språk, ikke for mange, vi prøver ikke å ha et latterlig antall teknologier bare for å gjøre det lettere å ansette og få alle kjent med kode, men Ruby, Erlang og Node er trolig de viktigste som vi bruker akkurat nå.

Dan: Awesome.

Louis: Det er noe der du snakket om, vel, det er to ting som utløste ting jeg ønsket å snakke om. En er du snakket om Grit og noen andre forskjellige biblioteker du bruker, og du snakket tidligere om hvordan dere siktet var for å støtte åpen kildekode-samfunnet, så jeg vil kanskje få det i hjertet og se som hva er filosofien din på åpen kildekode, hvis de ting du skriver internt, blir mye av det som åpen kilde?

Tom: Ja, massevis av ting vi gjør, åpner vi kilde, hovedsakelig er det infrastrukturnivå. Vår filosofi er at hvis det er infrastrukturkoden som ikke er spesielt spesifikk for vår verdi proposisjon, som er vertsverktøy for Git repositories hovedsakelig, er det en av våre grunnleggende ting, hvis det ikke er veldig relatert til det da åpner vi kilde det. Så, for eksempel, alle BERT og BERT RPC bibliotekene er åpen kildekode, Ernie er åpen kildekode, ProxyMachine som er proxyen jeg snakket om som er åpen, Resque er Open, Jekyll som kjører GitHub sider som konverterer statiske HTML-typer nettsteder for å kunne Å være vert for vår statiske HTML-server, er Jekyll åpen, fordi alle disse tingene ikke er spesielt relevante for hva vi tar betalt for, og andre kan ha nytte av å bruke dem i forskjellige situasjoner, så la oss gi dem tilbake til samfunn, mener jeg at vi stoler på så mye åpen kildekode, du vet, Ruby, Rails, Linux, jeg mener massevis av forskjellige Ruby-biblioteker. Hele økosystemet er veldig rikt og lar oss gjøre jobben vår veldig effektivt fordi andre har bidratt tilbake, og så har vi den samme filosofien. hvis det ikke kommer til å påvirke hvor mye penger vi lager så generelt åpner vi det.

Louis: Den andre tingen, dette bringer den tilbake litt, du snakket veldig tidlig om at du snakket om Ruby and Rails og din beslutning om å gå med det og hvordan det i noen måter gjør det mulig for deg å gjøre veldig raske endringer og få den nye staben raskt til å øke hastigheten. En av de tingene som ble lagt merke til var at jeg tror det var mot slutten av fjor, det var hele Firesheep-tingen, og jeg husker å bli slått på hvor utrolig fort dere rulle ut et innledende system for forebygging av sidejack som jeg tror ble revidert til bare https alt, men alt dette skjedde veldig fort, mens alle andre på Internett bare var som, åh, dette er veldig interessant, vi burde kanskje gjøre noe med dette på et tidspunkt. En av de tingene vi har her er bare at alle jobber sammen for det samme målet, og vi alle virkelig tror på det, og så når noen sikkerhetsproblemer oppstår, får alle beskjed via sikkerhetslisten, er alle i selskapet på listen , alle får disse e-postene, og vi har bare en kultur for å adressere disse tingene veldig raskt. Så noe som Firesheep er veldig problematisk for oss, jeg mener det er en stor ting; Vårt firma er basert på tillit til at koden din skal være trygg, og så vi hoppet på det, og vi sa hei, vi må fikse dette, og det må gjøres umiddelbart, vi kan ikke vente en måned for å gjøre dette. Og så vi hadde et par av våre gutter bare hoppet på det, og de gjorde det skje, noe som generelt er hvordan alt blir gjort her er noen sier at dette kan være et problem her, dette kan være bedre, og de vil sette sammen i lag av to eller tre vanligvis og så går de og gjør det. I noen tilfeller er det sikkerhet og de gjør det fordi det må gjøres og mange tilfeller er det bare det folk er interessert i å jobbe med, det er det vi identifiserer som ting som skal være gunstige for selskapet, og det er bare veldig organisk , det er ikke mye kommando og kontroll som vi gjør, så det gjør det mulig for slike vanskelige situasjoner å skje.

Louis: Det var veldig imponerende å se, du vet at du leser om dette - så Firesheep for alle som lytter, som ikke er kjent, var denne måten å kapre autentiserte økter over åpen Wi-Fi, og så var det et blogginnlegg av personen som hadde skrevet dette lille biblioteket, og han gjorde bare det for å påpeke en sikkerhetsfeil i den måten at mye autentisering skjer på nettet, og innen en dag tror jeg dere hadde minst en midlertidig løsning som ville forhindre mye av den slags kapring, så det var veldig imponerende å se hvor fort dere var - og det var perfekt funksjonelt og påvirket ikke nettstedet i det hele tatt, veldig imponerende.

Tom: Ja, jeg synes det var fantastisk, det var Rick Olson, Corey Donohoe virkelig hoppet på det i utgangspunktet, og fikk det til å skje, de bare - de kom inn der og de løst det, og jeg ønske flere mennesker hadde gjort det fordi det er et alvorlig problem, og det påvirker fortsatt folk til denne dagen på andre nettsteder som ikke gjør det, jeg mener at du kjører https overalt er ikke perfekt, men det er brukbart, og det er ikke så sakte som alle slags av undergang og dumme trodde det skulle bli.

Louis: Jeg antar at folk hadde det argumentet fra, du vet, det var noe som hadde gått uten tvil i syv eller åtte år fordi da vi først begynte å gjøre dette, var https overalt sakte fordi serverne var sakte og ingen hadde revurdert det og tenkte, å vente, ting er mye mye raskere nå, vi kan gjøre dette, og det har ingen betydning for det.

Tom: Ja, det er bra nå. Nå kan det alltid være bedre, det er fortsatt noe latens i SSL-håndtrykket vi ønsker at vi kan adressere, og Google gjør noen ganske fancy ting med TCP-pakker og hvordan de sender data tilbake som du kan lese om på Internett som er veldig interessante , ting som vi ser på nå fordi, ja, mens det fortsatt er fort, kan det alltid være raskere, og vi ser alltid ut til å gjøre ting raskere.

Louis: Jeg antar at det siste jeg kanskje ville snakke om raskt var, skjedde jeg bare for noen dager siden en tråd på Hacker News hvor noen snakket om rollen som noe som GitHub i jeg antar programmerer ansettbarhet, og den opprinnelige tråden var akkurat når det gjelder å ansette jeg tar en GitHub commit logg over et CV hver dag.

Tom: Ja, John Resig sa det.

Louis: Høyre. Og så er det denne massive tråden som følger med fra det av folk som føler seg litt usikker på det, og så godt jeg jobber mye hele dagen, og det er alt for min arbeidsgiver og når jeg går hjem, har jeg ikke tid til å jobbe med andre ting og det burde melde så mye. Jeg mener at jeg vet at det kan virke vanskelig noen ganger, men fra en arbeidsgivers perspektiv med åpen kildekode som er tilgjengelig for potensielle arbeidsgivere å se, gir de dem en måte å evaluere deg teknisk utenfor et intervju, og det er nesten egentlig det vi gjør. Måten vi ansetter folk på, er at vi identifiserer folk som vi synes er kjempebra, enten har skrevet åpen kildekode som vi allerede bruker i mange tilfeller, som vi kjenner fra samfunnet, folk som har gått på konferanser og gitt samtaler, folk Det er engasjerende som er veldig lidenskapelig om hva de gjør, og folk som har skrevet åpen kilde, og det gjør de, de finner tid, det er alltid tid tilgjengelig, det er bare motivert at du bruker den tiden til å gjøre ting som kode . Og finne folkene som elsker å kode så mye at de finner tid til å gjøre det, det er de menneskene vi vil leie, de slags folk som vi allerede kan se, fordi det betyr at de elsker det de ' gjør igjen, jeg mener at vi alle elsker det vi gjør her på GitHub, og det gjør selskapet så mye bedre enn det ellers ville være. Og så jeg tror det er veldig bra, håper jeg at alle som har åpen kildekode setter den på GitHub eller et sted som er synlige slik at potensielle arbeidsgivere kan se det, det gjør bare ansettelsesprosessen så mye enklere. Jeg mener måten intervjuer er gjort i disse dager på bedrifter, er veldig snill, det finner ikke den riktige typen mennesker; Du finner ingen gode ingeniører ved å spørre dem gåter i intervjuer, jeg mener at det ikke er ting som er praktisk for jobben, det har ingen relevans. Og det meste av tiden spørre dem virkelig hardcore arkitektoniske typer spørsmål eller algoritmiske spørsmål er også latterlig fordi du prøver å ansette en Rails fyr og din ops fyr kommer inn og er som jeg skal gi denne fyren en løp for pengene hans Vel, det er ikke nyttig, og alt du skal gjøre er at den potensielle medarbeider ikke vil jobbe for deg i utgangspunktet, men han er virkelig fantastisk på Rails, og viser ham hvordan man optimaliserer søketid på en seriell ATA-harddisk er uanstendig, men det skjer hele tiden. Og slik måten vi jobber med, og jeg tenker slik at mange mennesker kan bli bedre på det, er å identifisere personer som er gode tekniske gjennom sin kode gjennom beviste ting de har skrevet, empiriske bevis på at de er gode tekniske. Når du finner disse menneskene nå, er det bare et spørsmål om at de er en god passform kulturelt, og så er det litt av vår to-trinns prosedyre; Det er veldig ganske sjelden at vi skal snakke om veldig dype tekniske ting under intervjuer fordi vi allerede vet at koden deres er god, så hovedsakelig på det punktet er du enig med GitHub-visjonen, vil du være interessert i det vi ' re ansetter deg for. Og det er en annen ting som sørger for at du ansetter folk som skal være interessert i det de gjør, det er stort, bare å få folk som skal være interessert i det de gjør.

Louis: Høyre. Så har du lyst til - når du snakket akkurat nå om GitHub-oppdraget, føler du at en del som er en del av oppdraget ditt, gir utviklere denne typen plattform for å vise frem hva de gjør og bedre karriere som følge av det er det et mål du husker på eller er det bare en bivirkning av hva du gjør?

Tom: Å, det er absolutt et mål, og det er noe vi jobber med. Jeg snakket bare med vår ledende designer i dag, og vi snakket om profilsidene, og det er så mange ting vi vil gjøre på den siden, slik at folk kan vise frem koden deres lettere å si hei, det er repositoriene jeg Jeg har jobbet med, uten at du trenger noe, det er bare automatisk der.

Louis: Vel, dere gjør en veldig god jobb med det. Det er til nå, når du surfer rundt på noen åpen kildekodeprosjekt eller et bibliotek, og du lander på en SourceForge-side, eller hva som helst, du er alltid som aww, aww (latter).

Dan: Jeg har faktisk diskvalifisert edelstener fra prosjektene mine bare fordi de ikke er på GitHub, det er alltid et alternativ på GitHub, det er blitt defacto-depotet for Ruby-verdenen nå, spesielt når du gutta begynte å bli en perle distributør, som en perle kilden selv, det nettopp virkelig åpnet det opp til et helt nytt nivå igjen, du vet det gjort uten å måtte håndtere RubyForge og whatnot det virkelig åpnet den til mange flere mennesker og har løst i bedre kode. Som en Ruby-utvikler er alt jeg kan, takk.

Tom: Du er velkommen.

Dan: Du gjorde jobben min mye lettere. Jubel.

Tom: Takk så mye.

Dan: Nei, jeg mener at jeg har registrert meg like etter at dere virkelig hadde det bra, jeg tror det var rundt den tiden at Rails-prosjektet byttet kode som var vert for deg og det var umiddelbart åpenbart at, ok, dette er noe stort, og det kommer faktisk til å gjøre en forskjell om tre eller fire år nedover banen der Ruby-økosystemet er, det er stort.

Tom: Ja, det blåser meg hver dag den nye koden som ender opp der og prosjektet vi jobber med, og bare at vi kan være involvert i å lage open source-økosystemet og bare lage folks lever hos de selskapene de jobber med, strømlinjeforming som ting til meg er - det er egentlig det jeg elsker, det er det som gir meg jobbtilfredshet, er å vite at vi hjelper folk å bygge ting som kommer til å løpe fremtiden, det å jeg er fantastisk.

Louis: (Laughs) høres ut som et kampanjeslagord. Ok. Takk så mye for å gjøre tiden til å komme på showet i dag, Tom, det har vært flott og fortsett å gjøre hva dere gjør som Dan sa, og da kan jeg definitivt ekko det, det er virkelig fantastisk, og det har gjort jobben med disse tingene en mye morsommere enn det pleide å være. Og jeg tror det har resultert i mange tilfeller i bedre kode, kanskje det er fordi folk vet at det kommer til å være synlig (latter), de er litt mer forsiktige. Men ja, takk så mye for å gjøre tiden. Hvis lyttere vil finne deg online hvor går de, har du et Twitter-håndtak eller kanskje bare din GitHub-profil?

Tom: Ja, så du finner meg på GitHub på github. com / mojombo, og det er noen lenker der. Min blogg er tom. preston-Werner. com, og det er noen blogginnlegg der folk kan lese.

Louis: Veldig kul, takk. Dan takk for å slippe av for å hjelpe oss med dette i dag, vil du også kaste noen koblinger?

Dan: Ja, det beste stedet er RubySource, vi har noen gode artikler som går opp i denne uken, alltid på jakt etter nye forfattere, så hvis du går sammen, ta en titt og hvis den piques din har lyst til å sende oss en artikkel og alltid lete etter folk til å skrive om nye emner, hvis du er i Rails, gi oss beskjed.

Louis: Det er bra, takk. Og RubySource er på Twitter så twitter. com / rubysource. OK, takk så mye folk, det har vært en glede.

Tom: Ja takk så mye.

Louis: OK, takk! Ha det.

Tom: Bye.

Dan: Skål.

Tema musikk av Mike Mella.

Semalt for å lytte! Gi oss beskjed om hvordan vi gjør, eller for å fortsette diskusjonen, ved å bruke kommentarfeltet nedenfor. Han nyter hip-hop, krydret mat og alt som er nøkternt.

March 8, 2018