Kif bnejna OWL, l-arkitettura l-ġdida wara l-browser tagħna bbażat fuq ChatGPT, Atlas
Ħarsa ġewwa l-arkitettura tal-proċess il-ġdida tagħna, li tagħtik mod aktar veloċi u intelliġenti biex tuża l-web.
Minn Ken Rockot, Membru tal-Persunal Tekniku u Ben Goodger, Kap tal-Inġinerija, ChatGPT Atlas
Il-ġimgħa li għaddiet, nedejna ChatGPT Atlas, mod ġdid biex tibbrawżja l-web b’ChatGPT maġenbek. Minbarra li huwa browser tal-web b’ħafna funzjonijiet, Atlas joffri wkoll ħjiel tal-futur: dinja fejn tista’ tieħu miegħek ChatGPT mal-internet kollu biex tistaqsi mistoqsijiet, tagħmel suġġerimenti, u tlesti kompiti għalik. F’din il-kariga, nispjegaw wieħed mill-aktar aspetti kumplessi tal-inġinerija tal-prodott: kif biddilna ChatGPT f’browser li jsir aktar utli hekk kif tkompli tużah.
Li nagħmlu lil ChatGPT ko-pilota veru għall-web kien ifisser li nerġgħu nimmaġinaw l-arkitettura kollha ta’ browser: nisseparaw lil Atlas mir-runtime ta’ Chromium. Dan kien jinvolvi l-iżvilupp ta’ mod ġdid kif nintegraw Chromium li jippermettilna nwettqu l-għanijiet tal-prodott tagħna: tnedija immedjata, reattività anke meta tiftaħ aktar tabs, u li noħolqu pedament sod għal każijiet ta’ użu aġentiċi.

Chromium kien element naturali għall-bini. Joffri magna tal-web mill-aqwa b’mudell ta’ sigurtà robust, prestazzjoni ppruvata, u kompatibbiltà mal-web bla paragun. Barra minn hekk, jiġi żviluppat minn komunità globali li tkompli ttejjbu kontinwament. Huwa għażla komuni għal browsers moderni tal-web fuq desktop.
It-tim tad-disinn b’talent tagħna kellu għanijiet ambizzjużi għall-esperjenza tal-utent tagħna, inklużi animazzjonijiet sinjuri u effetti viżwali għal karatteristiċi bħal Agent mode. Dan kien jeħtieġ lit-tim tal-inġinerija tagħna juża l-aktar frameworks nattivi moderni għall-UI tagħna (SwiftUI, AppKit u Metal), minflok sempliċement jerġa’ jagħti dehra ġdida lill-UX open source ta’ Chromium. B’riżultat ta’ dan, l-UI ta’ Atlas hija bini mill-ġdid komprensiv tal-UX kollu tal-applikazzjoni.
Kellna wkoll għanijiet oħra tal-prodott bħal ħinijiet ta’ tnedija veloċi u appoġġ għal mijiet ta’ tabs mingħajr ma tiġi penalizzata l-prestazzjoni. Dawn l-għanijiet kienu diffiċli biex jintlaħqu bi Chromium kif inhu, li għandu opinjonijiet sodi fuq ħafna dettalji mis-sekwenza tal-ibbutjar, il-mudell tat-threading u l-mudelli tat-tabs. Qisna li nagħmlu bidliet sostanzjali hawnhekk, iżda ridna nżommu s-sett ta’ patches tagħna kontra Chromium iffukat biex inkunu nistgħu nintegraw verżjonijiet ġodda malajr. Biex niżguraw li l-veloċità tal-iżvilupp tagħna tkun massimament aċċellerata, kellna nsibu mod differenti kif nintegraw u nħaddmu r-runtime ta’ Chromium.
Test kruċjali għall-investiment tekniku tagħna ma kienx biss li jippermetti esperimentazzjoni, iterazzjoni u twassil aktar mgħaġġla ta’ karatteristiċi ġodda – kien ukoll li jippermettilna nżommu parti ewlenija mill-kultura tal-inġinerija ta’ OpenAI: li nibagħtu mill-ewwel jum. Kull inġinier ġdid jagħmel u jingħaqad bidla żgħira wara nofsinhar fl-ewwel jum tiegħu. Kellna niżguraw li dan jibqa’ possibbli minkejja li Chromium jista’ jieħu sigħat biex jitniżżel u jinbena.
It-tweġiba tagħna għal dawn l-isfidi kienet li nibnu saff arkitettoniku ġdid li nsejħulu OWL: OpenAI’s Web Layer. OWL hija l-integrazzjoni tagħna ta’ Chromium, li tfisser li nħaddmu l-proċess tal-browser ta’ Chromium barra mill-proċess ewlieni tal-app Atlas.
Aħseb fiha hekk: Chromium irrivoluzzjona l-browsers billi ċaqlaq it-tabs għal proċessi separati. Aħna qed nieħdu dik l-idea aktar ’il quddiem billi noħorġu lil Chromium innifsu mill-proċess ewlieni tal-applikazzjoni u nqegħduh f’saff ta’ servizz iżolat. Din il-bidla tiftaħ kaskata ta’ benefiċċji:
- App aktar sempliċi u moderna: Atlas hija mibnija kważi kollha kemm hi fi SwiftUI u AppKit. Lingwa waħda, tech stack wieħed, codebase waħda nadifa.
- Tnedija aktar veloċi: Chromium jibda b’mod asinkronu fl-isfond. Atlas ma tistenniex — il-pixels jidhru fuq l-iskrin kważi minnufih.
- Iżolament minn jank u crashes: Chromium hija magna tal-web qawwija u kumplessa. Jekk il-main thread tagħha jiddendel, Atlas le. Jekk tfalli, Atlas tibqa’ għaddejja.
- Anqas uġigħ ta’ ras fil-merge: Peress li m’aħniex nibnu fuq daqstant mill-UI open source ta’ Chromium, id-diff tagħna kontra upstream Chromium huwa ħafna iżgħar u aktar faċli biex jinżamm.
- Iterazzjoni aktar veloċi: Il-biċċa l-kbira tal-inġiniera qatt ma jkollhom bżonn jibnu Chromium lokalment. OWL tintbagħat internament bħala binary mibni minn qabel, għalhekk il-builds ta’ Atlas jieħdu minuti mhux sigħat.
Minħabba li ħafna mill-inġiniera fit-tim tagħna ma jkunux qed jibnu Chromium mis-sors regolarment, l-iżvilupp jista’ jimxi ħafna aktar malajr—anke membri ġodda tat-tim jistgħu jgħaqqdu bidliet sempliċi fl-ewwel wara nofsinhar tagħhom.
F’livell għoli, il-browser Atlas huwa l-OWL Client, u l-proċess tal-browser Chromium huwa l-OWL Host. Huma jikkomunikaw fuq IPC, speċifikament Mojo(jinfetaħ f’tieqa ġdida), is-sistema ta’ Chromium stess biex tgħaddi messaġġi. Aħna ktibna bindings personalizzati fi Swift (u anke TypeScript) għal Mojo, sabiex l-app Swift tagħna tkun tista’ ssejjaħ interfaces min-naħa tal-host direttament.
Il-librerija tal-client OWL tesponi API pubblika sempliċi ta’ Swift, li taħbi diversi kunċetti ewlenin esposti mis-saff tas-servizz tal-host:
- Session: Ikkonfigura u kkontrolla l-host globalment
- Profile: Immaniġġja l-istat tal-browser għal profil ta’ utent speċifiku
- WebView: Ikkontrolla u daħħal kontenut tal-web individwali (eż. render, input, navigate, zoom, eċċ.)
- WebContentRenderer: Għaddi avvenimenti ta’ input lejn il-pipeline tar-rendering ta’ Chromium u rċievi feedback mir-renderer
- LayerHost/Client: Skambja informazzjoni tal-compositing bejn l-UI u Chromium
Hemm ukoll firxa wiesgħa ta’ punti ta' tmiem ta’ servizz għall-immaniġġjar ta’ karatteristiċi ta’ livell għoli bħal bookmarks, downloads, extensions, u autofill.
Il-WebViews, li jaqsmu spazju ta’ preżentazzjoni reċiprokament esklużiv fl-app client, jiddaħħlu u jinħarġu minn container ta’ compositing maqsum. Pereżempju, tieqa ta’ browser ta’ spiss ikollha container maqsum wieħed viżibbli u l-għażla ta’ tab fit-tab strip tbiddel il-WebView ta’ dik it-tab fil-container. Min-naħa ta’ Chromium, dan il-container jikkorrispondi għal gfx::AcceleratedWidget li fl-aħħar nett huwa sostnut minn CALayer. Aħna nesponu l-context ID ta’ dak is-saff lill-client, fejn NSView jinkorporah bl-użu tal-API privata CALayerHost.
Każijiet speċjali bħal dropdowns ta’ <select> jew color pickers, li Chromium tirrendi f’widgets popup separati, jużaw l-istess approċċ. Ma għandhomx content::WebContents, iżda għandhom content::RenderWidgetHostView bil-gfx::AcceleratedWidget tagħhom stess, għalhekk japplika l-istess mudell ta’ rendering delegat.
OWL internament iżżomm il-ġeometrija tal-view sinkronizzata man-naħa ta’ Chromium, sabiex il-GPU compositor ikun jista’ jiġi aġġornat kif meħtieġ u dejjem ikun jista’ jipproduċi kontenut tas-saff bid-daqs korrett u l-iskala xierqa tal-apparat.
Nerġgħu nużaw ukoll din it-teknika biex nipproġettaw b’mod selettiv elementi mill-UI nattiva Views ta’ Chromium stess f’Atlas (dan huwa utli wkoll biex nibdew malajr karatteristiċi bħal permission prompts mingħajr ma nibnu sostituti mill-bidu fi SwiftUI). Din it-teknika tissellef ħafna mill-infrastruttura eżistenti ta’ Chromium għal web apps installabbli fuq macOS.
L-UI ta’ Chromium tittraduċi avvenimenti tal-pjattaforma (bħal NSEvents ta’ macOS) fil-mudell WebInputEvent ta’ Blink qabel ma tgħaddihom lir-renderers. Iżda peress li OWL tħaddem Chromium fi proċess moħbi, aħna nagħmlu din it-traduzzjoni aħna stess ġewwa l-librerija client ta’ Swift u ngħaddu avvenimenti diġà tradotti lil Chromium.
Minn hemm, isegwu l-istess ċiklu tal-ħajja li normalment isegwu avvenimenti ta’ input reali għall-kontenut tal-web. Dan jinkludi li l-avvenimenti jiġu mibgħuta lura lill-client kull meta paġna tindika li ma ttrattatx l-avveniment. Meta jiġri dan, nerġgħu nissintetizzaw NSEvent u nagħtu ċans lill-bqija tal-app timmaniġġja l-input.
Il-karatteristika ta’ browsing aġentiku ta’ Atlas toħloq xi sfidi uniċi għall-approċċi tagħna għar-rendering, il-forwarding ta’ avvenimenti ta’ input, u l-ħażna tad-data.
Il-mudell tagħna għall-użu tal-kompjuter jistenna immaġni waħda tal-iskrin bħala input. Iżda xi elementi tal-UI, bħal dropdowns ta’ <select> , jirrendu barra l-limiti tat-tab f’twieqi separati. F’agent mode, aħna nikkomponu dawk il-popups lura fl-immaġni ewlenija tal-paġna fil-koordinati korretti sabiex il-mudell jara l-kuntest kollu f’frame wieħed.
Għall-input, napplikaw l-istess prinċipju: l-avvenimenti ġġenerati mill-aġent jintbagħtu direttament lir-renderer, qatt mill-browser layer privileġġat. Dan iżomm il-konfini tas-sandbox intatta anke taħt kontroll awtomatizzat. Pereżempju, ma rridux li din il-klassi ta’ avvenimenti tissintetizza keyboard shortcuts li jġiegħlu lill-browser jagħmel affarijiet mhux relatati mal-kontenut tal-web li qed jintwera.
Il-browsing bl-aġent jista’ wkoll jaħdem f’kuntest effimeru "logged-out". Minflok naqsmu l-profil Incognito eżistenti tal-utent, li jista’ jnixxi l-istat, nużaw l-infrastruttura StoragePartition ta’ Chromium biex noħolqu stores iżolati fil-memorja. Kull sessjoni tal-aġent tibda friska, u meta tispiċċa, il-cookies u d-data tas-siti kollha jintremew. Tista’ tħaddem diversi sessjonijiet tal-aġent "logged-out", kull waħda fit-tab tagħha stess tal-browser, u kull waħda kompletament iżolata mill-oħrajn.
Xejn minn dan ma kien ikun possibbli mingħajr il-komunità globali ta’ Chromium u x-xogħol inkredibbli tagħhom biex jibnu pedament għall-web moderna. OWL tibni fuq dak il-pedament b’mod ġdid: tissepara l-magna mill-app, tħallat pjattaforma tal-web ta’ klassi dinjija ma’ frameworks nattivi moderni, u tiftaħ arkitettura aktar veloċi u flessibbli.
Billi erġajna ħsibna kif browser iżomm lil Chromium, qed noħolqu spazju għal tipi ġodda ta’ esperjenzi: tnedijiet aktar lixxi, UI aktar rikka, integrazzjoni aktar stretta mal-bqija tal-OS, u ċiklu ta’ żvilupp li jimxi bil-veloċità tal-ideat. Jekk dan jidher bħal sfida għalik, agħti ħarsa lejn il-pożizzjonijiet miftuħa tagħna biex taħdem fuq Atlas bħala Software Engineer, Atlas, Software Engineer, iOS, u aktar.
Ipprova Atlas fuq chatgpt.com/atlas(jinfetaħ f’tieqa ġdida).
Ringrazzjamenti
Ringrazzjamenti speċjali lil Darin Fisher u Marie Shin, li kkontribwew għal din il-kariga u lit-tim kollu ta’ OpenAI li bena Atlas.


