3 month later, Gmvault 1.7-beta: the initial version I would have liked to build

First if all you are interested in, is to get Gmvault 1.7-beta, click here.

Gmvault: Gmail backup simply,  v1.0 has been released on the 7th of May 2012 on Hackernews and since then, I have been tremendously surprised by its success.Gmvault is a command-line tool built to backup on your disk, your Gmail inbox and restore it as it was, in any Gmail account you wish. It is full of features such as encryption, compression, automatic syncing, GTalk chats backups (and many more), while being very simple to use. It had to be simple because I wanted everybody to be able to use it, not only geeks like me, but also normal users that have a GMail account and wanted to reclaim their emails from Google. Simplicity and usability is not the topic of this post so let's go back to it.

There has been more than 30000 downloads and more the 80000 users coming to www.gmvault.org in total since the 7th of May which is a lot considering that the only advertisement I did was to post it on HackerNews.There have been also many website articles (http://bitly.com/bundles/gaubert/5) and even youtube videos explaining how to use it (http://bit.ly/OWN4Xc) :-)

I am very happy about this adventure and would like to pursue it by developing v2.0 that will come up with a graphical interface in order to be really available for any users in the Gmail users' spectrum: from my Granma to myself. But before to go to v2.0, there is a mandatory stop in v1.7-beta.

v1.7-beta is the fourth version released 3 months after v1.0-beta and it is the first version I am starting to be statisfied with. In between there was v1.5-beta and v1.6-beta:

v1.0-beta was the proof of concept that established the name and demonstrated that there was a need for such tool, but it was not fully ready. The backup-restore engine was already working very well but being an experienced developer I knew I had not hit the performance issues you will always encounter when you launch a new software. I also knew that the deployment and packaging was not ready but I wanted to release it to see if the idea would get a bit of traction (and it did !). I was in the Fuck it ship it mode (http://bit.ly/PQIuFE) when I did it and am very grateful for having done that.

v1.5-beta fixed the major issues of v1.0-beta which were, to not work properly on Linux because of some bash script issues and to not uninstall cleanly on Windows. These were minor issues but that could totally stop users running it, so I had to fix them quickly and I released a new version less that 10 days after. In my hurry, I even messed-up one feature (the encryption could not be activated anymore) as I deactivated some of my tests (so bad).

v1.6-beta started to tackle some performances issues reported by some users. In some cases, the restore operation was eating all the memory of the machine and eventually crashing it. I had to do some profiling in Python which is not the easiest and found that the issue was coming from the socket and ssl python layer. I also worked a lot on the MacOSX deployment as there were some issues with 32 bits machines. It is a bit tricky to make a clean Python OSX app and I will probably write a blog post about it. With that version I was closer to my goal but users had started to request new features that needed to be added and new restore issues started to appear.

So I started to work on v1.7-beta but decided to take my time in building this version as I needed to erase the performance issues. In special cases, the Python process could start to spin-out and consume lots of CPU. Again I did find a bug in the socket layer and had to monkey patch the socket module to fix it. Note that the bug has been reported to the Python developers but it did not make it through all releases yet. It also turns out that GMail IMAP doesn't want to ingest back some of the emails it originally contained and it spits them out in error so I created a quarantine area to stage these emails. Most of the time, these are advertising emails that contain bad characters. I also added new features such as Chats backup. They are now stored like to emails and can be restored in a special label gmvault-chats as we are not allow to write in Chats. GMail IMAP is like its own little world as it is full of specific behaviours that not necessarly follow the IMAP philosophy. It is compliant to IMAP but Gmail engineers had to make some choices like for example on how to map IMAP folders with labels, ... This will also deserve a blog post as I have some questions for the GMail team. I hope that v1.7-beta is in the stable state I would have liked to have from the beginning. Note that v1.0 was not at all desastrous but I could have done a little bit better for a launch.

So what should I do next time I release a new product ?

Lessons Learned

  • Launch early: I said that v1.7-beta was the version I wanted to build but I am really happy to have released v1.0 early even if it needed more work. First the users' reponse told me if I should invest more time in Gmvault and the tool success lifted me and that pushed me to improve it. I also fixed many little issues and imperfection reported by users and could not have found so many of them even with the testing methods I applied. I am also a perfectionnist and have already waited so long that in the end I lost interest in some projects and never released them. Of course you should reach a reasonnable stage for your software (for me it is 90-95% ready), I am not telling you to launch when it is barely working. Also, don't be afraid to launch: if this is useful, you will get some feedback from the users or at the worst, they will ignore it.
  • Focus on the software deployment: You should spend a good chunk of the development time in building the packaging for deploying the software. This is the first part of the software users are going to see so the win installer, linux deb ... should be easy to install, clean and shiny if possible as well as easy to uninstall. You do not want to be intrusive and let users think that you do not want them to uninstall your tool.
  • Spend lots of time building the marketing: If there was one thing I would like to do, it is to focus more on how to sell the product. I have realised that it is not enough to have a product translating a neat idea into a well executed software (execution is still important though), you need to know how to sell it. I have still a lot to learn in that field but now I am convinced that you also need to spend heck a lot of time building your web site. For v2.0 I will spend much more time doing that for sure. Like anybody, I would prefer to solve technical issues that writing english explaining how to use Gmvault and selling its merits (not so easy) but you really really need to do it or find somebody able to do it.
  • Launch in the right community: I advertised Gmvault on Hacker News because I knew it was a popular destination for specialists not afraid about running scripts and CLI tools. Also releasing in this community allows you then to reach a larger group as the HackerNews page is scrutinsed by the more general Tech web sites (PCWorld, Slashdot, ...). It is the centre of the tech web :-) and the HackerNews crowd is a great community of professionals that will not shy away and will tell frankly you what is missing and what is ok regarding your product. 
  • Do not mess up with your test suite and don't be pretentious: To be quick and because I was too pretentious, I deactivated part of my tests and I will not do it again. Because of that in one of my intermediate version I destroyed one of the feature (encrypting stored emails) but luckily it was not used by lots of users yet. With the pressure I neglected the testing and paid for it.

This is it, to enjoy Gmvault v1.7-beta please go there.

Do not hesitate to contact me via Github, Twitter, email, Gmvault-Users forum ... if you want to report a problem or would like to suggest a nice feature.