Friday, August 5, 2011

About the Quota

Seeing as we just started rolling out 2.1, I thought I'd take a moment and try to expound a bit on our quota system, our thoughts about administering it, and the plans we have in regards to it.

Anyone who is not new to this project knows we've been fighting with monetisation since the very beginning. We haven't found a way to make the project sustain itself yet, and so far we've just been burning holes in the pockets of our developers and our community members, trying to keep this service online. When you think about it, it's a bit silly. We have over 12,000 active installs, according to the Android Market. That number's a bit low based on our metrics (doesn't cover custom builds, people using non-Market apks, etc.), but we'll use it as a minimum number we can rely on for accuracy.

We have 12,000 users with the app installed. The server costs $31/month, give or take, to maintain. This app should be sustainable if even one half of a percent of our users donated one dollar a day (keeping in mind that Google takes a cut). Put another way, if every user donated a dollar once every 23 years (again, keeping in mind we get seventy cents of that dollar), the app would pay for itself.

We've tried a couple things. The donations model seemed promising, but there wasn't enough of a steady flow of cash to keep things paid for. We tried ads, but... well, that was a bad idea. Our app wants to get out of your way and not be noticed. Hard to implement display monetisation on something that tries not to display. Our efforts were... well, failures. Since the launch of our ads, we've made four whole dollars. Actually, we've made nothing; we don't get a payout until we make fifty dollars. Which seems unlikely to happen, so we literally got nothing from ads.

Tino (our project manager) and I sat down to think a bit on this and how to make it work. The first important breakthrough we had was that users didn't realise this costs money to run. A lot of you read this blog, subscribe to the mailing list, and follow us on Twitter. And really, thanks for that. We appreciate it, and hope you enjoy hearing from us as much as we enjoy hearing from you. But you're a tiny percentage. Probably less than a percent. Being overly generous and assuming there are no duplicates, we have almost 330 followers on Twitter. Out of over 12,000. So 97% of our users never see our money struggles. Not good.

The second realisation we had was that it's not easy to give us money. Yes, you can run across a donation link. If you use PayPal, that's fairly simple. But if you don't use PayPal or don't run across the link, the barrier is too high. You can buy the donation version from the Market, but you can only buy that once. And if you don't have the Market/can't buy apps on the Market in your country/want to donate more, you're out of luck.

The third realisation we had was that we can't keep this up forever. I'm too busy with classes, my jobs, and iterating on 2cloud to devote myself to writing entirely new software for Second Bit, software that will bring in money to support this. So we're a company whose only product is burning through money like it's that Yule log you see on TV. That leads to bankruptcy and/or server shutdowns pretty quickly. Neither of which is really what we want.

The fourth realisation was that downtime sucks, but some types of downtime suck less than others. For example, if we can fail gracefully and explain that the server is down, that's better than the app just... not working. If we can explain why the server is down, so much the better. And if we can offer a way to keep the app working anyways, then that's probably the best situation we can hope for.

So we came up with a quota. Normally, I hate quota systems, but I am actually pretty excited about this one. I'll get to why in a moment. First, let me explain how it works. One particular piece of our app is the expensive part: the connection between the server and Chrome. As long as Chrome is open, we need to keep that connection alive; that takes some CPU power, and CPU can get pricey. So what we're doing is keeping track of how many of those connections we make. Based on that, we can calculate our CPU usage. Based on that, we can create a "soft quota" to limit how much CPU we use in a day to be something we can reasonably support for a little while with our current funds. That quota is variable; we have an interface to set it based on our available cash on hand and the statistics we have on how many connections/day we're averaging. Our goal is to keep the number of times we exceed that quota a month to one or two, but still be able to pay for everything.

When the quota is exceeded, your links won't open. At all. But we will still store them for you, and open them when the quota resets the next day. Because it's our own imposed quota, we can do that. If that gets too CPU intensive, we may have to turn that off—but rest assured, we'll let you guys know when we're reaching that stage.

This is the cool part, though: you can pay to get around the quota. When you try to send a link and the server is over quota, you'll get a popup explaining that the server is over quota and offering a way to pay. By paying roughly $1 (depending on your country; it's calibrated to be the lowest round number the Market will accept), you gain immunity to the quota. For now, we're saying you get the rest of the day immune. In the future, we may toy with that; you may be able to buy, say, immunity for the next three times we're over quota, as opposed to immunity for a certain amount of time. You may get an entire week for your $1. We're still figuring out that part of this, and hope you'll bear with us and offer feedback. What your immunity buys you is pretty simple: as long as you're immune, you get to use the app, regardless of its quota.

This brings me to our fifth and final realisation, and the reason I'm pretty excited about this quota, instead of dragging my feet. Ready for this? You are not our enemies. We are not here to work against you. You are not trying to take things from us. You don't want us to go bankrupt or shut down the server any more than we want those things. And we know that. And we respect that; we respect our relationship with you. We've worked hard and made a lot of tough decisions about this system to ensure that it would never harm someone by accident. Our payment verification system is less secure than we'd like because we'd rather have ten people slip around the quota than one person get denied on accident, or have the user base jump through hoops. In the end, it's pretty easy to cheat our quota system; the caveat is, we'll know. We just need to manually catch cheaters, which is more desirable than automatically catching cheaters and accidentally catching a couple honest users. We're extending our trust to you guys in the spirit of cooperation; please don't abuse it.

We're also going to be doing a few things to try and mitigate the impact this will have on our users' lives. Our friend Eva has helped out quite a bit on this end. At her suggestion, we'll be randomly choosing one active user a month to be exempt from quotas that month. We're going to take it a step further though; we want to reward people who are consistently paying to get around the quotas. So we're also going to select one user a month who paid to escape the quotas in the previous month (e.g., for October, we'll choose someone who paid in September) and we'll give them immunity for the month. Finally, I'm working on a way to make the cost of immunity go down the more you buy it. Think of it as the bagel card; buy ten, get one free. It's possible that, in future versions, every fourth quota exemption you buy will last a week, and every tenth quota exemption you buy will last a month.

As you can tell, we're trying pretty hard to come up with ways to reward you guys for paying. We're not trying to separate you from your hard-earned money by deception, coercion, or trickery. We just want to keep the server online, possibly recoup some of the cash we've invested in this project over the last year, and maybe even make a modest profit on our hard work. But we want to do it the right way, and we want to do it honestly. We don't want your money unless we've earned it and you're willing to give it to us.

I know there has been a lot of money talk on this blog. You've all been amazing about accepting it on faith. For those of you interested or who doubt the financial claims we've been making, I'm going to release the financial records from the start of the project. All project-related expenditures and project-related income is reported here. I can't promise one of these reports frequently (they take some time to put together, and we'd rather be working on software than compiling financial reports), I'll make a public announcement next time I update it, and will do my best to make it some reasonable frequency, but I can't promise anything.

Thanks for all your support in the last year. If you have questions, comments, concerns, ideas, or cool ways we could reward loyal users, we'd love to hear them!


  1. Would it be possible for the next version to have some sort of link management ability? I know I've had a few links that keep coming back and I'm sure it would be good for your servers if they were removed.

    Also, I think quotas are an okay idea, but I think you should consider setting up the ability to buy exemptions in bulk. I know debiting my credit card $1 everytime might make my bank unhappy.

  2. If you get in touch with us on, we can take care of those persistent links. We're looking to build a link history into the app for the next version-- we'll add "mark as read" as a feature of that that needs to be implemented. :)

    As for the exemptions-in-bulk idea, it's definitely something we're considering. We're trying to cautiously roll this out little by little and with extreme care. We're not sure what the system will look like in the end, but we want it to be based on the needs of our users, not some misconception or idea we had.

    The reason exemptions aren't available in bulk today is because if you bought the next month of exemption (for example), you'd be out of luck if the quota only went down twice in those thirty one days. You would have paid far more than you needed to. We're looking into a "token" system, where you can buy immunity tokens and then trade them for immunity when the quota goes down, but we didn't have them ready for this release.

    As for banks taking issue, I don't think the quota will be going down that often. To your bank, it will look like you bought a couple $1 apps a month-- shouldn't upset them too much. If it does, we'll have to change the system up a bit.

    Thanks for your feedback!

  3. How about having a paid version without quotas? I don't mind paying, I just don't want to have to think about it.

  4. I don't use your app, but do you tell users why your app isn't working when it's currently not working? If not, do it, link to your donation version / paypal and see if it helps.

  5. Seth: We're definitely interested in doing that. I'm hoping to patch the system shortly with a way to buy "tokens", which will allow you to buy quota exemptions ahead of time. Every time we're over quota, rather than getting a popup, the server will just automatically deduct a token and give you exemption for a day. Will that fit your needs?

    Tom: We didn't, up until now. This is kind of our attempt at that.