devblog The CubeTutor Controversy

Kirjoitan tämän blogitekstin vastauksena podcastiin, joka julkaistiin muutama päivä sitten ja joka käsitteli Cube Tutoria ja joitain sen nykyiseen kehitystilanteeseen liittyviä kysymyksiä.

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

Haluan kiittää Bradia ja Ericiä jakson tuottamisesta. He lähestyivät aihetta, josta heillä on kaikki maailman oikeus huutaa ja huutaa hulluna, kypsään, tasapuoliseen, selkeään ja kohteliaaseen sävyyn. Kuten voitte varmaan kuvitella, minulle oli todella vaikeaa kuunnella, kun kaksi sen pitkäaikaisinta tukijaa, jotka kaikesta huolimatta jatkavat sivuston tukemista taloudellisesti Patreonin kautta, esitteli Cube Tutorin tilan selvästi. He esittivät tiedot selkeästi ja asiallisesti, eikä minulla ole mitään huomautettavaa yhdestäkään esitetystä asiasta. He ovat oikeassa kaikessa – en ole pitänyt kiinni omasta osuudestani sopimuksesta ja olen ollut surullisen riittämätön minkäänlaisen viestinnän tarjoamisessa, ja siitä olen todella pahoillani teille kaikille.

Miten päädyin tänne?

Jos sinua ei kiinnosta Cube Tutorin historia, niin hyppää rohkeasti osioon: Mikä meni pieleen?

Vuonna 2013 olin kehittäjänä suuressa ja menestyvässä ohjelmistotalossa. Työ oli hyvää, eikä minulla ole siitä jälkikäteen katsottuna valittamista, mutta se ei innostanut minua, se ei antanut minulle syytä nousta sängystä ja heittäytyä päivään. Olin ollut Magic-pelaaja silloin tällöin yli 10 vuotta, ja samoihin aikoihin aloin todella innostua kuutiosta ja halusin rakentaa omani. Vapaa-ajallani aloin kehittää Cube Tutoria, aluksi vain omiin tarpeisiini. Kun se kasvoi ja siitä tuli monipuolisempi, laitoin sen verkkoon, ja pari ystävää alkoi puuhastella sen kanssa. Siitä laitoin viestin MTGSalvationiin, jossa kutsuin muita kokeilemaan sitä, ja monet tekivät niin.

Syksyn 2013 tienoilla tajusin, että minulla oli jotain Cube Tutorissa. Ihmiset olivat todella kiinnostuneita siitä ja se teki minut hyvin onnelliseksi siitä, että sain työskennellä vapaa-ajallani rakastamani sivuston parissa. Mahdollinen liikekumppani lähestyi minua mahdollisuudesta rakentaa Cube Tutorista jotain, joka voisi tukea minua taloudellisesti, ja ajatus kuulosti unelmalta. Olin hieman kyllästynyt työhöni, ja ajatus siitä, että voisin työskennellä kokopäiväisesti jonkin rakastamani asian parissa, oli erittäin houkutteleva. Jätin irtisanomisilmoitukseni ja heittäydyin täysillä mukaan.

Vuoden 2014 ensimmäiset noin kuusi kuukautta olivat mahtavia! Heräsin joka päivä motivoituneena tekemään kovasti töitä rakastamani sivuston parissa ja rakentamaan siitä jotain vielä suurempaa. Vaikka en tuolloin saanut palkkaa mistään, pystyin elättämään itseni joillakin säästöillä, ja lupaukseni rakentaa tämä asia elinkelpoiseksi liiketoiminnaksi, tein iloisesti töitä.

En oikeastaan muista, milloin se tapahtui, mutta vähitellen kävi selväksi, että liikekumppanilla, jonka kanssa olin toivonut työskenteleväni, ei selvästikään ollut samaa visiota kuin minulla, eikä hän yksinkertaisesti ollut kiinnostunut ideamme toteuttamisesta. Jälkikäteen ajateltuna olin luultavasti hieman naiivi ja jostain syystä se ei vain onnistunut. Säästöni alkoivat käydä vähiin, ja kasvavien juoksevien kustannusten vuoksi kävi selväksi, että Cube Tutorin tarjoaminen täysin ilmaisena palveluna ei enää toimisi. Voisin joko palata takaisin töihin ja pyytää käyttäjiltäni hieman apua palvelinkustannuksiin ja pitää sen käynnissä, tai sitten voisin heittäytyä tähän vielä enemmän, työskennellä intohimoprojektini parissa ja yrittää tehdä siitä jotain. Vaihtoehtoa ei ollut, halusin menestyä tässä.

Aloitin Cube Tutor Champion -ohjelman. Tämä oli tapa, jolla te voitte tukea Cube Tutoria taloudellisesti lupaamalla joitakin lisäominaisuuksia tilillenne, mutta mikä tärkeämpää, ottaaksenne taloudellisen paineen pois ja antaaksenne minulle mahdollisuuden työskennellä sivuston parantamisen parissa. Kaiken kaikkiaan työskentelin tämän parissa lähes vuoden ajan ennen kuin se näki päivänvalon, mutta kun se vihdoin käynnistyi, se tuntui hienolta. Sen lisäksi, että ihmiset sitoutuivat siihen, saavutin nopeasti toisen tason sitoumukseni Patreonissa, mikä mahdollisti sen, että pystyin työskentelemään osa-aikaisesti sivuston parissa työni ohella.

Kun ohjelma käynnistyi, olin taloudellisesti melko huonossa jamassa. Oltuani 18 kuukautta ilman palkkaa, yhdistettynä tuhansiin dollareihin, joita olin käyttänyt palvelinkustannuksiin, tarvitsin todella tuloja. Vain hyvin rakastavan ja ymmärtäväisen vaimon tuella onnistuin pääsemään vaiheeseen, jossa pystyin edes käynnistämään Champion-ohjelman, ja siitä olen hyvin onnekas. Kiitos.

Mutta vaikka yhteisöltä saamastani ylivoimaisesta tuesta huolimatta se ei vain riittänyt pitämään minua pystyssä, ja minun oli otettava toinen työ. Minulle tarjottiin tilaisuutta, joka sopisi hyvin 1-2 päivän viikoittaisen sitoutumiseni rinnalle Cube Tutoriin, ja sitä työtä jatkan edelleen, osa-aikaisesti. Olen myös hyvin kiitollinen tästä tilaisuudesta, sillä monikaan perinteinen työpaikka ei olisi niin mukautuva ja ymmärtäväinen sen ajan suhteen, jonka minun piti käyttää työskentelyyn Cube Tutorin parissa.

Champion-ohjelman lanseerauksen myötä käyttäjiltä, jotka tiesivät, mitä he halusivat sivustolta, tuli runsaasti ominaisuuspyyntöjä, ja ensimmäisten kuukausien ajan aina lokakuuhun 2015 asti asiat sujuivat hyvin. Julkaisin säännöllisesti julkaisuja, ratkaisin ominaisuuspyyntöjä ja yleisesti ottaen pidin kiinni Patreon-lupauksestani. Noihin aikoihin saamani palaute oli samansuuntaista kuin ”nämä ominaisuudet ovat hienoja, mutta milloin aiot tarttua johonkin isompaan, kuten saada sivuston toimimaan mobiilissa?”. Alussa en osannut kuvitellakaan, että olisin siinä vaiheessa, että ihmiset käyttäisivät CT:tä nykyisellä tavalla, eikä sitä ollut rakennettu mobiililaitteita silmällä pitäen. Tämä oli valtava urakka. Palasin takaisin Patreon-tukijoilleni ja sanoin: ”Selvä, pystyn tähän, mutta en pysty enää pitämään yllä 1-2 ominaisuusjulkaisua kuukaudessa, tämä on 6 kuukauden kova työ yksinään”. Te olitte hyvin kannustavia ja sanoitte: ”Hei, hienoa! Tsemppiä!”. Lähdin rakentamaan mobiilikäyttöliittymää Cube Tutorin päälle.

Monella tapaa uskon, että tämä oli käännekohta, sillä olin siirtynyt tutulta alueelta, jossa tuotin pieniä julkaisuja ja virheiden korjauksia, johonkin paljon suurempaan. Jopa silloin, kun kehitin Champion-ohjelmaa, julkaisin edelleen säännöllisiä julkaisuja. Tämä oli alku viestinnän heikkenemiselle, jolle ei ole mitään tekosyytä. Tein kuitenkin kovasti töitä noiden kuuden kuukauden aikana ja tulin ulos toisesta päästä mobiilikäyttöliittymän kanssa luonnostelua varten, jota tarjosin beetatestattavaksi kesällä 2016. Palaute oli yleisesti ottaen erittäin myönteistä, ja palasin takaisin kehitystyöhön, jotta saisin työn valmiiksi ja julkaistua sen.

Mikä meni pieleen?

Silloin pommi iski. Puhun hieman teknisesti parin seuraavan kappaleen aikana, mutta mielestäni on tärkeää kertoa mahdollisimman selkeästi, mitä tapahtui. Sain yhdessä yössä tietää, että Apache Tapestry, kehys, jonka varaan Cube Tutor oli rakennettu, oli tullut tiensä päähän ja että kehyksen perustaja ei enää tukisi sitä. Tämän ei olisi pitänyt tulla minulle yllätyksenä, sillä Tapestry oli kehys vanhemmalta ajalta. Sitä ei ollut rakennettu mobiilikäyttöä silmällä pitäen, ja se hylkäsi alan nykyisen trendin, jonka mukaan skriptikieliä käytetään sekä asiakkaalla että palvelimella. Se oli hitaasti etenevä jäänne, joka ei oikein kuulunut vuoteen 2016. Olin valinnut Tapestryn alun perin vain siksi, että sitä oli nopea kehittää ja se oli tuttu, enkä uskonut, että tämä projekti näkisi kuitenkaan koskaan päivänvaloa. Jos on yksi päätös, jonka voisin muuttaa tässä kaikessa, se olisi tuo, mutta jälkiviisaus on tietysti 20/20.

Tähän asti Tapestryllä oli hyvin aktiivinen kehittäjäyhteisö, joka ei vain parantanut kehystä, vaan myös tuotti liitännäisiä sen laajentamiseksi. Käytin näitä liitännäisiä ahkerasti moniin asioihin, kuten latauswidgetteihin, jQuery-integraatioon ja server-push-toiminnallisuuteen, jota hyödynnetään paljon luonnostelussa ja grid-luonnostelussa. Tämä kehys ja sen liitännäiset olivat Cube Tutorin perusta, ja ilman niiden aktiivista ylläpitoa en vain tiennyt, pitäisikö minun jatkaa mobiililaitteiden uudelleenkirjoittamista jostain sellaisesta, joka luultavasti pitäisi kirjoittaa uudelleen lyhyessä ajassa. Huomasin yrittäväni nykyaikaistaa jotakin perustalta, joka ei alunperinkään ollut oikeastaan koskaan nykyaikainen ja jota nyt ei edes ylläpidettäisi eikä pidettäisi ajan tasalla. Verkkokehitysala on muuttunut nopeasti viimeisten kymmenen vuoden aikana, ja ilman tukea, joka näkisi Cube Tutorin turvallisesti seuraavalle kymmenelle vuodelle, miten voisin jatkaa Tapestryn kanssa? Muutaman kuukauden ajan pyörittelin. Osittain jatkoin mobiilityötä, osittain prototypoin muita kehyksiä, mutta enimmäkseen olin vain hukassa ja epävarma siitä, mitä tehdä tämän ongelman edessä.

Kaiken tämän keskellä iski toinen ongelma. Sen lisäksi, että Cube Tutor oli rakennettu kuolevan kehyksen varaan, se käytti myös hieman vanhentunutta versiota kyseisestä kehyksestä. Se toimi (ja toimii edelleen) Tapestryn 5.3.X-versiolla, koska se oli riippuvainen joistakin aiemmin mainituista lisäosista, jotka eivät ole yhteensopivia uusimman 5.4.X-version kanssa. Valitettavasti Tapestryn 5.3.X-versio käyttää vanhempaa Java-versiota, Java 7:ää, joka on toinen jäänne, ja rakennuspalvelimeni päätti lopettaa Java 7:n tukemisen. Tämä tarkoittaa, etten voinut rakentaa koodipohjaa julkaisua varten. Sinänsä tämä ongelma ei ole ylitsepääsemätön. Voisin vaihtaa rakennuspalvelinta, rakentaa sivuston paikallisesti tai mahdollisesti muokata Tapestry-liitännäisiä itse, jotta ne vastaisivat Tapestryn 5.4-versiota ja Java 8:aa. Yhdessä kaiken muun kanssa se tuntui kuitenkin viimeiseltä naulalta Tapestryyn perustuvan Cube Tutorin arkkuun.

En voi liioitella sitä, kuinka paljon työtä olisi palata alkuun ja kirjoittaa Cube Tutor uudelleen uudella kehyksellä. Kesti parhaimmillaan kaksi vuotta työskennellä täysipäiväisesti saadakseni sen siihen pisteeseen, jossa se on nyt. Kun otetaan huomioon muut ammatilliset sitoumukseni ja mahdollisuus perustaa pian perhe, en yksinkertaisesti voinut ajatella tekeväni kaikkea sitä työtä uudestaan, se ei ollut mahdollista.

Suurin häpeäni tässä kaikessa on avoimuuden puute tässä asiassa. Kunpa minulla olisi ollut rohkeutta vain sanoa ”katsokaa kaverit, tässä on tilanne”, mutta en ollut tottunut siihen. Olin tottunut ratkaisemaan ongelmia ja esittelemään hienoja valmiita töitä ja parannuksia yhteisön ihailulle. Brad ja Eric lukivat Bradin kanssa viime vuonna käymäni PM-keskustelun, jossa puhuin nolostumisesta, ja se on ainoa perusteluni. En tiedä, mitä tehdä tälle ongelmalle ja olen kamppaillut nähdäkseni ulospääsyä siitä jo pitkään.

Missä olemme nyt?

Yksikertaisesti sanottuna en voi tällä hetkellä päivittää sivustoa, lukuun ottamatta asioita, joita voin muuttaa tietokannan kautta, kuten uusia kortteja, esillä olevia kuutioita ja keskimääräisiä kuutioita. Elämäni ei ole enää täynnä vapaa-aikaa, jota minulla oli ylellisyyttä vuonna 2014, ja minulla ei yksinkertaisesti ole varaa palata vain Patreon-tulojen asemaan, jotta voisin elättää itseni Cube Tutorilla täysipäiväisesti, jotta voisin kirjoittaa sivuston uudelleen, ja vaikka voisinkin, minulla on nyt muita pitkäaikaisia ammatillisia sitoumuksia, jotka vaativat aikaani. Kaiken tämän sanottuani minun on katettava juoksevat kustannukset, jotka ovat tällä hetkellä keskimäärin noin 700-750 dollaria kuukaudessa, jotta voin pitää Cube Tutorin yllä. Näiden kolmen asian yhdistelmä on jättänyt minut vain polkemaan vettä, pyörimään, enkä tiedä, mitä tehdä.

Mitä itse rahaan tulee, en ole koskenut siihen yli vuoteen. Minulla on erillinen tili kaikille Cube Tutorin Patreon-tuloille ja ylimääräiset rahat sen lisäksi, mitä olen joutunut maksamaan kuluina ja veroina, ovat suurimmaksi osaksi vain istuneet siellä. Silloin kun Patreon alkoi ja työskentelin vielä aktiivisesti sen parissa, nostin rahaa säännöllisesti, mutta minusta ei tunnu, että olisin ansainnut sitä vähään aikaan, joten sinne on kertynyt pieni rahapotti, joka voisi ainakin kattaa palvelimen kulut vähäksi aikaa, jos Patreon-tuki vähenisi dramaattisesti tämän postauksen jälkeen, kuten oletan sen voivan tapahtua.

Mihin tämä kaikki siis jättää Cube Tutorin? No vastaus on edelleen, että en tiedä. Brad ja Eric palasivat koko ajan tähän asiaan, että olin maininnut ”tulevasta blogikirjoituksesta” jo pitkään toimittamatta sitä koskaan, ja luulen, että lykkäsin sitä, kunnes voisin tarjota edes jonkinlaista valoa tunnelin päässä, mutta juuri nyt en vain tiedä, mikä tuo päätös on. Haluan nyt vain olla rehellinen ja avoin tilanteesta, mikä minun olisi pitänyt tehdä jo kauan sitten. Se ei ole reilua ketään teistä kohtaan ja erityisesti niitä kohtaan, jotka tekevät päätöksiä Cube Tutorin tukemisesta Patreon-sitoumusteni perusteella.

Tärkeintä on, että tieto on vihdoin julki, ja tämän kirjoittaminen on minulle perustavanlaatuinen ja jokseenkin katarttinen askel. Suhtaudun tähän postaukseen ensimmäisenä askeleena takaisin oikeaan suuntaan kohti ongelman ratkaisun työstämistä sen sijaan, että tietäisin, mikä tuo ratkaisu oikeastaan on. Kiitos vielä kerran Bradille ja Ericille katalysaattorina toimimisesta. Olen pahoillani siitä, että asiat menivät niin huonosti, että teistä tuntui, että teidän oli pakko tuottaa tämä podcast, ja olen pahoillani kaikilta muilta siitä, että olen pettänyt teidät ja ettei minulla ole ollut rohkeutta kirjoittaa tätä pois omasta selustastani jo kauan sitten.

Enemmän kuin mitään muuta rakastan tätä sivustoa ja tätä yhteisöä, ja olen siitä hyvin ylpeä, mutta käsi sydämellä en tiedä, miten löydän tavan jatkaa sitä niiden esteiden edessä, joita minulla on edessäni. Mikä on ihanteellinen ratkaisuni? Löytää tie ulos tästä tilanteesta, jossa Cube Tutor pysyy mahtavimpana kuutioalustana verkossa, josta voin olla ylpeä ja jota te rakastatte jälleen kerran.

En käytä Redditiä kovinkaan paljon, mutta kuten aina, olen tavoitettavissa sähköpostitse: [email protected].

Ben

Vastaa

Sähköpostiosoitettasi ei julkaista.