DEX online sub capotă

Cosmin
Cosmin Negruseri
15 noiembrie 2008

Discutam de mai multă vreme cu Cătălin Frâncu despre proiecte personale şi despre Dex Online . Cu Cătălin am mai discutat pe blogul infoarena aici şi aici . Acum, la mai bine de un an dupa acele discuţii el a scris un articol foarte interesant despre traiectoria acestui proiect. Articolul este destul de lung, dar cred că e foarte interesant şi puteţi învăţa mult din el. De obicei înveţi din experienta proprie şi durează o perioada până treci prin destule proiecte incât să ai o privire de ansamblu. Articolul ăsta poate să vă scurteze acea perioadă. Aşa că luaţi o cană de cafea sau ceai şi vă urez lectură plăcută!

Scopul articolului

Acest articol prezintă diverse aspecte din existenţa de şapte ani a proiectului DEX online. Totuşi, articolul nu este în primul rând despre DEX online. Îl scriu la sugestia lui Cosmin Negruşeri pentru comunitatea infoarena.ro. Intenţia articolului este să disece, pentru foştii şi actualii olimpici la informatică, un exemplu de proiect din lumea reală, pentru a sublinia diferenţele între 1000 de progrămele de câte 100 de linii şi un program de 100.000 de linii, între programarea de unul singur şi lucrul în echipă, într-un proiect cu multe alte faţete decât cea informatică.

Textul pune în lumină particularităţi de natură tehnică, socială, etică şi financiară ale proiectului DEX online. Dintre acestea, voi insista pe latura etică şi socială a proiectului, pentru că de acolo au venit mai multe provocări şi realizări decât din domeniile tehnic şi financiar. Documentul se lansează adesea în judecăţi de natură morală, cu riscul de a plictisi. Sunt de părere că administratorul unui proiect cu oarecare utilitate practică nu poate rămâne amoral, ci trebuie să ia nişte decizii.

Nu recomand nimănui să facă lucrurile exact aşa cum le-am făcut noi. DEX online ar putea fi mai prezentabil. Sau ar putea oferi un corector ortografic pentru Word. Sau ar putea costa 5€/lună pentru accesul nelimitat la definiţii. Sau şi-ar putea răsplăti colaboratorii cu 10 centi pentru fiecare definiţie trimisă. Sau ar putea include un dicţionar urban. Acestea toate sunt hotărâri pe care le ia coordonatorul unui proiect în funcţie de timpul disponibil şi de scopurile echipei sale.

Auto organizarea proiectului

DEX online nu are manageri, nu are avocaţi, nu are contabili, nu are şedinţe, nu are ore fixe. Într-un cuvânt, DEX online nu are o ierarhie. DEX online are un website şi o listă de discuţii pentru voluntari, plus alte câteva unelte secundare (un sistem de gestiune a bug-urilor, un sistem de gestiune a emailurilor de la utilizatori, o pagină wiki practic nefolosită). Oamenii sunt cei mai productivi atunci când le oferi o listă de lucruri pe care le pot face în folosul proiectului şi îi laşi să facă ce le place cel mai mult. Ca urmare, avem unele definiţii care stau necorectate de luni de zile, deşi între timp am corectat mii de alte definiţii. Mie, ca programator, îmi revine sarcina de a crea o interfaţă în care voluntarii să poată lucra eficient. De aceea, îmi petrec mai mult timp lucrând la pagina moderatorului (invizibilă publicului larg) decât la paginile publice.

Este surprinzător ce oameni de calitate poţi aduna dacă menţii o listă de email activă timp de 7 ani. Ei rezolvă multe din problemele care pe mine mă depăşesc. De fapt, am încetat să mă mai consider „conducătorul” proiectului după primele 6 luni; prefer titlul istoric de „fondator” sau pe cel de „coordonator”. De exemplu, primim zilnic emailuri cu întrebări de natură lingvistică la care eu nu aş şti să răspund. Sau ne-am izbit de fineţuri legale. Sau a trebuit să creez o schemă MySQL pentru nişte date pe care nu le înţelegeam la nivel conceptual. Din fericire, pe lista noastră de discuţii există lingvişti, avocaţi şi programatori care ne-au scos întotdeauna din impas. Cu timpul, separarea funcţiilor s-a produs de la sine. De exemplu, sistemul de email are o coadă de mesaje destinate mie, cu cerinţe la care numai eu pot răspunde. La restul mesajelor aproape nu mă mai uit, pentru că alţi voluntari şi-au însuşit această parte a sistemului şi se ocupă impecabil de ea.

DEX online nu a avut niciodată ambiţii pe termen lung sau OKR-uri (obiective şi rezultate cheie). Sună un pic paradoxal, dar poţi avea nişte idei generale despre ce ar trebui făcut, fără să faci din asta o obligaţie. Poţi să te aştepţi să atingi obiectivul X la momenul T fără să promiţi că vei îndeplini obiectivul Y, care depinde de X, la momentul T + 1. De exemplu, am început prin a culege definiţii din DEX. Bazându-ne pe progresul zilnic, am estimat că va dura cam 5 ani să culegem tot DEX-ul (până la urmă a durat doar 3). Dar nu ne-am gândit la modul serios cu ce ne vom ocupa timpul după aceea sau ce vom face cu baza de date odată ce va fi completă. Nu mi-a plăcut niciodată acest gen de presiune, am preferat să nu le-o induc voluntarilor, şi nu se poate spune că am bătut pasul pe loc din cauza asta. Nici unui voluntar nu i s-a părut inacceptabil că am muncit trei ani pentru a culege un dicţionar, nici nu ne-am trezit în vreo dimineaţă sâcâiţi de gândul că trebuie să mai introducem 50 de definiţii şi poate n-avem chef.

Un aspect care poate dezamăgi, dar aşa s-a întâmplat, a fost începutul întâmplător al proiectului. Nu am stat zile în şir să mă gândesc „la ce-aş putea eu munci care să aibă un impact seminificativ pe internetul românesc?”. Abia după ce lucrasem la el vreun an am conştientizat că DEX online ar putea ajunge un site de referinţă. Ideea proiectului mi-a venit în 2001, când eram student în Boston şi foloseam zilnic dicţionare explicative englezeşti online pentru a-mi scrie temele. Pe de altă parte, duceam lipsa unui dicţionar explicativ românesc. Odată am avut o dispută cu un prieten asupra pluralului lui „cratiţă”: el susţinea că este „cratiţe”, iar eu „crătiţi”. Răspunsul, care i-a dat dreptate, a trebuit să aştepte câteva luni până am mers în vacanţă în România. De acolo am venit înapoi cu un DEX, dar m-am gândit că ar fi frumos să existe o variantă pe internet, de pe urma căreia să profite toată lumea, nu doar eu. Dar, având în vedere că după 6 luni de existenţă DEX online cuprindea vreo 50 de definiţii, din care vreo 45 introduse de mine, nu l-am luat foarte în serios. Ulterior, Federaţia Română de Scrabble (F.R.Sc.) a descoperit site-ul şi a început să contribuie masiv cu definiţii. Probabil acolo a fost punctul critic al proiectului şi, privind înapoi, mi se pare că s-a întâmplat un lucru nemaipomenit de improbabil ca 10 oameni să-şi pună încrederea într-un proiect cvasianonim, care ar fi putut merge prost din nenumărate motive. Concluzia acestui paragraf este că inspiraţia vine de unde nu te aştepţi.

Finanţe

DEX online nu vehiculează nici un fel de sume băneşti. Am evitat ca proiectul să aducă orice fel de venituri, din motive multiple.

  1. Banii aduc discordie. Singurul caz în care poate aş accepta să caut profit de pe urma siteului ar fi dacă toţi colaboratorii proiectului ne-am umple de bani, ceea ce o judecată la rece arată că nu e cazul. Veniturile ar fi imposibil de repartizat echitabil, deoarece natura muncii depusă de fiecare voluntar este diferită şi deci greu de cuantificat. Unii răspund la emailuri, alţii introduc sau corectează definiţii, alţii scriu cod, alţii lucrează la generarea flexiunilor.
  2. Veniturile vin din reclamă, iar reclama strică un site. Îl strică mai mult (dacă este o reclamă cu „daţi click pe maimuţă”) sau mai puţin (dacă este Google AdSense), dar îl strică, pentru că prin natura ei reclama are scopul de a distrage utilizatorul de la conţinutul paginii.
  3. O altă sursă de venituri ar fi limitarea accesului gratuit şi introducerea de costuri pentru accesul complet la baza de date, care nu intră în discuţie, deoarece nu se potriveşte filozofiei noastre.
  4. Veniturile trebuie contorizate, raportate la Fisc, impozitate, ceea ce duce la nevoia înregistrării unei firme, la angajarea unui contabil şi alte probleme cu care preferăm să nu ne dăm bătăi de cap.
  5. Odată ce un serviciu generează venituri, apare automat nevoia de mai multe venituri în flux continuu pentru a acoperi nişte cheltuieli periodice (tot ceea ce înseamnă cheltuielile unei firme). Ori, DEX online a ajuns acolo unde este tocmai pentru că nu l-am împins în nici un fel de la spate şi nu l-am tratat ca pe un serviciu, ceva de care trebuie să te ocupi în fiecare zi la oră fixă.

DEX online nu are nici cheltuieli seminificative. Am obţinut tot ce ne-a trebuit de la oameni şi firme care au apreciat calitatea proiectului: găzduirea, unele dintre dicţionare, fonduri pentru cumpărarea unui software de OCR. Cea mai mare donaţie însă este timpul liber al fiecăruia dintre participanţi.

Free as in freedom

În prezent, baza de date şi codul DEX online sunt disponibile sub licenţa GPL, dar am trecut prin diferite stadii până a ajunge aici.

Până în 2004, când DEX online conţinea cam 30.000 de definiţii, nici nu ne-am pus problema unei licenţe, mai ales că încă nu ştiam cu ce ochi priveşte Academia Română proiectul DEX online. Intenţia mea era în continuare să aştept până la reglementarea situaţiei cu Academia şi, eventual, DEX online să intre sub tutela acestui for.

Totuşi, în timp ce Academia nu manifesta nici un interes pentru DEX online, restul internetului românesc începuse să ne remarce. Apăruseră multe concepţii greşite şi critici la adresa DEX online, iar noi, ocupaţi cu introducerea datelor, neglijasem să ne expunem clar principiile într-un document. În paralel, interesul pentru baza de date era în creştere şi fusesem de mai multe ori vizitaţi de crawlere web a căror intenţie părea să fie să transfere toate definiţiile (comportamentul era evident diferit de al unui motor de căutare general). De asemenea, se punea problema dacă definiţiile preluate din DEX reprezintă un furt intelectual sau nu.

În acest context, am petrecut câteva zile schimbând emailuri cu ceilalţi membri ai proiectului şi, în final, am pus licenţa GFDL (GNU Free Documentation Licence) pe baza de date. Ulterior, am înlocuit GFDL cu GPL (General Public License), care se aplică la fel de bine scopurilor noastre şi evită nişte neajunsuri ale GFDL (în privinţa traducerilor şi a incompatibilităţii cu unele distribuţii de Linux). Licenţierea bazei de date a rezolvat multe probleme de natură etică, dar şi tehnică:

  • Am demonstrat că scopul primar al DEX online este să-i ajute pe vorbitorii de limbă română, nu să obţină profit material.
  • Am preîntâmpinat crearea unei pieţe negre pentru baza de date. Este imposibil să împiedici copierea unei definiţii odată ce o afişezi pe ecran.
  • Am permis programatorilor să folosească baza noastră de date pentru diverse aplicaţii interesante, ei având garanţia că nu putem să ne răzgândim mâine şi să le spunem „accesul la baza de date nu mai este liber” (în acest sens, licenţa GPL protejează mai degrabă documentul decât pe autorul său).
  • Deşi relaţia noastră cu Academia Română are încă un semn de întrebare, cel puţin am eliminat orice alte părţi din această dispută.
  • Din punct de vedere etic, am oferit în mod liber rodul unui proiect care, la rândul lui, s-a folosit din plin de resurse libere şi gratuite (nu doar software, dar şi munca voluntarilor, găzduirea, lista modelelor de flexiune, dicţionarele de la firma Siveco sau -- de ce nu -- educaţia mea, pentru care n-am cheltuit niciodată vreun ban).

Proiecte externe bazate pe DEX online

Ca dovadă că decizia de a redistribui liber baza de date a fost bună, iată ce unelte externe folosesc baza de date a DEX online (numai cele despre care am aflat noi):

  • Clienţi pentru consultarea offline a bazei de definiţii (vezi secţiunea de unelte)
  • Dicţionar pentru telefoanele mobile: http://www.jarcraft.com/page.php?9
  • Corector ortografic pentru OpenOffice, Firefox şi Thunderbird: http://www.archeus.ro/lingvistica/CorectorOrtografic
  • Dicţionar de rime: http://stefann22.lx.ro/
  • Client de Google Talk: http://www.archeus.ro/lingvistica/CautareGTalk
  • Spânzurătoarea: http://www.roportal.ro/jocuri/joaca-online/54.htm

Momente semnificative

Nefiind împovărat de griji financiare sau de obiective pe termen lung, DEX online a avut o existenţă destul de liniştită. Din acest punct de vedere, mă bucur că DEX online a rămas în stadiul de proiect făcut în timpul liber. Au existat totuşi câteva momente când viitorul proiectului a fost foarte nesigur sau, dimpotrivă, când proiectul a avansat în salturi foarte mari.

În primul rând, după cum am arătat, începutul a fost greoi. Mulţi factori făceau proiectul să arate cam neviabil. Cuprindea cu totul cam 50 de definiţii. Nu era disponibil tot timpul, deoarece era găzduit pe calculatorul meu din cămin, pe care îl mai şi rebootam uneori în Windows ca să mă joc câte ceva. Iar aspectul grafic era de-a dreptul îngrozitor: în primii 2 ani, DEX oline nu a folosit nici un fel de CSS, pentru că nu ştiam ce este acela. Mai exact, când am început proiectul DEX online, ştiam doar în mare ce este aceea o „pagină dinamică”: un program care e de presupus să producă ieşire HTML, care este servită clientului. Restul (HTML, formulare HTML, MySQL, Perl / PHP) le-am învăţat din mers. DEX online avea un fundal violet, fonturi negre şi tabele cu chenare groase. În diverse browsere, diverse caractere Unicode apăreau mai mari, mai mici, mai groase decât caracterele ASCII sau erau înlocuite de pătrăţele. Probabil că dacă aş vedea astăzi o iniţiativă asemănătoare, aş cataloga-o drept neserioasă. Este admirabil că primii noştri voluntari au reuşit să vadă dincolo de prezentare şi să se axeze pe conţinut.

De un alt impas ne-am izbit în 2004, când am reuşit să luăm legătura cu editura care a publicat DEX ediţiile 1996 şi 1998 (motivul pentru care nu le-am scris mai devreme a fost că aveau un website făcut complet în Flash, neindexat, la vremea aceea, de nici un motor de căutare; nu aveau nici legături către site, deci nu i-am putut găsi). Prima reacţie a editurii când le-am prezentat proiectul a fost „trebuie să închideţi siteul acum, altfel veţi suporta consecinţele legale”. Ca urmare, prima măsură pe care am luat-o a fost să aplicăm licenţa GFDL pe date, pentru ca în cazul în care ar fi trebuit să închidem siteul, datele să aibă o şansă să se răspândească. Ulterior, am ajuns la concluzia că ediţiile 1996 şi 1998 ale DEX sunt 99% identice cu ediţiile 1984 şi chiar 1975, care, fiind publicate în perioada comunistă, nu conţineau nici un fel de informaţii de copyright. Editura nu şi-a dat nici până astăzi acordul expres pentru DEX online, dar nici nu ne-a mai pus beţe în roate şi îi suntem recunoscători pentru aceasta.

În septembrie 2004, DEX online a sărit brusc de la 65.000 de definţii la vreo 240,000. Firma Siveco, care deţine drepturile de copiere asupra mai multor dicţionare (de sinonime, de antonime etc.) ne-a acordat permisiunea de a le republica sub licenţa GFDL. Câştigul a fost substanţial, dar ne-a dat şi foarte mult de lucru în lunile următoare. Am muncit mult la scripturile care au importat aceste definiţii, dar chiar şi aşa datele au fost importate cu destule erori, care au trebuit depistate şi corectate manual. Paradoxal, mulţi dintre oamenii cu pregătire lingvistică din jurul DEX online consideră aceste dicţionare ca fiind slabe calitativ (nu neapărat prin definiţii incorecte, cât prin definiţii inconsistente, neînchiderea tranzitivă a setului de sinonime şi alte motive). Totuşi, la acel moment erau cele mai bune date pe care le aveam la dispoziţie. E drept că pentru 1% din căutări rezultatele sunt nemulţumitoare, dar eu consider că acesta este un procentaj foarte bun.

Un eveniment interesant s-a petrecut în noiembrie 2006, când a apărut primul dicţionar urban pentru limba română (http://123urban.ro). Băieţii de la 123urban au o misiune foarte coerent definită: de a continua consemnarea limbii române de acolo de unde a lăsat-o Academia. Efortul lor este unul necesar: cel de a documenta termenii din nişa argotică. Apariţia lor ne-a făcut şi pe noi să ne întrebăm care ne sunt, de fapt scopurile şi cât de departe suntem dispuşi să mergem pentru a ne îmbogăţi baza de cuvinte definite. O variantă de colaborare, din punctul nostru de vedere, ar fi fost să includem baza lor de date ca pe o „sursă” separată (cot la cot cu DEX, DOOM şi celelalte). Până la urmă, colaborarea nu s-a materializat şi nu am mai urmărit-o de atunci. Noi nu am fost siguri că moderarea lor şi sistemul lor de votare funcţionează bine. Dacă o persoană propune o sintagmă, dar nimeni nu o coroborează printr-un vot pozitiv, DEX online trebuie să accepte acea sintagmă sau nu? În plus, baza de date a 123urban nu este disponibilă sub o licenţă compatibilă cu GPL, ceea îngreunează colaborarea din punct de vedere tehnic şi principial.

Evoluţia generatorului de flexiuni

În prezent, DEX online oferă flexiunile majorităţii cuvintelor limbii române. Dar procesul prin care am ajuns la acest stadiu este un exemplu tipic de colaborare într-un proiect deschis. Încep cu un mini-glosar pentru lămurirea termenilor tehnici:

  • lexem: unitate lexicală; suport minim al semnificaţiei; pentru toate scopurile practice, este cam totuna cu „cuvânt”.
  • formă flexionară: formă modificată a unui cuvânt pentru a exprima un raport gramatical (număr, gen, timp etc.). De exemplu, copilul este o formă flexionară a lexemului copil.
  • paradigmă: totalitatea formelor flexionare ale unui cuvânt.
  • model de flexiune: paradigmă comună tuturor lexemelor care se flexionează la fel (de exemplu, a lucra, a forma şi a cresta au toate acelaşi model de flexiune). Este practic o clasă de echivalenţă.

În 2006 am început să ne gândim serios să adăugăm flexiuni la cuvintele din DEX online. Cel mai complex aspect este reprezentarea diferitelor transformări pe care le suferă un cuvânt. Flexionarea în limba română se face, în general, prin adăugarea unor sufixe, dar aceste sufixe pot fi foarte variate. Ca exemplu, pluralul substantivelor feminine poate fi format cu -e (case), cu -i (inimi), cu -uri (ierburi), cu -ele (acadele), cu -ale (macarale) etc. În plus, Limba română abundă în fenomene morfologice care transformă un sunet într-altul la aplicarea unei flexiuni. Exemple de transformări comune sunt t → ţ (bărbat → bărbaţi) sau o → oa (uşor → uşoară). Unele flexiuni suferă mai multe transformări (sămânţă → seminţe). În plus, dorim să stocăm şi informaţii despre accentul fiecărui lexem şi cum se mută el în timpul flexionării (a împrumutá → eu împrumút), ceea ce duce la o varietate exponenţială de modele de flexiune.

Prima versiune a generatorului de flexiuni, pe care am implementat-o fără să mă consult cu nimeni (şi rău am făcut), indica în forma de bază a cuvântului fenomenele morfologice care apar la flexionare. De exemplu, pentru bărbat stocam forma de bază bărbaT, unde T indică transformarea t →ţ. Pentru băiat stocam forma de bază băiAT pentru a indica transformările a → e şi t → ţ (băieţi). Această informaţie referitoare la fiecare cuvânt trebuia cuplată cu nişte meta-cunoştinţe referitoare la partea de vorbire. De exemplu, transformarea t → ţ nu se aplică decât la pluralul substantivelor (forma de singular articulat este tot bărbatul, nu bărbaţul).

Implementarea acestui sistem a fost relativ uşoară, dar concepţia a fost greşită. Cineva ar fi trebuit să treacă prin toate cuvintele limbii române şi să indice aceste fenomene morfologice. Volumul de muncă ar fi fost mic comparabil cu tastarea unui dicţionar întreg, dar ar fi fost oricum considerabil. Argumentul care a demolat complet această implementare a fost că ea nu putea reprezenta toate modelele de flexiune. În primul rând, numărul de fenomene morfologice depăşeşte cu mult numărul de litere şi simboluri Unicode convenabile pentru notaţie, iar în al doilea rând, flexionarea bazată pe sufixe este inerent ambiguă. De exemplu, roditor şi chior au acelaşi sufix -or, dar se flexionează diferit ( roditoare, respectiv chioară).

De-abia în acest moment am început să caut alte soluţii. Astfel am aflat că lista de forme flexionare exista deja de zeci de ani. Alf Lombard (1902-1996), un lingvist suedez, a prins drag de limba română şi i-a studiat gramatica în amănunt. După care a creat nişte aşa-numite „modele de flexiune”. Adică a împărţit cuvintele limbii române în clase de echivalenţă cu flexionare identică, atâtea câte a putut identifica. Pentru fiecare clasă, a ales un cuvânt-exponent căruia i-a înşirat explicit paradigma. Prin studierea transformărilor exponentului, se poate deduce paradigma altui cuvânt cu acelaşi model de flexiune. De exemplu, ceapă şi damigeană au acelaşi model de flexionare. Ceapă este exponent şi pluralul lui, definit explicit, este cepe. Observăm transformările ea → e şi ă → e. Prin analogie, pluralul lui damigeană este damigene. În final, s-a dovedit că limba română are cam 800 de modele de flexiune (circa 280 pentru verbe, 320 pentru substantive, 120 pentru adjective şi altele). Aceste modele au fost publicate în Dictionnaire morphologique de la langue roumaine, apărut în 1981.

De aici datele au fost preluate de F.R.Sc. Ei aveau nevoie de lista flexiunilor pentru a stabili dacă un cuvânt depus în timpul jocului de scrabble este corect. Au adus deci lista de modele de flexiune la zi, conform cu ultimele norme ortografice, şi au etichetat toate cuvintele nou intrate în limbă cu modelul corespunzător. Această listă exista în format digital, dar era menţinută manual, într-un fişier Word. Pentru concursurile de scrabble, arbitrul dispunea de două cărţulii tipărite: una cu cuvintele acceptate, etichetate cu modelul de flexiune, şi una cu modelele de flexiune desfăşurate explicit.

DEX online a preluat listele de la F.R.Sc., beneficiind aşadar, complet gratuit, de rodul unei munci de zeci de ani. Ulterior, am continuat să etichetăm multe alte lexeme pe care F.R.Sc nu le tratase, deoarece din cele 130,000 de lexeme din DEX online, numai jumătate provin din DEX, restul provenind din alte dicţionare de specific (în special de neologisme şi de arhaisme).

În prezent, lista de flexiuni are foarte multe aplicaţii utile:

  • Pe baza ei am generat un corector ortografic.
  • Ea permite căutarea „full-text”, care altfel nu ar putea funcţiona prea bine. În absenţa listei de flexiuni, am putea căuta „carte” prin tot textul definiţiilor, dar căutarea nu ar înapoia definiţiile care conţin textul „cărţi” sau „cărţilor”.
  • Ea ne permite să răspundem la un click pe orice cuvânt dintr-o definiţie, trimiţând la definiţia acelui cuvânt. Din nou, fără această listă nu am şti ce să facem când utilizatorul ar da click pe cuvântul „cărţi”, pentru că nu am şti care este forma de bază a cuvântului.

Pentru a ne revanşa faţă de F.R.Sc., am decis să creăm un subsistem al DEX online (numit intern Flex online) în care F.R.Sc. să poată gestiona, mai bine decât într-un fişier Word, lista de cuvinte acceptate. De exemplu, dacă se dovedeşte că două lexeme nu se flexionează chiar identic, sistemul permite spargerea unui model de flexiune în două, modificarea clonei şi reasignarea lexemelor într-unul din cele două modele. Când F.R.Sc. emite o versiune nouă a listei de cuvinte (la fiecare câţiva ani), sistemul Flex online le permite să compare cele două versiuni, ceea ce ajută la eliminarea erorilor.

Ce am învăţat din asta

Când cineva vă oferă ajutorul, faceţi-vă luntre şi puntre ca să-i creaţi condiţii de muncă. Colaboratorii nu cresc pe toate drumurile şi trebuie preţuiţi. Dacă cineva vrea să scrie cod pentru proiect, daţi-i acces la repository şi asiguraţi-vă că vă poate trimite patch-uri. Dacă vrea să raporteze bug-uri, asiguraţi-vă că aveţi un sistem gen Bugzilla. Dacă se oferă să vă creeze un skin sau o interfaţă grafică mai bună, asiguraţi-vă că există o separare bună între extragerea datelor şi prezentarea lor (respectiv, folosiţi un template engine). Dacă vă pune la dispoziţie date, luaţi-le. O bună parte din programarea pentru DEX online am petrecut-o scriind scripturi care să importe diverse documente. A fost plicticos, dar a meritat.

Briciul lui Occam este o regulă foarte bună pentru a delimita munca manuală de scripting. Dacă durează X ore să prelucraţi manual nişte date şi Y ore să scrieţi un script care să le proceseze automat, scriptul merită scris doar dacă X > Y. De nenumărate ori am depistat nişte erori sistematice în definiţiile din DEX, dar le-am corectat manual, una câte una.

Programarea este frumoasă, dar reimplementarea a ceva ce există şi funcţionează, doar pentru că nu v-aţi informat şi nu aţi întrebat pe nimeni, este o risipă de talent.

20% din oameni fac 80% din muncă. Fiecare ţine cont cum vrea de acest fapt. La DEX online am încercat să le creez condiţii şi celorlalţi 80% dintre voluntari, dar recunosc că nu am reuşit întotdeauna. De exemplu, mulţi dintre voluntari, deşi au dorit să ne ajute, nu au învăţat niciodată cum să formateze corect definiţiile (avem un mini-set de notaţii pentru bold, italic, exponenţi ş.a.m.d.). Practic trebuia să trecem prin toată definiţia, să-i adăugăm diacritice şi să o formatăm, ceea ce dura cam la fel de mult ca şi rescrierea ei de la zero. De la un punct încolo am renunţat să îi mai trimit la documentaţie -- le respingeam pur şi simplu definiţiile trimise.

În marea lor majoritate, oamenii sunt buni şi vor să ajute; foarte puţini sunt cei care încearcă să facă rău sistemului. Problema este că oamenii răi sunt mai perseverenţi, iar efectele pot fi foarte grave („dacă amesteci o linguriţă de bălegar într-un butoi de vin, obţii un butoi de bălegar”). Trebuie deci să fiţi pregătiţi să vă petreceţi o bună parte din timp scriind cod care nu creează conţinut util, ci previne vandalismul. Este supărător, dar cu timpul vă veţi obişnui. De exemplu, nici un programator nu se supără că trebuie să implementeze autentificarea cu parole, deşi acel cod este destinat numai să-i blocheze pe cei 1% dintre utilizatori care s-ar gândi să se lege în contul altcuiva.

Oricât de intuitiv de folosit este proiectul vostru, marea majoritate a utilizatorilor nu vor şti să-l folosească sau îi vor folosi numai un subset mic de funcţii. De exemplu, puţină lume dă click pe legătura către conjugări / declinări care apare după rezultatele căutării în DEX online. Trebuie să fiţi pregătiţi să răspundeţi la multe, multe întrebări. Este bine să aveţi un sistem semiautomat de gestionare a emailurilor, unde să puteţi crea şabloane, pentru că multe din întrebări vor necesita răspunsuri identice. DEX online foloseşte OTRS, dar există multe alte soluţii.

Faceţi-vă cât mai dispensabili. Cu cât proiectul este mai descentralizat, cu atât va evolua mai uşor. Să nu ajungeţi niciodată la stadiul în care nu vă puteţi lua o vacanţă că se duce totul de râpă. În general, dacă alţi membri ai proiectului au mai multă energie ca voi, aveţi datoria morală să configuraţi sistemul astfel încât să nu-i ţineţi în loc. La DEX online, unica componentă de care mă ocup singur este scrierea codului. Corectarea definiţiilor şi a lexemelor şi răspunsul la emailuri merg foarte bine (sau chiar mai bine) în lipsa mea.

Un proiect util nu este neapărat dificil din punct de vedere tehnic. DEX online este exemplul perfect în acest sens. Sunt puţine locuri în cod unde am avut nevoie să implementez un algoritm „deştept”. Poate un exemplu ar fi diff-ul între două versiuni ale unei definiţii, pe care până la urmă nici nu îl folosim la nimic în practică. Un alt lucru la care ne-am gândit destul de mult înainte de a-l implementa este schema bazei de date care stochează modelele de flexiune. În rest însă, DEX online excelează prin răbdare, prin volumul de date adunate şi prin calitatea voluntarilor implicaţi, dar mai puţin prin algoritmii şi structurile de date folosite.

Concluzia este că sunt oameni care vorbesc şi sunt oameni care fac. DEX online nu a fost creat în cel mai eficient mod posibil (am tastat de mână o mulţime de definiţii); nu excelează la nivel tehnic (baza de date conţine, în esenţă, nişte cuvinte asociate cu nişte definiţii şi cu nişte forme flexionare); a fost adesea luat în râs şi criticat, mai ales în primii 3 ani de existenţă; are şi acum suficiente greşeli de tipar; şi, fiind vorba de un instrument lingvistic, nu va fi niciodată complet. Dar, în ritmul nostru şi cu neajunsurile noastre, o mână de oameni cu multă răbdare am reuşit să producem un document remarcabil.

Categorii:
remote content