devblog The CubeTutor Controversy

Scriu această postare pe blog ca răspuns la un podcast care a fost publicat acum câteva zile despre Cube Tutor și unele dintre problemele legate de starea actuală de dezvoltare a acestuia.

http://solelysingleton.libsyn.com/season-3-episode-1-the-cube-tutor-controvesy

Aș dori să le mulțumesc lui Brad și Eric pentru producerea acestui episod. Ei au abordat un subiect pe care au tot dreptul din lume să țipe și să se enerveze cu un ton matur, echilibrat, clar și politicos. După cum probabil vă puteți imagina, a fost un lucru foarte dificil pentru mine să ascult, să aud cum doi dintre cei mai vechi susținători ai Cube Tutor au expus în mod clar situația Cube Tutor, care, în ciuda a tot ceea ce s-a întâmplat, continuă să sprijine financiar site-ul prin Patreon. Au prezentat informațiile într-o manieră clară și factuală și nu am nicio problemă cu niciunul dintre punctele care au fost aduse în discuție. Ei au dreptate în legătură cu totul – nu mi-am respectat partea mea de înțelegere și am fost lamentabil de inadecvat în ceea ce privește oferirea oricărui fel de comunicare, iar pentru asta îmi pare sincer rău față de voi toți.

Acum am ajuns aici?

Dacă nu sunteți interesați de istoria Cube Tutor, atunci puteți sări peste această secțiune: Ce a mers prost?

În 2013 eram dezvoltator la o casă de software mare și de succes. Slujba era bună și privind în urmă nu am nicio plângere în legătură cu ea, dar nu mă entuziasma, nu îmi dădea un motiv să mă ridic din pat și să mă arunc în ziua respectivă. Eram un jucător de Magic de peste 10 ani, din când în când, iar în acea perioadă începusem să mă ocup cu adevărat de cuburi și eram dornic să-mi construiesc unul propriu. În timpul meu liber am început să dezvolt Cube Tutor, inițial doar pentru nevoile mele. Pe măsură ce a crescut și a devenit mai bogat în funcții, l-am pus online și câțiva prieteni au început să se joace cu el. De acolo am pus o postare pe MTGSalvation invitându-i și pe alții să îl încerce și mulți oameni au făcut-o.

În jurul toamnei anului 2013 mi-am dat seama că aveam ceva cu Cube Tutor. Oamenii se implicau cu adevărat în el și mă făcea foarte fericit să pot lucra la un site pe care îl iubeam în timpul meu liber. Am fost abordat de un potențial partener de afaceri cu privire la posibilitatea de a transforma Cube Tutor în ceva care să mă susțină financiar, iar ideea suna ca un vis. M-am cam săturat de slujba mea, iar ideea de a lucra la ceva ce-mi plăcea cu normă întreagă era extrem de atrăgătoare. Mi-am dat preavizul și m-am aruncat în el.

Primele șase luni sau cam așa ceva din 2014 au fost minunate! Mă trezeam în fiecare zi, motivat să lucrez din greu la un site pe care îl iubeam, pentru a-l transforma în ceva și mai mare. În timp ce nu eram plătit să fac nimic în acel moment, reușeam să mă întrețin prin niște economii și, cu promisiunea de a transforma acest lucru într-o afacere viabilă, lucram cu plăcere.

Nu-mi amintesc cu adevărat când s-a întâmplat, dar a devenit treptat evident că partenerul de afaceri cu care speram să lucrez nu avea în mod clar aceeași viziune ca și mine și pur și simplu nu era interesat să continue ideea noastră. Privind în urmă, probabil că am fost puțin naiv și, din nu știu ce motiv, pur și simplu nu s-a concretizat. Economiile mele începeau să se diminueze și, în fața costurilor de funcționare din ce în ce mai mari, a devenit clar că nu mai era posibil să continui să ofer Cube Tutor ca un serviciu complet gratuit. Puteam fie să mă întorc la muncă și să le cer utilizatorilor mei un pic de ajutor pentru costurile serverului și să continui să funcționeze, fie să mă implic și mai mult, să lucrez la proiectul meu de pasiune și să încerc să fac ceva din el. Nu aveam de ales, voiam să reușesc.

Am pornit în programul Cube Tutor Champion. Aceasta a fost o modalitate prin care voi să susțineți financiar Cube Tutor pe baza promisiunii unor funcții suplimentare pentru contul vostru, dar mai important, pentru a scăpa de presiunea financiară și a-mi permite să lucrez efectiv la îmbunătățirea site-ului. Per total, am lucrat la acest proiect timp de aproape un an înainte ca acesta să vadă lumina zilei, dar când în sfârșit a fost lansat, m-am simțit minunat. Nu numai că oamenii s-au implicat în el, dar am atins rapid angajamentul meu de al doilea nivel pe Patreon, ceea ce mi-a permis să lucrez cu jumătate de normă la site, ca și jobul meu.

Până la momentul lansării programului, eram într-o situație financiară destul de proastă. După ce am stat 18 luni fără salariu, la care se adaugă miile de dolari pe care le cheltuisem pe costurile serverului, aveam mare nevoie să obțin un venit. Într-adevăr, doar cu sprijinul unei soții foarte iubitoare și înțelegătoare am reușit să ajung la stadiul în care am putut chiar să lansez Programul Campionilor și pentru asta sunt foarte norocos. Mulțumesc.

Cu toate acestea, chiar și cu sprijinul copleșitor din partea comunității, pur și simplu nu a fost suficient pentru a mă ține în viață și a trebuit să îmi iau un alt loc de muncă. Mi s-a oferit o oportunitate care se potrivea foarte bine alături de angajamentul meu de 1-2 zile pe săptămână pe Cube Tutor și este un loc de muncă pe care îl continui până în prezent, cu jumătate de normă. Sunt, de asemenea, foarte recunoscător pentru această oportunitate, deoarece nu multe locuri de muncă tradiționale ar fi atât de conciliante și înțelegătoare cu timpul pe care trebuia să îl petrec lucrând la Cube Tutor.

Împreună cu lansarea Programului Campionilor a venit o avalanșă de solicitări de funcții din partea utilizatorilor care știau ce își doreau de la site, iar în primele câteva luni, până în octombrie 2015, lucrurile au mers foarte bine. Scoteam versiuni regulate, rezolvam cererile de caracteristici și, în general, mă țineam de promisiunea mea Patreon. Feedback-ul pe care îl primeam în această perioadă era de genul „aceste caracteristici sunt grozave, dar când ai de gând să abordezi una dintre cele mai mari, cum ar fi să faci site-ul să funcționeze pe mobil?”. La început, nu mi-am imaginat niciodată că voi ajunge în stadiul în care oamenii vor folosi CT în modul în care o fac și că site-ul nu fusese construit cu adevărat având în vedere dispozitivele mobile. Aceasta a fost o întreprindere uriașă. M-am întors la susținătorii mei Patreon și am spus: „Bine, pot să fac asta, dar nu voi mai putea ține pasul cu 1-2 Feature Releases pe lună, asta înseamnă 6 luni de muncă grea de una singură”. Voi ați fost foarte susținători și ați spus: „Hei, grozav! Dați-i drumul!”. Am pornit să construiesc o interfață de utilizare mobilă pe Cube Tutor.

În multe privințe, cred că acesta a fost un punct de cotitură, deoarece am trecut de pe teritoriul meu familiar de a produce mici versiuni și corecturi de erori la ceva mult mai mare. Chiar și în zilele în care dezvoltam Programul Campion, încă scoteam versiuni regulate. Acesta a fost începutul declinului comunicării mele, un lucru pentru care pur și simplu nu există nicio scuză. Cu toate acestea, am muncit din greu în timpul acelor șase luni și am ieșit la celălalt capăt cu o interfață utilizator mobilă pentru redactare, ceva ce am oferit pentru testare beta în vara anului 2016. Feedback-ul a fost, în general, foarte pozitiv și am revenit la dezvoltare cu scopul de a finaliza lucrarea și de a o lansa.

Ce a mers prost?

Apoi a lovit o bombă. Voi vorbi puțin din punct de vedere tehnic în următoarele două paragrafe, dar cred că este important să fiu cât se poate de clar cu privire la ceea ce s-a întâmplat. Am aflat peste noapte că Apache Tapestry, cadrul pe care a fost construit Cube Tutor, a ajuns la finalul vieții sale și că fondatorul acestui cadru nu îl va mai susține. Acest lucru nu ar fi trebuit să fie o surpriză pentru mine, Tapestry era un framework dintr-o perioadă mai veche. Nu fusese construit cu adevărat cu gândul la telefonia mobilă și a evitat tendința actuală a industriei de a rula limbaje de scripting pe client și pe server. Era o relicvă care se mișca încet și care nu prea avea ce căuta în 2016. Am ales Tapestry în primul rând doar pentru că era rapid de dezvoltat și familiar și oricum nu credeam că acest proiect va vedea vreodată lumina zilei. Dacă ar fi o decizie pe care aș putea să o schimb în toate acestea, ar fi aceea, bineînțeles că retrospectiva este 20/20.

Până în acest moment, Tapestry avea o comunitate foarte activă de dezvoltatori care nu numai că îmbunătățeau framework-ul, dar produceau și plugin-uri pentru a-l extinde. Am folosit intensiv aceste pluginuri pentru multe lucruri, inclusiv widgeturi de încărcare, integrare jQuery și funcționalitatea server-push care este utilizată intensiv în redactare și în redactarea grilelor. Acest cadru de lucru și plugin-urile sale au fost fundamentul Cube Tutor și, fără ca acestea să fie întreținute în mod activ, nu știam dacă ar trebui să continui cu rescrierea mobilă pentru ceva care, probabil, va trebui să fie rescris din nou în scurt timp. M-am trezit încercând să modernizez ceva de la o fundație care nu a fost niciodată cu adevărat modernă în primul rând și care acum nici măcar nu ar fi fost întreținută și actualizată. Industria de dezvoltare web a evoluat rapid în ultimii zece ani și, fără suportul a ceva care ar fi putut duce Cube Tutor în siguranță în următorii zece ani, cum aș fi putut continua cu Tapestry? Timp de câteva luni m-am tot învârtit. Am continuat parțial munca cu mobilul, parțial am făcut prototipuri pentru alte framework-uri, dar în cea mai mare parte eram pur și simplu pierdut și nesigur ce să fac în fața acestei probleme.

În mijlocul a toate acestea, o altă problemă a lovit. Nu numai că Cube Tutor era construit pe un cadru pe cale de dispariție, dar folosea și o versiune ușor depășită a acelui cadru. Acesta rula (și încă mai rulează) pe versiunea 5.3.X a Tapestry din cauza dependenței sale de unele dintre plugin-urile menționate anterior, care nu sunt compatibile cu cea mai recentă versiune 5.4.X. Din păcate, versiunea 5.3.X a Tapestry folosește o versiune mai veche de Java, Java 7, o altă relicvă, iar serverul meu de compilare a decis să nu mai suporte Java 7. Acest lucru înseamnă că nu am putut construi efectiv baza de cod pentru lansare. În sine, această problemă nu este insurmontabilă. Aș putea să schimb serverele de construcție, să construiesc site-ul la nivel local sau, eventual, să încerc să modific eu însumi pluginurile Tapestry pentru a le alinia la versiunea 5.4 a Tapestry și Java 8. Cu toate acestea, împreună cu toate celelalte, s-a simțit ca un ultim cui în sicriul lui Cube Tutor pe Tapestry.

Nu pot exagera cât de multă muncă ar fi să mă întorc la început și să rescriu Cube Tutor din nou pe un nou framework. Mi-a luat cea mai bună parte a doi ani de lucru cu normă întreagă pentru a-l aduce unde este acum. Cu celelalte angajamente profesionale și cu perspectiva de a-mi întemeia o familie în curând, pur și simplu nu am putut să mă gândesc să fac din nou toată acea muncă, nu a fost posibil.

Cea mai mare rușine a mea în toate acestea este lipsa de transparență în această privință. Mi-aș fi dorit să fi avut curajul să spun pur și simplu „uite băieți, iată unde mă aflu”, dar nu eram obișnuită cu asta. Eram obișnuit să rezolv probleme și să prezint lucrări frumos finalizate și îmbunătățiri în fața adorației comunității. Brad și Eric au citit o conversație PM pe care am avut-o cu Brad anul trecut, în care vorbesc despre jenă și aceasta este singura justificare pe care o am. Nu știu ce să fac în legătură cu această problemă și mă lupt de mult timp să văd o cale de ieșire din ea.

Cum stăm acum?

Simplu spus, în prezent nu pot actualiza site-ul, în afară de lucrurile pe care le pot schimba prin baza de date, cum ar fi cărți noi, cuburi recomandate și cuburi medii. Viața mea nu mai este plină de timpul liber de care am avut luxul în 2014 și pur și simplu nu-mi pot permite să mă întorc la o poziție de venit doar din Patreon pentru a mă susține pe Cube Tutor cu normă întreagă pentru a rescrie site-ul și chiar dacă aș putea, acum am alte angajamente profesionale pe termen lung de respectat care au o cerere de timp. Toate acestea fiind spuse, pentru a menține Cube Tutor trebuie să acopăr costurile de funcționare, care în prezent sunt în medie de aproximativ 700-750 de dolari pe lună. O combinație a acestor trei lucruri m-a lăsat doar să merg pe apă, învârtindu-mă, neștiind ce să fac.

În ceea ce privește banii în sine, nu m-am atins de ei de peste un an. Am un cont separat pentru toate câștigurile Patreon ale lui Cube Tutor și banii în plus față de ceea ce a trebuit să plătesc în costuri și impozite stau în mare parte acolo. Pe vremea când Patreon a început și încă lucram activ la el, retrăgeam banii în mod regulat, dar nu mai simt că i-am câștigat de ceva vreme, așa că există un mic borcan de bani care s-a acumulat și care ar putea, cel puțin, să acopere costurile serverului pentru o vreme, dacă sprijinul Patreon se va reduce dramatic după această postare, așa cum mă aștept să se întâmple.

Atunci, unde rămâne Cube Tutor? Ei bine, răspunsul este în continuare că nu știu. Brad și Eric au tot revenit la acest punct pe care l-am menționat de mult timp „o viitoare postare pe blog” fără să o realizez vreodată și cred că am amânat-o până când aș putea oferi cel puțin un fel de lumină la capătul tunelului, dar acum pur și simplu nu știu care este acea rezoluție. Tot ce vreau să fac acum este să fiu sincer și deschis în legătură cu situația, lucru pe care ar fi trebuit să îl fac cu mult timp în urmă. Nu este corect față de niciunul dintre voi și în special față de cei care iau decizii de a sprijini Cube Tutor pe baza angajamentelor mele Patreon.

Cel mai important lucru este că informația este în sfârșit acolo și este un pas fundamental și oarecum cathartic pentru mine să scriu asta. Tratez această postare ca pe un prim pas înapoi în direcția corectă pentru a găsi o soluție la problemă, în loc să știu care este de fapt această soluție. Le mulțumesc din nou lui Brad și Eric pentru că au fost catalizatori. Îmi pare rău că lucrurile s-au înrăutățit atât de mult încât ați simțit că trebuie să produceți acest podcast și îmi pare rău față de toți ceilalți că v-am dezamăgit și că nu am avut curajul să scriu acest lucru de pe spatele meu cu mult timp în urmă.

Mai mult decât orice, iubesc acest site și această comunitate și sunt foarte mândru de ea, dar cu mâna pe inimă nu știu cum pot găsi o modalitate de a continua cu ea în fața obstacolelor pe care le am în fața mea. Care este soluția mea ideală? Să găsesc o cale de ieșire din această situație în care Cube Tutor să rămână cea mai grozavă platformă de cuburi disponibilă pe web, ceva de care să pot fi mândru și pe care voi să o iubiți din nou.

Nu prea folosesc prea mult Reddit, dar ca de obicei pot fi contactat prin e-mail: [email protected].

Ben

Lasă un răspuns

Adresa ta de email nu va fi publicată.