devblog Die CubeTutor Kontroverse
Ich schreibe diesen Blogpost als Antwort auf einen Podcast, der vor ein paar Tagen über Cube Tutor und einige der Probleme rund um den aktuellen Stand der Entwicklung veröffentlicht wurde.
http://solelysingleton.libsyn.com/season-3-episode-1-the-cube-tutor-controvesy
Ich möchte Brad und Eric für die Produktion dieser Folge danken. Sie sind an ein Thema herangegangen, bei dem sie alles Recht der Welt haben, sich darüber aufzuregen und zu schreien, und das in einem reifen, besonnenen, klaren und höflichen Ton. Wie Sie sich wahrscheinlich vorstellen können, war es für mich eine wirklich schwierige Angelegenheit, den Zustand von Cube Tutor von zwei seiner langjährigsten Unterstützer zu hören, die trotz allem die Seite immer noch finanziell durch Patreon unterstützen. Sie präsentierten die Informationen in einer klaren, sachlichen Art und Weise und ich habe kein Problem mit einem der Punkte, die gemacht wurden. Sie haben mit allem Recht – ich habe meinen Teil der Abmachung nicht eingehalten und ich habe es versäumt, irgendeine Art von Kommunikation anzubieten, und das tut mir aufrichtig leid.
Wie bin ich hierher gekommen?
Wenn Sie nicht an der Geschichte von Cube Tutor interessiert sind, können Sie den Abschnitt überspringen: Was ist schief gelaufen?
Zurück im Jahr 2013 war ich ein Entwickler bei einem großen und erfolgreichen Softwarehaus. Der Job war gut und rückblickend kann ich mich nicht beschweren, aber er hat mich nicht begeistert, er gab mir keinen Grund, aufzustehen und mich in den Tag zu stürzen. Ich hatte über 10 Jahre lang mit Unterbrechungen Magic gespielt, und zu dieser Zeit fing ich an, mich für Würfelspiele zu interessieren und wollte mein eigenes Spiel bauen. In meiner Freizeit begann ich mit der Entwicklung von Cube Tutor, zunächst wirklich nur für meine eigenen Bedürfnisse. Als er wuchs und immer mehr Funktionen hatte, stellte ich ihn online und ein paar Freunde begannen, daran herumzubasteln. Daraufhin habe ich einen Beitrag auf MTGSalvation veröffentlicht, in dem ich andere dazu einlud, es auszuprobieren, was viele Leute auch taten.
Um den Herbst 2013 herum wurde mir klar, dass ich mit Cube Tutor etwas erreicht hatte. Die Leute waren wirklich begeistert und es machte mich sehr glücklich, in meiner Freizeit an einer Seite arbeiten zu können, die ich liebte. Ein potenzieller Geschäftspartner sprach mich auf die Möglichkeit an, Cube Tutor zu etwas auszubauen, das mich finanziell unterstützen könnte, und die Idee klang wie ein Traum. Ich war meines Jobs überdrüssig geworden, und die Idee, in Vollzeit an etwas zu arbeiten, das ich liebte, war sehr verlockend. Ich kündigte und stürzte mich in die Arbeit.
Die ersten sechs Monate des Jahres 2014 waren großartig! Ich wachte jeden Tag mit der Motivation auf, hart an einer Website zu arbeiten, die ich liebte, um sie zu etwas noch Größerem zu machen. Obwohl ich zu dieser Zeit für nichts bezahlt wurde, konnte ich mich mit einigen Ersparnissen über Wasser halten, und mit dem Versprechen, diese Sache zu einem lebensfähigen Unternehmen auszubauen, arbeitete ich fröhlich vor mich hin.
Ich weiß nicht mehr genau, wann es passierte, aber allmählich wurde mir klar, dass der Geschäftspartner, mit dem ich zu arbeiten gehofft hatte, eindeutig nicht dieselbe Vision hatte wie ich und einfach nicht daran interessiert war, unsere Idee weiterzuverfolgen. Im Nachhinein betrachtet war ich wahrscheinlich etwas naiv, und aus welchem Grund auch immer hat es einfach nicht geklappt. Meine Ersparnisse gingen allmählich zur Neige, und angesichts der steigenden Betriebskosten wurde mir klar, dass es nicht mehr funktionieren würde, Cube Tutor weiterhin als völlig kostenlose Dienstleistung anzubieten. Ich konnte entweder zurück an die Arbeit gehen und meine Benutzer um einen kleinen Beitrag zu den Serverkosten bitten, um das Projekt am Laufen zu halten, oder ich konnte mich noch mehr in die Sache stürzen, an meinem Hobbyprojekt arbeiten und versuchen, etwas daraus zu machen. Es gab für mich keine Wahl, ich wollte es zu einem Erfolg machen.
Ich begann das Cube Tutor Champion Programm. Das war eine Möglichkeit für euch, Cube Tutor finanziell zu unterstützen, mit dem Versprechen einiger zusätzlicher Funktionen für euer Konto, aber vor allem, um den finanziellen Druck zu nehmen und mir zu ermöglichen, tatsächlich an der Verbesserung der Seite zu arbeiten. Alles in allem habe ich fast ein Jahr lang daran gearbeitet, bevor die Seite das Licht der Welt erblickte, aber als sie endlich an den Start ging, war es ein tolles Gefühl. Nicht nur, dass sich die Leute darauf einließen, sondern ich erreichte auch schnell mein zweites Patreon-Engagement, was es mir ermöglichte, neben meinem Job einen Teil der Zeit an der Seite zu arbeiten.
Als das Programm an den Start ging, war ich finanziell in einer ziemlich schlechten Lage. Nach 18 Monaten ohne Gehalt und den Tausenden von Dollar, die ich für die Serverkosten ausgegeben hatte, brauchte ich dringend ein Einkommen. Nur mit der Unterstützung einer sehr liebevollen und verständnisvollen Frau habe ich es geschafft, das Stadium zu erreichen, in dem ich das Champion-Programm überhaupt starten konnte, und dafür bin ich sehr glücklich. Vielen Dank.
Aber selbst die überwältigende Unterstützung der Gemeinschaft reichte nicht aus, um mich aufrechtzuerhalten, und ich musste eine andere Arbeit annehmen. Mir wurde eine Möglichkeit angeboten, die sehr gut zu meinem Engagement bei Cube Tutor (1-2 Tage pro Woche) passen würde, und es ist ein Job, den ich bis heute in Teilzeit ausübe. Ich bin auch sehr dankbar für diese Gelegenheit, denn nicht viele traditionelle Jobs wären so entgegenkommend und verständnisvoll für die Zeit, die ich für die Arbeit an Cube Tutor aufwenden musste.
Mit dem Start des Champion-Programms kam eine Flut von Funktionsanfragen von Nutzern, die wussten, was sie von der Seite wollten, und in den ersten Monaten bis Oktober 2015 lief alles großartig. Ich veröffentlichte regelmäßig neue Versionen, löste Feature-Anfragen und hielt generell mein Patreon-Versprechen ein. Das Feedback, das ich in dieser Zeit bekam, war in etwa so: „Diese Funktionen sind toll, aber wann nimmst du eine der größeren in Angriff, z. B. dass die Seite auf dem Handy funktioniert?“. Damals hätte ich mir nie vorstellen können, dass ich einmal an dem Punkt angelangt sein würde, an dem die Leute CT so nutzen würden, wie sie es jetzt tun, und dass es nicht wirklich für mobile Geräte entwickelt worden war. Das war ein riesiges Unterfangen. Ich habe mich an meine Patreon-Unterstützer gewandt und gesagt: „OK, ich kann das machen, aber ich werde nicht mehr in der Lage sein, mit 1-2 Feature-Releases pro Monat Schritt zu halten, das sind 6 Monate harte Arbeit für sich“. Ihr habt mich sehr unterstützt und gesagt: „Hey, toll! Nur zu!“. Ich machte mich daran, eine mobile Benutzeroberfläche auf Cube Tutor aufzubauen.
In vielerlei Hinsicht denke ich, dass dies ein Wendepunkt war, da ich von meinem gewohnten Terrain der kleinen Veröffentlichungen und Fehlerbehebungen zu etwas viel Größerem übergegangen war. Sogar in der Zeit, als ich das Champion-Programm entwickelte, habe ich noch regelmäßig neue Versionen herausgebracht. Dies war der Beginn des Rückgangs meiner Kommunikation, für den es einfach keine Entschuldigung gibt. Nichtsdestotrotz habe ich in diesen sechs Monaten hart gearbeitet und kam am anderen Ende mit einer mobilen Benutzeroberfläche für das Drafting heraus, die ich im Sommer 2016 zum Betatest anbot. Das Feedback war im Allgemeinen sehr positiv, und ich ging zurück in die Entwicklung, um die Arbeit zu vollenden und sie zu veröffentlichen.
Was ist schiefgelaufen?
Dann schlug eine Bombe ein. Ich werde in den nächsten Absätzen ein wenig über Technik reden, aber ich denke, es ist wichtig, so klar wie möglich zu sagen, was passiert ist. Ich erfuhr über Nacht, dass Apache Tapestry, das Framework, auf dem Cube Tutor aufbaut, am Ende seiner Lebensdauer angelangt war und der Gründer dieses Frameworks es nicht mehr unterstützen würde. Das sollte mich nicht überraschen, denn Tapestry war ein Framework aus einer älteren Zeit. Es war nicht wirklich mit Blick auf mobile Geräte entwickelt worden und widersetzte sich dem aktuellen Branchentrend, Skriptsprachen auf dem Client und auf dem Server auszuführen. Es war ein sich langsam bewegendes Relikt, das nicht wirklich ins Jahr 2016 gehörte. Ich hatte mich überhaupt nur für Tapestry entschieden, weil es schnell zu entwickeln und vertraut war und ich nicht dachte, dass dieses Projekt jemals das Licht der Welt erblicken würde. Wenn es eine Entscheidung gibt, die ich ändern könnte, dann wäre es diese, aber im Nachhinein ist man immer schlauer.
Bis zu diesem Zeitpunkt hatte Tapestry eine sehr aktive Gemeinschaft von Entwicklern, die nicht nur das Framework verbesserten, sondern auch Plugins produzierten, um es zu erweitern. Ich habe diese Plugins für viele Dinge genutzt, darunter Upload-Widgets, jQuery-Integration und Server-Push-Funktionen, die bei der Erstellung von Entwürfen und Rasterentwürfen stark genutzt werden. Dieses Framework und seine Plugins bildeten die Grundlage von Cube Tutor, und da sie nicht mehr aktiv gewartet wurden, wusste ich nicht, ob ich mit der Überarbeitung für mobile Geräte fortfahren sollte, die wahrscheinlich bald wieder neu geschrieben werden müsste. Ich ertappte mich bei dem Versuch, etwas auf einer Grundlage zu modernisieren, die von vornherein nie wirklich modern war und jetzt nicht einmal mehr gewartet und aktuell sein würde. Die Webentwicklungsbranche hat sich in den letzten zehn Jahren rasant entwickelt, und wie sollte ich mit Tapestry weitermachen, wenn ich keine Unterstützung für etwas hatte, das Cube Tutor sicher in die nächsten zehn Jahre bringen würde? Ein paar Monate lang war ich hin und her gerissen. Teilweise machte ich mit der mobilen Arbeit weiter, teilweise entwarf ich Prototypen für andere Frameworks, aber meistens war ich einfach nur verloren und wusste nicht, was ich angesichts dieses Problems tun sollte.
Mitten in all dem schlug ein weiteres Problem zu. Cube Tutor war nicht nur auf einem sterbenden Framework aufgebaut, sondern benutzte auch eine leicht veraltete Version dieses Frameworks. Er lief (und läuft immer noch) auf der Version 5.3.X von Tapestry, da er von einigen der zuvor erwähnten Plugins abhängig ist, die nicht mit der neuesten Version 5.4.X kompatibel sind. Leider ist die 5.3.X Version von Tapestry verwendet eine ältere Version von Java, Java 7, ein weiteres Relikt und mein Build-Server beschlossen, Java 7 zu unterstützen. Das bedeutet, dass ich die Codebasis für die Veröffentlichung nicht erstellen konnte. An sich ist dieses Problem nicht unüberwindbar. Ich könnte den Build-Server wechseln, die Website lokal erstellen oder möglicherweise die Tapestry-Plugins selbst modifizieren, um sie mit der Version 5.4 von Tapestry und Java 8 in Einklang zu bringen. Zusammen mit allem anderen fühlte es sich jedoch wie der letzte Nagel im Sarg von Cube Tutor auf Tapestry an.
Ich kann nicht übertreiben, wie viel Arbeit es wäre, zum Anfang zurückzugehen und Cube Tutor auf einem neuen Framework neu zu schreiben. Ich habe fast zwei Jahre lang Vollzeit daran gearbeitet, um es zu dem zu machen, was es jetzt ist. Mit meinen anderen beruflichen Verpflichtungen und der Aussicht, bald eine Familie zu gründen, konnte ich einfach nicht daran denken, diese ganze Arbeit noch einmal zu machen, es war nicht möglich.
Die größte Schande bei all dem ist die mangelnde Transparenz in dieser Angelegenheit. Ich wünschte, ich hätte den Mut gehabt, einfach zu sagen: „Seht mal, Leute, so sieht’s aus“, aber das war ich nicht gewohnt. Ich war es gewohnt, Probleme zu lösen und schöne abgeschlossene Arbeiten und Verbesserungen zur Bewunderung der Gemeinschaft zu präsentieren. Brad und Eric lasen eine PM-Konversation vor, die ich letztes Jahr mit Brad geführt hatte und in der ich von Verlegenheit sprach, und das ist die einzige Rechtfertigung, die ich habe. Ich weiß nicht, was ich mit diesem Problem anfangen soll, und ich habe lange nach einem Ausweg gesucht.
Wo stehen wir jetzt?
Einfach gesagt, kann ich die Seite derzeit nicht aktualisieren, außer den Dingen, die ich über die Datenbank ändern kann, wie neue Karten, vorgestellte Würfel und durchschnittliche Würfel. Mein Leben ist nicht mehr mit der Freizeit gefüllt, die ich 2014 hatte, und ich kann es mir einfach nicht leisten, zu einer Position zurückzukehren, in der ich nur über Patreon Geld verdiene, um Cube Tutor in Vollzeit zu unterstützen und die Seite neu zu schreiben, und selbst wenn ich es könnte, habe ich jetzt andere langfristige berufliche Verpflichtungen, die meine Zeit in Anspruch nehmen. Um den Betrieb von Cube Tutor aufrechtzuerhalten, muss ich die laufenden Kosten decken, die sich derzeit im Durchschnitt auf etwa 700-750 Dollar pro Monat belaufen. Die Kombination dieser drei Dinge hat dazu geführt, dass ich nur noch auf der Stelle trete und nicht mehr weiß, was ich tun soll.
Was das Geld selbst angeht, so habe ich es seit über einem Jahr nicht mehr angerührt. Ich habe ein separates Konto für alle Patreon-Einnahmen von Cube Tutor, und das zusätzliche Geld zu dem, was ich an Kosten und Steuern zahlen musste, liegt größtenteils einfach da. Damals, als die Patreon begann und ich noch aktiv daran arbeitete, habe ich das Geld regelmäßig abgehoben, aber ich habe das Gefühl, dass ich es schon eine Weile nicht mehr verdient habe, und so hat sich ein kleiner Geldtopf angesammelt, der zumindest die Serverkosten für eine Weile decken könnte, wenn die Patreon-Unterstützung nach diesem Beitrag dramatisch zurückgehen sollte, wovon ich ausgehe.
So, wo bleibt Cube Tutor? Nun, die Antwort ist immer noch, dass ich es nicht weiß. Brad und Eric kamen immer wieder darauf zurück, dass ich seit langem „einen kommenden Blogbeitrag“ erwähnt habe, ohne ihn jemals umzusetzen, und ich schätze, ich habe es aufgeschoben, bis ich zumindest eine Art Licht am Ende des Tunnels bieten konnte, aber im Moment weiß ich einfach nicht, was diese Auflösung ist. Alles, was ich im Moment tun möchte, ist, ehrlich und offen mit der Situation umzugehen, was ich schon vor langer Zeit hätte tun sollen. Es ist nicht fair euch gegenüber und besonders denen gegenüber, die aufgrund meiner Patreon-Verpflichtungen Entscheidungen zur Unterstützung von Cube Tutor treffen.
Das Wichtigste ist, dass die Informationen endlich da sind und es ist ein grundlegender und etwas kathartischer Schritt für mich, dies zu schreiben. Ich betrachte diesen Beitrag als den ersten Schritt zurück in die richtige Richtung, um eine Lösung für das Problem zu finden, ohne zu wissen, was diese Lösung eigentlich ist. Nochmals vielen Dank an Brad und Eric, die den Anstoß dazu gegeben haben. Es tut mir leid, dass die Dinge so schlecht gelaufen sind, dass ihr das Gefühl hattet, diesen Podcast produzieren zu müssen, und es tut mir bei allen anderen leid, dass ich euch im Stich gelassen habe und nicht den Mut hatte, mir das schon vor langer Zeit von der Seele zu schreiben.
Mehr als alles andere liebe ich diese Seite und diese Gemeinschaft und bin sehr stolz darauf, aber Hand aufs Herz, ich weiß nicht, wie ich angesichts der Hindernisse, die ich vor mir habe, einen Weg finden kann, damit weiterzumachen. Was ist meine ideale Lösung? Einen Ausweg zu finden, bei dem Cube Tutor die tollste Würfelplattform bleibt, die es im Internet gibt, etwas, auf das ich stolz sein kann und das ihr wieder lieben werdet.
Ich benutze Reddit nicht wirklich oft, aber ich bin wie immer per E-Mail erreichbar: [email protected].
Ben