devblog The CubeTutor Controversy
Sto scrivendo questo post sul blog in risposta ad un podcast che è stato pubblicato qualche giorno fa su Cube Tutor e alcuni dei problemi che circondano il suo attuale stato di sviluppo.
http://solelysingleton.libsyn.com/season-3-episode-1-the-cube-tutor-controvesy
Vorrei ringraziare Brad ed Eric per aver prodotto questo episodio. Hanno affrontato un argomento su cui hanno tutto il diritto del mondo di urlare e gridare come pazzi con un tono maturo, equilibrato, chiaro ed educato. Come potete immaginare è stata una cosa molto difficile da ascoltare per me, sentire lo stato di Cube Tutor esposto chiaramente da due dei suoi sostenitori di più lunga data, che nonostante tutto continuano a sostenere finanziariamente il sito attraverso Patreon. Hanno presentato le informazioni in modo chiaro e concreto e non ho alcun problema da sollevare con nessuno dei punti che sono stati fatti. Hanno ragione su tutto – non ho mantenuto la mia parte dell’accordo e sono stato tristemente inadeguato nell’offrire qualsiasi tipo di comunicazione, e per questo sono veramente dispiaciuto con tutti voi.
Come sono arrivato qui?
Se non siete interessati alla storia di Cube Tutor allora sentitevi liberi di saltare alla sezione: Cosa è andato storto?
Nel 2013 ero uno sviluppatore in una grande software house di successo. Il lavoro era buono e guardando indietro non ho lamentele, ma non mi eccitava, non mi dava una ragione per alzarmi dal letto e buttarmi nella giornata. Sono stato un giocatore di Magic a fasi alterne per oltre 10 anni e in quel periodo mi stavo davvero appassionando al cubo ed ero ansioso di costruirne uno mio. Nel mio tempo libero ho iniziato a sviluppare Cube Tutor, inizialmente solo per i miei bisogni. Man mano che cresceva e diventava più ricco di funzioni, l’ho messo online e un paio di amici hanno iniziato ad armeggiare con esso. Da lì ho messo un post su MTGSalvation invitando gli altri a provarlo e molte persone l’hanno fatto.
All’incirca nell’autunno 2013 ho capito che avevo qualcosa con Cube Tutor. La gente era davvero coinvolta e mi rendeva molto felice di poter lavorare su un sito che amavo nel mio tempo libero. Sono stato contattato da un potenziale partner commerciale circa la possibilità di costruire Cube Tutor in qualcosa che potesse sostenermi finanziariamente e l’idea suonava come un sogno. Mi ero un po’ stancato del mio lavoro e l’idea di lavorare a tempo pieno su qualcosa che amavo era estremamente allettante. Ho dato il preavviso e mi sono buttata.
I primi sei mesi del 2014 sono stati fantastici! Mi svegliavo ogni giorno, motivato a lavorare sodo su un sito che amavo, per costruirlo in qualcosa di ancora più grande. Anche se non venivo pagato per fare qualcosa in quel momento, ero in grado di mantenermi attraverso alcuni risparmi e con la promessa di costruire questa cosa in un business redditizio stavo felicemente lavorando via.
Non ricordo bene quando è successo, ma gradualmente è diventato evidente che il partner commerciale con cui avevo sperato di lavorare chiaramente non aveva la mia stessa visione e semplicemente non era interessato a perseguire la nostra idea. Guardando indietro ero probabilmente un po’ ingenuo e per qualsiasi motivo non si è realizzato. I miei risparmi stavano cominciando a scarseggiare e di fronte all’aumento dei costi di gestione è diventato chiaro che continuare ad offrire Cube Tutor come un servizio completamente gratuito non funzionava più. Potevo tornare a lavorare e chiedere ai miei utenti un piccolo aiuto per i costi del server e continuare a farlo funzionare, oppure potevo buttarmi ancora di più in questo, lavorare al mio progetto di passione e cercare di fare qualcosa. Non c’era scelta per me, volevo fare successo.
Ho intrapreso il programma Cube Tutor Champion. Questo era un modo per voi di sostenere finanziariamente Cube Tutor con la promessa di alcune caratteristiche extra per il vostro account, ma soprattutto per togliere la pressione finanziaria e permettermi di lavorare effettivamente sul miglioramento del sito. Tutto sommato ho lavorato su questo per la maggior parte di un anno prima che vedesse la luce del giorno, ma quando finalmente è stato lanciato è stato fantastico. Non solo le persone si sono impegnate, ma ho raggiunto rapidamente il mio impegno di secondo livello su Patreon che mi ha permesso di lavorare part-time al sito, come mio lavoro.
Quando il programma è stato lanciato, ero in una situazione finanziaria piuttosto brutta. Avendo preso 18 mesi senza stipendio, insieme alle migliaia di dollari che avevo speso per i costi del server, avevo davvero bisogno di ottenere qualche reddito. È davvero solo con il sostegno di una moglie molto amorevole e comprensiva che sono riuscito ad arrivare alla fase in cui ho potuto anche lanciare il Programma Champion e per questo sono molto fortunato. Grazie.
Tuttavia, anche con il sostegno travolgente della comunità, non era sufficiente a farmi andare avanti e ho dovuto accettare un altro lavoro. Mi è stata offerta un’opportunità che si adattava molto bene al mio impegno di 1-2 giorni a settimana su Cube Tutor ed è un lavoro che continuo ancora oggi, part time. Sono anche molto grato per questa opportunità perché non molti lavori tradizionali sarebbero così accomodanti e comprensivi del tempo che avevo bisogno di trascorrere lavorando su Cube Tutor.
Insieme al lancio del Programma Champion è arrivata una raffica di richieste di funzionalità da parte degli utenti che sapevano cosa volevano dal sito e per i primi mesi fino a ottobre 2015 le cose stavano andando alla grande. Stavo rilasciando regolarmente delle versioni, risolvendo le richieste di funzionalità e generalmente mantenendo la mia promessa di Patreon. Il feedback che stavo ricevendo in questo periodo era sulla falsariga di “queste caratteristiche sono grandiose, ma quando hai intenzione di affrontare una delle più grandi, come far funzionare il sito su mobile? All’inizio non avrei mai immaginato che sarei stato nella fase in cui le persone avrebbero usato CT nel modo in cui lo stanno facendo e non era stato davvero costruito con i dispositivi mobili in mente. È stata un’impresa enorme. Sono tornato dai miei sostenitori di Patreon e ho detto: “Ok, posso farlo, ma non sono più in grado di tenere il passo con 1-2 Feature Releases al mese, questo è 6 mesi di duro lavoro da solo”. Voi siete stati di grande supporto e avete detto: “Ehi, fantastico! Vai avanti!”. Ho iniziato a costruire un’interfaccia utente mobile sopra Cube Tutor.
In molti modi penso che questo sia stato un punto di svolta, perché sono passato dal mio territorio familiare di sfornare piccole release e correzioni di bug a qualcosa di molto più grande. Anche nei giorni in cui stavo sviluppando il Programma Champion stavo ancora facendo uscire release regolari. Questo è stato l’inizio del declino della mia comunicazione, qualcosa per cui non ci sono scuse. Tuttavia ho lavorato duramente durante quei sei mesi e sono uscito dall’altra parte con un’interfaccia utente mobile per la stesura, qualcosa che ho offerto per il beta testing nell’estate del 2016. Il feedback è stato generalmente molto positivo e sono tornato allo sviluppo con l’obiettivo di completare il lavoro e farlo uscire.
Cosa è andato storto?
Poi una bomba ha colpito. Parlerò un po’ tecnicamente nei prossimi due paragrafi, ma penso che sia importante essere il più chiaro possibile su ciò che è successo. Ho saputo da un giorno all’altro che Apache Tapestry, il framework su cui è stato costruito Cube Tutor, era arrivato alla fine della sua vita e il fondatore di quel framework non lo avrebbe più supportato. Questo non avrebbe dovuto essere una sorpresa per me, Tapestry era un framework di un tempo più vecchio. Non era stato realmente costruito con il mobile in mente e rifuggiva l’attuale tendenza del settore di eseguire linguaggi di scripting sul client e sul server. Era una reliquia che si muoveva lentamente e che non apparteneva realmente al 2016. Avevo scelto Tapestry in primo luogo solo perché era veloce da sviluppare e familiare e non pensavo che questo progetto avrebbe mai visto la luce del giorno comunque. Se c’è una decisione che potrei cambiare in tutto questo sarebbe quella, naturalmente il senno di poi è 20/20.
Fino a questo punto Tapestry aveva una comunità molto attiva di sviluppatori che non solo miglioravano il framework ma producevano plugin per estenderlo. Ho fatto un uso pesante di questi plugin per molte cose tra cui i widget di caricamento, l’integrazione jQuery e la funzionalità server-push che viene sfruttata pesantemente nel drafting e nel grid drafting. Questo framework e i suoi plugin erano le fondamenta di Cube Tutor e senza che fossero attivamente mantenuti, non sapevo se continuare con la riscrittura mobile, per qualcosa che probabilmente avrebbe avuto bisogno di essere riscritto di nuovo in breve tempo. Mi sono trovato a cercare di modernizzare qualcosa da una base che non è mai stata veramente moderna in primo luogo e ora non sarebbe nemmeno mantenuta e attuale. L’industria dello sviluppo web si è mossa rapidamente negli ultimi dieci anni e senza il supporto di qualcosa che vedesse Cube Tutor al sicuro nei prossimi dieci, come avrei potuto continuare con Tapestry? Per alcuni mesi ho girato. In parte stavo portando avanti il lavoro sui dispositivi mobili, in parte stavo prototipando altri framework, ma soprattutto ero perso e non sapevo cosa fare di fronte a questo problema.
In mezzo a tutto questo, un altro problema ha colpito. Non solo Cube Tutor era costruito su un framework morente, ma utilizzava anche una versione leggermente obsoleta di quel framework. Era (ed è ancora) in esecuzione sulla versione 5.3.X di Tapestry a causa della sua dipendenza da alcuni dei plugin precedentemente menzionati che non sono compatibili con l’ultima versione 5.4.X. Sfortunatamente la versione 5.3.X di Tapestry usa una vecchia versione di Java, Java 7, un’altra reliquia e il mio build server ha deciso di smettere di supportare Java 7. Questo significa che non ho potuto effettivamente costruire la base di codice per il rilascio. Di per sé questo problema non è insormontabile. Potrei cambiare server di compilazione, costruire il sito localmente o potenzialmente cercare di modificare io stesso i plugin di Tapestry per portarli in linea con la versione 5.4 di Tapestry e Java 8. Tuttavia, insieme a tutto il resto, sembrava l’ultimo chiodo nella bara di Cube Tutor su Tapestry.
Non posso esagerare quanto lavoro ci vorrebbe per tornare all’inizio e riscrivere Cube Tutor su un nuovo framework. Ho impiegato la maggior parte dei due anni di lavoro a tempo pieno per portarlo al punto in cui è ora. Con i miei altri impegni professionali e la prospettiva di iniziare presto una famiglia, non potevo semplicemente contemplare di fare di nuovo tutto quel lavoro, non era possibile.
La mia più grande vergogna in tutto questo è la mancanza di trasparenza sulla questione. Vorrei aver avuto il coraggio di dire semplicemente “guardate ragazzi, ecco a che punto sono” ma non ero abituato a questo. Ero abituato a risolvere i problemi e a presentare il lavoro completato e i miglioramenti all’adorazione della comunità. Brad ed Eric hanno letto una conversazione in PM che avevo avuto con Brad l’anno scorso dove parlo di imbarazzo ed è l’unica giustificazione che ho. Non so cosa fare per questo problema e sto lottando per vedere una via d’uscita da molto tempo ormai.
Dove siamo ora?
In parole povere non posso attualmente aggiornare il sito, a parte le cose che posso cambiare attraverso il database come nuove carte, cubi in evidenza e cubi medi. La mia vita non è più piena del tempo libero di cui avevo il lusso nel 2014 e semplicemente non posso permettermi di tornare ad una posizione di solo Patreon reddito per sostenere me stesso su Cube Tutor a tempo pieno per riscrivere il sito e anche se potessi ora ho altri impegni professionali a lungo termine per mantenere che hanno una domanda sul mio tempo. Detto questo, per mantenere Cube Tutor ho bisogno di coprire i costi di gestione che attualmente sono in media intorno ai 700-750 dollari al mese. Una combinazione di queste tre cose mi ha lasciato a galla, senza sapere cosa fare.
Per quanto riguarda i soldi, non li tocco da oltre un anno. Ho un conto separato per tutti i guadagni del Patreon di Cube Tutor e i soldi extra oltre a quelli che ho dovuto pagare in costi e tasse sono per la maggior parte lì. Quando il Patreon è iniziato e ci stavo ancora lavorando attivamente, prelevavo i soldi regolarmente, ma non mi sembra di averli guadagnati da un po’ di tempo e quindi c’è una piccola pentola di denaro che si è accumulata che potrebbe, come minimo, coprire i costi del server per un po’ di tempo se il supporto di Patreon si riducesse drasticamente dopo questo post, come mi aspetto che possa accadere.
Come mai tutto questo lascia Cube Tutor? Beh, la risposta è ancora che non lo so. Brad ed Eric continuavano a tornare su questo punto che avevo menzionato “un prossimo post sul blog” per molto tempo senza mai realizzarlo e credo che lo stessi rimandando fino a quando non avrei potuto offrire almeno una sorta di luce alla fine del tunnel, ma in questo momento non so proprio quale sia questa risoluzione. Tutto quello che voglio fare ora è essere onesto e aperto sulla situazione, cosa che avrei dovuto fare molto tempo fa. Non è giusto per nessuno di voi ragazzi e in particolare per coloro che stanno prendendo decisioni per sostenere Cube Tutor sulla base dei miei impegni Patreon.
La cosa più importante è che le informazioni sono finalmente là fuori ed è un passo fondamentale e in qualche modo catartico per me scrivere questo. Sto trattando questo post come il primo passo indietro nella giusta direzione verso l’elaborazione di una soluzione al problema, invece di sapere quale sia effettivamente questa soluzione. Grazie ancora a Brad ed Eric per essere stati il catalizzatore. Mi dispiace che le cose siano andate così male che avete sentito di dover produrre questo podcast e mi dispiace con tutti gli altri per avervi deluso e non aver avuto il coraggio di scrivere questo sulla mia schiena molto tempo fa.
Più di tutto amo questo sito e questa comunità e ne sono molto orgoglioso ma mano sul cuore non so come posso trovare un modo per continuare con esso di fronte agli ostacoli che ho di fronte a me. Qual è la mia soluzione ideale? Trovare una via d’uscita in cui Cube Tutor rimanga la più fantastica piattaforma di cubi disponibile sul web, qualcosa di cui posso essere orgoglioso e che voi ragazzi amerete ancora una volta.
Non uso molto Reddit ma come sempre sono contattabile via email: [email protected].
Ben