- sunt dispus sa aloc 12 ore pe saptamana la acest proiect
- consta intr-o platforma generala de metin2 prin care se pot dezvolta teme noi
- am nevoie de oameni care sa "porteze" hp-urile / cms-urile la platforma mea (0 php, doar html, css si eventual javascript)
- temele vor fi bazate pe sintaxa de la Twig -- citind pagina "Twig for Designers" va ajuta mult
- trebuie dezvoltata tema classic -- vechea interfata folosita pana in 2015
- totul va fi tinut pe github (voi face o organizatie) unde vor exista repositorii cu teme (ulterior voi pune si platforma in sine)
Vad ca foarte multa lume inca mai foloseste darkdev in 2018 (yawn) si solutia lui Ionut Popescu. Insa am o noua solutie, care momentan este in planning, dar am sa v-o prezint treptat in acest topic.
Problema actuala si cea mai mare este urmatoarea: faci design-ul ala blanao care ii va da pe spate pe toti copii dar suferi de bottleneck-ul ala blanao: nu stii PHP. Cauti in stanga, dreapta, faci copy-pasta (pasta... caci e cod spaghetti) si iese ceva meh, nu conteaza ca e sigur sau ca e modern, las' fie facut.
Pentru aceasta problema s-a gasit solutia: programatorii au dezvoltat sisteme de templating (gen smarty, twig) care sa citeasca bucati de cod HTML cu niste logica simpla (ceea ce face twig foarte bine), sintaxa clean si simplu de invatat. Problema la Smarty e ca e destul de vechi si sintaxa este de cacao. Solutia cea mai optima este Twig, care este dezvoltata de o comunitate foarte mare de programatori si sintaxa acesteia este un standard in industrie, caci Python are Jinja2, JavaScript are o reimplementare a Twig din PHP in JavaScript si sunt multe, multe alte variatii ale sintaxei: moustache js (cu implementarea acesteia in 10+ limbaje), handlebars js. Insa sintaxa de baza, Jinja2 (care a fost preluata si de catre Twig) este cel mai bun standard.
Conceptual, Twig are doar trei elemente: tag-uri sub forma {% numetag 'parametru optional' %}...{% endnumetag %}, echo reprezentat de {{ nume_variabila }} si comentarii: {# comentariu... #}. Twig e atat de performant si de eficient incat a inceput sa fie folosit in noile versiuni de Drupal, phpBB si PrestaShop (toate acestea folosesc framework-ul Symfony intr-un fel sau altul).
Din moment ce Symfony este folosit de proiecte open-source majore, cu istoric indelungat, inseamna ca e bun la ceva. La lucru, la 3 proiecte, folosesc Symfony.
Cu astea fiind spuse, fara orice alta grasime sau whatevs, iata esenta: sunt dispus sa investesc timp limitat in dezvoltarea unui mic proiect bazat pe Symfony care sa fie folosit drept "framework" de acum inainte la serverele voastre de Metin2. Singurul lucru ce trebuie facut: teme.
Recent am avut tangenta cu dezvoltarea unei teme Prestashop 1.6 (inca foloseste Smarty), doar fiindca produsul de baza al companiei mele avea nevoie de implementarea unui sistem de teme. Tragand cu ochiul de unde stiam (vag de la PrestaShop, din amintiri din copilarie de la phpBB din era 4.metin), am terminat implementarea in 3 ore de lucru.
Okay, revenind pe traseu: eu va dau framework-ul cu documentatia pentru teme noi, iar voi va faceti temele. Daca va fi cazul, voi face un marketplace unde se vor centraliza aceste teme si eventual voi oferi posibilitatea de vinde teme.
Iar daca platforma va avea succes sau asa ceva, nu imi e greu sa implementez un sistem de module / extensii / whatevs ca sa extindeti unele fragmente din cod -- e chiar piece of cake, multumita sistemului de eventuri!
In timp ce faceam structura proiectului, am facut 4 directorii in themes (care, desigur, trebuie dezvoltate):
- classic - tema aia clasica, pe care o stim noi dinainte de redesign
- redesign - tema aia noua si urata
- mt2cms - tema aia faina a lui ionut popescu din mt2cms
Voi face in zilele urmatoare o organizatie pe github unde voi face repositoriile pentru tema. Cand voi finaliza backend-ul platformei, voi pune platforma acolo, in mod public. In functie de doritori, voi face o documentatie completa pentru cei care vor sa dezvolte tema.
Ah, era sa uit.
Platforma va avea nevoie de:
- Linux server. Daca il folositi pe Windows... Nu va voi putea ajuta deloc.
- Server web: Recomand nginx cu php-fpm. Poate fi orice server web. Dar recomandarea mea e cea mai buna.
- Baza de date: MariaDB. Sau macar MySQL 5.7 pentru site. Preferabil si pentru server.
- Versiune PHP: 7.2
Stai, stai, aud o intrebare din spate. Da, spune! A, de ce php 7.2? Pai... PHP 7.1 va mai fi suportat pana in 2019 iar 7.2 este ultima versiune stabila care va fi suportata pana in anul 2020. Iar proiectul... il orientez spre viitor. (vezi diagrama Gannt a lor daca ai tupeu sa nu crezi un programator in domeniu). Si chiar si asa, proiectul e bazat pe Symfony 4.2, care va aparea la finalul lunii noiembrie. Symfony 4 cere cel putin php 7.1 iar doctrine (libraria pentru baza de date) de la versiunea 3 va cere php 7.2 (momentan cere 7.1). Ma rog, mi-am facut temele pentru multe proiecte, sa prezint clientilor tehnologiile folosite. Cu astea vreau sa merg.
Uh... Mai era ceva? Ah da.
- Daca vrei sa faci teme, da-mi mesaj privat cu care tema vrei sa lucrezi (una de pe lista si link cu inca una pe care ai vrea s-o vezi pe site).
- Daca esti php developer si vrei sa ajuti, da-mi mesaj privat sa discutam.
- Daca vrei sa contribui cu o idee sau ceva gen, lasa reply la topic.
Hai ceau ca m-am lungit prea mult si prietena-mea ma asteapta acasa.
Seara faina!
