În ultimii 10 ani, a existat o explozie de interes pentru „calculul științific” și „știința datelor”: adică aplicarea calculului pentru a răspunde la întrebări și a analiza date în științele naturale și sociale. Pentru a răspunde acestor nevoi, am asistat la o renaștere a limbajelor de programare, a instrumentelor și a tehnicilor care îi ajută pe oamenii de știință și pe cercetători să exploreze și să înțeleagă datele și conceptele științifice, precum și să își comunice rezultatele. Însă, până în prezent, foarte puține instrumente s-au concentrat pe sprijinirea oamenilor de știință pentru a obține acces nefiltrat la întregul potențial de comunicare al browserelor web moderne. Așa că astăzi suntem încântați să vă prezentăm Iodide, un instrument experimental menit să ajute oamenii de știință să scrie documente interactive frumoase folosind tehnologii web, totul în cadrul unui flux de lucru iterativ care se simte similar cu alte medii de calcul științific.
Iodide în acțiune.
Peste a fi doar un mediu de programare pentru crearea de documente vii în browser, Iodide încearcă să elimine frecarea din fluxurile de lucru comunicative prin includerea întotdeauna a instrumentului de editare cu documentul lizibil curat. Acest lucru diferă de mediile de tip IDE care generează documente de prezentare precum fișierele .pdf (care sunt apoi separate de codul original) și de caietele de notițe bazate pe celule care amestecă elemente de cod și de prezentare. În Iodide, puteți obține atât un document care arată așa cum doriți să arate, cât și un acces ușor la codul de bază și la mediul de editare.
Iodide este încă foarte mult într-o stare alfa, dar urmând aforismul internetului „Dacă nu ești jenat de prima versiune a produsului tău, te-ai lansat prea târziu”, am decis să facem o lansare foarte timpurie, în speranța de a obține feedback de la o comunitate mai mare. Avem un demo pe care îl puteți încerca chiar acum, dar așteptați-vă la o mulțime de asperități (și vă rugăm să nu folosiți această versiune alfa pentru munca critică!). Sperăm că, în ciuda asperităților, dacă vă uitați cu atenție la acest lucru, veți putea vedea valoarea conceptului și că feedback-ul pe care ni-l oferiți ne va ajuta să ne dăm seama încotro să mergem mai departe.
- Cum am ajuns la Iodide
- Știința datelor la Mozilla
- De ce există atât de puțin web în știință?
- Către Iodul
- Anatomia lui Iodide
- Vizualizările Explore și Report
- Documente live, interactive cu puterea platformei Web
- Sharing, colaborare și reproductibilitate
- Pyodide: Stiva științifică Python în browser
- JSMD (JavaScript MarkDown)
- Ce urmează?
- Funcționalități de colaborare îmbunătățite
- Mai multe limbaje!
- Export notebook archive
- Iodide to text editor browser extension
- Sunt binevenite reacțiile și colaborarea!
- Despre Brendan Colloran
Cum am ajuns la Iodide
Știința datelor la Mozilla
La Mozilla, marea majoritate a activității noastre de știință a datelor se concentrează pe comunicare. Deși uneori implementăm modele menite să îmbunătățească în mod direct experiența unui utilizator, cum ar fi motorul de recomandare care îi ajută pe utilizatori să descopere extensiile de browser, în cea mai mare parte a timpului, cercetătorii noștri de date analizează datele noastre pentru a găsi și împărtăși informații care să informeze deciziile managerilor de produs, inginerilor și directorilor executivi.
Lucrul în domeniul științei datelor implică scrierea unei mari cantități de cod, dar, spre deosebire de dezvoltarea tradițională de software, obiectivul nostru este de a răspunde la întrebări, nu de a produce software. Acest lucru are ca rezultat, de obicei, un anumit tip de raport – un document, câteva diagrame sau poate o vizualizare interactivă a datelor. La fel ca multe organizații de știință a datelor, la Mozilla ne explorăm datele folosind instrumente fantastice precum Jupyter și R-Studio. Cu toate acestea, atunci când este timpul să ne împărtășim rezultatele, de obicei nu putem înmâna un caiet Jupyter sau un script R unui factor de decizie, așa că deseori ajungem să facem lucruri precum copierea cifrelor cheie și a statisticilor sumare într-un Google Doc.
Am constatat că nu este întotdeauna ușor să facem călătoria dus-întors de la explorarea datelor în cod la crearea unei explicații digerabile și înapoi. Cercetările arată că mulți oameni împărtășesc această experiență. Atunci când un cercetător de date citește raportul final al altuia și dorește să se uite la codul din spatele acestuia, poate exista o mulțime de fricțiuni; uneori urmărirea codului este ușoară, alteori nu. Dacă doresc să încerce să experimenteze și să extindă codul, lucrurile devin evident și mai dificile. Este posibil ca un alt cercetător de date să aibă codul dumneavoastră, dar să nu aibă o configurație identică pe mașina lor, iar configurarea acesteia necesită timp.
Cercul virtuos al muncii în știința datelor.
De ce există atât de puțin web în știință?
În contextul acestor fluxuri de lucru în știința datelor la Mozilla, la sfârșitul anului 2017 am întreprins un proiect care cerea vizualizarea interactivă a datelor. Astăzi puteți crea vizualizări interactive folosind biblioteci grozave pentru Python, R și Julia, dar pentru ceea ce am vrut să realizez, a trebuit să cobor la Javascript. Acest lucru a însemnat să mă îndepărtez de mediile mele preferate de știință a datelor. Instrumentele moderne de dezvoltare web sunt incredibil de puternice, dar extrem de complicate. Chiar nu am vrut să-mi dau seama cum să fac să funcționeze un lanț de instrumente de construire Javascript complet cu reîncărcare la cald a modulelor, dar în afară de asta nu am putut găsi prea multe care să vizeze crearea de documente web curate și lizibile în cadrul fluxului de lucru viu și iterativ care îmi este familiar.
Am început să mă întreb de ce nu exista acest instrument – de ce nu există Jupyter pentru construirea de documente web interactive – și în curând am făcut un zoom și m-am gândit de ce aproape nimeni nu folosește Javascript pentru calculul științific. Trei motive mari au sărit în ochi:
- Javascript în sine are o reputație mixtă în rândul oamenilor de știință pentru că este lent și incomod;
- nu există multe biblioteci de calcul științific care să ruleze în browser sau care să lucreze cu Javascript; și,
- după cum am descoperit, există foarte puține instrumente de codificare științifică care să permită o buclă de iterație rapidă și care să acorde, de asemenea, acces nefiltrat la capacitățile de prezentare din browser.
Acestea sunt provocări foarte mari. Dar, pe măsură ce m-am gândit mai mult, am început să cred că lucrul într-un browser ar putea avea unele avantaje reale pentru tipul de știință comunicativă a datelor pe care îl facem la Mozilla. Cel mai mare avantaj, bineînțeles, este că browserul are probabil cel mai avansat și mai bine susținut set de tehnologii de prezentare de pe planetă, de la DOM la WebGL, la Canvas și la WebVR.
Gândindu-mă la frecarea fluxului de lucru menționată mai sus, mi-a apărut un alt avantaj potențial: în browser, documentul final nu trebuie să fie separat de instrumentul care l-a creat. Am vrut un instrument conceput pentru a ajuta oamenii de știință să itereze pe documente web (practic aplicații web cu scop unic pentru explicarea unei idei)… și multe instrumente pe care le foloseam erau ele însele practic aplicații web. Pentru cazul de utilizare al scrierii acestor mici documente-aplicații web, de ce să nu grupați documentul cu instrumentul folosit pentru a-l scrie?
Făcând acest lucru, cititorii non-tehnici puteau vedea documentul meu cu aspect plăcut, dar alți cercetători de date puteau reveni instantaneu la codul original. Mai mult, din moment ce nucleul de calcul ar fi motorul JS al browserului, aceștia ar putea începe imediat să extindă și să experimenteze cu codul de analiză. Și ar putea face toate acestea fără să se conecteze la resurse de calcul de la distanță sau să instaleze vreun software.
Către Iodul
Am început să discut cu colegii mei despre potențialele argumente pro și contra ale calculului științific în browser și, în cursul conversațiilor noastre, am observat și alte tendințe interesante.
În interiorul Mozilla vedeam o mulțime de demonstrații interesante care prezentau WebAssembly, o nouă modalitate pentru browsere de a rula cod scris în alte limbaje decât Javascript. WebAssembly permite ca programele să fie rulate la o viteză incredibilă, în unele cazuri apropiată de cea a programelor binare native. Am văzut exemple de procese costisitoare din punct de vedere computațional, cum ar fi motoare întregi de jocuri 3D, care rulează fără probleme în browser. În viitor, ar fi posibil să se compileze cele mai bune biblioteci de calcul numeric C și C++ în WebAssembly și să fie incluse în API-uri JS ergonomice, la fel cum face proiectul SciPy pentru Python. Într-adevăr, proiectele începuseră deja să facă acest lucru.
WebAssembly face posibilă rularea codului la o viteză aproape nativă în browser.
Am observat, de asemenea, disponibilitatea comunității Javascript de a introduce o nouă sintaxă atunci când acest lucru îi ajută pe oameni să își rezolve problema mai eficient. Poate că ar fi posibil să se emuleze unele dintre elementele sintactice cheie care fac programarea numerică mai inteligibilă și mai fluidă în MATLAB, Julia și Python – înmulțirea matricelor, felierea multidimensională, operațiunile de difuzare a tablourilor și așa mai departe. Din nou, am găsit și alți oameni care se gândeau la lucruri similare.
Cu aceste fire convergente, am început să ne întrebăm dacă platforma web ar putea fi pe punctul de a deveni o casă productivă pentru calculul științific. Cel puțin, părea că ar putea evolua pentru a servi unora dintre fluxurile de lucru comunicative pe care le întâlnim la Mozilla (și pe care atât de mulți alții le întâlnesc în industrie și în mediul academic). Având în vedere că nucleul Javascript se îmbunătățește tot timpul și posibilitatea de a adăuga extensii de sintaxă pentru programarea numerică, poate că JS însuși ar putea deveni mai atractiv pentru oamenii de știință. WebAssembly părea să ofere o cale către mari biblioteci științifice. Al treilea picior al scăunelului ar fi un mediu pentru crearea de documente de știință a datelor pentru web. Acest ultim element este cel asupra căruia am decis să ne concentrăm experimentele inițiale, ceea ce ne-a adus la Iodide.
Anatomia lui Iodide
Iodide este un instrument conceput pentru a oferi oamenilor de știință un flux de lucru familiar pentru a crea documente interactive cu aspect grozav, folosind întreaga putere a platformei web. Pentru a realiza acest lucru, vă oferim un „raport” – practic o pagină web pe care o puteți completa cu conținutul dumneavoastră – și câteva instrumente pentru explorarea iterativă a datelor și modificarea raportului dumneavoastră pentru a crea ceva ce sunteți gata să împărtășiți. Odată ce sunteți gata, puteți trimite un link direct către raportul finalizat. Dacă colegii și colaboratorii dvs. doresc să vă revizuiască codul și să învețe din el, pot reveni la un mod de explorare cu un singur clic. Dacă doresc să experimenteze cu codul și să îl folosească ca bază a propriei lor lucrări, cu încă un clic pot să-l bifurce și să înceapă să lucreze la propria versiune.
Citește mai departe pentru a afla mai multe despre unele dintre ideile pe care le experimentăm în încercarea de a face ca acest flux de lucru să se simtă fluid.
Vizualizările Explore și Report
Iodide își propune să strângă bucla dintre explorare, explicație și colaborare. Centrală în acest sens este capacitatea de a trece de la o redactare cu aspect plăcut la un mediu util pentru explorarea computațională iterativă.
Când creați pentru prima dată un nou caiet Iodide, începeți în „vizualizarea de explorare”. Aceasta oferă un set de panouri, inclusiv un editor pentru scrierea codului, o consolă pentru vizualizarea ieșirii din codul pe care îl evaluați, un vizualizator de spațiu de lucru pentru examinarea variabilelor pe care le-ați creat în timpul sesiunii și un panou de „previzualizare a raportului” în care puteți vedea o previzualizare a raportului dumneavoastră.
Editarea unui fragment de cod Markdown în vizualizarea de explorare a Iodide.
Dând clic pe butonul „REPORT” din colțul din dreapta sus, conținutul previzualizării raportului dvs. se va extinde pentru a umple întreaga fereastră, permițându-vă să puneți povestea pe care doriți să o spuneți în față și în centru. Cititorii care nu știu să codeze sau care nu sunt interesați de detaliile tehnice se pot concentra pe ceea ce încercați să transmiteți fără a fi nevoiți să umble prin cod. Atunci când un cititor vizitează linkul către vizualizarea raportului, codul dvs. va rula automat. în cazul în care dorește să vă revizuiască codul, un simplu clic pe butonul „EXPLORE” din dreapta sus îl va aduce înapoi în vizualizarea de explorare. De acolo, ei pot face o copie a caietului pentru propriile lor explorări.
Mutarea de la vizualizarea explorare la vizualizarea raport.
De fiecare dată când partajați un link către un caiet Iodide, colaboratorul dvs. poate avea întotdeauna acces la aceste două vizualizări. Documentul curat și lizibil nu este niciodată separat de codul executabil subiacent și de mediul de editare live.
Documente live, interactive cu puterea platformei Web
Documentele Iodide trăiesc în browser, ceea ce înseamnă că motorul de calcul este întotdeauna disponibil. Ori de câte ori vă partajați munca, partajați un raport interactiv live cu cod în execuție. Mai mult, deoarece calculul are loc în browser alături de prezentare, nu este nevoie să apelați un backend de limbaj într-un alt proces. Acest lucru înseamnă că documentele interactive se actualizează în timp real, deschizând posibilitatea unor vizualizări 3D fără întreruperi, chiar și cu latența redusă și frame-rate-ul ridicat necesare pentru VR.
Contribuabilul Devin Bayly explorează datele RMN ale creierului său
Sharing, colaborare și reproductibilitate
Construirea Iodide în web simplifică o serie de elemente de fricțiune a fluxului de lucru pe care le-am întâlnit în alte instrumente. Împărtășirea este simplificată deoarece scrierea și codul sunt disponibile la aceeași adresă URL, mai degrabă decât, să zicem, lipirea unui link către un script în notele de subsol ale unui Google Doc. Colaborarea este simplificată deoarece nucleul de calcul este browserul, iar bibliotecile pot fi încărcate prin intermediul unei cereri HTTP ca orice pagină web care încarcă scripturi – nu trebuie instalate limbaje, biblioteci sau instrumente suplimentare. Și pentru că browserele oferă un strat de compatibilitate, nu trebuie să vă faceți griji cu privire la faptul că comportamentul caietelor este reproductibil între calculatoare și sisteme de operare.
Pentru a sprijini fluxurile de lucru colaborative, am construit un server destul de simplu pentru salvarea și partajarea caietelor. Există o instanță publică la iodide.io unde puteți experimenta cu Iodide și vă puteți împărtăși munca în mod public. De asemenea, este posibil să vă configurați propria instanță în spatele unui firewall (și, de fapt, acest lucru este ceea ce facem deja la Mozilla pentru unele lucrări interne). Dar, ceea ce este important, caietele în sine nu sunt profund legate de o singură instanță a serverului Iodide. În caz de nevoie, ar trebui să fie ușor să vă migrați munca pe un alt server sau să exportați caietul ca un pachet pentru a fi partajat pe alte servicii precum Netlify sau Github Pages (mai multe despre exportul pachetelor mai jos, la secțiunea „Ce urmează?”). Păstrarea calculului în client ne permite să ne concentrăm pe construirea unui mediu cu adevărat grozav pentru partajare și colaborare, fără a fi nevoie să construim resurse de calcul în cloud.
Pyodide: Stiva științifică Python în browser
Când am început să ne gândim să facem web-ul mai bun pentru oamenii de știință, ne-am concentrat pe modalitățile prin care am putea face ca lucrul cu Javascript să fie mai bun, cum ar fi compilarea bibliotecilor științifice existente în WebAssembly și împachetarea lor în API-uri JS ușor de utilizat. Când am propus acest lucru experților WebAssembly de la Mozilla, aceștia au oferit o idee mai ambițioasă: dacă mulți oameni de știință preferă Python, veniți în întâmpinarea lor acolo unde se află prin compilarea stivei științifice Python pentru a rula în WebAssembly.
Am crezut că acest lucru sună descurajant – că va fi un proiect enorm și că nu va oferi niciodată performanțe satisfăcătoare… dar două săptămâni mai târziu, Mike Droettboom avea o implementare funcțională a Python care rula în interiorul unui notebook Iodide. În următoarele două luni, am adăugat Numpy, Pandas și Matplotlib, care sunt de departe cele mai utilizate module din ecosistemul științific Python. Cu ajutorul colaboratorilor Kirill Smelkov și Roman Yurchak de la Nexedi, am obținut suport pentru Scipy și scikit-learn. De atunci, am continuat să adăugăm alte biblioteci încetul cu încetul.
Executarea interpretului Python în interiorul unei mașini virtuale Javascript adaugă o penalizare de performanță, dar această penalizare se dovedește a fi surprinzător de mică – în testele noastre de referință, în jur de 1x-12x mai lentă decât cea nativă pe Firefox și 1x-16x mai lentă pe Chrome. Experiența arată că acest lucru este foarte utilizabil pentru explorarea interactivă.
Executarea Matplotlib în browser permite funcțiile sale interactive, care nu sunt disponibile în mediile statice
Aducerea Python în browser creează niște fluxuri de lucru magice. De exemplu, puteți să importați și să vă curățați datele în Python, iar apoi să accesați obiectele Python rezultate din Javascript (în cele mai multe cazuri, conversia are loc automat), astfel încât să le puteți afișa folosind biblioteci JS precum d3. Chiar și mai magic, puteți accesa API-urile browserului din codul Python, permițându-vă să faceți lucruri cum ar fi manipularea DOM fără a atinge Javascript.
Desigur, mai sunt multe de spus despre Pyodide și merită un articol propriu – vom intra în mai multe detalii într-o postare de urmărire luna viitoare.
JSMD (JavaScript MarkDown)
La fel ca în Jupyter și în modul R-Markdown din R, în Iodide puteți intercala codul și scrierea după cum doriți, împărțindu-vă codul în „bucăți de cod” pe care le puteți modifica și rula ca unități separate. Implementarea noastră a acestei idei este paralelă cu modul „cell” din R Markdown și MATLAB: în loc să folosim o interfață bazată în mod explicit pe celule, conținutul unui caiet Iodide este doar un document de text care folosește o sintaxă specială pentru a delimita anumite tipuri de celule. Noi numim acest format de text „JSMD”.
În conformitate cu MATLAB, bucățile de cod sunt definite de linii care încep cu %%
urmate de un șir de caractere care indică limba bucății de mai jos. În prezent, susținem chunks care conțin Javascript, CSS, Markdown (și HTML), Python, un chunk special „fetch” care simplifică încărcarea resurselor și un chunk de plugin care vă permite să extindeți funcționalitatea Iodide prin adăugarea de noi tipuri de celule.
Am constatat că acest format este destul de convenabil. Facilitează utilizarea instrumentelor orientate pe text, cum ar fi vizualizatoarele diff și propriul editor de text preferat, și puteți efectua operații standard de text, cum ar fi tăierea/copiatul/lipirea, fără a fi nevoie să învățați scurtături pentru gestionarea celulelor. Pentru mai multe detalii, puteți citi despre JSMD în documentația noastră.
Ce urmează?
Merită să repetăm că suntem încă în versiune alfa, așa că vom continua să îmbunătățim polish-ul general și să eliminăm bug-urile. Dar, în plus, avem în minte o serie de caracteristici pentru următoarea rundă de experimente. Dacă vreuna dintre aceste idei sare în ochi ca fiind deosebit de utilă, anunțați-ne! Chiar mai bine, anunțați-ne dacă doriți să ne ajutați să le construim!
Funcționalități de colaborare îmbunătățite
După cum am menționat mai sus, până acum am construit un backend foarte simplu care vă permite să vă salvați munca online, să vă uitați la munca făcută de alte persoane și să vă bifurcați și să extindeți rapid caietele existente făcute de alți utilizatori, dar aceștia sunt doar pașii inițiali într-un flux de lucru colaborativ util.
Următoarele trei caracteristici mari de colaborare pe care căutăm să le adăugăm sunt:
- Filiere de comentarii în stilul Google Docs
- Capacitatea de a sugera modificări la caietul unui alt utilizator prin intermediul unui flux de lucru de tip fork/merge similar cu solicitările Github pull
- Editarea simultană a caietului ca în Google Docs.
În acest moment, le prioritizăm aproximativ în această ordine, dar dacă le-ați aborda într-o ordine diferită sau dacă aveți alte sugestii, anunțați-ne!
Mai multe limbaje!
Am vorbit cu oameni din comunitățile R și Julia despre compilarea acestor limbaje în WebAssembly, ceea ce ar permite utilizarea lor în Iodide și în alte proiecte bazate pe browser. Investigațiile noastre inițiale indică faptul că acest lucru ar trebui să fie fezabil, dar că implementarea acestor limbaje ar putea fi un pic mai dificilă decât Python. Ca și în cazul Python, se deschid niște fluxuri de lucru interesante dacă puteți, de exemplu, să ajustați modele statistice în R sau să rezolvați ecuații diferențiale în Julia și apoi să afișați rezultatele folosind API-uri pentru browsere. Dacă vă interesează să aduceți aceste limbaje pe web, vă rugăm să ne contactați – în special, ne-ar plăcea să primim ajutor de la experții FORTRAN și LLVM.
Export notebook archive
Primele versiuni ale Iodide erau fișiere HTML executabile de sine stătătoare, care includeau atât codul JSMD utilizat în analiză, cât și codul JS utilizat pentru a rula Iodide în sine, dar ne-am îndepărtat de această arhitectură. Experimentele ulterioare ne-au convins că avantajele colaborării de a avea un server Iodide depășesc avantajele gestionării fișierelor pe sistemul local. Cu toate acestea, aceste experimente ne-au arătat că este posibil să luăm un instantaneu executabil al unui notebook Iodide prin inlingerea codului Iodide împreună cu toate datele și bibliotecile utilizate de un notebook într-un singur fișier HTML mare. Acesta ar putea sfârși prin a fi un fișier mai mare decât ați dori să serviți utilizatorilor obișnuiți, dar s-ar putea dovedi util ca un instantaneu perfect reproductibil și arhivabil al unei analize.
Iodide to text editor browser extension
În timp ce mulți oameni de știință sunt destul de obișnuiți să lucreze în medii de programare bazate pe browser, știm că unii oameni nu vor edita niciodată codul în altceva decât în editorul lor de text preferat. Ne dorim cu adevărat ca Iodide să vină în întâmpinarea oamenilor acolo unde se află deja, inclusiv a celor care preferă să își tasteze codul într-un alt editor, dar doresc să aibă acces la funcțiile interactive și iterative pe care le oferă Iodide. Pentru a răspunde acestei nevoi, am început să ne gândim la crearea unei extensii ușoare pentru browser și a unor API-uri simple care să permită lui Iodide să vorbească cu editorii din partea clientului.
Sunt binevenite reacțiile și colaborarea!
Nu încercăm să rezolvăm toate problemele științei datelor și ale calculului științific și știm că Iodide nu va fi pe placul tuturor. Dacă aveți nevoie să procesați terabiți de date pe clustere GPU, probabil că Iodide nu are prea multe de oferit. Dacă publicați articole în reviste și trebuie doar să redactați un document LaTeX, atunci există instrumente mai bune pentru nevoile dumneavoastră. Dacă întreaga tendință de a aduce lucruri în browser vă face să vă strâmbați puțin din nas, nicio problemă – există o serie de instrumente cu adevărat uimitoare pe care le puteți folosi pentru a face știință, iar noi suntem recunoscători pentru asta! Nu dorim să schimbăm modul de lucru al nimănui, iar pentru mulți oameni de știință comunicarea axată pe web nu are nicio importanță. Rad! Trăiește-ți cea mai bună viață!
Dar pentru acei oameni de știință care produc conținut pentru web, și pentru cei care ar putea dori să facă acest lucru dacă ar avea instrumente concepute pentru a sprijini modul în care lucrați: ne-ar plăcea foarte mult să auzim de la voi!
Vă rugăm să vizitați iodide.io, să îl încercați și să ne oferiți feedback (dar din nou: rețineți că acest proiect este în faza alfa – vă rugăm să nu îl folosiți pentru nicio muncă critică și vă rugăm să fiți conștienți de faptul că, în timp ce ne aflăm în faza alfa, totul se poate schimba). Puteți răspunde la sondajul nostru rapid, iar problemele Github și rapoartele de erori sunt foarte binevenite. Cererile de caracteristici și gândurile despre direcția generală pot fi împărtășite prin intermediul grupului nostru Google sau Gitter.
Dacă doriți să vă implicați în a ne ajuta să construim Iodide, suntem open source pe Github. Iodide atinge o mare varietate de discipline software, de la dezvoltarea modernă de front-end la calcul științific până la compilare și transpilare, așa că există o mulțime de lucruri interesante de făcut! Vă rugăm să ne contactați dacă vă interesează ceva din toate acestea!
Mulțumiri uriașe lui Hamilton Ulmer, William Lachance și Mike Droettboom pentru munca lor excelentă la Iodide și pentru revizuirea acestui articol.
Despre Brendan Colloran
Mai multe articole de Brendan Colloran…