TSM - Experiența mea la Google Summer of Code

Dan Pop - Software Developer @ Codemart

În primul rând, pentru cei dintre voi care nu știu nimic despre acest program, ce este sau ce își propune să realizeze, vă voi oferi o scurtă introducere despre ceea ce reprezintă de fapt. Google Summer of Code este un program care oferă studenților din întreaga lume posibilitatea de a lucra într-o comunitate open source într-un mediu prietenos și bine organizat. Programul a fost lansat de Google, cu 14 ani în urmă și în fiecare vară, pentru o perioadă de trei luni, studenții lucrează la proiectele alese. La sfârșitul programului, studenții care și-au terminat munca cu succes vor fi plătiți împreună cu alte cadouri (de exemplu, tricouri) de la Google.

Cum funcționează toate acestea? Este destul de simplu. De aceea, e păcat că o mulțime de studenți buni se tem să aplice la acest proiect, fie pentru că pur și simplu nu știu de existenta lui, fie pentru că li se pare prea complicat. Din câte știu, eu am fost singurul student din Cluj-Napoca care s-a alăturat programului și l-a terminat cu succes în anul 2017, chiar dacă în acel an au fost disponibile o mulțime de proiecte interesante.

În prima fază, organizațiile open source aplică pentru GSoC prin prezentarea unor descrieri cu proiectele lor și teme explicite propuse pentru studenți. Ulterior, o listă a organizațiilor acceptate împreună cu proiectele acestora este publicată pe pagina oficială a GSoC. Studenții care sunt interesați pot naviga printre aceste proiecte și își pot alege unul dintre ele. După ce s-au decis (deoarece există multe proiecte foarte interesante în fiecare an și este greu de ales), studenții trebuie să ia legătura cu mentorii organizației sau cu alți membri pentru a se prezenta.

Apoi, fiecare student trebuie să își întocmească propria propunere de rezolvare pentru proiectul dorit. Propunerea ar trebui să precizeze în mod clar obiectivul proiectului ales și, de asemenea, să propună soluții tehnice pentru problemele prezentate împreună cu detalii de implementare. Propunerea trebuie să conțină, de asemenea, un plan de lucru în care să specifice activitatea săptămânală a studentului. Este recomandat ca la sfârșitul fiecărei iterații (2 - 4 săptămâni), un rezultat intermediar să poată fi prezentat. De asemenea, adăugarea unor detalii despre student sunt bine venite împreună cu un scurt CV sau altă descriere a experienței anterioare în domeniu.

După depunerea propunerii finale, mentorii, organizațiile și reprezentanții Google decid asupra criteriilor de acceptare. În cele din urmă, este publicată o listă de studenți acceptați și cu puțin noroc, tu vei fi unul dintre ei.

Fiecare student va primi un mentor sau, eventual, o echipă de mentori, care îl vor îndruma pe parcursul dezvoltării reale a proiectului. Comunicarea între student și mentor este necesară pentru a urmări munca și a continua în direcția corectă.

În fiecare lună, în timpul procesului de dezvoltare de 12 săptămâni, este necesară o evaluare. Studentul își va evalua mentorii și va da un feedback, iar mentorul la rândul lui va face la fel cu privire la munca pe care studentul a făcut-o în cursul lunii și la comportamentul său general. Pe baza acestei evaluări, studentul va continua sau nu colaborarea cu GSoC și, dacă este acceptat în continuare, va trece la următoarea fază a proiectului și va primi o remunerație pentru munca pe care a făcut-o în această perioadă. Anul trecut plata a fost distribuită în trei tranșe, 30%, 30% și 40% din suma totală, pentru fiecare lună de lucru. Suma de bani primită variază în funcție de orașul în care locuiești în momentul studiilor. De exemplu, eu ca student în Cluj-Napoca, România, am obținut un total de 3000 $, ceea ce este excelent pentru un student în al treilea an de facultate în România.

La sfârșitul programului se va anunța lista studenților ce au finalizat programul cu succes și se vor trimite remunerațiile finale. Câteva luni mai târziu sunt trimise și pachetele de cadouri pentru cei care au terminat programul, dar din păcate eu nu am fost prea norocos pentru că pachetul meu nu a sosit din cauza unor probleme de livrare.

Acum, că aveți câteva idei de bază despre acest program și cum funcționează, vă voi împărtăși puțin din experiența mea reală cu proiectul GSoC și ce a însemnat pentru mine.

După ce am aflat despre această oportunitate pentru vară de la compania Codemart (colaborator în GSoC timp de câțiva ani), am fost puțin îngrijorat în legătură cu aplicarea, deoarece am crezut că nu voi putea realiza toată cantitatea de muncă solicitată. După mai multe cercetări și câteva sfaturi, am găsit proiectul TVB care părea foarte interesant, așa că am căutat mai multe detalii despre el. "TheVirtualBrain este un mediu pentru simularea dinamicii rețelelor cerebrale pe scară largă cu conectivitate structurală realistă biologic. Este un proiect open source, al cărui scop este să furnizeze toate mijloacele necesare pentru a genera, manipula și vizualiza conectivitatea creierului și a dinamicii rețelei neuronale."

Echipa internațională de coordonare a neuroinformaticii (INCF) a acceptat două proiecte diferite legate de TVB pentru GSoC din 2017, iar eu am ales unul dintre ele. Proiectul meu a avut ca scop actualizarea unor pagini web în TVB, care în acel moment utilizau tehnologii vechi și necesitau actualizare, folosind caracteristici și tehnologii mai noi.

Am avut puțină experiență în ceea ce privește tehnologiile folosite în proiect (python, javascript, webGL și altele), dar a părut o bună ocazie de a-mi îmbunătăți abilitățile și experiența de programare.

Primul vizualizator la care am început să lucrez a fost Visualizer Spectrogram Wavelet. Lucrurile au început destul de încet, dar în fiecare săptămână am reușit să evoluez. Am adăugat noi funcționalități și în câteva săptămâni am reușit să îl finalizez, munca mea fiind adăugată în proiect. În acel moment, am fost oficial un contributor de cod in TVB și eram mândru de mine.

Cel de-al doilea vizualizator pe care l-am abordat a fost Isocline PSE Visualizer. Acest vizualizator a avut părți comune cu cel precedent și în două săptămâni a fost finalizat.

Odată cu trecerea timpului, am început să câștig din ce în ce mai multă experiență și îndemânare cu tehnologiile cu care lucram și cu tot proiectul TVB. Din acel moment, lucrurile au mers mult mai bine, terminând câte un nou vizualizator o dată pe săptămână sau la două săptămâni. Următorii vizualizatori pe care i-am actualizat au fost: Pearson Coefficients Visualizer, Complex Coherence Visualizer, Fourier Spectrum Visualizer, iar ultimul, care s-a dovedit a fi nu atât de simplu pe cât părea, a fost Topographic Visualizer.

Pentru mine, Google Summer of Code a fost o experiență minunată, deoarece am fost capabil să interacționez cu o comunitate open source și chiar să fac parte din ea. Cred că GSoC este o ocazie excelentă de a vă folosi cunoștințele în a scrie cod și, de asemenea, de a învăța multe lucruri noi, toate acestea contribuind la realizarea unui obiectiv comun, acela de a construi o comunitate de care putem toți să beneficiem. Nu a fost la fel de greu pe cum părea inițial. Nu trebuie să fii expert în programare, sunt necesare doar cunoștințe de bază și restul le vei dobândi pe drum. Personal, aș repeta cu drag această experiență.