It’s been three weeks since my last post regarding Cube Tutor and I’m writing this post today to collect my thoughts on where we’re at and to look at a potential route forward. Firstly I want to say thank you to everyone who reached out to me with a Tweet or Email. The sheer volume of messages was a little overwhelming but it was important for me to take the time to listen and give everyone who reached out a personal response. I’ve still got a few to get through so please hang tight.
What really surprised me was the sheer number of people who just wanted to say ‘thanks’. I hadn’t anticipated the love and strength of feeling towards the site and it’s easy to forget when you are sat behind a keyboard, staring at a screen that there and there are thousands of people out there who are enjoying this thing you created, and in many cases making real life connections and friendships through their love of cube. Friendships that may not have happened without Cube Tutor. It was humbling to hear so many stories along those lines and it gave me a renewed sense of energy and urgency to find a way out of this.
There were many other common themes in these messages so I’m going to start out by touching on a few of those. First things first let’s address a bug that I get scores of messages about every week..
I can’t login / the login page redirects somewhere else. Help!
This is a known issue and it is very frustrating that I am unable to fix it because I cannot build and deploy a new version of the code. Thankfully the fix is very simple from your end, just clear your cookies for cubetutor.com and you will be able to log in once more. This problem is down to a quirk in the ‘Remember Me’ cookie and as soon as I’m unable to rebuild and deploy the codebase, it will be the first thing I fix.
Is Cube Tutor dead?
No. Although there are challenges, there is absolutely no reason why the site couldn’t exist as-is for a few years more. I will continue to add new sets, promos and other cards as they are released, as I have from the beginning. The fact is that in order for it to continue to be useful, it needs to be maintained and updated and right now that is a challenge.
Can I buy / have Cube Tutor?
I received many offers along these lines. This is a community that I am extremely proud of, having built it up from scratch and simply passing that honour and responsibility on to someone else is not a decision that I would ever make lightly. If I felt that it was in the best interest of Cube Tutor to pass on the torch to someone else who came to me with a well thought out and considered plan for it’s revival then I would give that serious consideration. At the time of writing this post I have no plans to pass control of Cube Tutor to anyone else but I am by no means ruling this out.
Why don’t you just open source Cube Tutor?
I am not philosophically or commercially opposed to Open Source software, quite the opposite however I don’t see the value in open sourcing the codebase as it stands. Tapestry is interwoven into the fabric of Cube Tutor and trying to remove it would be like trying to surgically remove a human skeleton. It simply isn’t possible. In addition the work required to host, document and open up the codebase makes it a costly exercise that I simply do not think is worthwhile at this stage. This isn’t the end of the open source discussion though.. read on for more.
I’m a developer. How can I help?
It’s no surprise that there are a lot of talented developers in the Magic player base and I had many enthusiastic requests from people wanting to get involved in some way. One of my main challenges when it comes to working out a future for Cube Tutor is time. With another job and a family, the number of hours that I have available is not what it once was. The idea that I could somehow spread the load and give the community more ownership of Cube Tutor and it’s development is an appealing one.
Of course working collaboratively would not be without it’s challenges. For starters you have to make sure that everyone is on the same page when it comes to design principles and coding standards then you have the challenge of being on the other side of the world from people you are working with. You have to deal with the fact that people potentially have competing ideas about the best way to solve a problem and if you’re not careful you end up with a house of cards.
All of that said I think that if we can leverage the combined effort of the community to find a way forward for Cube Tutor then it’s definitely something that I want to explore. I have a plan.
I don’t want to give up working on Cube Tutor. I don’t want to pass on the torch and leave it all behind me for someone else. I want to see Cube Tutor grow into the platform that I have always dreamed it could be, and I need to be able to do that in a way that I can fit into my life.
Before I can work on the future I need to deal with the present and there are two things which require my immediate attention.
Step 1 – Update the Patreon page to reflect reality. Right now I am not working on Cube Tutor 1-2 days a week as my Patreon goals would indicate. The ‘part time’ and ‘full time’ goals will be removed. Cube Tutor still has a hefty monthly bill of running costs I and really appreciate the contribution that the Champion community are able to make, to cover those. Any money above and beyond those costs will either be reinvested into Cube Tutor via development effort or kept by as a ‘rainy day’ fund to cover server costs for a while, beyond Patreon support. The Champion Program will be unaffected and anyone who is still able to offer $5 a month will continue to receive those bonuses. At the time of publishing this article, this step should be complete.
Step 2 – Resuscitate the current application. It’s simply not practical to be unable to make any changes to the codebase. I need to fix that damn login bug! I am working on getting Tapestry upgraded to 5.4 but another option would be to change build servers. If anyone out there is a Tapestry specialist who would like to offer up some help then please do send me an email: email@example.com. In progress!
Step 3 – The Future
So let’s start by quickly reiterating the current situation.
The current web application is built on a dead framework. Right now I’m of the opinion that any significant effort to rework the current codebase is wasted. The framework is dead, running on an antique infrastructure and it was never really built with the requirements of the modern day internet in mind.
I don’t have the resources to rebuild Cube Tutor from scratch on a new framework. I don’t have the luxury of the time that I enjoyed in 2014-15 where I spent every day thrashing out reams and reams of code.
Cube Tutor has an incredibly rich and valuable dataset. 5 years worth of data is a lot! Want to know the card that is most commonly picked after picking Serum Visions? Sure! Where does Llanowar Elves sit in the overall draft ranking? No problem! Which cards are most commonly listed in a cube alongside Umezawa’s Jitte? So much data.
Cube Tutor is blessed with an active and passionate community of developers. Many of whom would love to be involved in Cube Tutor’s development and future success.
The current site is still very useful as-is. This was really highlighted to me in the feedback, however I know there is much to be done to make it as useful as it can be.
With all of that in mind I propose that the next phase of Cube Tutor’s development should be to build a new API.
What is an API?
API stands for Application Programming Interface and it is a set of tools that a developer could use to programmatically interact with an application in order to build their own application on top of the data and functions that are offered. Typically an API exposes a similar set of functions to those available through routes that a regular user would use to interact with the application (a website or app) but in a more formal way that a developer armed with a programming language can parse quickly and easily.
What could this mean for Cube Tutor?
If I could expose the core functionality of Cube Tutor (List Management, Drafting etc) through an API then third party developers could come along and fill in the holes of what is offered by the website. We all know that the experience on mobile isn’t currently ideal but if a talented iOS/Android developer wants to solve that then awesome, come along and use the API! Got a cool idea for some new Analysis charts? Use the API and build them! Want to do something fancy with list comparison? No problem – use the API.
Why is this a neat solution?
Well first and foremost it would allow me to continue to work on Cube Tutor in small incremental chunks by building features into the API one at a time. This API would be a brand new application meaning it could be built to 2018 standards in a way that hopefully won’t suffer from the same pitfalls that the web application has. I’d also be totally up for the idea of open sourcing this platform and taking help from the community to build and maintain it.
Developers could get involved in one of two ways, either by contributing directly to the development of the API platform or by offering to build an application that would use the API and thereby driving some of it’s requirements.
In time, the website itself could be rebuilt to use this new API in a new web technology in the same collaborative way.
Importantly this provides a path forward for Cube Tutor that could truly see it expand and fulfil it’s potential whilst leveraging the vast amount of data in the application, and experience and enthusiasm of it’s community of developers.
I would love to hear your thoughts on this idea and in particular from anyone who would like to get involved as a third party API user. I’d also like to stress that nothing is set in stone yet so if you have another idea or suggestion then please don’t hesitate to get in touch.
As ever, I am available via email: firstname.lastname@example.org
That’s all for now. Happy Cubing!