My first successful open source project was pgcli. It was launched more than
two years ago. It was very well-received at that time. It topped the charts on
Github, HackerNews and Reddit.
I received a few requests via twitter to add support for mysql database in
pgcli. Somehow this didn't seem right because I knew that pgcli wasn't quite up
to par with psql and I wasn't going to distract my focus by adding mysql
support to pgcli. So I kept postponing. Slowly a few core devs joined the pgcli
team and they were able to share a portion of development effort.
I started to think about mysql support. I wanted to keep it separate from pgcli
because I didn't think a unified db client would do justice to either of the
databases. I was also interested in learning how to do marketing for an
OpenSource project. So I decided that it might be fun to crowd-fund the
development of this new tool.
I picked Kickstarter because it was the most popular crowd-funding site. I
chose an arbitrary goal of $3000. The preparation to launch the kickstarter was
a lot of work.
Preparation:
I knew I needed a video for the kickstarter campaign. I was too camera shy to
put my face on the video so I chose to do a screencast instead. I learned how
to use Camtasia and chose to use their 30 day trial to record a screencast. I'm
a big fan of VimCasts, so I emailed Drew Neil (creator of VimCasts) and asked
for some tips. He gave me useful pointers and I realized that I could record
the screen and voice separately and then splice them together. This saved me so
much anxiety because I realized I can't narrate while I'm typing. After about a
week of multiple recordings and editing I had the final version which was
slightly under 2 mins. As I said, lot of work.
Launch:
I decided to call this new tool mysql-cli. I bought the domain name and
redirected it to the kickstarter campaign. Writing copy for the kickstarter
campaign took another couple of days. After receiving some feedback from
friends it was ready for launch. I wrote a blog post about the kickstarter
campaign on the pgcli blog. Tweeted out the announcement and posted it to
Facebook.
During the first day of launch the campaign received more than $300. I was
thrilled by the fact that we reached 10% of the goal in just one day. Second
day was a bit slower but I figured it was just an off day. It kept getting
worse. I posted on Reddit and HackerNews but it went nowhere. I was very
confused. By the second week there were no pledges and the campaign was
hovering around $800. So I was going through a bit of emotional turmoil.
I had planned the kickstarter to coincide with PyCon. I gave a lightning talk
at PyCon about pgcli and plugged for the kickstarter. Zilch! No takers. People
were impressed by pgcli but no pledges for mycli. While at PyCon I was
approached by an Oracle employee who reminded me that the name "mysql" is
trademarked and I can't call my tool mysql-cli. I was frustrated but I didn't
want Oracle coming after my $900, so I decided to call the campaign "CLI for
MySql and MariaDB".
During the flight from Montreal (Pycon) to Portland (home), I managed to get
the first implementation of the tool working. It was fairly straight-forward
since I had already done it once for pgcli. So now I had a mostly working clone
of pgcli. I reached out to the local MySQL group in Portland and showed the
half-working version. This was a successful presentation that earned another
$100 towards to the campaign.
By the third week I was desperate, I tried advertising via google adwords and
twitters ads. I spent about $50 total, no conversions. By now I started sending
cold emails to companies that use MySQL. I sent an email to Youtube, Dropbox,
Percona etc. No replies. Then I googled for mysql consultants and found a few
OpenSource leaning consultants. When I emailed them, I received a few
'no' replies but then one person responded with a 'yes'. The campaign was
hovering around $1500 by now. This company offered to put forth $1500 which
would put me over the goal. I was ecstatic. This was TBS (Tech Blue Software)
Inc. They hadn't pledged yet since they were working out the details
internally.
I decided to push hard on the last week of the campaign, just in case they fell
through. When I posted on Google+ MySql community it took off. I received a lot
of pledged from there. Then someone posted it on Reddit and a lot of pgcli
users started pledging because they wanted to support pgcli and didn't know how
else to give money. I was humbled by the support. Three days before the end of
the campaign a ton of coworkers and friends from NewRelic started pledging and
they pushed the campaign over the goal.
On the final day TBS pledge ($1500) came through and it put us well over the
goal. So in the end the campaign looked like it was a grand success. But
marketing for the campaign was constant work. I was glad it was over because
now I can go back to doing what I know well, coding.
I created a github org and invited all the backers. I gave them all access to
the early preview. I started delivering on my promises ahead of schedule and it
was mostly well-received. Since the launch I've received two donations via
paypal. One for $15 and another for $25. I've donated both contributions to
charities since I am gainfully employed and making a good salary.
Conclusion:
Later I found out that the first week and the last week of Kickstarter
campaigns are the most active periods. So what I experienced was not out of
ordinary but it was still an emotional roller-coaster. It was a great
experience and I learned some valuable lessons in marketing. I wouldn't
recommend it as a way to fund ongoing development costs of a project.
ps: The name mycli was recommended by an early backer. I don't remember the
name of the backer but I decided to use that name for my final launch.