OpenAI

2 ta’ Novembru 2026

Inġinerija

Inwessgħu l-kapaċità ta’ Git f’OpenAI

Nibnu kontroll tal-kodiċi sors fuq l-iskala tal-aġenti filwaqt li ninvestu fl-ekosistema ta’ Git.

Minn Aaron Friel, Taylor Blau u Ted Nyman, Membri tal-Persunal Tekniku

Qed jillowdja…

Matul l-aħħar sena, id-daqs tal-monorepo tagħna u t-talbiet fuqu żdiedu b’pass tal-għaġeb. Kien ċar li kellna bżonn inġeddu s-sistema tagħna tal-kontroll tal-kodiċi sors biex tlaħħaq mal-livell ta’ xogħol simultanju li jagħmel possibbli Codex.

Bnejna Pando, backend ġdid għar-repożitorji Git, mingħajr ma interrompejna x-xogħol tal-inġinerija jew biddilna kif it-tim tagħna juża Git. Pando issa jħaddem l-iżvilupp kollu fil-monorepo ta’ OpenAI. Pando huwa mfassal biex jilħaq żewġ għanijiet ambizzjużi: l-ewwel, kitba li tista’ tespandi orizzontalment, ottimizzata għal pushes simultanji lejn ħafna fergħat. U t-tieni, jimmassimizza t-throughput tal-qari, biex il-klijenti jkunu jistgħu jniżżlu d-data malajr biżżejjed biex jużaw il-bandwidth kollu disponibbli tan-network tagħhom.

Ilħaqna dawn l-għanijiet filwaqt li żammejna l-kompatibbiltà mal-protokoll u l-klijent Git, biex kemm l-inġiniera kif ukoll l-aġenti tagħna setgħu jadottaw Pando bla xkiel fil-flussi tax-xogħol eżistenti tagħhom. Fl-ambjent tal-produzzjoni, Pando naqqas il-latenza medjana tal-push għal kważi ħamsa tal-valur preċedenti. Issa jwassal kważi petabyte ta’ data Git kuljum.

Hawnhekk se nispjegaw għaliex bnejna sistema ġdida tal-kontroll tal-kodiċi sors, u għaliex għażilna li nżommu l-kompatibbiltà ma’ Git. Se nqabblu s-sistema tagħna ma’ approċċi komuni biex tiżdied il-kapaċità ta’ Git, u nispjegaw għaliex Pando għandu kapaċità unika li jissodisfa l-ħtiġijiet ta’ skalabbiltà ta’ OpenAI. Niddiskutu wkoll x’hemm imiss, u kif se nkomplu nikkontribwixxu għal Git biex nappoġġjaw xogħol fuq l-iskala tal-aġenti.

Għaliex kellna bżonn sistema ġdida tal-kontroll tal-kodiċi sors

Codex biddel l-iskala u l-pass tal-iżvilupp f’OpenAI, u ppermetta lill-inġiniera jagħmlu ferm aktar xogħol b’mod parallel. Dan ifisser aktar fergħat u pushes, aktar għaqdiet, u aktar fetches u clones minn ambjenti tal-iżvilupp, kompiti ta’ riċerka u CI.

Dawn it-talbiet jakkumulaw u jkabbru lil xulxin. Inġinier wieħed issa jkollu diversi bidliet lesti għal CI fl-istess ħin, u kull push jista’ jwassal biex diversi kompiti jġibu l-istess commit.

Minn madwar tmiem is-sena li għaddiet, is-sistemi li jappoġġjaw il-monorepo tagħna bdew isibuha diffiċli jlaħħqu. Kellna fetches u pushes bil-mod, kif ukoll għaqdiet li fallew, u l-affidabbiltà kultant niżlet taħt id-90%. Konna lħaqna limitu ta’ Git innifsu, jew tal-mod kif konna nipprovdu aċċess għall-monorepo tagħna? Git twieled minn komunità li kienet tiskambja patches għall-kernel bl-email. Għal aktar minn għoxrin sena, l-iżviluppaturi adattaw l-għodod tagħhom madwar Git hekk kif inbidel il-mod kif jibnu s-software. Meta bdejna niltaqgħu ma’ ostakli fil-monorepo tagħna stess, kien importanti għalina li nkomplu nibnu fuq dak ix-xogħol.

Rajna mod kif inżommu dak il-fluss tax-xogħol familjari filwaqt li nibnu mill-ġdid il-backend biex jipproċessa pushes lejn fergħat differenti b’mod parallel u jipprovdi l-istess storja lil ħafna qarrejja fl-istess ħin. Billi bnejna fuq Git bħala l-pedament tal-fluss tax-xogħol tagħna għall-kontroll tal-kodiċi sors, it-titjib fil-klijent seta’ jkun utli wkoll barra OpenAI. Ridna nikkontribwixxu dak it-titjib mill-kopja tagħna ta’ Git⁠(jinfetaħ f’tieqa ġdida) għall-proġett oriġinali, biex naqsmuh mal-komunità usa’.

Inġinerija għal Git fuq skala kbira

L-espansjoni ta’ sistema tal-kontroll tal-kodiċi sors għandha żewġ dimensjonijiet essenzjali: ħafna kittieba jagħmlu push lejn fergħat differenti, u ħafna qarrejja jġibu l-istess storja. Pando jottimizza għat-tnejn.

L-ewwel, Pando jikkoordina l-aġġornamenti ta’ kull fergħa b’mod indipendenti. L-aġġornamenti ta’ fergħat mhux relatati jistgħu jsiru b’mod parallel, u qarrej li jġib fergħa jirċievi l-istorja meħtieġa għal dik ir-reviżjoni. Il-kompromess huwa li qarrej li jħares lejn diversi fergħat jista’ jarahom kif kienu f’mumenti differenti.

It-tieni, Pando jerġa’ juża l-packfiles (il-format ta’ Git biex jikkompressa diversi oġġetti flimkien) f’fetches differenti, minflok jiġġenera packfile individwali għal kull klijent. Klijent jista’ jniżżel xi oġġetti li diġà għandu, iżda s-server jista’ jipprovdi l-istess bytes lil ħafna klijenti bi ftit komputazzjoni.

Dawn l-għażliet iħalluna nżidu l-kapaċità tal-kitba bejn il-fergħat u naqdu t-talbiet għall-qari mill-caches. Biex naraw kif jaħdmu flimkien, nibdew minn kif Git jaħżen u jittrasferixxi l-istorja.

Introduzzjoni għall-ħażna tal-oġġetti f’Git

Git irid ikun jista’ jżomm żewġ partijiet ta’ repożitorju sinkronizzati: l-oġġetti u r-referenzi.

Repożitorju Git jirreġistra stati tal-fajls u l-istorja li torbothom bħala graff ta’ oġġetti. Oġġett jista’ jkun blob, siġra, commit jew tikketta. Il-blobs iżommu l-kontenut ta’ fajl individwali, u s-siġar jassoċjaw ismijiet ma’ blobs jew siġar oħra biex jiffurmaw struttura ta’ direttorji. Il-commits jippuntaw lejn siġra għerq u żero jew aktar commits ġenituri, u jiffurmaw l-istorja tar-repożitorju tiegħek.

L-oġġetti jiġu identifikati permezz ta’ hash tat-tip u l-kontenut tagħhom. L-oġġetti huma wkoll immutabbli: ir-reġistrazzjoni ta’ fajl mibdul toħloq blob ġdid, filwaqt li fajls u direttorji mhux mibdula jistgħu jerġgħu jużaw oġġetti eżistenti.

Il-fergħat u t-tikketti huma referenzi, jew “refs”, li jippuntaw lejn commits. Meta jsir commit fuq fergħa, jinħoloq commit ġdid u r-referenza tal-fergħa tiġi aġġornata biex tipponta lejh.

Il-fergħa refs/heads/main tipponta lejn il-commit C2, li l-ġenitur tiegħu huwa C1. C1 jipponta lejn is-siġra għerq T1, fejn parser.py jirreferi għall-blob B1. C2 jipponta lejn is-siġra għerq T2, fejn parser.py jirreferi għall-blob B2. Fiż-żewġ siġar għerq, docs/ jirreferi għall-istess siġra, T3. L-entrata README.md tagħha tipponta lejn il-blob B3, u usage.md jipponta lejn il-blob B4.

L-oġġetti Git jirreferu għal xulxin permezz tal-ID tagħhom: il-commits għas-siġar, u s-siġar għal siġar u blobs. Il-fergħa refs/heads/main tipponta lejn il-commit C2, li l-ġenitur tiegħu huwa C1. C1 jipponta lejn is-siġra għerq T1, fejn parser.py jirreferi għall-blob B1. C2 jipponta lejn is-siġra għerq T2, fejn parser.py jirreferi għall-blob B2. Fiż-żewġ siġar għerq, docs/ jirreferi għall-istess siġra, T3. L-entrata README.md tagħha tipponta lejn il-blob B3, u usage.md jipponta lejn il-blob B4.

Git jaħżen l-oġġetti jew fi stat “separat” jew fi stat “ippakkjat”. Oġġetti separati jinħażnu f’fajls individwali identifikati mill-ID tal-oġġett tagħhom. Oġġetti ppakkjati jinħażnu flimkien f’packfile, biex oġġetti simili jkunu jistgħu jinħażnu bħala differenzi relattivi għal xulxin.

Żewġ verżjonijiet ta’ parser.py jidhru taħt $GIT_DIR/objects. Bħala oġġetti separati, il-blob A fih parse(), u l-blob B fih kemm parse() kif ukoll parse_file(). Il-packfile jaħżen A sħiħ u jirrappreżenta B bħala struzzjonijiet biex jiġi kkupjat A kollu u tiżdied parse_file() fl-aħħar. Il-fajl *.idx li jakkumpanjah jillokalizza ż-żewġ blobs fil-packfile permezz tal-ID tal-oġġett.

Git jista’ jaħżen il-blobs bħala fajls separati jew jippakkjahom flimkien, billi jikkodifika blob wieħed bħala differenza relattiva għal ieħor.

F’Git, oġġett jista’ jintlaħaq minn commit jekk Git jista’ jsibu billi jsegwi l-links minn dak il-commit permezz tal-ġenituri, is-siġar u l-blobs tiegħu. Waqt fetch, il-klijent jgħid lis-server liema commits irid u liema diġà għandu. Is-server isib l-oġġetti li jistgħu jintlaħqu mill-commits mitluba, jeskludi dawk li jaf li l-klijent diġà għandu, u jibgħat il-bqija bħala packfile fl-istess format li Git juża fuq id-diska. Clone sħiħ jibda mingħajr ebda oġġett, għalhekk jeħtieġ l-oġġetti kollha li jistgħu jintlaħqu mill-istorja li qed tiġi kklonata.

Push jittrasferixxi l-oġġetti fid-direzzjoni l-oħra billi jitlob lis-server jaġġorna referenza waħda jew aktar. Il-klijent juża s-sett ta’ referenzi mħabbra mis-server biex jevita li jibgħat oġġetti li s-server diġà għandu. Għalhekk il-pakkett li jintbagħat jista’ jiddependi fuq oġġetti eżistenti: li tirċievi l-pakkett waħdu mhuwiex biżżejjed biex tibni mill-ġdid l-istorja l-ġdida.

Ir-replikazzjoni ta’ repożitorju Git tfisser li kemm l-oġġetti kif ukoll ir-referenzi jinżammu disponibbli fuq diversi servers. Qabel ma replika tkun tista’ tipprovdi l-valur ġdid ta’ referenza, trid tkun kapaċi tipprovdi l-oġġetti li jistgħu jintlaħqu minn dak il-valur. Is-servizz jeħtieġ ukoll jikkoordina aġġornamenti tar-referenzi li jikkompetu ma’ xulxin, jiġifieri pushes li jippruvaw imexxu l-istess fergħa mill-istess ponta l-qadima lejn commits ġodda differenti. Sistemi li jimponu ordni waħda fuq il-kitba kollha f’repożitorju jistgħu jġiegħlu pushes lejn fergħat mhux relatati jistennew lil xulxin.

Disinji eżistenti għal servizzi Git distribwiti

Waqt li fassalna Pando, evalwajna approċċi konvenzjonali biex inżidu l-kapaċità tal-kontroll tal-kodiċi sors b’Git: wieħed li jikkoordina l-aġġornamenti tar-referenzi bejn repliki tar-repożitorju b’commit bi tliet fażijiet (3PC, protokoll biex jikkoordina commit bejn diversi nodi), u ieħor li jordna l-aġġornamenti permezz ta’ reġistru kondiviż tal-kitba bil-quddiem (WAL, rekord ta’ bidliet miktuba qabel jiġu applikati) fil-ħażna tal-blobs.

Commit bi tliet fażijiet (3PC)

Fid-disinn ta’ commit bi tliet fażijiet li mmudellajna, is-servizz Git iżomm kopja sħiħa tar-repożitorju fuq diversi repliki. Meta kwalunkwe server jirċievi push, il-packfile li jasal jiġi kkupjat u mibgħut lir-repliki kollha b’mod parallel. Biex il-push jiġi ppubblikat, il-maġġoranza tar-repliki jridu jaċċettaw l-aġġornament tar-referenza. Is-server li jmexxi dan huwa l-koordinatur, u l-proċess jeħtieġ diversi ċikli ta’ komunikazzjoni bejn il-koordinatur u kull replika oħra.

Biex taċċetta aġġornament ta’ referenza, kull replika ssakkar il-kopja tagħha tar-referenza u tiċċekkja li għadha tipponta lejn il-commit li jistenna l-klijent. Il-koordinatur imbagħad jibgħat messaġġ ta’ qabel il-commit lir-repliki li jaċċettaw. Ladarba maġġoranza tikkonferma li rċeviet il-messaġġ ta’ qabel il-commit, il-koordinatur jgħidilhom iwettqu l-aġġornament. Kwalunkwe replika aġġornata mbagħad tista’ tħabbar il-ponta l-ġdida tal-fergħa mill-kopja lokali tagħha tar-repożitorju.

Iż-żamma ta’ repliki sħaħ tagħmilha possibbli li t-talbiet għall-qari jiġu moqdija lokalment, u tiggarantixxi li l-klijenti jaraw stampa konsistenti tar-referenzi kollha, tkun liema tkun ir-replika li jagħżlu. Għaldaqstant, ir-referenzi jiġu aġġornati waħda waħda, u kull push jeħtieġ diversi ċikli ta’ komunikazzjoni biex l-aġġornament tar-referenza jiġi kkoordinat bejn ir-repliki.

L-istennija għal quorum tagħmel il-ħin tal-push dipendenti fuq il-prestazzjoni tad-diski tar-repliki u l-latenza tal-komunikazzjoni. Hekk kif jiżdied il-volum tal-kitba, ir-repliki jridu jlaħħqu kemm mal-pakketti li jaslu kif ukoll mat-traffiku tal-qari.

Reġistru tal-kitba bil-quddiem (WAL)

Fid-disinn ibbażat fuq WAL li mmudellajna, is-servizz Git juża manifest kondiviż fil-ħażna tal-blobs biex jordna l-aġġornamenti fir-repożitorju kollu. Meta server jirċievi push, itella’ l-packfile li jasal f’maħżen tal-blobs u jħejji l-aġġornament tar-referenza fil-kopja lokali tiegħu tar-repożitorju. Biex jippubblika l-push, iżid entrata f’manifest kondiviż maħżun fil-maħżen tal-blobs, li tirreġistra l-aġġornament tar-referenza u tipponta lejn il-packfile. Is-server Git imbagħad jaġġorna l-manifest b’operazzjoni compare-and-swap. Din tissostitwixxi l-manifest b’mod atomiku, jew inkella tirrifjuta l-bidla. Jekk kittieb ieħor ikun aġġornah sadanittant, is-server jaqra l-entrati li żdiedu, jiċċekkja li l-aġġornament tar-referenza tiegħu għadu validu, u jerġa’ jipprova bil-packfile li diġà tella’.

Il-kittieba jistgħu jtellgħu l-packfiles tagħhom b’mod parallel, iżda anki pushes lejn fergħat mhux relatati jeħtieġu l-aġġornament tal-istess manifest. Il-ħin taċ-ċiklu sħiħ għal operazzjoni compare-and-swap li tirnexxi jillimita kemm-il darba r-repożitorju jista’ jippubblika manifest ġdid. Maħżen tal-blobs b’latenza baxxa jgħaġġel dan il-pass. L-ipproċessar f’lottijiet jippermetti lil manifest wieħed jaġġorna diversi referenzi fl-istess ħin, iżda jġiegħel l-aġġornamenti jistennew fi kju u jżid il-latenza.

Il-maħżen tal-blobs jista’ jirċievi packfiles b’mod parallel, iżda l-aġġornamenti tal-manifest kondiviż xorta jikkompetu ma’ xulxin. Iż-żieda fil-kapaċità tal-maħżen tal-blobs waħedha ma ssolvix dak il-punt ta’ konġestjoni. Kull replika xorta trid taqra u tindiċja l-pakketti mill-maħżen tal-blobs qabel tkun tista’ tipprovdihom lokalment. Jekk il-kitbiet jaslu aktar malajr milli jsir dak ix-xogħol, ir-repliki jaqgħu lura u l-klijenti jistennew aktar biex iġibu commits li jkunu għadhom kemm intbagħtu b’push.

Infasslu l-arkitettura ta’ Pando

Dan iwassalna għal Pando. Pando huwa arkitettura ġdida biex tipprovdi aċċess għar-repożitorji Git, bl-għan li tlaħħaq ma’ ħafna klijenti li jagħmlu push fl-istess ħin. Dan huwa kif taħdem:

Naħsbu mill-ġdid dwar ir-restrizzjonijiet

Qabel żviluppajna Pando, kellna l-ħsieb li stajna nissodisfaw ir-rekwiżiti tagħna mingħajr ma nagħmlu kompromessi fuq Git. Iżda kellna nagħmlu kompromessi fuq xi affarijiet li l-biċċa l-kbira tas-sistemi Git iqisu bħala rekwiżiti:

  • Konsistenza fir-repożitorju kollu: Biex tingħata stampa konsistenti tar-referenzi kollha f’mument partikolari, hemm bżonn koordinazzjoni fir-repożitorju kollu. F’sistema li tpoġġi l-aġġornamenti kollha tar-referenzi f’ordni waħda, il-pushes lejn fergħat mhux relatati jikkompetu għall-istess punt ta’ koordinazzjoni.

  • Packfiles uniċi għal kull klijent: Jekk żewġ klijenti bi storja lokali differenti jiksbu l-istess fergħa, is-server jaf ikollu jiġġenera pakkett differenti għal kull wieħed biex jevita li jibgħatilhom oġġetti li diġà għandhom. Il-ħolqien ta’ dawn it-tweġibiet jikkonsma riżorsi tas-CPU u I/O tad-diska, u dan jagħmilha diffiċli li jiġu appoġġjati għadd kbir ta’ qarrejja.

Minflok, Pando jipprovdi mudell ta’ konsistenza inqas strett (konsistenza kawżali) biex iżid il-kapaċità tal-kitba, u juża l-packfiles mill-ġdid biex iżid il-kapaċità tal-qari.

Konsistenza kawżali (CC)

Meta klijent jagħmel push lejn fergħa, Pando jaħżen il-packfile li jirċievi bħala blob immutabbli f’maħżen tal-blobs. Kull darba li l-fergħa tavvanza, Pando jirreġistra verżjoni tar-referenza f’maħżen tal-metadata. Din tinkludi l-ponta l-ġdida, il-pakkett li pprovdiha, u kull verżjoni preċedenti tar-referenza li l-pakkett jiddependi fuqha. Kemm il-maħżen tal-blobs kif ukoll dak tal-metadata jistgħu jespandu orizzontalment.

Biex jinġieb commit jew referenza minn Pando, irid jintbagħat sett ta’ verżjonijiet tar-referenzi (packfiles) lill-klijent, biex jinbena mill-ġdid l-istat tal-klijent li ħoloq il-verżjoni tar-referenza li qed tinġieb. Dan jipprovdi forma aktar dgħajfa ta’ konsistenza fir-repożitorju kollu, filwaqt li jipprovdi serjalizzabbiltà għall-aġġornamenti ta’ referenzi individwali. Il-klijenti jidħlu f’kunflitt biss meta jagħmlu push lejn l-istess referenza fl-istess ħin. Klijent li jaqra diversi fergħat ma jistax jassumi li dak il-qari jirrappreżenta mument wieħed fir-repożitorju kollu.

Fuq ix-xellug, tliet pakketti suċċessivi ta’ trunk fihom il-commits A, B u C; D u E; u F. Fuq il-lemin, trunk u topic jinfirdu f’C. Trunk tavvanza sa G, filwaqt li topic tavvanza minn D, E u F. L-aħħar pakkett ta’ topic fih D, E u F. Kontorn b’linja miksura jindika li D u E jinsabu wkoll fil-pakkett preċedenti ta’ topic. Il-vleġġa blu tindika d-dipendenza tal-pakkett il-ġdid fuq trunk f’G. Il-ġenitur ta’ F f’Git huwa E.

Push lejn il-fergħa ewlenija jżid pakkett inkrementali li jkun fih commit wieħed jew aktar. Kull push lejn fergħa sekondarja jerġa’ jinkludi l-commits preċedenti tas-suġġett, biex klijent bil-verżjoni mħabbra tal-fergħa ewlenija jkun jista’ jikseb is-suġġett f’pakkett wieħed.

Din hija forma ta’ konsistenza kawżali. Biex iġib referenza, il-qarrej jara l-istorja tal-kittieb li pproduċieha. Waqt push, Pando jikkontrolla liema storja komuni jaqblu fuqha l-klijent u s-server, biex jiżgura li l-klijenti jipproduċu packfiles li jistgħu jinqasmu aktar faċilment.

Għaldaqstant, Pando ma jipprovdix stat tar-referenzi kollha għal mument wieħed waqt l-operazzjonijiet ta’ Git, u lanqas ordni tal-aġġornamenti tar-referenzi fi ħdan clone jew fetch. Bħala eżempju konkret, ejja nassumu li l-fergħat foo u bar it-tnejn jiġu aġġornati waqt in-negozjar ta’ clone sħiħ. Waqt in-negozjar, klijent wieħed jista’ jara foo fil-verżjoni 1 u bar fil-verżjoni 2, filwaqt li klijent ieħor jara foo fil-verżjoni 2 u bar fil-verżjoni 1. Fil-prattika, l-utenti u l-aġenti ma jiddependux fuq l-ordni globali tal-aġġornamenti tar-referenzi, iżda fuq l-ordni tal-aġġornamenti ta’ referenza waħda.

Tqabbil tal-approċċi

F’din is-simulazzjoni tat-tliet mudelli ta’ konsistenza, nikkonfiguraw 1,000 klijent biex kull wieħed jagħżel fergħa distinta u mbagħad jagħmel pushes ripetuti ta’ commits uniċi. Inkejlu l-ħin totali li jgħaddi u l-latenza minn push sa fetch. Din tal-aħħar hija metrika importanti għall-piżijiet tax-xogħol, għax tkejjel il-ħin taċ-ċiklu sħiħ biex l-utenti u l-aġenti jikkollaboraw jew jużaw sistemi oħra li jiddependu fuq il-kontroll tal-verżjonijiet. Is-simulazzjoni timmudella hardware li jvarja minn magni virtwali u sistemi tal-ħażna tal-blobs standard sa dawk ta’ livell għoli. F’din is-simulazzjoni, għamilna l-konsistenza fir-repożitorju kollu inqas stretta għall-commit bi tliet fażijiet.

Simulating Git Server Implementations

Follow each writer through repeated pushes, and separately measure when an independent reader can check out each commit.

Three-phase commit

Ready
Simulated time
0 s
Mean push to fetch
—
Writers done
0 / 1,000

Each square represents one writer. All selected architectures run the same workload. Squares lighten as pushes are acknowledged and turn blue when a writer finishes. The chart shows writers finished over simulated time; independent readers can continue fetching afterward. Use arrow keys to select a writer, Home or End to jump, and Escape to clear.

0 / 10,000 pushes acknowledged · 0 fetched

Select a square to inspect that writer.

Object-store WAL

Ready
Simulated time
0 s
Mean push to fetch
—
Writers done
0 / 1,000

Each square represents one writer. All selected architectures run the same workload. Squares lighten as pushes are acknowledged and turn blue when a writer finishes. The chart shows writers finished over simulated time; independent readers can continue fetching afterward. Use arrow keys to select a writer, Home or End to jump, and Escape to clear.

0 / 10,000 pushes acknowledged · 0 fetched

Select a square to inspect that writer.

Pando

Ready
Simulated time
0 s
Mean push to fetch
—
Writers done
0 / 1,000

Each square represents one writer. All selected architectures run the same workload. Squares lighten as pushes are acknowledged and turn blue when a writer finishes. The chart shows writers finished over simulated time; independent readers can continue fetching afterward. Use arrow keys to select a writer, Home or End to jump, and Escape to clear.

0 / 10,000 pushes acknowledged · 0 fetched

Select a square to inspect that writer.

Writer progress through verified fetches

  • Three-phase commit
  • Object-store WAL
  • Pando
05001,00000 s
  • Waiting
  • Pushing
  • All pushes acknowledged
0 sLater

Synthetic teaching models, not production benchmarks. Mean push to fetch covers topic pushes, from the first attempt through retries until an independent reader verifies that commit. It includes waiting for a reader slot and excludes builds and tests. With merges enabled, writer completion includes the required fetches and trunk merge.

Experiment settings

Preparing simulation…

Results

Play the comparison to see the recorded results.

Synthetic teaching models, not production benchmarks. Mean push to fetch covers topic pushes, from the first attempt through retries until an independent reader verifies that commit. It includes waiting for a reader slot and excludes builds and tests. With merges enabled, writer completion includes the required fetches and trunk merge.

Ħaddem din is-simulazzjoni li tqabbel lil Pando ma’ żewġ approċċi oħra. Agħżel infrastruttura minn hardware standard sa dak ta’ livell għoli, l-għadd ta’ klijenti u settings oħra biex tara kif jitqabblu.

Is-sistema mmudellata ta’ commit bi tliet fażijiet turi latenza tal-kitba ferm akbar taħt tagħbija hekk kif id-diski tagħha jilħqu l-kapaċità massima. Min-naħa l-oħra, is-sistemi b’reġistru tal-kitba bil-quddiem juru latenza tal-qari ferm akbar għall-istess raġuni, għax is-servers isibuha diffiċli jlaħħqu mal-qari mir-reġistru. Kemm fit-testijiet reali fuq il-monorepo tagħna kif ukoll f’din is-simulazzjoni, Pando jappoġġja ħafna eluf ta’ klijenti li jistgħu jagħmlu push fl-istess ħin mingħajr ma jaffettwaw il-prestazzjoni taħt tagħbija.

Meta jipproċessa push, Pando jivvalida l-packfile li jirċievi waqt li jgħaddih bħala fluss lejn il-ħażna tal-blobs, mingħajr l-estrazzjoni tiegħu f’repożitorju lokali. Meta klijent jibda fetch, Pando jagħżel il-pakketti maħżuna li jeħtieġ il-qarrej, u l-qarrej iniżżilhom. Ebda server ma jeħtieġ japplika packfiles għal repożitorju lokali jew iwettaq operazzjonijiet ta’ estrazzjoni u żżippjar li jikkonsmaw ħafna riżorsi. Billi dawn is-servers prinċipalment iwettqu negozjar u għażla ta’ packfiles, is-servers ta’ Pando jistgħu jaħdmu fuq hardware standard.

Dan jippermetti lil Pando jespandi sal-limiti tal-klijenti, tan-network bejn il-klijenti u Pando, u tas-servizz tal-ħażna tal-blobs. B’kapaċità biżżejjed, kull klijent li jaħdem fuq fergħa indipendenti jista’ jittrasferixxi l-pakketti bl-ogħla veloċità li tippermetti l-konnessjoni tiegħu. Biex naqdu aktar klijenti b’dik ir-rata, nistgħu nżidu s-servers ta’ Pando u nespandu magħhom il-maħżen tal-metadata u dak tal-blobs.

Pushing and Fetching a Branch in Pando

Pando stores the writer’s packfile in blob storage and records the ref version in metadata service. On fetch, Pando selects the packs the reader needs, and Express serves them.

Stream the push

  • Packfile bytes
  • Metadata
  • Request / acknowledgment
  • Packfile URIs

Aġent jeditja l-fajls, joħloq commit lokalment u jħaddem git push, li joħloq packfile ta’ dawk il-bidliet biex jaġġorna fergħa. Pando jirċievi l-pakkett u jgħaddih bħala fluss lejn il-ħażna tal-blobs. Wara li jivvalida l-push li jirċievi billi jiddekodifikah f’pass wieħed, Pando juża tranżazzjoni b’diversi kjavijiet biex jirreġistra verżjoni tar-referenza fil-maħżen tal-metadata tagħna u jaġġorna l-pointer tar-referenza b’mod atomiku. Dan jippermetti lil Pando jipprovdi konsistenza tat-tip “aqra dak li ktibt int stess”. Din l-operazzjoni sħiħa tal-kitba teħtieġ O(1)O(1) operazzjonijiet ta’ qari u kitba tal-metadata.

Meta klijent ieħor iġib il-fergħa, Pando jagħżel sett ta’ pakketti maħżuna abbażi tal-istorja li l-klijent diġà għandu. Din l-operazzjoni teħtieġ O(log⁡Δ)O(\log \Delta) operazzjonijiet ta’ qari tal-metadata, fejn Δ\Delta hija l-iqsar distanza f’verżjonijiet tar-referenzi bejn dak li għandu l-klijent u dak li jrid. Is-server jirritorna URIs tal-packfiles, u l-klijent iniżżilhom permezz ta’ servizz, Express, li jaħżen il-packfiles f’caches reġjonali.

Dan id-disinn jiddependi fuq it-tliet servizzi ċentrali tal-arkitettura ta’ Pando: pushes, fetches u kompattazzjoni.

Inżidu l-kapaċità tal-pushes

Meta klijent jagħmel push, server Git konvenzjonali jkun bħal plejer tal-poker li jikxef il-karti kollha tiegħu: juri lill-klijent kull fergħa li għandu. Il-klijent imbagħad jiġbor il-commits, is-siġar u l-blobs biex joħloq packfile li jeskludi l-oġġetti li jaf li s-server diġà għandu.

It-tħabbir ta’ aktar referenzi jista’ jnaqqas id-daqs tal-push. Jista’ wkoll jagħmilha aktar diffiċli li l-pakkett jerġa’ jintuża, għax klijent ieħor jaf ikun nieqes minn oġġetti li l-kittieb ħalla barra.

Pando jieħu approċċ differenti. Minflok jikxef il-karti kollha tiegħu, iħabbar biss sett magħżul ta’ fergħat lill-klijent. Dan isir għal żewġ raġunijiet:

  1. Li tipprovdi stampa konsistenti ta’ kull referenza jiswa ħafna riżorsi. B’miljuni ta’ fergħat, it-tħabbir tar-referenzi waħdu jista’ jaqbeż il-100 MiB. Biex jipprovdi dan, kull server irid jew iżomm mappa aġġornata, li teħtieġ ħafna xogħol ta’ koordinazzjoni, jew jagħmel mistoqsija lid-database li tikber mal-għadd ta’ referenzi.

  2. Meta l-klijent jingħata biss subsett tar-referenzi, jiġġenera pakkett li jiddependi biss fuq dak li s-server jippermettilu espliċitament jeskludi. It-traċċar tad-dipendenzi jippermetti lil Pando jerġa’ juża l-packfile li klijent jiġġenera f’push wieħed billi jipprovdih bħala tweġiba għal fetch sussegwenti.

Aktar ma server Git iħabbar referenzi, aktar il-klijenti li jagħmlu push ikollhom sorsi li minnhom jistgħu jeskludu oġġetti, u b’hekk jipproduċu pakketti iżgħar. Madankollu, biex jerġa’ juża dawn il-packfiles, is-server irid ikun jista’ jivverifika li l-klijenti li jagħmlu fetch għandhom kull waħda mid-dipendenzi. Inkella, il-packfile jista’ jħalli barra oġġetti li l-klijent jeħtieġ.

Min-naħa l-oħra, jekk server Git ma jħabbar ebda referenza, il-klijent jiġġenera packfile bl-istorja sħiħa tar-repożitorju. Dak il-packfile jista’ jintuża minn kwalunkwe klijent ieħor, iżda bi spiża sinifikanti: kull fetch ta’ fergħa effettivament isir clone sħiħ.

Kurva li turi kif ir-referenzi mħabbra jaffettwaw id-daqs tal-packfile: mill-istorja kollha meta ma titħabbar ebda referenza, għal meta titħabbar il-fergħa ewlenija, sa oġġetti ġodda biss meta jitħabbru r-referenzi kollha.

It-tħabbir ta’ aktar referenzi jwassal għal packfiles iżgħar. Il-biċċa l-kbira tat-tnaqqis fid-daqs tista’ tinkiseb billi titħabbar waħda biss.

B’mod awtomatiku, meta klijent jagħmel push ta’ fergħa ġdida għal funzjonalità, Pando jħabbar biss fergħa ewlenija magħżula bħala bażi. Dan iżomm it-tħabbir bl-istess daqs hekk kif jiżdiedu l-fergħat fir-repożitorju, iżda jinvolvi kompromessi. Meta inġinier jagħmel ħafna pushes lejn fergħa waħda, jew jibni fergħa għal funzjonalità fuq oħra, il-klijent irid jerġa’ jibgħat kulma jinsab barra l-fergħa ewlenija.

Dan iwassal biex il-pushes suċċessivi tal-fergħa jkunu akbar, b’oġġetti potenzjalment ripetuti, u jikkonsmaw aktar bandwidth tal-klijent. Fil-monorepo tagħna, id-daqs medjan tal-packfiles prodotti b’dan il-mod kien taħt l-20 KiB, u d-99 perċentil kien taħt it-3 MiB. Għalina, dan kien kompromess raġonevoli għax qarrej li diġà għandu l-istorja mħabbra tal-fergħa ewlenija jista’ jġib il-fergħa b’dak il-packfile wieħed.

Wara li jagħżel is-sett ta’ referenzi li se jħabbar lill-klijent, Pando jaċċetta l-push u jaġġorna l-maħżen tal-metadata tiegħu. Pando jaqsam l-aġġornament tal-metadata f’parti sinkronika u oħra asinkronika. L-aġġornament sinkroniku tal-metadata jiżgura li l-klijenti jkunu jistgħu jġibu l-commit li jkun għadu kemm ġie aġġornat minnufih. Dan jikteb verżjoni ġdida tar-referenza u jaġġorna l-mappa tal-pointer tar-referenza għal dik il-verżjoni, waqt li jaħżen il-ponta l-ġdida, id-dipendenzi użati biex jiġi nnegozjat il-packfile, u link għall-packfile li ntbagħat bil-push.

Fl-istess ħin, xogħol asinkroniku jiġi rreġistrat fl-istess tranżazzjoni, bħall-iskedar tal-kompattazzjoni. Għal pushes kbar ħafna, subsett biss tal-commits jinkiteb b’mod sinkroniku. B’hekk neħtieġu biss għadd kostanti ta’ operazzjonijiet ta’ qari u kitba fil-maħżen tal-metadata, ikun kemm ikun kbir il-push.

Huwa importanti li s-servers ta’ Pando jistgħu jaċċettaw pushes lejn referenzi mhux relatati b’mod indipendenti. L-unika kjavi li jkun hemm kompetizzjoni għaliha hija l-pointer tar-referenza, li nipproteġu b’operazzjoni atomika simili għal compare-and-swap. Nistgħu nżidu t-throughput tal-kitba billi nżidu servers ta’ Pando, unitajiet ta’ espansjoni tal-maħżen tal-metadata, jew imħażen tal-blobs.

Prestazzjoni ta’ fetch u clone bil-veloċità massima tal-konnessjoni

Meta klijent jagħmel fetch, jipprovdi lis-server b’żewġ settijiet ta’ IDs tal-commits, magħrufa fil-protokoll bħala haves u wants. Server Git konvenzjonali jikkalkula d-differenza bejn is-sett ta’ oġġetti li jistgħu jintlaħqu mill-haves u dawk li jistgħu jintlaħqu mill-wants, jikkompressahom, u jibgħat ir-riżultat lill-klijent. Għalkemm is-server open-source ta’ Git għandu diversi indiċijiet lokali biex iħaffef din l-operazzjoni, il-ġenerazzjoni ta’ dawn il-packfiles tista’ tiswa ħafna riżorsi u ġeneralment ma jkunux adattati tajjeb għall-caching.

Minflok, Pando juża l-assoċjazzjonijiet tal-commits irreġistrati waqt il-pushes biex ifittex l-entrati have u want tal-klijent, u jassoċjahom ma’ sett ta’ verżjonijiet tar-referenzi li fihom dawk il-commits. Kull waħda minn dawk il-verżjonijiet tar-referenzi għandha link għal packfile li Pando jkun irċieva qabel. Is-server juża dan biex jiddetermina x’jeħtieġ il-klijent, u jagħżel il-packfiles li jkopru s-sett ta’ oġġetti meħtieġa.

Planning fetches in Pando

Pando compares what a client has with what it wants, then selects the stored packfiles needed—including any missing branch dependencies.

Already heldFetchMissing branch dependency

Fetch 27 trunk packs.

Select a branch to include its trunk dependencies.

Pando jassoċja l-haves u l-wants tal-protokoll Git ma’ sekwenza ta’ verżjonijiet tar-referenzi. Talba għal fergħa sekondarja timplika talba li tinkludi wkoll id-dipendenzi tagħha fuq il-fergħa ewlenija.

Il-protokoll Git jippermetti li jintbagħat packfile wieħed biss fit-tweġiba HTTP għal clone jew fetch. Madankollu, funzjonalità tal-protokoll Git li ma tingħatax biżżejjed attenzjoni, packfile-uri, tippermetti lis-server jirritorna links biex jitniżżlu pakketti addizzjonali separatament. Pando juża biss dan il-metodu, u jibgħat packfile vojt fit-tweġiba nnifisha. Biex tappoġġja din il-funzjonalità, OpenAI kkontribwiet diversi titjibiet għal packfile-uri fil-proġett oriġinali.

Is-sistemi ta’ OpenAI jaħdmu f’ħafna reġjuni ġeografiċi, għalhekk inżommu clusters ta’ Pando b’caches lokali f’kull wieħed. Servizz għat-twassil tal-pakketti, Express, iżomm cache tal-maħżen tal-blobs tagħna, u servizz separat iżomm cache tal-maħżen tal-metadata. Dawn il-caches jippermettu lil Pando jaqdi talbiet għal ID ta’ commit jew qari speċjali ta’ referenza kompletament mill-istat maħżun fil-cache ta’ dak il-cluster. Nużaw hashing konsistenti biex nidderieġu t-talbiet għal packfile lejn is-servers ta’ Express, b’rati ta’ sejba fil-cache ta’ aktar minn 99%.

Din is-sistema ta’ caches tipprovdi throughput għoli ħafna, biżżejjed biex tilħaq il-limitu tan-network bejn il-klijenti u Pando. Bl-użu ta’ dawn il-URIs tal-packfiles u l-caches lokali, ivverifikajna li, anki b’magni virtwali standard biss ta’ fornitur tal-cloud, l-operazzjonijiet clone u fetch jużaw il-kapaċità kollha ta’ konnessjonijiet tan-network ta’ 10 Gbps.

Kompattazzjoni u ħin sal-ewwel byte

Għall-biċċa l-kbira tas-servers Git, l-ippakkjar mill-ġdid u t-tneħħija tad-data mhux meħtieġa huma meħtieġa biex tinżamm il-prestazzjoni ta’ repożitorju li qed jikber. Dawn iż-żewġ passi jirkupraw l-ispazju, iżda jeħtieġu ħafna komputazzjoni u I/O.

F’repożitorju li jinbidel malajr bħall-monorepo ta’ OpenAI, mhuwiex prattiku li jintbagħat URI ta’ packfile individwali għal kull push li seħħ mill-aħħar fetch. Kuljum, klijent ikollu jniżżel għexieren ta’ eluf ta’ packfiles biex jaġġorna l-fergħa ewlenija tiegħu.

Minflok, Pando jgħaqqad pakketti fl-isfond biex inaqqas dan ix-xogħol żejjed, b’disinn simili għall-kompattazzjoni f’siġar ta’ għaqda strutturati bħala reġistru. Kull push jipproduċi dak li Pando jsejjaħ packfile “L0”, li jirrappreżenta l-iżgħar unità ta’ data li Pando jista’ jittrażmetti. Maż-żmien, proċessi fl-isfond jiġbru dawn il-packfiles fi gruppi ta’ kopertura li jkopru sekwenza ta’ verżjonijiet tar-referenzi, u jikbru ġeometrikament minn L0. Illum, il-monorepo tagħna juża gruppi ta’ kopertura tal-packfiles sal-livell L4.

Dawn il-gruppi ta’ kopertura jaqdu żewġ skopijiet. Meta grupp ta’ kopertura jkun mimli biżżejjed, proċess ta’ kompattazzjoni jieħu ħsiebu u jipproduċi packfile wieħed. Dan itejjeb il-proporzjon tal-kompressjoni billi jorganizza mill-ġdid l-oġġetti fil-packfile. Iżda jtejjeb ukoll il-prestazzjoni tan-negozjar tal-fetch billi jaġixxi bħala lista b’qabżiet bejn il-verżjonijiet tar-referenzi. Billi jiskennja l-indiċijiet f’kull livell fl-istess ħin, Pando jista’ jagħżel sett ta’ pakketti biex jibgħat lill-klijent fi żmien logaritmiku. Dawn il-gruppi ta’ kopertura tal-packfiles, kemm jekk ippakkjati mill-ġdid kif ukoll jekk le, jippermettu ppjanar aktar effiċjenti tal-fetches, u jnaqqsu r-rekwiżiti kemm tat-throughput kif ukoll tal-latenza għal Pando.

Compaction in Pando

Small packfiles are grouped into larger covers across levels, improving compression and speeding up fetches.

Compaction in progressPublished cover

Il-kompattazzjoni tgħaqqad fl-isfond packfiles minn ħafna verżjonijiet tar-referenzi, biex tippermetti fetches aktar effiċjenti b’inqas fajls.

B’differenza minn ħafna servers Git, il-packfiles jinżammu f’kull livell u ma jintremewx jew jitneħħew bħala data mhux meħtieġa. Il-pakketti f’kull livell jintużaw kontinwament biex jaqdu lill-klijenti, abbażi tal-entrati have u want li jibagħtu f’fetch. Għall-klijenti li jużaw Pando bħala API, il-qari ta’ oġġett arbitrarju minn packfile ġeneralment jeħtieġ inqas qari ta’ data minn L0 milli minn L4, għax ikun inqas probabbli li l-oġġett ikun ikkompressat.

Il-kompattazzjoni f’Pando tnaqqas b’mod sinifikanti d-daqs totali tad-data ttrasferita lill-klijenti, u tippermetti li l-ippjanar tal-pakketti jikber b’mod sublineari skont kemm il-klijent ikun baqa’ lura. Dan huwa partikolarment importanti għal repożitorji kbar li jinbidlu malajr, li nistennew li jsiru n-norma l-ġdida fl-iżvilupp tas-software.

Nibnu Pando

Bnejna Pando b’Codex, mill-bidu sal-produzzjoni, f’10 ġimgħat biss. Il-qalba ta’ Pando tfasslet minn inġinier wieħed, ġiet implimentata minn timijiet ta’ aġenti, u tnediet minn ftit inġiniera. Pando beda jipproċessa traffiku tal-produzzjoni f’April ta’ din is-sena, u huwa parti minn sistema akbar ta’ għodod għall-ġestjoni tal-kontroll tal-kodiċi sors użati f’OpenAI.

Użajna firxa wiesgħa ta’ approċċi biex nivvalidaw id-disinn ta’ Pando. Applikajna l-prinċipji tagħna biex nibnu pedamenti aktar siguri għas-software⁠. Billi kien proġett mibdi mill-bidu, għażilna li nimplimentaw Pando f’Rust u mingħajr dipendenzi fuq sistemi antiki. Ktibna sett ta’ testijiet tal-konformità biex l-aġenti jkunu jistgħu jittestjaw il-bidliet tagħhom kontra l-imġiba standard ta’ Git. Żviluppajna wkoll harnesses tal-ittestjar b’simulazzjoni deterministika biex niċċekkjaw l-invarjanti u l-proprjetajiet tas-sistema, u b’hekk insibu u nnaqqsu kundizzjonijiet sottili ta’ tellieqa u rigressjonijiet fin-negozjar u l-ippjanar tal-pakketti.

Ħafna mudelli kkontribwew għal din is-sistema; hekk kif saru disponibbli mudelli ġodda, użajniehom biex intejbu l-prestazzjoni u l-affidabbiltà ta’ Pando. Bl-użu ta’ GPT‑6 Astra, l-aġenti kitbu f’Lean u TLA+ biex jifformalizzaw “teorija ta’ Pando” li użajna biex insibu u nsewwu bugs fl-implimentazzjoni, u nippruvaw proprjetajiet tas-sistema. Diversi sessjonijiet kontinwi damu għaddejjin għal mijiet ta’ sigħat, isibu u jsewwu każijiet estremi f’Pando. Inħaddmu wkoll aġenti lejl u nhar biex jittestjaw is-sigurtà ta’ Git u Pando b’attakki simulati, bl-użu ta’ mudelli bil-kapaċitajiet ta’ Daybreak.

It-tnedija ta’ Pando

Inizjalment nedejna Pando bħala proxy li jgħaddi l-qari u l-kitba lis-sistema eżistenti tagħna tal-kontroll tal-kodiċi sors. Dan ippermettilna nżommu lil Pando u s-sistema preċedenti sinkronizzati, biex immexxu t-traffiku lejn Pando b’mod sigur mingħajr waqfien tas-servizz.

Bħala parti mid-disinn tal-caching tiegħu, Pando jista’ wkoll ineħħi talbiet duplikati u jgħaqqad it-talbiet qabel jgħaddihom bħala proxy. Dan ippermettilna nżommu l-għodod eżistenti tagħna jaħdmu tajjeb waqt li konna qed inmexxu s-sistemi lejn Pando waħda waħda. Hekk kif emigrajna aktar xogħol lejn Pando, il-pushes tiegħu mlew il-cache ta’ Pando u tejbu l-affidabbiltà tal-backend preċedenti tagħna.

Biex nottimizzaw il-prestazzjoni meta jintuża Pando, bdejna nqassmu d-distribuzzjoni pubblika tagħna ta’ Git fuq il-magni tal-iżviluppaturi u fl-app tad-desktop ta’ ChatGPT. Biex nemigraw il-klijenti lejn Pando, użajna saff intern madwar is-CLI ta’ Git biex nagħmlu l-migrazzjoni f’fażijiet. Ħloqna ħafna għodod oħra għall-ġestjoni tat-talbiet għal bidliet, ir-reviżjoni tal-kodiċi, u APIs għall-awtomazzjonijiet. Flimkien mat-traffiku Git, emigrajna mijiet ta’ integrazzjonijiet li kienu jiddependu fuq APIs antiki, webhooks u tniżżil ta’ repożitorji.

Codex innifsu għen lill-iżviluppaturi u lit-timijiet jagħmlu l-bidla. Ħloqna ħiliet biex iħejju l-kopji tax-xogħol eżistenti, u biex jiggwidaw lill-aġenti fl-użu tas-sistema l-ġdida. B’hekk, l-iżviluppaturi setgħu sempliċement jitolbu lil Codex jemigra l-ambjenti tal-iżvilupp u s-servizzi tagħhom.

Il-qlib għal Pando tejjeb l-affidabbiltà tal-għaqdiet u naqqas il-latenza medjana tal-push bi kważi 80%.

Pando jista’ jwassal petabyte ta’ data Git kuljum bi ftit cores tas-CPU biss. Pando wassal aktar minn 57 terabyte ta’ pakketti Git f’siegħa waħda, b’aktar minn 99% ta’ dawk il-bytes ġejjin mill-cache tad-diska lokali.

L-użu mill-ġdid tal-pakketti jippermetti lil ħafna klijenti jniżżlu l-istess storja tar-repożitorju bi ftit komputazzjoni fuq in-nodi li jipprovduha. Dan l-eżempju juri repożitorju wieħed, iżda Pando huwa mfassal biex jappoġġja ħafna aktar. Hekk kif tikber id-domanda, nistgħu nżidu l-kapaċità tat-twassil tad-data u tan-negozjar Git b’mod indipendenti.

Nagħtu lura lill-proġett Git

Il-bini ta’ Pando fuq il-protokoll u l-klijent Git għenna nidentifikaw bugs u opportunitajiet biex intejbu l-prestazzjoni ta’ Git innifsu.

Pereżempju, Pando jipprovdi pakketti li jistgħu jerġgħu jintużaw direttament lill-klijenti, għalhekk it-tniżżil u l-indiċjar tagħhom saru parti ċentrali biex is-sistema tkun veloċi u affidabbli. Dak ix-xogħol kixef każijiet estremi fit-tniżżil simultanju, fit-tindif wara trasferimenti interrotti, u fit-tkomplija ta’ tniżżil li kien diġà tlesta. Irranġajna dawk il-mogħdijiet tal-eżekuzzjoni, żidna validazzjonijiet meta jiġi aċċettat pakkett eżistenti għal fetch, u kkontribwejna dak ix-xogħol lura lill-proġett oriġinali.

Kellna bżonn naraw ukoll fejn kienu qed jintefqu l-ħin u l-bandwidth, għalhekk żidna traċċar għat-tniżżil ta’ packfile-uri u għadd tal-bytes għall-ġenerazzjoni tal-pakketti. Dan għamilha aktar faċli li naraw jekk fetch bil-mod kienx qed iqatta’ l-ħin jiġġenera l-pakketti jew jittrasferihom.

Fil-verżjoni ta’ Git ta’ OpenAI⁠(jinfetaħ f’tieqa ġdida), il-klijent jista’ jniżżel u jindiċja pakketti indipendenti b’mod parallel. Żidna l-kunċett ta’ “haves espliċiti” biex server ikun jista’ jħabbar il-ponta attwali ta’ fergħa separatament mill-istorja li klijent li jagħmel push jista’ jħalli barra mill-pakkett tiegħu. F’Pando, dan jippermetti lill-klijenti jużaw --force-with-lease biex jiċċekkjaw li fergħa għal funzjonalità ma tkunx avvanzat u jibnu l-pakkett tagħha abbażi tal-fergħa ewlenija biss. Kull min ikollu dik l-istorja tal-fergħa ewlenija mbagħad jista’ jġib il-fergħa bl-istess pakkett.

Diversi minn dawn it-titjibiet diġà jinsabu fil-proġett oriġinali ta’ Git, u ħafna oħrajn fir-repożitorju pubbliku tagħna. Qed inkomplu naħdmu mal-komunità ta’ Git biex dawn it-titjibiet ikunu utli wkoll lil hinn minn Pando. Tista’ ssegwi dak ix-xogħol fis-sistema pubblika tagħna ta’ traċċar tal-patches⁠(jinfetaħ f’tieqa ġdida).

X’imiss

Billi jerġa’ jaħseb il-fehmiet tradizzjonali dwar kif jespandu r-repożitorji Git, Pando jippermettilna nespandu l-monorepo tagħna mingħajr ma nbiddlu l-flussi tax-xogħol Git li diġà jużaw l-inġiniera u l-aġenti tagħna. Fil-monorepo tagħna, Pando ppermetta aktar xogħol parallel, tejjeb l-affidabbiltà tal-għaqdiet, u naqqas il-ħin meħtieġ biex jiġu ppubblikati bidliet fil-kodiċi. Lil hinn mill-monorepo tagħna, qed nesploraw ukoll użi oħra għal Pando fi ħdan OpenAI, inkluż xogħol fejn għadd kbir ta’ aġenti jeħtieġ jikkollaboraw fuq repożitorju Git kondiviż.

Hekk kif l-inġiniera u l-aġenti jipproduċu aktar software, aktar timijiet barra OpenAI se jiltaqgħu mal-limiti li ltqajna magħhom fil-kontroll tal-kodiċi sors. Bħalissa qed nesploraw modi kif naqsmu mal-utenti tagħna t-teknoloġija li tagħmel Pando possibbli.

Pando jibni fuq għoxrin sena ta’ esperjenza tal-utenti u l-operaturi tar-repożitorji Git. Se nkomplu niżviluppaw Pando filwaqt li naħdmu mal-komunità open-source ta’ Git biex naqsmu kull titjib li jkun ta’ benefiċċju usa’ għall-utenti ta’ Git.

Awtur

OpenAI