devblog La controverse de CubeTutor
J’écris ce billet de blog en réponse à un podcast qui a été mis il y a quelques jours au sujet de Cube Tutor et de certains des problèmes entourant son état actuel de développement.
http://solelysingleton.libsyn.com/season-3-episode-1-the-cube-tutor-controvesy
J’aimerais remercier Brad et Eric pour avoir produit cet épisode. Ils ont abordé un sujet sur lequel ils ont tous les droits du monde de crier et de hurler de colère avec un ton mature, pondéré, clair et poli. Comme vous pouvez l’imaginer, il a été très difficile pour moi d’écouter l’état de Cube Tutor exposé clairement par deux de ses plus anciens supporters, qui continuent malgré tout à soutenir financièrement le site via Patreon. Ils ont présenté les informations d’une manière claire et factuelle et je n’ai aucun problème à soulever avec l’un des points qui ont été faits. Ils ont raison sur tout – je n’ai pas respecté ma part du marché et j’ai été terriblement inadéquat quant à l’offre de toute sorte de communication, et pour cela, je suis vraiment désolé pour vous tous.
Alors, comment en suis-je arrivé là ?
Si vous n’êtes pas intéressé par l’histoire de Cube Tutor, alors n’hésitez pas à passer à la section : Qu’est-ce qui a mal tourné?
En 2013, j’étais développeur dans une grande maison de logiciels à succès. Le travail était bon et, avec le recul, je n’ai pas à m’en plaindre, mais il ne m’excitait pas, il ne me donnait pas une raison de sortir du lit et de me jeter dans la journée. Je jouais à Magic par intermittence depuis plus de 10 ans et, à cette époque, je commençais vraiment à aimer les cubes et j’avais envie de construire les miens. Pendant mon temps libre, j’ai commencé à développer Cube Tutor, d’abord pour mes propres besoins. Au fur et à mesure qu’il grandissait et devenait plus riche en fonctionnalités, je l’ai mis en ligne et quelques amis ont commencé à le bricoler. De là, j’ai mis un post sur MTGSalvation invitant les autres à l’essayer et beaucoup de gens l’ont fait.
Vers l’automne 2013, j’ai réalisé que j’avais quelque chose avec Cube Tutor. Les gens s’engageaient vraiment avec lui et cela me rendait très heureux de pouvoir travailler sur un site que j’aimais pendant mon temps libre. Un partenaire commercial potentiel m’a contacté pour me proposer de faire de Cube Tutor quelque chose qui pourrait me soutenir financièrement, et l’idée m’a semblé être un rêve. J’en avais un peu assez de mon travail et l’idée de travailler à plein temps sur quelque chose que j’aimais était extrêmement séduisante. J’ai déposé mon préavis et je me suis lancée.
Les six premiers mois environ de 2014 ont été formidables ! Je me réveillais tous les jours, motivé à travailler dur sur un site que j’aimais, pour le transformer en quelque chose d’encore plus grand. Alors que je n’étais pas payé pour faire quoi que ce soit à l’époque, j’étais capable de subvenir à mes besoins grâce à quelques économies et avec la promesse de construire cette chose en une entreprise viable, je travaillais joyeusement.
Je ne me souviens pas vraiment quand c’est arrivé, mais il est devenu progressivement évident que le partenaire commercial avec lequel j’avais espéré travailler n’avait clairement pas la même vision que moi et n’était tout simplement pas intéressé à poursuivre notre idée. Avec le recul, j’étais probablement un peu naïf et, pour une raison ou une autre, les choses ne se sont pas passées comme prévu. Mes économies commençaient à être un peu faibles et, face à l’augmentation des frais de fonctionnement, il est devenu évident que continuer à offrir le Cube Tutor comme un service entièrement gratuit n’allait plus fonctionner. Je pouvais soit retourner au travail et demander à mes utilisateurs un peu d’aide pour couvrir les frais de serveur et continuer à faire tourner l’entreprise, soit m’investir encore plus, travailler sur mon projet passionnel et essayer d’en faire quelque chose. Il n’y avait pas de choix pour moi, je voulais en faire un succès.
Je me suis lancé dans le programme de champion du tuteur du cube. C’était un moyen pour vous, les gars, de soutenir financièrement Cube Tutor sur la promesse de quelques fonctionnalités supplémentaires pour votre compte, mais plus important encore, d’enlever la pression financière et de me permettre de travailler réellement à l’amélioration du site. Dans l’ensemble, j’ai travaillé sur ce projet pendant près d’un an avant qu’il ne voie le jour, mais quand il a finalement été lancé, c’était génial. Non seulement les gens se sont engagés avec lui, mais j’ai rapidement atteint mon engagement de deuxième niveau sur Patreon, ce qui m’a permis de travailler à temps partiel sur le site, comme mon travail.
Au moment où le programme a été lancé, j’étais dans une assez mauvaise situation financière. Ayant pris 18 mois sans salaire, ajouté aux milliers de dollars que j’avais dépensé en frais de serveur, j’avais vraiment besoin d’avoir un revenu. Ce n’est vraiment qu’avec le soutien d’une épouse très aimante et compréhensive que j’ai réussi à atteindre le stade où je pouvais même lancer le programme Champion et pour cela, j’ai beaucoup de chance. Merci.
Cependant, même avec le soutien écrasant de la communauté, ce n’était tout simplement pas suffisant pour me permettre de continuer et j’ai dû prendre un autre emploi. On m’a offert une opportunité qui correspondait très bien à mon engagement de 1 à 2 jours par semaine sur Cube Tutor et c’est un travail que je continue à ce jour, à temps partiel. Je suis également très reconnaissant pour cette opportunité, car peu d’emplois traditionnels seraient aussi accommodants et compréhensifs pour le temps que je devais passer à travailler sur Cube Tutor.
Avec le lancement du programme Champion, il y a eu une rafale de demandes de fonctionnalités de la part des utilisateurs qui savaient ce qu’ils voulaient du site et pendant les premiers mois jusqu’en octobre 2015, les choses allaient très bien. Je publiais des versions régulières, je résolvais les demandes de fonctionnalités et je tenais généralement ma promesse Patreon. Les retours que je recevais à cette époque étaient du type « ces fonctionnalités sont géniales, mais quand allez-vous vous attaquer à l’une des plus importantes, comme faire fonctionner le site sur mobile ? ». À l’époque, je n’avais jamais imaginé que j’en serais au stade où les gens utiliseraient CT de la manière dont ils le font aujourd’hui et que le site n’avait pas vraiment été conçu en fonction des appareils mobiles. C’était une entreprise énorme. Je suis retourné voir mes supporters Patreon et j’ai dit : » OK, je peux le faire, mais je ne vais plus être capable de suivre le rythme d’une ou deux publications de fonctionnalités par mois, cela représente 6 mois de dur labeur à lui tout seul « . Vous avez été d’un grand soutien et avez dit « Hé, super ! Vas-y ! ». Je me suis mis à construire une interface utilisateur mobile au-dessus de Cube Tutor.
À bien des égards, je pense que c’était un tournant, car j’étais passé de mon territoire familier de barattage de petites versions et de corrections de bugs à quelque chose de beaucoup plus grand. Même à l’époque où je développais le programme Champion, je publiais encore des versions régulières. C’est ainsi qu’a commencé le déclin de ma communication, une chose pour laquelle il n’y a aucune excuse. Néanmoins, j’ai travaillé dur pendant ces six mois et je suis sorti par l’autre bout avec une interface utilisateur mobile pour la rédaction, quelque chose que j’ai proposé pour le test bêta à l’été 2016. Les retours ont été généralement très positifs et j’ai repris le développement en vue de compléter le travail et de le sortir.
Qu’est-ce qui a mal tourné ?
Puis une bombe a frappé. Je vais parler un peu techniquement au cours des deux prochains paragraphes, mais je pense qu’il est important d’être aussi clair que possible sur ce qui s’est passé. J’ai appris du jour au lendemain qu’Apache Tapestry, le framework sur lequel Cube Tutor était construit, était arrivé en fin de vie et que le fondateur de ce framework n’en assurerait plus le support. Cela n’aurait pas dû me surprendre, Tapestry était un framework d’une autre époque. Il n’avait pas vraiment été conçu dans l’optique du mobile et n’avait pas suivi la tendance actuelle de l’industrie qui consiste à faire tourner des langages de script sur le client et le serveur. C’était une relique lente qui n’avait pas vraiment sa place en 2016. J’avais choisi Tapestry en premier lieu parce qu’il était rapide à développer et familier, et je ne pensais pas que ce projet verrait un jour le jour de toute façon. S’il y a une décision que je pourrais changer dans tout cela, ce serait celle-là, bien sûr, la rétrospection est 20/20.
Jusqu’à ce moment-là, Tapestry avait une communauté très active de développeurs qui non seulement amélioraient le framework mais produisaient des plugins pour l’étendre. J’ai fait un usage intensif de ces plugins pour de nombreuses choses, y compris les widgets de téléchargement, l’intégration de jQuery et la fonctionnalité server-push qui est fortement exploitée dans la rédaction et la grille de rédaction. Ce cadre et ses plugins constituaient la base de Cube Tutor et, en l’absence d’une maintenance active, je ne savais pas si je devais poursuivre la réécriture mobile, pour quelque chose qui devrait probablement être réécrit à nouveau en peu de temps. Je me suis retrouvé à essayer de moderniser quelque chose à partir d’une base qui n’a jamais été vraiment moderne en premier lieu et qui ne serait même plus maintenue et à jour. Le secteur du développement Web a évolué rapidement au cours des dix dernières années et, sans le soutien de quelque chose qui permettrait à Cube Tutor de traverser les dix prochaines années en toute sécurité, comment pourrais-je continuer avec Tapestry ? Pendant quelques mois, j’ai tourné en rond. Je poursuivais en partie le travail sur le mobile, en partie le prototypage d’autres frameworks, mais surtout j’étais perdu et incertain de ce qu’il fallait faire face à ce problème.
Au milieu de tout cela, un autre problème a frappé. Non seulement Cube Tutor était construit sur un framework mourant, mais il utilisait également une version légèrement dépassée de ce framework. Il fonctionnait (et fonctionne toujours) sur la version 5.3.X de Tapestry en raison de sa dépendance à l’égard de certains des plugins mentionnés précédemment, qui ne sont pas compatibles avec la dernière version 5.4.X. Malheureusement, la version 5.3.X de Tapestry utilise une ancienne version de Java, Java 7, une autre relique et mon serveur de compilation a décidé de ne plus supporter Java 7. Cela signifie que je n’ai pas pu construire le code de base pour la version. En soi, ce problème n’est pas insurmontable. Je pouvais changer de serveur de construction, construire le site localement ou éventuellement envisager de modifier moi-même les plugins Tapestry pour les mettre en conformité avec la version 5.4 de Tapestry et Java 8. Cependant, couplé à tout le reste, cela a ressemblé au dernier clou du cercueil de Cube Tutor sur Tapestry.
Je ne peux pas exagérer la quantité de travail que cela représenterait de revenir au début et de réécrire Cube Tutor à nouveau sur un nouveau cadre. J’ai pris la meilleure partie de deux ans à travailler à temps plein pour l’amener là où il est maintenant. Avec mes autres engagements professionnels et la perspective de fonder une famille bientôt, je ne pouvais tout simplement pas envisager de refaire tout ce travail, ce n’était pas possible.
Ma plus grande honte dans tout cela est le manque de transparence sur le sujet. J’aurais aimé avoir le courage de dire simplement « regardez les gars, voici où j’en suis » mais je n’étais pas habitué à cela. J’étais habitué à résoudre des problèmes et à présenter des travaux et des améliorations bien achevés, sous le regard admiratif de la communauté. Brad et Eric ont lu une conversation PM que j’avais eue avec Brad l’année dernière, où je parle d’embarras et c’est la seule justification que j’ai. Je ne sais pas quoi faire à propos de ce problème et j’ai lutté pour voir un moyen d’en sortir depuis longtemps maintenant.
Où en sommes-nous maintenant ?
C’est simple, je ne peux pas actuellement mettre à jour le site, autre que les choses que je peux changer à travers la base de données comme les nouvelles cartes, les cubes vedettes et les cubes moyens. Ma vie n’est plus remplie du temps libre dont j’avais le luxe en 2014 et je ne peux tout simplement pas me permettre de revenir à une position de revenu Patreon uniquement pour me soutenir sur Cube Tutor à temps plein pour réécrire le site et même si je le pouvais, j’ai maintenant d’autres engagements professionnels à long terme à tenir qui ont une demande sur mon temps. Tout cela étant dit, pour maintenir le Cube Tutor en activité, je dois couvrir les frais de fonctionnement qui s’élèvent actuellement à environ 700-750 $ par mois en moyenne. Une combinaison de ces trois choses m’a laissé juste faire du sur-place, tournoyant, ne sachant pas quoi faire.
Pour ce qui est de l’argent lui-même, je n’y ai pas touché depuis plus d’un an. J’ai un compte séparé pour tous les gains Patreon de Cube Tutor et l’argent supplémentaire en plus de ce que j’ai dû payer en coûts et en taxes est pour la plupart juste assis là. À l’époque où le Patreon a commencé et que j’y travaillais encore activement, je retirais l’argent régulièrement, mais je n’ai pas l’impression de l’avoir gagné depuis un certain temps maintenant et il y a donc un petit pot d’argent qui s’est accumulé et qui pourrait, à tout le moins, couvrir les coûts du serveur pendant un petit moment si le soutien du Patreon diminuait considérablement après ce post, comme je m’attends à ce que ce soit le cas.
Alors, où est-ce que tout cela laisse Cube Tutor ? Eh bien la réponse est toujours que je ne sais pas. Brad et Eric n’ont cessé de revenir sur ce point que j’ai mentionné « un article de blog à venir » pendant longtemps sans jamais le livrer et je suppose que je le repoussais jusqu’à ce que je puisse offrir au moins une sorte de lumière au bout du tunnel, mais à l’heure actuelle, je ne sais tout simplement pas quelle est cette résolution. Tout ce que je veux faire maintenant, c’est être honnête et ouvert sur la situation, ce que j’aurais dû faire il y a longtemps. Ce n’est pas juste pour aucun d’entre vous, les gars, et en particulier pour ceux qui prennent des décisions pour soutenir Cube Tutor en fonction de mes engagements Patreon.
La chose la plus importante est que l’information est enfin sortie et c’est une étape fondamentale et quelque peu cathartique pour moi de prendre pour écrire cela. Je considère ce post comme le premier pas dans la bonne direction pour trouver une solution au problème, au lieu de savoir quelle est cette solution. Merci encore à Brad et Eric d’avoir été le catalyseur. Je suis désolé que les choses soient devenues si mauvaises que vous avez senti que vous deviez produire ce podcast et je suis désolé pour tous les autres de vous avoir laissé tomber et de ne pas avoir eu le courage d’écrire cela sur mon propre dos il y a longtemps.
Par-dessus tout, j’aime ce site et cette communauté et j’en suis très fier, mais la main sur le cœur, je ne sais pas comment je peux trouver un moyen de continuer avec lui face aux obstacles que j’ai devant moi. Quelle est ma solution idéale ? Trouver un moyen de sortir de cette situation où Cube Tutor reste la plateforme de cubes la plus géniale disponible sur le web, quelque chose dont je peux être fier et que vous aimerez une fois de plus.
Je n’utilise pas vraiment beaucoup Reddit mais comme toujours je suis joignable par email : [email protected].
Ben.