Monday, June 13, 2011

Despre Zope, dupa 5 ani

Dupa multa vreme, un nou (scurt) post programming-related.

Si anume... Vroiam sa ma laud ca in fine am avut si eu dreptate cu ceva :) Mai exact, acum 5 ani scriam asta apropo de Zope si cat de enervanta era adoptia config-urilor XML (in comparatie cu cat de simple erau lucrurile in Django, pe care tocmai ma apucasem sa-l invat la vremea aia):
Fisierele de configurare sunt in Python. Un mare plus. Spun asta ca unul care de o luna - o luna jumate ma lupt cu editarea fisierelor de configurare in format XML. Postul asta, pe nume "Python is not Java", ar trebui sa fie un must-read pentru oricine se intampla "sa ia decizii" intr-un shop Python. Din pacate nu se intampla asa, dar asta deja e alta problema. Celor carcotasi ca mine cand vine vorba de fisiere XML de configuare li se spune "get a good editor, that can trigger the red alarm if your XML file is broken". Intrebarea e "ce e rau cu bietul meu editor Python, ce nu intelege XML?".
Si iata ca la recentul DjangoCon Europe Martijn Faassen, un Zope guru, a spus tocmai asta, mai mult sau mai putin:
Some of the ideas and fixes were good. Some, like xml configuration files, were bad and unpythonic. Even though the ideas behind it were good.

Configuration as such is good. It allows you to change things more easily. But don’t do it in xml files. But also watch out when doing it in python: you can easily get cyclic import conflicts. But if you do it right, you can combine and recombine configuration.
(mai multe despre ce a spus Martijn puteti gasi aici. )

Oricum, ca unu' care ma chinuiam sa sriu Python pentru Web folosind chestii precum Quixote sau direct prin comenzi mod-python (prin 2004-2005), umila mea parere este ca oamenii de web nu sunt atrasi de Django pentru ca este mai putin "insular" (ca sa preiau din discursul lui Martijn) sau pentru ca ii poti inlocui ORM-ul sau template system-ul oricand vrei, cu orice altceva vrei. Nu. Django a devenit popular si este in continuare folosit pentru ca te ajuta sa termini si sa faci chestii. De aceea, parca n-as vrea ca in continuare focus-ul pe development in Django sa fie pus pe modularitatea dusa la extrem sau pe chestii de care doar cativa programatori cu foarte mult timp liber au nevoie (exemplu: cand iti vine seful/clientul si iti zice "am nevoie de X pana la data Y", raspunsul tau n-ar trebui sa fie "dar ce ORM ai vrea sa folosim? Sau ce template system? Ia aminte ca sistemul template care vine by default cu Django nu este Pythonic". Pentru ca nu lucrurile astea il intereseaza pe client).

Anyway, inchei rant-ul aici :) Si ma self-congratulate ca scriu chestii in Django de 5 ani deja. O sa ma duc sa-mi cumpar singur o bere :)