Monday, September 28, 2015


Our last update to this blog was almost 3 years and 9 months ago, which is not really the communication pattern I want to be following. So I’m here to end that silence, discuss what we’ve been doing, why it wasn’t working, and how we’re changing course to make things work.

What We’ve Been Doing

Almost 4 years ago, we announced our plans to get a new version of 2cloud, codenamed Bessie, released. This would be our first release that was no longer running on Google’s App Engine platform, and our first release that required users to pay to use the software. Those two distinctions were not arriving together through a happy accident; too many of our problems at the time were caused by factors outside our control. The APIs we relied upon were not being actively developed, according to some friends. The new, emerging technologies meant for our use cases weren’t supported. And our entire product lived in someone else’s ecosystem, which left us feeling a little powerless.

The trade-off is, all that loss of control brought us a lot of lost responsibility, as well. We didn’t need to worry about a vast number of things, including: data backups, logging, monitoring, keeping the service online, and a million other little details that need attending to to keep a highly-utilised service online. Google paid some very smart people to take care of all of that for us, and we got the benefits.

Since moving off App Engine, we’ve looked at several hosting providers, several databases, and several “in house” platforms, which were more strategies and implementations around deploying the service. We’ve written a few implementations of the server component, of the Android app, of the Chrome extension.

In short, we’ve tried a bunch of things. And the bad news is, this stuff takes a lot of time and effort to try. The good news is, we’ve finally arrived at a solution we feel confident in. We’re using another Google technology that mimics a lot of the behaviours and ideas that we took advantage of in App Engine. The difference is, this time it’s open source and can be run on a wide range of hosting providers, so we’re not as helpless. We’re building using the same programming language we started Bessie with, but we’re using a different database and following some better industry practices. We have paths available to us in the event we need to scale up, and we’ve thought through some of the probable worst-case-scenarios we could face, and have made some informed decisions about how to handle them ahead of time.

In the process, it has become clearer and clearer that we were going to need to insert a clean break from our user experience. We wouldn’t just be able to issue an update and have users not notice we changed things; we’re going to need users to sign up for new accounts, and old data may or may not be migrated with it. Since we need to make that break anyways, which usually signals a huge drop in user retention, we figured it was time to make all the changes we had been contemplating for some time. Like branding. So we renamed the project to Ducky, developed a new icon, and got some branding in place we felt comfortable supporting in the long term.

Why It Wasn’t Working

This has been an incredibly informative exercise, and we’ve grown a lot in our attitude towards building systems, and we feel much more confident that we’ll be reasonably capable of keeping your data safe and the service online. But this direction has involved building a lot of the pieces that Google previously provided for us. Things like how you log in, with all the headaches that brings. We’ve also introduced new measures, like the ability for administrators to email users so we can properly communicate problems and changes in the future. And building and testing software like this takes time, and we’re really just one person working in the spare hours he can find.

Surprisingly, it is hard to recommend “trial and error until you’re all out of error” while building a product people have been waiting for. At the time of this posting, Google Play is reporting we haven’t updated in just over 2 years. In reality, we’re probably closer to that 4 year figure updated above.

That does not exactly inspire confidence in the product, nor does it bely love and support for it. Further, there are a small mountain of Android system improvements that have passed us by, as well as user experience tweaks we’d like to make and improvements that we know users want. We do not want to abandon this project, or let it stagnate, and yet we have. For years.

Further, we’re at an even worse point in terms of our funding. With user contributions essentially dried up as the software looks more and more abandoned, and with our guilt for the abandoned appearance for the software making us reluctant to solicit funding, we’ve more or less just assumed the server costs. On the plus side, as more users jumped ship for some better-maintained software, our server costs went down. Though that’s searching kind of hard for a silver lining. On the negative side, this puts us further from our goal of making this project sustainable. Fortunately, a lot of the time we’ve spent over the last few years has been in researching, talking about, and weighing some revenue models, and while we’re not ready to say we’ve decided for forever what we’re doing, we at least know what we’re going to try, and have thoughts on how to adjust it down the road.

How We’re Changing Course

If you’ve made it this far, thanks for bearing with me. Clearly, what we’re doing (a ground-up rewrite with no deadline or schedule) isn’t working. And when you say it like that, it’s hard to be surprised at that result.

So we’re changing things up. Google has announced that the way we log users in will no longer be supported after November, 2015. As it is essentially October, I do not feel confident that we will have a release-ready product by then. So you can look forward to an iteration on how you log into 2cloud by mid-November. The new system will be easier to use, will integrate better with your phone and with Chrome, and should solve a lot of the bugs that currently exist with logging users in. Unfortunately, this change will require you to log back into your account, and there’s no real way for us to avoid that. Fortunately, we have some options we’ll be trying to utilise to minimize the impact of this on you. And the good news is, this will address a large majority of the support requests we get.

Furthermore, we’re setting a hard deadline on the abandoned state of the publicly-usable parts of the project. If we do not have at least some level of deployment for Ducky by January 1st, 2016, we’ll be refocusing our energies on maintaining the currently-released version and upgrading it with new features and improvements. We’ll then reexamine our plans for Ducky and come up with a plan that will allow us to release something in a shorter timeframe. Whether that means developing it while also maintaining 2cloud responsibly or abandoning the sweeping rewrite in favour of multiple smaller rewrites to allow us to move forward remains to be seen. But stopping all maintenance and development of 2cloud has a hard deadline of January 1.