Nu aveti permisiuni pentru a descarca fisierul grader_test2.ok
Diferente pentru propuneri/3-infoarena3 intre reviziile #63 si #46
Nu exista diferente intre titluri.
Diferente intre continut:
h1. IAP #3: Infoarena3
h1. IAP #1: Infoarena3
==Include(page="template/iap")==
|_. Data | 2007-11-08 | |_. Autor(i) | ==User(type="tiny" user="fluffy")== | |_. Stare | *_IN-DEZBATERE_*Propus pentru aprobare|
|_. Data | 2007-11-08 | |_. Autor(i) | ==User(type="tiny" user="fluffy")== | |_. Stare | S-a dezbatut, acum e din nou *_IN-CONSTRUCTIE_* |
h2. Abstract Pe scurt, codul din spatele site-ului infoarena2 este intr-o stare foarte proasta si trebuie rescris. Pagina aceasta incearca sa explice in detalii problemele din cod, si incearca sa demonstreze ca rescrierea soft-ului este cel mai bun mod de a avansa site-ul.
In sedinta din '24 octombrie':planificare/sedinta-20071024 eu ( ==user(user="fluffy")== ) am fost insarcinat sa scriu aceasta pagina. In urma sedintei din '7 noiembrie':planificare/sedinta-20071107 s-a decis sa reformulam aceasta pagina sub 'format IAP':propuneri. Propunerea a fost discutata si au venit cateva observatii din partea lui ==User(user="wickedman")==
In sedinta din '24 octombrie':planificare/sedinta-20071024 eu ( ==user(user="fluffy")== ) am fost insarcinat sa scriu aceasta pagina. In urma sedintei din '7 noiembrie':planificare/sedinta-20071107 s-a decis sa reformulam aceasta pagina sub 'format IAP':propuneri. Propunerea a fost discutata si au venit cateva observatii din partea lui ==User(user="wickedman")== la care trebuie sa raspund.
Am pus si un 'topic pe forum':forum/index.php?topic=2243.0, dar pana acum feedback-ul a fost sub asteptari. *Update:* Propun sa votam pe idea de a rescrie site-ul in python si sa aprobam acest IAP. Propunerea a devenit mult prea lunga si nu cred ca e practic sa intram in prea multe detalii de arhitectura. Daca o aprobam putem sa copiem bucati in planificare/development si sa facem IAP-uri pentru alte idei majore. Nimic din ce am scris nu ramane batut in cuie.
Am pus si un 'topic pe forum':http://infoarena.ro/forum/index.php?topic=2243.0, dar pana acum feedback-ul a fost sub asteptari.
h2. Motivatie
Atasamentele sunt un sistem complet distict, sunt fisiere pe disc sub-ordonate unui textblock din baza de date. Manipularea atasamentelor este FOARTE neplacuta, si pot aparea desincronizari in diverese locuri. Securitatea atasamentelor depinde de cea a textblock-urilor (si indirect a problemelor) in moduri complicate si imprevizibile. Ar fi mai bine sa avem un singur suport de "BLOB-uri" versionate.
Nu avem suport de redenumire si stergere care sa pastreze istoria, si nici o idee simplade design care ar permite asa ceva in baza de date. Trebuie investigat daca se poate folosi subversion in loc de MySQL pentru fisiere versionate.
Nu avem suport de redenumire si stergere care sa pastreze istoria, si nici o idee resonabil de design care ar permite asa ceva in baza de date. Trebuie investigat daca se poate folosi subversion in loc de MySQL pentru fisiere versionate.
h3. Securitatea si magia din wiki
In general fiecare a facut cum l-a taiat capul. Pe toti ne-a taiat cam stramb.
h2.Organizarepentruinfoarena3
h2. Propuneri
Multe dintre probleme infoarena2au aparut dincauzenon-tehnice,sianumedintr-un procesde dezvoltarehaotic.Amadunatnisteideipentrucumputemlucramaieficient.
Am adunat niste idei care sa ne ajute sa nu duplicam problemele din infoarena2. Nu ajunge sa ne plagem ca nu ne place codul, trebuie sa vedem cum facem mai bine.
h3. Folosim branch-uri
In infoarena2nu am 'folosit eficient branch-uri':http://producingoss.com/en/vc.html#branches. Absolut toate modificarile le-am facut direct in trunk iar asta nu este o idee buna. Exista mereu schimbari mari care au nevoie de mai multe commit-uri pentru a fi complet functionale. Astfel de schimbari trebuie facute intai intr-un branch special si abia apoi copiate(cusvn merge) in trunk. Asta face trunk-ul sa fie mai stabil si sa nu mai contina "cod mort".
In infoarena2 Nu am 'folosit eficient branch-uri':http://producingoss.com/en/vc.html#branches. Absolut toate modificarile le-am facut direct in trunk iar asta nu este o idee buna. Exista mereu schimbari mari care au nevoie de mai multe commit-uri pentru a fi complet functionale. Astfel de schimbari trebuie facute intai intr-un branch special si abia apoi copiate(svn merge) in trunk. Asta face trunk-ul sa fie mai stabil si sa nu mai contina "cod mort".
Un branch potisa facioricanddacaai access subversion,fara sa intrebipe nimeni. Intr-un branch este OK sa experimentezi cu absolut orice fara sa-ti faci griji ca strici site-ul pentru altii. Cand consideri ca este gata de copiat in trunk poti sa chemi pe cineva sa se uite peste modificari. Modificarile pot fi acceptate in trunk, sau pot aparea observatii si branch-ul poate fi respins. Daca un branch este respins poti sa ii rezolvi problemele si sa il propui din nou pentru includere in trunk.
Un branch poate sa faca oricine are access la subversion fara sa intrebe pe nimeni. Intr-un branch este OK sa experimentezi cu absolut orice fara sa-ti faci griji ca strici site-ul pentru altii. Cand consideri ca este gata de copiat in trunk poti sa chemi pe cineva sa se uite peste modificari. Modificarile pot fi acceptate in trunk, sau pot aparea observatii si branchul poate fi respins. Daca un branch este respins poti sa ii rezolvi problemele si sa il propui din nou pentru includere in trunk.
Ne dorim sa punem doar modificari aproximativ atomicein trunk, care sa nu introduca bug-uri. Este in continuare OK sa punembugfix-uri si tweak-uri minore de CSS direct in trunk. Branch-urile sunt necesare pentru feature-uri de genul blog, latex, array_validate, dataset-uri, caching, tag-uri, etc.
Ne dorim sa punem doar modificari aproximativ atomica in trunk, care sa nu introduca bug-uri. Este in continuare OK sa aplici bugfix-uri si tweak-uri minore de CSS direct in trunk. Branch-urile sunt necesare pentru feature-uri de genul blog, latex, array_validate, dataset-uri, caching, tag-uri, etc.
h3. Responsabilitati
Codul infoarena este open-source, iar oamenii lucreaza doar in timpul lor liber. Dar daca vrei sa ajuti infoarena atunci trebuie sa te tii de treaba si sa rezolvi tichetele pana la o anumita data. Bineinteles ca nu avem cum sa fortam pe nimeni sa lucreze la infoarena, dar se presupune cine vrea sa ne ajute nu vrea sa frece menta. Un tichet "acceptat" trebuie sa aiba un owner care este responsabil sa rezolve acel tichet pana la o anumita data. Un deadline nu inseamna "ar fi frumos sa avem #123 rezolvat pana luna viitoare". Un deadline inseamna ceva de genul "eu rezolv #124 pana maine si #125 poimaine". Astfel de deadline-uri functioneaza ca o motivatie suplimentara. Asta este foarte similar cu sistem-ul mare de roluri din 'echipa infoarena':echipa-infoarena, care pare sa functioneze destul de bine. Pe langa dead-line-uri per-tichet vom avem si un om care se ocupa de development in mod global, care acum este ==user(user="fluffy")==. *TODO:* de detaliat ce face dev lead? h3. Milestone-uri semnificative Milestone-urile din infoarena2 au fost foarte foarte confusing. Am impartit tichetele vag dupa prioritati, si le-am pus in milestone-uri, dar nu ne-am tinut de treaba. Cu cat un tichet era mai naspa si infricosator cu atat l-am pus undeva in viitor. Daca nimeni nu isi asuma responsabilitatea pentru un tichet atunci acel tichet nu va fi facut, indiferent de milestone-ul in care e pus. Propun sa avem 2 tipuri de milestone-uri:
Codul infoarena este open-source, iar oamenii lucreaza doar in timpul lor liber. Dar daca vrei sa ajuti infoarena atunci trebuie sa te tii de treaba si sa rezolvi tichetele pana la o anumita data. Bineinteles ca nu avem cum sa fortam pe nimeni sa lucreze la infoarena, dar se presupune ca un individ care vrea sa ne ajute cu adevarat nu vrea sa frece menta.
* Time-based, care incrementeaza versiunea cu _0.0.1_. Acolo punem tichete pentru care stim ca avem oameni sa le faca intr-un interval de timp relativ scurt. Le vom sincroniza aproximativ cu sedintele asociatiei sau cu rundele de concurs. * Feature-based, care incrementeaza versiunea cu _0.1_. Acolo punem tichete majore, care merita o incrementare a versiunii. Cand gasim oameni mutam tichetele in _+0.0.1_. Cand ramanem fara tichete intr-un astfel de milestone ii facem release.
Un tichet "acceptat" trebuie sa aiba un owner care este responsabil sa rezolve acel tichet pana la o anumita data. Un dead-line nu inseamna "ar fi frumos sa avem #123 rezolvat pana luna viitoare". Un deadline inseamna ceva de genul "eu rezolv #124 pana maine si #125 poimaine". Astfel de dead-line-uri ar fi un impuls interior pentru fiecare din noi.
h3.QualityAsurrance
Asta este foarte similar cu sistem-ul mare de roluri din 'echipa infoarena':echipa-infoarena, care momentan pare sa functioneze destul de bine. Pe langa dead-line-uri per-tichet vom avem si un om care se ocupa de development in mod global, care acum este ==user(user="fluffy")==. *TODO:* de detaliat ce face dev lead?
Noi am rulat in mare partesite-uldirectdin trunk si am avut de multe ori bug-urimari pesite-ul live. Motivul principalafost ca sa nu stagnamdevelopment-ulprin birocratie excesiva.Estetotusi destul deriscantsineprofesionalsarulam directdin trunk.
%{color:red}Ce urmeaza de aici este inca in constructie%
Putemsa avem un site specialdedevelopment pe trunk, dar care este marcat explicit pentru testing. Site-ul poate sa sa se updateze singurla ultimultrunksi sa ruleze teste automate folosind un dataset redus (pentru a minimiza efectele uneigauri de securitate). Scripturile necesare nu sunt deloc greu de scris. Ramanem totusi la idea de a rula din svn, nu aresens sa facem o procedura separata de upgrade/deployment.
h3. Milestone-uri semnificative
Noi avem o singura instanta care este in productie la orice moment. Asta inseamna ca nu are sens sa mentinem branch-uri separate stabile sau instabile. Noi nu facem "release-uri" publice in sensul standard si e posibil ca layout-ul standard subversion sa nu fie foarte util. Propun sa ne facem un layout custom: * branches/more-ajax: Sandbox-uri pentru schimbari majore * trunk/: Bleeding edge. De aici rulam site-ul de test. Bugs welcome! * release/infoarena-3.1.7: De aici rulam site-ul live. Facem commit cu multa grija. * external/smf-2.1.9: Pentru pachete externe care au nevoie de merge; echivalent vendor.
h3. Folosim branch-uri
Candstabilizamcopiemultimul trunkin release/sitestam un pic (osaptamana)panaestabil. Abiadupaastamigramlivepeultimulrelease,si facemdoarfix-uri pentrubug-uri majore. Ideal arfi sanu scriem inreleasedupa cemigramsite-ullive.
Nu mai rupem trunk-ul, toata lumea face brach. Dam lejer acces la svn, dar dam in cap daca face prostii in trunk.
h3. Cum alegem tehnologie
De multe ori s-a discutat ca infoarena sa folosesca o anume librarie avansata sau framework. Folosirea unei librarii externe este o decizie majora care trebuie analizata cu grija. O dependinta externa trebuie sa satisfaca urmatoarele conditii: * Sa fie simplu de inclus. Sa existe macar pachete debian si fedora; sau sa poata fi copiata direct in svn. *Nu* se accepta installere din afara distributiilor de linux. * Sa ne ajute cu ceva major care ar fi foarte greu sa facem de la 0. * Sa fie cunoscuta si dezvoltata activ. Altfel probabil ca respectiva librarie nu e foarte buna. * Sa nu impuna restrictii asupra arhitecturii site-ului. Asta elimina cam toate framework-urile. * Scalabil, testabil, etc. Mai mult, cine propune o dependinta trebuie sa dovedeasca ca indeplineste toate conditiile de mai sus. Putem sa facem asta prin tichete speciale de "investigare". Individul responsabil de un asemenea tichet trebuie sa invete tehnologia respectiva si sa ne ajute sa decidem daca merita folosita. Rezultatul unui asemenea tichet este un demo, care poate fi un branch sau o chestie from-scratch. Acel demo trebuie sa demonstreze viabilitatea respectivei tehnologii, dar nu trebuie sa fie neparat imediat utilizabil in trunk. Idei de demo-uri: * Wiki extern: putem folosi wiki din exterior si construi site-ul peste el? * 'SqlAlchemy':http://www.sqlalchemy.org: De facut o schema sql alchemy pentru tabelele de scoruri. Cat de usor se fac query-uri de statistici si cat de rapide sunt? * 'Selenium':http://www.openqa.org/selenium/: Cineva sa faca niste teste folosind Selenium peste infoarena2. Cum anume pot fi stocate in svn si rulate de oricine? * Form-uri: Nu avem o solutie definitiva pentru facut si validat form-uri. Cineva sa ia o asemenea librarie si sa faca CRUD de task-uri, si sa demonstreze ca e sensibil mai usor decat manual. * Tabele: Demo de tabel de scoruri prin AJAX. Cristi: this means you. * BL prin HTTP: Se poate face un BL accesibil direct prin http, fara a scrie controllere pentru fiecare functie? Poate evaluatorul sa acceseze functii de BL de pe live, fara access TCP la baza de date? * Wiki in subversion: Ar avea sens sa tinem textblock-uri si atasamente in subversion? Demo de manipulare cu teste de viteza. Probabil ca aceste demo-uri vor fi de fapt formulate sub forma de IAP-uri. Momentan inca nu am decis exact ce tehnologie folosim in infoarena3. Vom incepe sa facem IAP-uri doar cand structura de baza a site-ului este functionala h2. Arhitectura infoarena3 Ca sa evitem probleme tehnice din infoarena2 ne trebuie un o arhitectura clara si solida pe care sa putem construi. Trebuie sa evitam a ne "infunda" din nou. Acum nu avem inca nici un fel de cod scris si totul poate fi schimbat foarte usor. h3. Python ca limbaj de programare Propun sa scriem infoarena3 in python. Este un limbaj foarte OK pentru programarea web, cu multe librarii disponibile. Este recunoscut pentru a fi foarte foarte curat si a incuraja un stil frumos de cod. Avem oameni disponibili sa programeze in python. Este foarte dificil sa faci o alegere desteapta intre limbaje de programare, atat de dificil incat majoritatea discutiilor pe acest subiect sunt neproductive. Noi am dat cu banul si am ales python. Nu exista motive foarte bune pentru python dar nici motive foarte bune pentru a alege altceva. h3. Baza de date Propun sa folosim 'SQLAlchemy':http://www.sqlalchemy.org/ pentru a manipula baza de date, sau macar partea de expresii SQL. Ne scapa de a formata de mana conditii de where pentru chestiile simple, si suporta mai multe baze de date. Trebuie investigat cu multa grija si testata performanta. Vrem sa suportam minim MySQL pentru productie si SqlLite pentru development. Ar fi foarte util sa putem rula site-ul in modul de development fara o procedura complexa de setup.
Orice idee de a adauga o dependinta porneste de la minus 100 de puncte.
Avem nevoie de o schemaa bazeide dateinainte de a ne apuca serios delucru. Probabilcaosa scriem direct modelul sqlalchemy. Catevaidei:
h3. Ce tehnologie folosim (debatable)
* Atasamentele intra in baza de date ca blob-uri. Facem cache pe disk in serveru' de web; dar doar cache. * Refacem ia_textblock, face doar stocare versionata de blob-uri. De investigat merge cu ia_file. * Id-ul numerice peste tot. * ia_task si ia_task_classic, ia_task_output * ia_round si ia_round_classic. ia_round_archive? * ia_wiki separat: contine textblock si securitate private/protected/public. * ia_blog separat: contine data de publicare, autor, tag-uri (in ia_blog_tag) * Bagam id-uri de topic-uri smf in ia_task si ia_blog. * Spargem ia_score * ia_log din start. Il folosim pentru teste.
Python(wsgi pur) + sql alchemy + o librarie de textile.
h3. Wiki La baza site-ului vom avea o componenta de versionare de fisiere. Aceasta componenta nu stie absolut nimic de useri, probleme, securitate sau tag-uri. Orice semnificatie a fisierelor este data doar de mai sus. De la aceasta componenta ne dorim urmatoarele: * Fetch rapid, cu cache transparent pe disc. Nu servim fisiere direct baza de date. * Istorie completa a modificarilor * Delete reversibil, care sa apara in istorie * Mutare/copiere pastrata in istorie. * Posibilitatea de a distruge complet o revizie Nu avem nevoie de: * Directoare. Ne trebuie doar fisiere. * Meta-date. Versionam doar blob-uri; eventual cu cateva coloane strongly-typed (mime type?) * Notiuni de securitate. * Schimbari atomice pe mai multe fisiere. Este dificil sa satisfacem toate cerintele folosind tabele de SQL, dar se poate face. Multe cerinte pot fi relaxate pana aproape de nivelul infoarena2. O varianta interesanta ar fi sa folosim subversion pentru versionare, dar din pacate nu se mapeaza perfect pe ce vrem noi. De investigat si discutat. h3. MVC Avem ca si in infoarena2 un singur entry-point in tot site-ul. Acolo analizam requestul (ne uitam la url si query string) dupa care pasam munca la un controller. Un controller este o functie python care se ocupa de un request de la cap la coada. Controllerele nu se cheama niciodata unul pe altul. Multe controllere vor folosi probabil suportul de versionare. Trebuie sa putem refolosi usor codul de editare si istorie si sa il integram in alte componente. Ne dorim un editor integrat de task-uri si de profil de utilizator. Doar componentele mari ale site-ului vor avea propriile controllere. Pentru un tabel rapid sau un raport solutia preferata este sa facem un macro. h3. Securitate Securitatea se va face in codul de BL si va fi implementata distinct pentru fiecare tip de entitate. Fiecare utilizator va avem anumite permisiuni global iar pentru unele entitati vom putea adauga drepturi per-utilizator. Incercam sa facem securitatea cat mai simplu; in cod. Incercam sa evitam securitate declarativa dar prea complexa, cum e cea din windows. Nu vom suporta: * Id-uri globale de obiecte securizabile. * Grupuri de obiecte. * Logica de allow/deny. * Ierarhii. * Grupuri de utilizatori. Fiecare utilizator va avea anumite drepturi globale. Aceste drepturi pot fi editate doar de administratori, folosind checkbox-uri sau dropdown-uri pe pagina de cont. Aceasta pagina trebuie sa fie accesibila din pagina de profil. Drepturile globale vor fi hard-codate la un moment dat, dar le putem schimba din cod. * Daca utilizatorul este admin * Daca poate propune probleme * Daca poate posta pe blog * Daca poate edita enunturi de probleme (pentru neclaritati). * Daca este moderator pe forum (challenge!) Pentru probleme o sa avem o lista in care pot fi adaugati useri cu drepturi.
h2. Plan de bataie
* Propunator: Aproximativ orice * Reviewer: Modificari in enunt, download de teste. * Altceva?
Cum incepem development.
Pentrurunde putem incepe prinapermiteaccesul doar administratorilor,darulterior putemadaugaolistade usericu drepturi:
h3. Barebones read-only site
* Responsabil: poate sa modifice orice. * Tester: poate submita la probleme in afara concursului. * Invitat: pentru concursuri private sau finale live.
Facem intai site-ul in modul read-only: all content, some macros, no forms, no security. Bagam teste de performanta pe el. What does done mean?
h3.Logicade concursuri
h3. Coding camp public
Vremsasuportammai multe tipuri de problemesaurunde, fara sa oprimevaluatorul.Astaeste foarte realizabil dacanu ne incurcam cu sisteme multe prea generice. Nu o sa mai avem descriptoridesecuritatesi ia_parameter_values, toatedatele noastre vor fi accesibile in SQL curat.Asta inseamna ca putem safacem query-uricomplexepentru determinatce job-uritrebuie evaluate.
Chemam lumea pe santier sa praseasca form-uri si macro-uri.
h3.IntegrareSMF,textile.
h1. Old text, de reintegrat.
IntegrareaSMFosefacaincea maimarepartecuquery-uridirect intabeledeSMF. Tabele SMF suntrelativinteligibile.Pentrucazurileincare nuneajungeputeminvestiga un mod dea chema codphp dinpython inacelasi request.Aproapesigursepoate, dars-ar puteasa nerestranga la mod_python. Dacase poate atunciputem saevitamsaduplicam codul de header/footerspreexemplu,dar nueste critic.
Unele probleme din infoarena2 nu origineaza neaparat in cod, dar in modul nostru de lucru. Aici am pus niste idei pentru a imbunatati procesul de dezvoltare. Teoretic multe ar putea fi aplicate si pentru o dezvoltare in continuare a codului infoarena2.
Exista un parser textile pentru python dar nu esti dezvoltat activ. Asta nu e o problema; il introducem in repository si il modificam pentru ce avem nevoie. Putem face teste automate ca sa verifice ca output-ul este foarte similar. In infoarena2 am incercat sa modificam cat mai putin parser-ul de textile pentru a putea lua update-uri upstream. Asta nu s-a intamplat si cred ca e mai bine sa modificam fara mila. h2. Plan de bataie
h3. Responsabilitati
Ajunge cat am batut campii, trebuie sa ne apucat si de munca. Primul release public se va numi infoarena 3.0 si are ca criteriu implementarea intregii functionalitati infoarena2. Pana atunci vom face dezvoltarea intr-un branch separat din acelasi repository. h3. Ce se intampla cu infoarena2 si trac.
h3. Demo-uri
Infoarena2intra inmaintenance-onlymode;unde nureparamdecat chestiifoarte necesare.Facemrelease2.1.5sitrecemlalayout-ul derepositorypropuspentru infoarena3.Bagam toate ticheteleintr-un milestone de"Infoarena2.99blue-sky"si mutam in2.1.6doartichetelepentrucare putem asignaunom.
S-a propus de multe ori sa folosim framework-uri si librarii avansate. Adaugarea unei dependinte necesita un efort mare de invatare pentru toti cei implicati care se poate dovedi eventual inutil. Inainte de a inghiti o noua dependinta trebuie sa ne asiguram ca se merita. Eu propun sa facem asta prin tichete speciale de "investigare". Individul responsabil de un asemenea tichet trebuie sa invete tehnologia respectiva si sa ne ajute sa decidem daca merita folosita. Rezultatul unui asemenea tichet este un demo, care poate fi un branch de infoarena2 sau o chestie from-scratch. Acel demo trebuie sa demonstreze viabilitatea respective tehnologii, dar nu trebuie sa fie neparat imediat utilizabil in trunk.
Pentru infoarena3 facemtichetedeinvestigare si 2milestone-uri:"3.0" si "3.99 blue-sky"cuaceasisemnificatie.Momentam lucramin branches/infoarena3,facem switch la trunk cand dam release de 3.0. O sa avem si altebranch-uri de research pentru 3.0.
Exemplu de demo-uri care ar merita facute:
h3. Barebones read-only site
* 'SqlAlchemy':http://www.sqlalchemy.org: De facut o schema sql alchemy pentru tabelele de scoruri. Cat de usor se fac query-uri de statistici si cat de rapide sunt? * 'Selenium':http://www.openqa.org/selenium/: Cineva sa faca niste teste folosind Selenium peste infoarena2. Cum anume pot fi stocate in svn si rulate de oricine? * Form-uri: Nu avem o solutie definitiva pentru facut si validat form-uri. Cineva sa ia o asemenea librarie si sa faca CRUD de task-uri, si sa demonstreze ca e sensibil mai usor decat manual. * Tabele: Demo de tabel de scoruri prin AJAX. Cristi: this means you. * BL prin HTTP: Se poate face un BL accesibil direct prin http, fara a scrie controllere pentru fiecare functie? Poate evaluatorul sa acceseze functii de BL de pe live, fara access TCP la baza de date? * Wiki in subversion: Ar avea sens sa tinem textblock-uri si atasamente in subversion? Demo de manipulare cu teste de viteza. * Cat de bine se poate integra SMF in cod python? * Exista implementare textile in python. Trebuie modificata incat sa dea aceleasi rezultate cu textile din php. Se poate testa foarte usor, trebuie ca toata textila din infoarena2 sa se parseze identic.
Ca prim pas trebuie sa facem intai partile de content.Daca avem tot continutul importat putemsa facemtestefoarte realiste si savedem cat de viabile sunt ideile noastre. Nu incepemcu pagina deinregistrare utilizator. Ne trebuie:
h3. Arest la domiciliu
* Schema sql alchemy pentru baza de date. * Script import baza de date * Servire textile cu macro-uri * Cateva macro-uri (scoruri!) * Cateva form-uri (editare probleme!)
* Facem demo-uri si ne decidem ce tehnologii folosim. * Facem un nou branch svn, cu structura de directoare etc. * Facem schema bazei de date, cat sa acomodeze infoarena2. * Chemam lumea la santier
h3.Codingcamp public
Facem un mare santier in Bucuresti la Leonard si Mircea acasa, unde putem chema utilizatori infoarena existenti deja sa ne ajute (eventual cu macro-uri, form-uri etc). Pentru asta avem nevoie de o structura de baza functionala si pentru asta nu ajuta numerele. Asta inseamna ca intai o sa ne adunam developerii infoarena2 pentru un fel de bootstrapping.
Dupa ce avem site-ulin formaread-onlyaproximativcompletputemsafacemcodingcamp-uricumultalumepentru acontinuadezvoltarea.Aducemoameni,iiinvatamcumsa facabranch-urisiii punemsafacaform-urisimacro-uri.
Dupa acel mare santier lansam site-ul, care ar trebui sa fie utilizabil. O lansare de success inseamna ca vom avea multe commit-uri de acasa, eventual de la niste developeri noi. *Nu* vom avea un design nou si toata textila va fi importata fara modificari. Bineinteles ca toate astea sunt open to debate intr-o sedinta infoarena.