devblog The CubeTutor Controversy

Ik schrijf deze blogpost als reactie op een podcast die een paar dagen geleden is uitgezonden over Cube Tutor en een aantal zaken die spelen rond de huidige staat van ontwikkeling.

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

Ik wil Brad en Eric bedanken voor het produceren van deze aflevering. Ze hebben een onderwerp waarover ze het volste recht hebben om te schreeuwen en kwaad te worden, op een volwassen, nuchtere, duidelijke en beleefde toon benaderd. Zoals je je waarschijnlijk wel kunt voorstellen was het erg moeilijk voor mij om naar te luisteren, om de toestand van Cube Tutor duidelijk uitgelegd te horen door twee van de langstlopende supporters, die ondanks alles de site nog steeds financieel blijven steunen via Patreon. Ze presenteerden de informatie op een duidelijke, feitelijke manier en ik heb geen enkel probleem met de punten die werden gemaakt. Ze hebben gelijk over alles – ik ben mijn deel van de afspraak niet nagekomen en ik ben jammerlijk tekortgeschoten in het bieden van enige vorm van communicatie, en daarvoor bied ik u allen mijn oprechte excuses aan.

Dus hoe ben ik hier gekomen?

Als u niet geïnteresseerd bent in de geschiedenis van Cube Tutor, voel u dan vrij om door te gaan naar het gedeelte: Wat ging er mis?

Terug in 2013 was ik een ontwikkelaar bij een groot en succesvol softwarehuis. De baan was goed en terugkijkend heb ik er geen klachten over, maar het prikkelde me niet, het gaf me geen reden om uit bed te komen en me op de dag te storten. Ik speelde al meer dan 10 jaar af en toe Magic en rond die tijd begon ik me steeds meer in de cube te verdiepen en wilde ik graag mijn eigen cube bouwen. In mijn vrije tijd begon ik Cube Tutor te ontwikkelen, in eerste instantie alleen voor mijn eigen behoeften. Toen het groeide en meer mogelijkheden kreeg, heb ik het online gezet en een paar vrienden begonnen ermee te knutselen. Van daaruit plaatste ik een bericht op MTGSalvation waarin ik anderen uitnodigde om het uit te proberen en veel mensen deden dat.

In de herfst van 2013 realiseerde ik me dat ik iets had met Cube Tutor. Mensen waren er echt mee bezig en het maakte me erg blij om in mijn vrije tijd te kunnen werken aan een site waar ik van hield. Ik werd benaderd door een potentiële zakenpartner over de mogelijkheid om Cube Tutor uit te bouwen tot iets dat mij financieel kon ondersteunen en het idee klonk als een droom. Ik was een beetje moe geworden van mijn baan en het idee om fulltime te werken aan iets waar ik van hield was enorm aantrekkelijk. Ik diende mijn ontslag in en stortte me erop.

De eerste zes maanden of zo van 2014 waren geweldig! Ik werd elke dag wakker, gemotiveerd om hard te werken aan een site waar ik van hield, om het op te bouwen tot iets nog groters. Hoewel ik op dat moment niet betaald kreeg om iets te doen, kon ik mezelf onderhouden met wat spaargeld en met de belofte om dit ding uit te bouwen tot een levensvatbaar bedrijf werkte ik vrolijk verder.

Ik weet niet echt meer wanneer het gebeurde, maar het werd geleidelijk duidelijk dat de zakenpartner met wie ik had gehoopt samen te werken duidelijk niet dezelfde visie had als ik en gewoon niet geïnteresseerd was in het nastreven van ons idee. Achteraf gezien was ik waarschijnlijk een beetje naïef en om wat voor reden dan ook kwam het er gewoon niet van. Mijn spaargeld begon een beetje op te raken en met het oog op de stijgende lopende kosten werd het duidelijk dat doorgaan met het aanbieden van Cube Tutor als een volledig gratis dienst niet langer zou werken. Ik kon ofwel weer aan het werk gaan en mijn gebruikers om een beetje hulp vragen voor de server kosten en het draaiende houden, of ik kon me er nog meer op storten, werken aan mijn passie project en proberen er iets van te maken. Ik had geen keus, ik wilde hier een succes van maken.

Ik ben begonnen aan het Cube Tutor Champion programma. Dit was een manier voor jullie om Cube Tutor financieel te steunen met de belofte van een aantal extra functies voor uw account, maar nog belangrijker om de financiële druk weg te nemen en mij in staat te stellen om daadwerkelijk te werken aan het verbeteren van de site. Al met al heb ik hier het beste deel van een jaar aan gewerkt voordat het het daglicht zou zien, maar toen het eindelijk gelanceerd werd voelde het geweldig. Niet alleen hielden mensen zich ermee bezig, maar ik bereikte snel mijn tweede niveau toezegging op Patreon, waardoor ik parttime aan de site kon werken, als mijn baan.

Tegen de tijd dat het programma werd gelanceerd, was ik financieel in een vrij slechte positie. Na 18 maanden zonder salaris, gekoppeld aan de duizenden dollars die ik had uitgegeven aan de server kosten, had ik echt een inkomen nodig. Het is echt alleen met de steun van een zeer liefdevolle en begripvolle vrouw dat ik erin geslaagd om het stadium waarin ik kon zelfs de lancering van de Champion Program en daarvoor ben ik erg gelukkig.

Hoewel zelfs met de overweldigende steun van de gemeenschap, het was gewoon niet genoeg om me op de been te houden en ik moest een andere job aannemen. Ik kreeg een kans aangeboden die heel goed zou passen naast mijn 1-2 dagen per week inzet voor Cube Tutor en het is een baan die ik tot op de dag van vandaag voortzet, parttime. Ik ben ook erg dankbaar voor die kans, omdat niet veel traditionele banen zo meegaand en begripvol zouden zijn voor de tijd die ik nodig had om aan Cube Tutor te werken.

Met de lancering van het Champion Program kwam een vlaag van functieverzoeken van gebruikers die wisten wat ze wilden van de site en voor de eerste paar maanden tot oktober 2015 ging het geweldig. Ik bracht regelmatige releases uit, loste functieverzoeken op en hield me in het algemeen aan mijn Patreon-belofte. De feedback die ik rond deze tijd kreeg was in de trant van “deze functies zijn geweldig, maar wanneer ga je een van de grotere aanpakken, zoals de site op mobiel laten werken?”. In het begin had ik me nooit kunnen voorstellen dat ik in het stadium zou zijn waarin mensen CT zouden gebruiken zoals ze dat nu doen en de site was niet echt gebouwd met mobiele apparaten in gedachten. Dit was een enorme onderneming. Ik ging terug naar mijn Patreon supporters en zei, “OK ik kan dit doen, maar ik ben niet langer in staat om 1-2 Feature Releases per maand bij te houden, dit is 6 maanden hard werken in zijn eentje”. Jullie waren erg ondersteunend en zeiden, “Hey, geweldig! Ga ervoor!”. Ik begon met het bouwen van een mobiele UI bovenop Cube Tutor.

In veel opzichten denk ik dat dit een keerpunt was, omdat ik van mijn vertrouwde territorium van kleine releases en bug fixes naar iets veel groters was gegaan. Zelfs in de tijd dat ik het kampioenenprogramma ontwikkelde, bracht ik nog regelmatig releases uit. Dit was het begin van de achteruitgang in mijn communicatie, iets waar gewoon geen excuus voor is. Desalniettemin heb ik in die zes maanden hard gewerkt en kwam ik er aan de andere kant uit met een mobiele UI voor het opstellen, iets dat ik in de zomer van 2016 aanbood voor bètatesten. De feedback was over het algemeen zeer positief en ik ging terug in ontwikkeling met het oog op het voltooien van het werk en het vrijgeven ervan.

Wat ging er mis?

Toen sloeg er een bom in. Ik ga een beetje technisch praten in de volgende paragrafen, maar ik denk dat het belangrijk is om zo duidelijk mogelijk te zijn over wat er gebeurde. Ik kwam er van de ene op de andere dag achter dat Apache Tapestry, het framework waar Cube Tutor op gebouwd was, aan het eind van zijn leven was gekomen en dat de oprichter van dat framework het niet langer zou ondersteunen. Dit had voor mij niet als een verrassing moeten komen, Tapestry was een framework uit een oudere tijd. Het was niet echt gebouwd met mobiel in het achterhoofd en vermeed de huidige trend in de industrie om scripttalen op de client en de server te draaien. Het was een traag bewegend relikwie dat niet echt thuishoorde in 2016. Ik had Tapestry in de eerste plaats gekozen omdat het snel en vertrouwd was om op te ontwikkelen en ik dacht niet dat dit project ooit het daglicht zou zien. Als er één beslissing is die ik zou kunnen veranderen, dan zou het die zijn, natuurlijk is hindsight 20/20.

Tot op dit punt had Tapestry een zeer actieve gemeenschap van ontwikkelaars die niet alleen het framework verbeterden, maar ook plugins produceerden om het uit te breiden. Ik heb veel gebruik gemaakt van deze plugins voor veel dingen, waaronder upload widgets, jQuery integratie en server-push functionaliteit die zwaar wordt gebruikt in drafting en grid drafting. Dit framework en zijn plugins waren het fundament van Cube Tutor en zonder dat ze actief onderhouden werden, wist ik niet of ik door moest gaan met het herschrijven van de mobiele versie, voor iets dat waarschijnlijk op korte termijn weer herschreven zou moeten worden. Ik merkte dat ik iets probeerde te moderniseren vanuit een basis die in de eerste plaats nooit echt modern was geweest en nu niet eens meer zou worden onderhouden en actueel zou zijn. De webontwikkelingsindustrie is de laatste tien jaar snel veranderd en zonder de steun van iets dat Cube Tutor veilig de volgende tien jaar in zou helpen, hoe kon ik dan doorgaan met Tapestry? Voor een paar maanden was ik aan het spinnen. Ik ging deels door met het mobiele werk, deels met het maken van prototypes voor andere frameworks, maar meestal was ik gewoon de weg kwijt en onzeker over wat ik moest doen met dit probleem.

In het midden van dit alles, sloeg een ander probleem toe. Niet alleen was Cube Tutor gebouwd op een stervend framework, maar het was ook met behulp van een iets verouderde versie van dat framework. Het draaide (en draait nog steeds) op de 5.3.X versie van Tapestry vanwege de afhankelijkheid van een aantal van de eerder genoemde plugins die niet compatibel zijn met de laatste 5.4.X versie. Helaas gebruikt de 5.3.X versie van Tapestry een oudere versie van Java, Java 7, nog een relikwie en mijn build server besloot Java 7 niet langer te ondersteunen. Dit betekent dat ik de code base voor de release niet kon bouwen. Op zich is dit probleem niet onoverkomelijk. Ik kon van build server veranderen, de site lokaal bouwen of eventueel kijken of ik de Tapestry plugins zelf kon aanpassen om ze in lijn te brengen met de 5.4 versie van Tapestry en Java 8. Echter, in combinatie met al het andere voelde het als de laatste nagel aan de doodskist van Cube Tutor op Tapestry.

Ik kan niet overdrijven hoeveel werk het zou zijn om terug te gaan naar het begin en Cube Tutor opnieuw te herschrijven op een nieuw framework. Ik heb er bijna twee jaar fulltime aan gewerkt om het te krijgen waar het nu is. Met mijn andere professionele verplichtingen en het vooruitzicht binnenkort een gezin te stichten, kon ik gewoon niet overwegen al dat werk opnieuw te doen, het was niet mogelijk.

Mijn grootste schande in dit alles is het gebrek aan transparantie in deze zaak. Ik wou dat ik de moed had gehad om gewoon te zeggen “kijk jongens, hier is waar ik sta”, maar dat was ik niet gewend. Ik was gewend om problemen op te lossen en mooi afgerond werk en verbeteringen te presenteren aan de aanbidding van de gemeenschap. Brad en Eric lazen een PM-gesprek voor dat ik vorig jaar met Brad had gehad en waarin ik het over verlegenheid had en dat is de enige rechtvaardiging die ik heb. Ik weet niet wat ik aan dit probleem moet doen en ik worstel al een hele tijd om een uitweg te zien.

Waar staan we nu?

Ik kan de site momenteel niet bijwerken, behalve de dingen die ik via de database kan veranderen, zoals nieuwe kaarten, uitgelichte kubussen en gemiddelde kubussen. Mijn leven is niet meer vol van de vrije tijd die ik had de luxe van in 2014 en ik kan gewoon niet veroorloven om terug te gaan naar een positie van Patreon-only inkomen om mezelf te ondersteunen op Cube Tutor fulltime te herschrijven van de site en zelfs als ik kon ik heb nu andere lange termijn professionele verplichtingen te houden die een beroep op mijn tijd hebben. Dit alles gezegd hebbende, om Cube Tutor in de lucht te houden moet ik de lopende kosten dekken, die momenteel gemiddeld rond de $700-750 per maand liggen. Een combinatie van deze drie dingen heeft me in het ongewisse gelaten, niet wetend wat te doen.

Het geld zelf heb ik al meer dan een jaar niet meer aangeraakt. Ik heb een aparte rekening voor alle Cube Tutor Patreon inkomsten en het extra geld bovenop wat ik heb moeten betalen aan kosten en belasting is voor het grootste deel daar gewoon blijven zitten. Toen de Patreon begon en ik er nog actief aan werkte nam ik het geld regelmatig op, maar ik heb niet het gevoel dat ik het al een tijdje verdiend heb en dus is er een kleine pot met geld die zich heeft opgehoopt die op zijn minst de server kosten voor een tijdje kan dekken als de Patreon steun drastisch vermindert na deze post zoals ik verwacht dat het zal gebeuren.

Dus waar laat dit alles Cube Tutor? Nou, het antwoord is nog steeds dat ik het niet weet. Brad en Eric bleven maar terugkomen op het punt dat ik het al een hele tijd had over “een aankomende blog post” zonder er ooit iets van te maken en ik denk dat ik het uitstelde totdat ik tenminste een soort licht aan het eind van de tunnel kon bieden, maar op dit moment weet ik gewoon niet wat die resolutie is. Het enige wat ik nu wil doen is eerlijk en open zijn over de situatie, iets wat ik al lang geleden had moeten doen. Het is niet eerlijk tegenover een van jullie en in het bijzonder degenen die beslissingen nemen om Cube Tutor te steunen op basis van mijn Patreon-verplichtingen.

Het belangrijkste is dat de informatie eindelijk naar buiten is gebracht en het is een fundamentele en enigszins cathartische stap voor mij om te nemen om dit te schrijven. Ik beschouw dit bericht als de eerste stap terug in de goede richting om een oplossing voor het probleem uit te werken, in plaats van te weten wat die oplossing eigenlijk is. Nogmaals dank aan Brad en Eric voor het zijn van de katalysator. Het spijt me dat de dingen zo slecht werden dat jullie het gevoel hadden dat jullie deze podcast moesten produceren en het spijt me aan alle anderen dat ik jullie in de steek heb gelaten en niet de moed had om dit al lang geleden van me af te schrijven.

Meer dan wat dan ook hou ik van deze site en deze gemeenschap en ik ben er erg trots op, maar ik weet met de hand op het hart niet hoe ik een manier kan vinden om ermee door te gaan in het aangezicht van de obstakels die ik voor me heb liggen. Wat is mijn ideale oplossing? Om een uitweg te vinden waarbij Cube Tutor het meest geweldige kubusplatform op het web blijft, iets waar ik trots op kan zijn en waar jullie weer van zullen houden.

Ik gebruik Reddit niet echt veel, maar zoals altijd ben ik bereikbaar via email: [email protected].

Ben

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.