devblog La controversia de CubeTutor
Escribo esta entrada de blog en respuesta a un podcast que se publicó hace unos días sobre Cube Tutor y algunas de las cuestiones que rodean su estado actual de desarrollo.
http://solelysingleton.libsyn.com/season-3-episode-1-the-cube-tutor-controvesy
Me gustaría dar las gracias a Brad y Eric por producir este episodio. Abordaron un tema sobre el que tienen todo el derecho del mundo a gritar y enloquecer con un tono maduro, sensato, claro y educado. Como probablemente se imaginen, fue muy difícil para mí escuchar el estado de Cube Tutor por parte de dos de sus partidarios más antiguos, que a pesar de todo siguen apoyando el sitio financieramente a través de Patreon. Presentaron la información de forma clara y objetiva y no tengo ningún problema con ninguno de los puntos que se plantearon. Tienen razón en todo: no he cumplido con mi parte del trato y he sido lamentablemente inadecuado a la hora de ofrecer cualquier tipo de comunicación, y por eso lo siento de verdad a todos vosotros.
¿Cómo he llegado hasta aquí?
Si no estás interesado en la historia de Cube Tutor, entonces siéntete libre de saltar a la sección: ¿Qué salió mal?
En 2013 era desarrollador en una gran y exitosa empresa de software. El trabajo era bueno y mirando hacia atrás no tengo ninguna queja al respecto, pero no me entusiasmaba, no me daba una razón para levantarme de la cama y lanzarme al día. Llevaba más de 10 años jugando a Magic de forma intermitente y, por aquel entonces, me estaba aficionando a los cubos y tenía ganas de construir los míos propios. En mi tiempo libre empecé a desarrollar Cube Tutor, al principio sólo para mis propias necesidades. A medida que crecía y se volvía más rico en características, lo puse en línea y un par de amigos comenzaron a jugar con él. A partir de ahí puse un post en MTGSalvation invitando a otros a probarlo y mucha gente lo hizo.
Alrededor del otoño de 2013 me di cuenta de que tenía algo con Cube Tutor. La gente estaba realmente comprometida con él y me hacía muy feliz poder trabajar en un sitio que me gustaba en mi tiempo libre. Un posible socio comercial me planteó la posibilidad de convertir Cube Tutor en algo que pudiera mantenerme económicamente, y la idea me pareció un sueño. Me había cansado un poco de mi trabajo y la idea de trabajar en algo que me encantaba a tiempo completo era muy atractiva. Presenté mi renuncia y me lancé a ello.
¡Los primeros seis meses de 2014 fueron geniales! Me levantaba todos los días, motivado para trabajar duro en un sitio que amaba, para convertirlo en algo aún más grande. Aunque no me pagaban por hacer nada en ese momento, era capaz de mantenerme a través de algunos ahorros y con la promesa de construir esta cosa en un negocio viable estaba trabajando felizmente.
No recuerdo realmente cuando sucedió, pero poco a poco se hizo evidente que el socio de negocios con el que había esperado trabajar claramente no tenía la misma visión que yo y simplemente no estaba interesado en perseguir nuestra idea. En retrospectiva, probablemente fui un poco ingenuo y, por la razón que fuera, la idea no cuajó. Mis ahorros empezaban a escasear y, ante los crecientes costes de funcionamiento, quedó claro que seguir ofreciendo Cube Tutor como un servicio completamente gratuito ya no iba a funcionar. Podía volver a trabajar y pedir a mis usuarios un poco de ayuda con los costes del servidor y mantenerlo en funcionamiento o podía lanzarme aún más, trabajar en mi proyecto de pasión e intentar hacer algo con él. No había elección para mí, quería que esto fuera un éxito.
Me embarqué en el programa Cube Tutor Champion. Esta fue una manera para que ustedes apoyen financieramente a Cube Tutor con la promesa de algunas características adicionales para su cuenta, pero lo más importante es quitar la presión financiera y permitirme trabajar realmente en la mejora del sitio. En definitiva, estuve trabajando en esto durante casi un año antes de que viera la luz del día, pero cuando finalmente se lanzó me sentí muy bien. No sólo la gente se comprometió con él, sino que rápidamente logré mi compromiso de segundo nivel en Patreon, lo que me permitió trabajar a tiempo parcial en el sitio, como mi trabajo.
Para el momento en que el programa se puso en marcha, yo estaba en un lugar bastante malo financieramente. Después de haber estado 18 meses sin cobrar, sumado a los miles de dólares que había gastado en costos del servidor, realmente necesitaba obtener algún ingreso. Es realmente sólo con el apoyo de una esposa muy cariñosa y comprensiva que me las arreglé para llegar a la etapa en la que incluso podría lanzar el Programa Campeón y por eso soy muy afortunado. Gracias.
Sin embargo, incluso con el abrumador apoyo de la comunidad, no fue suficiente para seguir adelante y tuve que aceptar otro trabajo. Me ofrecieron una oportunidad que encajaba muy bien con mi compromiso de 1 o 2 días a la semana en Cube Tutor y es un trabajo que continúo hasta hoy, a tiempo parcial. También estoy muy agradecido por esa oportunidad, ya que no hay muchos trabajos tradicionales que sean tan complacientes y comprensivos con el tiempo que necesito para trabajar en Cube Tutor.
Junto con el lanzamiento del Programa Campeón llegó una avalancha de solicitudes de características de los usuarios que sabían lo que querían del sitio y durante los primeros meses hasta octubre de 2015 las cosas iban muy bien. Estaba publicando versiones regulares, resolviendo peticiones de características y, en general, cumpliendo mi promesa de Patreon. Los comentarios que recibía en esta época eran del tipo «estas características son geniales, pero ¿cuándo vas a abordar una de las más grandes, como hacer que el sitio funcione en el móvil?». Al principio nunca imaginé que llegaría a la etapa en la que la gente usaría CT de la forma en que lo hace y no se había construido teniendo en cuenta los dispositivos móviles. Fue una empresa enorme. Volví a mis seguidores de Patreon y les dije: «De acuerdo, puedo hacer esto, pero ya no voy a ser capaz de seguir el ritmo de 1 ó 2 lanzamientos de características al mes, esto supone 6 meses de duro trabajo por sí solo». Vosotros me apoyasteis mucho y dijisteis: «¡Eh, genial! A por ello!». Me puse a construir una interfaz de usuario móvil en la parte superior de Cube Tutor.
En muchos sentidos, creo que este fue un punto de inflexión, ya que había pasado de mi territorio familiar de la producción de pequeñas versiones y correcciones de errores en algo mucho más grande. Incluso en los días en que desarrollaba el Programa Campeón, seguía publicando versiones regulares. Este fue el comienzo del declive de mi comunicación, algo que no tiene excusa. Sin embargo, trabajé duro durante esos seis meses y salí del otro lado con una interfaz de usuario móvil para la redacción, algo que ofrecí para pruebas beta en el verano de 2016. Los comentarios fueron en general muy positivos y volví al desarrollo con la intención de completar el trabajo y lanzarlo al mercado.
¿Qué salió mal?
Entonces cayó una bomba. Voy a hablar un poco técnicamente en los próximos párrafos, pero creo que es importante ser lo más claro posible sobre lo que pasó. De la noche a la mañana me enteré de que Apache Tapestry, el framework sobre el que se construyó Cube Tutor, había llegado al final de su vida útil y que el fundador de ese framework ya no le daría soporte. Esto no debería haberme sorprendido, Tapestry era un marco de trabajo de una época anterior. No había sido construido realmente con el móvil en mente y evitaba la tendencia actual de la industria de ejecutar lenguajes de scripting en el cliente y el servidor. Era una reliquia que se movía lentamente y que no pertenecía a 2016. Sólo había elegido Tapestry en primer lugar porque era rápido de desarrollar y familiar y no pensé que este proyecto nunca vería la luz del día de todos modos. Si hay una decisión que podría cambiar en todo esto sería esa, por supuesto la retrospectiva es 20/20.
Hasta este punto Tapestry tenía una comunidad muy activa de desarrolladores que no sólo estaban mejorando el marco, sino que estaban produciendo plugins para extenderlo. Hice un gran uso de estos plugins para muchas cosas, incluyendo widgets de carga, la integración de jQuery y la funcionalidad de empuje del servidor que se aprovecha en gran medida en la redacción y la redacción de la cuadrícula. Este marco de trabajo y sus plugins eran la base de Cube Tutor y sin que se mantuvieran activamente, no sabía si debía continuar con la reescritura móvil, para algo que probablemente necesitaría ser reescrito de nuevo en poco tiempo. Me encontré tratando de modernizar algo desde una base que nunca fue realmente moderna en primer lugar y que ahora ni siquiera sería mantenida y actualizada. La industria del desarrollo web se ha movido rápidamente en los últimos diez años y sin el apoyo de algo que vería Cube Tutor con seguridad en los próximos diez, ¿cómo podría continuar con Tapestry? Durante unos meses estuve dando vueltas. En parte continuaba con el trabajo móvil, en parte creaba prototipos de otros marcos, pero sobre todo estaba perdido y no sabía qué hacer ante este problema.
En medio de todo esto, surgió otro problema. Cube Tutor no sólo estaba construido sobre un framework moribundo, sino que además utilizaba una versión ligeramente anticuada de ese framework. Estaba (y todavía está) funcionando en la versión 5.3.X de Tapestry debido a su dependencia de algunos de los plugins mencionados anteriormente que no son compatibles con la última versión 5.4.X. Desafortunadamente, la versión 5.3.X de Tapestry utiliza una versión más antigua de Java, Java 7, otra reliquia y mi servidor de construcción decidió dejar de soportar Java 7. Esto significa que no pude construir el código base para la liberación. En sí mismo, este problema no es insuperable. Podría cambiar los servidores de construcción, construir el sitio localmente o potencialmente buscar la modificación de los plugins de Tapestry yo mismo para ponerlos en línea con la versión 5.4 de Tapestry y Java 8. Sin embargo, junto con todo lo demás se sentía como el clavo final en el ataúd de Cube Tutor en Tapestry.
No puedo exagerar la cantidad de trabajo que sería volver al principio y reescribir Cube Tutor de nuevo en un nuevo marco. Me tomó la mayor parte de dos años trabajando a tiempo completo para llegar a donde está ahora. Con mis otros compromisos profesionales y la perspectiva de formar una familia pronto, simplemente no podía contemplar la posibilidad de hacer todo ese trabajo de nuevo, no era posible.
Mi mayor vergüenza en todo esto es la falta de transparencia en el asunto. Ojalá hubiera tenido el valor de decir simplemente «mirad chicos, aquí es donde estoy» pero no estaba acostumbrado a eso. Estaba acostumbrado a resolver problemas y a presentar bonitos trabajos y mejoras terminados ante la adoración de la comunidad. Brad y Eric leyeron una conversación por MP que había tenido con Brad el año pasado en la que hablaba de la vergüenza y esa es la única justificación que tengo. No sé qué hacer con este problema y he estado luchando para ver una manera de salir de él desde hace mucho tiempo.
¿Dónde estamos ahora?
Simplemente, actualmente no puedo actualizar el sitio, aparte de las cosas que puedo cambiar a través de la base de datos como nuevas tarjetas, cubos destacados y cubos promedio. Mi vida ya no está llena del tiempo libre del que tenía el lujo en 2014 y simplemente no puedo permitirme volver a una posición de ingresos sólo de Patreon para mantenerme en Cube Tutor a tiempo completo para reescribir el sitio e incluso si pudiera ahora tengo otros compromisos profesionales a largo plazo para mantener que tienen una demanda en mi tiempo. Dicho esto, para mantener Cube Tutor necesito cubrir los costes de funcionamiento, que actualmente rondan los 700-750 dólares al mes. Una combinación de esas tres cosas me ha dejado simplemente pisando el agua, dando vueltas, sin saber qué hacer.
En cuanto al dinero en sí, no lo he tocado en más de un año. Tengo una cuenta separada para todas las ganancias del Patreon de Cube Tutor y el dinero extra, además de lo que he tenido que pagar en costos e impuestos, está en su mayor parte allí. Antes, cuando el Patreon comenzó y todavía estaba trabajando en él activamente, retiraba el dinero con regularidad, pero no siento que lo haya ganado desde hace un tiempo, por lo que hay un pequeño bote de dinero que se ha acumulado y que podría, como mínimo, cubrir los costes del servidor durante un tiempo si el apoyo de Patreon se redujera drásticamente después de este post, como espero que ocurra.
Entonces, ¿dónde deja todo esto a Cube Tutor? Pues la respuesta sigue siendo que no lo sé. Brad y Eric siguen insistiendo en el hecho de que he estado mencionando «una próxima publicación en el blog» durante mucho tiempo sin llegar a cumplirla y supongo que lo estaba posponiendo hasta que pudiera ofrecer al menos algún tipo de luz al final del túnel, pero ahora mismo no sé cuál es esa resolución. Todo lo que quiero hacer ahora es ser honesto y abierto sobre la situación, algo que debería haber hecho hace mucho tiempo. No es justo para ninguno de ustedes y en particular para aquellos que están tomando decisiones para apoyar a Cube Tutor en base a mis compromisos de Patreon.
Lo más importante es que la información está finalmente ahí fuera y es un paso fundamental y algo catártico para mí escribir esto. Estoy tratando este post como el primer paso en la dirección correcta hacia la elaboración de una solución al problema, en lugar de saber lo que esa solución es en realidad. Gracias de nuevo a Brad y Eric por ser el catalizador. Lamento que las cosas se pusieran tan mal que sintieran que tenían que producir este podcast y lamento a todos los demás por haberlos defraudado y no haber tenido el valor de escribir esto de mi propia espalda hace mucho tiempo.
Más que nada amo este sitio y esta comunidad y estoy muy orgulloso de ella, pero con la mano en el corazón no sé cómo puedo encontrar una manera de continuar con ella frente a los obstáculos que tengo frente a mí. ¿Cuál es mi solución ideal? Encontrar una forma de salir de esto en la que Cube Tutor siga siendo la plataforma de cubos más impresionante disponible en la web, algo de lo que pueda estar orgulloso y que vosotros améis una vez más.
Realmente no uso mucho Reddit pero como siempre estoy localizable a través del correo electrónico: [email protected].
Ben