devblog The CubeTutor Controversy
Eu estou escrevendo este post no blog em resposta a um podcast que foi divulgado há alguns dias sobre o Cube Tutor e algumas das questões em torno do seu estado atual de desenvolvimento.
http://solelysingleton.libsyn.com/season-3-episode-1-the-cube-tutor-controvesy
Eu gostaria de agradecer ao Brad e ao Eric por terem produzido este episódio. Eles abordaram um tema que eles têm todo o direito no mundo de estar gritando e gritando loucamente com um tom maduro, nivelado, claro e educado. Como você provavelmente pode imaginar, foi realmente difícil para mim ouvir, ouvir o estado do Cube Tutor, exposto claramente por dois dos seus mais antigos apoiadores, que apesar de tudo continuam a apoiar financeiramente o site através do Patreon. Eles apresentaram a informação de forma clara e factual e eu não tenho nenhum problema a levantar com nenhum dos pontos que foram levantados. Eles estão certos sobre tudo – eu não cumpri a minha parte do acordo e tenho sido terrivelmente inadequado em oferecer qualquer tipo de comunicação, e por isso lamento sinceramente a todos vocês.
Então como cheguei aqui?
Se você não está interessado na história do Cube Tutor então sinta-se à vontade para pular para a seção: O que correu mal?
Voltar em 2013 Eu era um desenvolvedor em uma grande e bem sucedida casa de software. O trabalho foi bom e olhando para trás não tenho queixas sobre isso, mas não me excitou, não me deu uma razão para sair da cama e me jogar no dia. Eu era um jogador mágico há mais de 10 anos e por volta dessa época eu estava realmente entrando em um cubo e estava ansioso para construir o meu próprio. No meu tempo livre eu comecei a desenvolver o Cube Tutor, realmente apenas para as minhas próprias necessidades iniciais. À medida que ele cresceu e se tornou mais rico em recursos, eu o coloquei online e um par de amigos começaram a mexer nele. A partir daí coloquei um post no MTGSalvation convidando outros a experimentá-lo e muitas pessoas o fizeram.
No outono de 2013 eu percebi que tinha algo com o Cube Tutor. As pessoas estavam realmente envolvidas com ele e isso estava me deixando muito feliz por poder trabalhar em um site que eu adorava no meu tempo livre. Fui abordado por um potencial parceiro de negócios sobre a possibilidade de construir o Cube Tutor em algo que pudesse me apoiar financeiramente e a idéia soou como um sonho. Eu estava um pouco cansado do meu trabalho e a idéia de trabalhar em algo que eu amava em tempo integral era extremamente atrativa. Entreguei meu aviso e me atirei nele.
Os primeiros seis meses ou mais de 2014 foram ótimos! Eu acordava todos os dias, motivado a trabalhar duro em um site que eu amava, para construí-lo em algo ainda maior. Enquanto eu não estava sendo pago para fazer nada na época, fui capaz de me sustentar através de algumas economias e com a promessa de construir esta coisa em um negócio viável eu estava trabalhando alegremente fora.
Não me lembro realmente quando isso aconteceu, mas gradualmente tornou-se evidente que o parceiro de negócios com quem eu esperava trabalhar claramente não tinha a mesma visão que eu e simplesmente não estava interessado em perseguir nossa idéia. Olhando para trás, eu provavelmente era um pouco ingênuo e por qualquer razão, simplesmente não se juntou. Minhas economias estavam começando a ser um pouco baixas e, diante do aumento dos custos, ficou claro que continuar oferecendo o Cube Tutor como um serviço completamente gratuito não iria mais funcionar. Eu podia voltar ao trabalho e pedir aos meus utilizadores uma pequena ajuda com os custos do servidor e mantê-lo a funcionar ou podia atirar-me ainda mais para isto, trabalhar no meu projecto de paixão e tentar fazer algo dele. Não havia escolha para mim, eu queria fazer disso um sucesso.
Eu embarquei no programa Cube Tutor Champion. Esta foi uma maneira de vocês apoiarem financeiramente o Cube Tutor com a promessa de algumas funcionalidades extras para a sua conta, mas mais importante, para tirar a pressão financeira e permitir que eu realmente trabalhe para melhorar o site. Em suma, eu estava trabalhando nisto durante a melhor parte de um ano antes de ver a luz do dia, mas quando finalmente foi lançado, me senti ótimo. Não só as pessoas se envolveram com ele, mas eu rapidamente atingi meu compromisso de segundo nível no Patreon, o que me permitiu trabalhar em tempo parcial no site, como meu trabalho.
Quando o programa foi lançado, eu estava em um lugar muito ruim financeiramente. Tendo levado 18 meses sem pagamento, juntamente com os milhares de dólares que eu tinha gasto em custos de servidor, eu realmente precisava obter alguma renda. Foi apenas com o apoio de uma esposa muito amorosa e compreensiva que consegui chegar ao palco onde pude até lançar o Programa Champion e para isso tenho muita sorte. Obrigado.
No entanto, mesmo com o apoio esmagador da comunidade, não foi suficiente para me manter e tive de aceitar outro emprego. Foi-me oferecida uma oportunidade que se encaixava muito bem com o meu compromisso de 1-2 dias por semana no Cube Tutor e é um trabalho que continuo até este dia, em tempo parcial. Eu também sou muito grato por essa oportunidade, pois não há muitos empregos tradicionais que seriam tão acomodadores e compreensivos do tempo que eu precisava para trabalhar no Cube Tutor.
Durante o lançamento do Programa Champion veio uma enxurrada de pedidos de recursos de usuários que sabiam o que queriam fora do site e durante os primeiros meses até outubro de 2015 as coisas estavam indo muito bem. Eu estava lançando lançamentos regulares, resolvendo pedidos de funcionalidades e, em geral, cumprindo a minha promessa de Patreon. O feedback que eu estava recebendo desta vez estava na linha de “estas funcionalidades são ótimas, mas quando você vai enfrentar uma das maiores, como colocar o site funcionando no celular”. No início eu nunca imaginei que estaria na fase em que as pessoas estariam usando a CT do jeito que estão e ela não tinha sido construída com dispositivos móveis em mente. Isto era um empreendimento enorme. Voltei aos meus apoiantes do Patreon e disse: “OK, eu posso fazer isso, mas não vou mais ser capaz de acompanhar 1-2 Lançamentos de Destaques por mês, isto é 6 meses de trabalho duro por conta própria”. Vocês apoiaram muito e disseram: “Ei, ótimo! Força nisso!”. Eu parti para construir uma interface móvel em cima do Cube Tutor.
De muitas maneiras eu acho que este foi um ponto de viragem, pois eu tinha saído do meu território familiar de produzir pequenos lançamentos e correcções de bugs para algo muito maior. Mesmo nos dias em que eu estava desenvolvendo o Programa Champion, eu ainda estava lançando lançamentos regulares. Este foi o início do declínio na minha comunicação, algo para o qual não há desculpa. Mesmo assim, eu trabalhei duro durante esses seis meses e saí do outro lado com uma interface móvel para o desenho, algo que eu ofereci para o Beta Testing no verão de 2016. O feedback foi geralmente muito positivo e eu voltei ao desenvolvimento com o objetivo de completar o trabalho e liberá-lo.
O que deu errado?
Então uma bomba atingida. Vou falar um pouco tecnicamente sobre os próximos parágrafos, mas acho que é importante ser o mais claro possível sobre o que aconteceu. Aprendi da noite para o dia que a Apache Tapestry, a estrutura em que o Cube Tutor foi construído tinha chegado ao fim da sua vida e o fundador dessa estrutura não a apoiaria mais. Isto não deveria ter sido uma surpresa para mim, a Tapeçaria era uma estrutura de uma época mais antiga. Não tinha sido realmente construída com o móvel em mente e escapou à tendência atual da indústria de rodar linguagens de scripting no cliente e no servidor. Era uma relíquia em movimento lento que não pertencia realmente a 2016. Eu só tinha escolhido o Tapestry em primeiro lugar porque era rápido de desenvolver e familiar e eu não achava que este projeto iria ver a luz do dia de qualquer maneira. Se há uma decisão que eu poderia mudar em tudo isso seria essa, é claro que a retrospectiva é 20/20.
Up até este ponto Tapestry tinha uma comunidade muito ativa de desenvolvedores que não só estavam melhorando a estrutura, mas estavam produzindo plugins para estendê-la. Eu fiz uso pesado destes plugins para muitas coisas incluindo widgets de upload, integração jQuery e funcionalidade server-push que é fortemente aproveitada no draft e grid draft. Este framework e seus plugins foram a base do Cube Tutor e sem a manutenção ativa deles, eu simplesmente não sabia se deveria continuar com a reescrita móvel, para algo que provavelmente precisaria ser reescrito novamente em ordem curta. Eu me vi tentando modernizar algo de uma fundação que nunca foi realmente moderna em primeiro lugar e agora nem mesmo seria mantida e atual. A indústria de desenvolvimento web se moveu rapidamente nos últimos dez anos e sem o suporte de algo que veria o Cube Tutor em segurança nos próximos dez, como eu poderia continuar com a Tapestry? Por alguns meses eu estava girando. Eu estava em parte continuando com o trabalho móvel, em parte prototipando outros frameworks, mas na maioria das vezes apenas perdi e não sabia o que fazer diante deste problema.
No meio de tudo isso, outro problema se deparou. O Cube Tutor não só foi construído sobre um framework em extinção, mas também estava usando uma versão um pouco desatualizada desse framework. Ele estava (e ainda está) rodando na versão 5.3.X do Tapestry devido a sua dependência de alguns dos plugins mencionados anteriormente que não são compatíveis com a última versão 5.4.X. Infelizmente a versão 5.3.X do Tapestry está usando uma versão antiga do Java, Java 7, outra relíquia e o meu servidor de compilação decidiu parar de suportar o Java 7. Isto significa que eu não consegui realmente construir a base de código para o lançamento. Em si mesmo este problema não é intransponível. Eu poderia mudar os servidores de compilação, construir o site localmente ou, potencialmente, olhar para modificar os plugins do Tapestry eu mesmo para alinhá-los com a versão 5.4 do Tapestry e Java 8. Contudo, juntamente com tudo o resto pareceu-me o último prego no caixão do Cube Tutor no Tapestry.
Não posso exagerar o trabalho que seria voltar ao início e reescrever o Cube Tutor novamente num novo framework. Eu levei a melhor parte de dois anos trabalhando em tempo integral para chegar onde ele está agora. Com meus outros compromissos profissionais e a perspectiva de começar uma família em breve eu simplesmente não podia contemplar fazer todo aquele trabalho novamente, não era possível.
A minha maior vergonha em tudo isso é a falta de transparência sobre o assunto. Eu gostaria de ter tido a coragem de dizer apenas “olhem pessoal, aqui é onde eu estou” mas não estava acostumado a isso. Estava acostumado a resolver problemas e a apresentar um trabalho bem feito e melhorias para a adoração da comunidade. Brad e Eric leram uma conversa de PM que eu tive com Brad no ano passado onde eu falava de constrangimento e essa é a única justificativa que eu tenho. Eu não sei o que fazer sobre este problema e tenho lutado para ver uma saída há muito tempo.
Onde estamos agora?
Simplesmente coloquei que atualmente não posso atualizar o site, além das coisas que posso mudar através da base de dados como novos cartões, cubos em destaque e cubos médios. Minha vida não está mais cheia do tempo livre que eu tive o luxo de ter em 2014 e eu simplesmente não posso me dar ao luxo de voltar a uma posição de Patreon apenas para me sustentar no Cube Tutor em tempo integral para reescrever o site e mesmo se eu pudesse agora ter outros compromissos profissionais de longo prazo para manter que têm uma demanda no meu tempo. Dito tudo isso, para manter o Cube Tutor em alta eu preciso cobrir os custos operacionais que estão atualmente em média em torno de $700-750 por mês. Uma combinação dessas três coisas me deixou apenas pisando água, girando, sem saber o que fazer.
Como pelo dinheiro em si, eu não toco nisso há mais de um ano. Eu tenho uma conta separada para todos os ganhos do Cube Tutor’s Patreon e o dinheiro extra além do que eu tive que pagar em custos e impostos é, na maior parte das vezes, apenas ficar sentado lá. Quando o Patreon começou e eu ainda estava trabalhando nele ativamente eu retirava o dinheiro regularmente, mas eu não sinto que o ganhei por um tempo agora e então há um pequeno pote de dinheiro que acumulou que poderia, no mínimo, cobrir os custos do servidor por um tempo se o suporte do Patreon reduzisse drasticamente após este post como eu espero que seja.
Então onde tudo isso deixa o Cube Tutor? Bem, a resposta ainda é que eu não sei. Brad e Eric continuavam voltando a este ponto que eu vinha mencionando “um próximo post no blog” por um longo tempo sem nunca entregá-lo e acho que eu estava adiando até que eu pudesse oferecer pelo menos algum tipo de luz no final do túnel, mas agora eu simplesmente não sei qual é essa resolução. Tudo o que eu quero fazer agora é ser honesto e aberto sobre a situação, algo que eu deveria ter feito há muito tempo atrás. Não é justo para nenhum de vocês e particularmente para aqueles que estão tomando decisões para apoiar o Cube Tutor baseado nos meus compromissos com o Patreon.
O mais importante é que a informação está finalmente lá fora e é um passo fundamental e um tanto catártico para mim escrever isto. Estou tratando este post como o primeiro passo de volta na direção certa para encontrar uma solução para o problema, em vez de saber qual é realmente essa solução. Obrigado novamente ao Brad e ao Eric por serem o catalisador. Lamento que as coisas tenham ficado tão más que vocês sentiram que tinham de produzir este podcast e lamento a todos os outros por vos ter desiludido e não ter tido a coragem de escrever isto nas minhas próprias costas há muito tempo.
Mais do que tudo, adoro este site e esta comunidade e estou muito orgulhoso dele, mas de coração, não sei como posso encontrar uma forma de continuar com ele face aos obstáculos que tenho à minha frente. Qual é a minha solução ideal? Para encontrar uma saída para isso onde o Cube Tutor continua sendo a plataforma de cubos mais incrível disponível na web, algo que eu posso me orgulhar e que vocês vão adorar mais uma vez.
Não uso muito Reddit mas como sempre estou contactável via e-mail: [email protected].
Ben