My name is Mime Čuvalo (the name is from Croatia), and I currently live in California with my wife and 6-month old son. I work at Dropbox these days, having previously worked at YouTube, Google, and on independent projects like FireFTP, FireSSH, and The Rock Hard Times.
The independent business that I've been running for 10 years is FireFTP which is an addon for Firefox. It's a free FTP/SFTP client that opens in a separate tab in your browser. It's had over 25 million downloads, and in its heyday had a million average daily users. (These days it's a lot less since Chrome has become much more popular).
FireFTP has been successful mainly from its ease of use and simple UI design. It's charityware (inspired by Vim's Uganda donations) and gives >50% of donations to charity. It's made $160k over the 10 year period and the financial stats are openly available here at the bottom of the page.
I developed FireFTP back when Firefox was still known as Firebird or Phoenix, rising from the ashes of Netscape Navigator. It was the summer of 2004, and I was on my summer vacation right after graduating college with my fancy new computer science degree. It wasn't actually so fancy — I graduated from Ball State, which had a pretty terrible program, and I had to teach myself most things. You can see this by the initial commit of FireFTP — it was terrible. 😃
Anyway, I was bored and was super stoked to see the Firefox project rising. The groundswell of support was intoxicating back then in November 2004 when Firefox was finally released. It felt amazing to be part of the movement and to contribute to it. I had grown up reading HTML specs for my summer vacation and felt a part of something bigger than myself.
In September, a couple months later I released my work on Mozdev.org and posted an article to Slashdot (that's Hacker News 1.0 for you new geeks out there) and got a lot of traffic and interest that way. I'm amazed that people kept using it, because it was really, really buggy in the beginning. But the idea stuck, and I've been working on it.
It was pretty painful trying to develop it, because I was living in Zagreb at the time and was paying for the internet by the minute! Trying to download a Linux ISO to test on Linux cost me a bunch of cash, and there weren't really great download managers back then, so if it failed halfway through you were screwed.
Other challenges included an almost complete lack of documentation of Mozilla's platform — it was pretty tough. Plus, it's written in Javascript, which wasn't at all respected back then so it didn't have a lot of great tools, esp. to debug within the addon scope. The other main challenge was trying to make the app stable since uploading tended to cause the app to crash randomly. (See bad documentation note above — somebody eventually gave me a magic one-line fix which I would never have found on my own.)
The other challenge was trying to support SFTP. Initially I packaged PuTTy with FireFTP and did IPC to talk to that process — it was very hacky but it worked. It took a while before I decided to just rewrite the SSH protocol into Javascript that natively does SSH in the browser. That's the ParamikoJS project, which is a port of Paramiko. I built FireSSH as a "side project" to that as well, just 'cause. 😛
I had ample time to work on it because it was my summer vacation. In addition, I had moved to Zagreb to get my masters degree. However, at the very last minute they decided my American bachelor's degree wasn't worth anything, and I got denied a week before school started. At the time I was really pissed at my school (FER in Zagreb), but it was really the best thing that could have happened to me, because then I just continued doing my independent work.
Rent in Zagreb was pretty cheap, so I just lived off my savings of working in libraries and computer labs during school. Because of my FireFTP work, it got me the visibility to get higher profile jobs like at YouTube. It was released completely free, and I didn't start asking for donations until a year later or so. After a while, I had to go back to doing a salaried job.
Posting to Slashdot drew the initial traffic. After that, I've been continuously featured for 10 years on Mozilla's featured page — that's the majority of traffic I believe. There were no other marketing efforts besides that initial Slashdot post.
FireFTP is charityware or "careware". It's free as in beer and free as in speech (open-source). When you first install the app a separate tab opens asking to give a donation. 50% of donations go to charity, and the rest went to paying my rent.
When I started asking for donations I was living in Portland, Oregon and my rent was $350/month since I was living with roommates (ahh, those were the days). The initial year brought in $14k and the following brought in $26k (after taxes and Paypal fees). Half of that went to me (so $7k and $13k respectively), so I could pay my rent that way.
I was inspired by my editor Vim which asks for donations that go to Uganda. And I was inspired by my parents who taught me to do right in the world, wherever I go. My family and I took care of orphaned kids from Sarajevo during our summers, so the donations went to that orphanage for many years. I used to send the kids gifts every week from the states — they were the best and were part of my motivation for working on FireFTP for as long as I have.
Here's the raw donation data:
Year |
Donations (after taxes and PayPal fees) |
to Charity (2005-2010 went to orphanages in Sarajevo and Vukovar) |
to Self |
---|---|---|---|
2004 (no donations taken this year) | $0 | $0 | $0 |
2005 (before having a post-install screen asking for donations) | $1,000 | $1,000 | $0 |
2006 | $14,280 | $7,350 | $6,930 |
2007 | $26,835 | $13,700 | $13,135 |
2008 | $25,043 | $13,000 | $12,043 |
2009 | $20,341 | $13,000 | $7,341 |
2010 | $21,610 | $13,000 | $8,610 |
2011 | $18,361 | $14,015 ($10,825 for Sarajevo + $3,070 for LGBT/Domestic violence) | $4,346 |
2012 | $14,764 | $10,000 to LGBT rights, $3,000 to women's shelters | $1,764 |
2013 | $9,673 | $5,000 to Domestic violence support | $4,673 |
2014 | $6,570 | $1,300 to Domestic violence support / $2,200 to Plant Trees | $3,070 |
2015 | $3,501 | $3,501 to Different Spokes | $0 |
after 10 years of work | $161,978 | =$100,066 | +$61,912 |
There are no expenses, just my time, which is super limited these days with my full-time job and child. It's hard to work on these projects anymore.
The biggest challenge to revenue these days is Chrome, honestly. I can't port FireFTP to Chrome, which I would gladly due if Chrome could support it. But Chrome doesn't believe in the local file system (just the cloud), so it'll never work on that addon platform. Plus, they're shutting down the app system in general, so FireSSH will have to be Firefox-only soon as well.
I would love for it to work on Chrome one beautiful day. Not too many other goals currently, because I'm time-strapped. Some better SSH performance would be awesome — I'd love to be able to use typed arrays for speed, but they've proven to be slower thus far ¯\_(ツ)_/¯
I definitely would love for the projects to support me financially, but raising a family in the Bay Area is pretty expensive and I'm not sure these projects would generate more revenue than they currently do.
Other goals would be to independent again but with a different project. I'm interested in getting back to my roots in ecology, combatting climate change. That's probably my next project. Other stuff I've messed around with is the Federated Social Web (an answer to Facebook's centralized, controlled social network) — I would love to continue working on that as well, but it seems that's been difficult in gaining traction.
I probably would've invested more trying to figure out a viable business model — maybe pro and free like Transmit?
The other thing would be community. 99.5% of the code is still written by me, and it hasn't really lived up to the open-source ideal of "build it and they will come". This is probably my failing, but the fact that there's no one else helping is part of the reason why it's hard to sustain the project.
Having a simple UI was the best decision for FireFTP. It's meant to be a much simpler alternative to Filezilla and to other products out there. I wanted something that was dead simple and didn't overwhelm me with a 100 buttons that I didn't need. (You can see simplicity in my current work which is Dropbox Paper.)
The other thing that helped, honestly, was being featured by Mozilla for so long. That drove a lot of attention to it. It's a positive feedback loop — I built a good product, it was featured, which encouraged me to make it better, and so it stayed featured.
Definitely give it a go if you have time and the financial means.
Check out The Power of Taking Time Off which says (if you can) take every 7 years off and re-learn your craft. Re-learn why you fell in love with it in the first place. Work on some projects of your own. FireFTP was built in 2004 and then I built FireSSH 7 years later in my 2nd gap year.
I think this free time was tremendously instrumental in making me a better programmer since I had the freedom and time to mess around. But also tremendously instrumental was working with others and learning from them, so I would warn that going "full indie" might be a dangerous prospect since you would be working in a vacuum and maybe not growing as much as you could be.
See how you can take your code and give it principles. Are you in it for the money? Or are you in it to make the world a better place? Why not try to combine the two if possible? (You won't do much good for the world if you can't put bread on your table.) Working for Firefox was inherently principled mission — we wanted to spread open-source and defeat Microsoft's stranglehold on the Internet. Start with why you want to do something, and the "what" and "how" will follow.
Not sure if this is the truth or a folktale but the story goes like this.
When Instagram came out it was not the only photo app with filters and photo sharing. The guys at Instagram wondered which apps get a lot of traffic and survive and how they do it. They noticed that the apps that get featured on the App Store always get a lot of traffic. So they it their goal to try and get featured.
How do apps get featured? It's probably someone who works at Apple, like an editor, who picks some apps that they like. They decided to hunt down that person. They found someone who was friends with them, asked them out to lunch and this way got Instagram to be featured on the App Store.
Loved the interview and love the product.
I've been using Fire FTP for more than 2 years now. I chose it over filezilla because filezilla started to crash frequently on my new laptop.
I haven't tested fireSSH, but fireFTP is a GREAT tool, thank you Mime. I have recommend it many times in the past.
Also good to know half of the donations are going to charity, didn't know that.