Zilele trecute, un
buletin informativ prin e-mail mi-a adus marea veste: a apărut Zope
3.0.0.! Desigur, imensa majoritate a cititorilor n-ar simţi nici un fior
la o astfel de noutate, dar pentru mine este importantă. Nu doar că
Zope este unul dintre produsele pe care le folosesc în mod curent, ci este
totodată una dintre pasiunile mele.
Primul lucru pe care l-am
făcut a fost o vizită la situl oficial ca să aflu mai multe
amănunte, să aflu ce aduce nou şi, desigur, să descarc
programul. Şi abia aici a căzut bomba: Zope 3 nu mai este compatibil
cu Zope 2. Este un produs cu totul nou, dezvoltat pe parcursul a trei ani în
paralel cu versiunile succesive ale lui Zope 2. Ştiam despre acest proiect
şi am vizitat din când în când paginile wiki ce-l găzduiau, însă
nu mă aşteptam la o astfel de surpriză.
Iată-mă,
aşadar, decăzut din postura de expert la cea de
învăţăcel buimac, rătăcit prin dedesubturile unei
maşinării complexe. Dintr-o dată am realizat că cele mai
multe lucruri pe care cu trudă le-am învăţat nu-mi mai folosesc
la nimic. Aş putea lucra în continuare cu versiunea precedentă
(şi chiar voi fi obligat s-o fac), dar îmi este cu desăvârşire
peste putinţă să rezist tentaţiei de a mă delecta cu
noua mea jucărie. Până la urmă, face parte din farmecul
meseriei: eşti obligat mereu s-o iei de la început.
Am căutat
introduceri rapide, tutoriale, ceva care să-mi scurteze drumul. După
ce toate încercările mele au eşuat - materialele erau fie prea
generale, fie prea particulare - m-am resemnat cu calea firească: am
descărcat o carte numită Developer's Handbook şi am
început să-i citesc cele 500 de pagini, începând cu prefaţa.
După prima sută de pagini sunt capabil să trag câteva concluzii
interesante despre Zope 3 în particular şi despre open source în general.
În primul rând, am
înţeles că definiţia produsului s-a schimbat. În vreme ce Zope 2
era definit ca un server de aplicaţii web, Zope 3 este un framework
pentru dezvoltarea de aplicaţii web. Acest lucru schimbă radical
postura proiectantului: dacă până acum eram un utilizator al
produsului, lucrând cu uneltele pe care aplicaţia mi le punea la
dispoziţie, acum devin un proiectant cu statut egal cu proiectanţii
framework-ului, folosind exact aceleaşi unelte ca şi ei.
Această schimbare de
perspectivă a impus un refactoring total. Ruperea
compatibilităţii înapoi a fost o decizie curajoasă, dar care
este un mare pas înainte şi reprezintă o carte pe care lumea open
source are mai mari şase să o joace. Uneori, abordările
inovatoare impun astfel de decizii radicale şi chiar riscante.
În lumea comercială,
Apple a fost campioana riscurilor de acest gen. A trecut pe un procesor RISC,
făcând brusc desuete milioanele de maşini echipate cu procesoare
Motorola. A adoptat interfeţe USB, obligându-şi clienţii
să-şi schimbe întreaga periferie. A dezvoltat în regim open source
nucleul unui sistem de operare revoluţionar, bazat pe Mach 3.0 şi
Unix BSD... De fiecare dată s-a lovit de numeroase probleme, dar până
la urmă s-a dovedit că a avut dreptate.
O altă concluzie din
întâlnirea cu Zope 3 a fost că experimentul face parte din pregătirea
profesională firească în domeniul software. Ceea ce astăzi pare
excentric sau avangardist, mâine va fi poate norma. Dacă nu aş fi
dedicat câţiva ani unei alte pasiuni - sistemul Oberon - mi-ar fi fost cu
siguranţă mult mai greu să înţeleg cum
funcţionează un framework bazat pe componente. Dacă nu m-aş
fi încăpăţânat să scriu câteva aplicaţii în Smalltalk,
n-aş fi ajuns la cărţile despre tipare software (patterns)
şi aş fi fost pierdut în faţa unor noţiuni precum adapter,
factory sau proxy...
În fine, Zope 3
demonstrează o dată în plus că lumea open source s-a maturizat.
Cine-şi mai imaginează că dezvoltarea în regim open source este
dezordonată şi se bazează doar pe entuziasmul unor novici este
în plină eroare. Zope 3 a fost dezvoltat folosind metodologii clare,
elaborate anume pentru acest proiect şi bazate pe tehnicile eXtreme
Programming. Nimic nu s-a făcut la întâmplare iar multitudinea de
documente dedicate procesului de dezvoltare - începând de la guidelines de
ordin general şi până la convenţii de formare a
identificatorilor sau metodologiile de testare - poate servi drept dovadă.