Commit 2690cc3c authored by James Fenn's avatar James Fenn
Browse files

fix redirect url issues

parent 9bd1a474
layout: layouts/blog
title: Pricing Models
date: "2018-09-17"
description: "TL;DR - Don't work for free."
project: "fennifith/Status"
tags: blog
I can remember the first time that I started working on Status. It was summer break in 2016, and I was at a relative's house in the UK. I came across [Material Status Bar](, but couldn't quite get it to do what I wanted on my device. I tried messaging the developer, and while they are very nice, they were a little busy when I first asked for help and didn't get back to me. After doing a little research on how MSB did its thing, I decided to try messing around with making another version myself. Thus, on July 5, 2016, Status was born.
At this time, it had only a little over a year since I had first started writing Android apps. Being completely self-taught (I learnt both Android and Java by copy-pasting stackoverflow answers and staring at error messages), I did not see myself as an "actual developer", and was set on making all of my projects "completely free", with no extra purchases, annoying ads, or iffy privacy policies allowing products to sell your phone's contacts to advertising companies. Whether this mindset was correct or not, Status grew in popularity fairly quickly after [Gadget Hacks]( wrote an article about it in November, not long after it was first released, and I didn't have time to think this through. Before I knew it, I had tens of thousands of users requesting features, filing bugs, and sending me emails, expecting me to fix all of their issues simply because I was the developer of the app. I wrote the app, so it is my sacred duty to maintain and upgrade it, making sure my users are happy regardless of whether it brings me a profit.
This brings me to a bit of a sore spot about the Google Play Store. I can't really pin the blame on Google, app developers, or users, but at some point someone came up with the idea that applications were always better if they were free. It's fairly simple when you think about it - if two companies have competing apps, all they have to do to compete with each other is lower the price. If they start to lose money because of this, or if they start lacking new users, they can implement in-app advertising to get more consistent and reliable revenue. Because of this, it soon became the standard for nearly every app to be free to download, with only advertisements to support the developers. Users soon became used to this, and took the free apps for granted, finding popup ads to only be a minor annoyance compared to the thought of having to pay a single US dollar to use a piece of software. Of course, if you give a cookie a mouse, it wants chocolate chips, so people soon complained about advertisements everywhere, and any type of monetization became evil. This was what I was used to when I started Android development, and is why up until now I have been fairly docile with monetizing my apps, not including advertisements or restricting features for a "pro" version, and only implementing the occasional in-app purchase strictly for donations.
However, there is something that I didn't realize when I did this. The average user doesn't know a single thing about the people developing an app, let alone the amount of work they have done or what they get for it. Whether it is a matter of not knowing or not caring I do not know, but I think the amount of messages that I have gotten to do someone's work for them and implement their ridiculous or impossible feature for free (with a customary threat to lower the app's rating) speaks for itself. The average user doesn't care about what the developer has to do or how much time it takes them, only that the feature they want is implemented. They don't seem to understand that a rating is simply a symbol, only that it motivates companies to improve their product, so surely it must motivate this one too. Well, I'm going to say it: I don't care about my apps ratings. They are a status indicator if anything. The amount of emphasis placed upon them by the Play Store has made users feel entitled, like they are the only thing between my app and new users. This may be how the store's ranking algorithms work, but (at least for indie developers) I don't think it should be. I develop software, I don't do customer support. If I publish my work for free without making a dime, nobody has a right to criticize it, let alone give it a 1-star review titled "Pig bastard application".
Another problem here, or perhaps one of the causes, is that there is no real connection between the user and the developer. At first glance, there is no way of knowing if there is a real person behind a product or if all reviews are sent to an office building 3000 miles away from the actual developers. I have literally come across users that post the most ridiculous and offensive review possible without even encountering a problem with the application, as a "joke" to see if the developers actually read their reviews. Source: [this happened]( (their comments in the post are deleted, but you can infer their content from the replies).
Rants and controversies aside, this brings me to the topic that this post is actually supposed to be about. Status's pricing plan, previously "Free with Donations", is going to change to "I Don't Care About Users Anymore". Okay, that's a little extreme; it won't be anything drastic. I still care about my users (err... the nice ones at least) and I don't want to make the app completely unusable. I won't be implementing ads, and I'm not going to sell anyone's personal information, but I will be creating a set of "pro features" that users must pay for in order to use. As more features are accumulated, they will be sorted into separate groups which users can publish individually, giving me the advantage of multiple purchases per user, and letting users pick and choose which set of features they want to buy. As new updates are released, I can create new purchases for (some of) their features, effectively giving me a way to charge users for updates without actually preventing them from updating the app or forcing them to pay for bug fixes and the like. I was led to this idea by a somewhat interesting discussion that occurred [here](, and seeing Sam Ruston's reasons for [unpublishing Weather Timeline]( confirmed it. Since [it broke on Android Oreo](, Status's remaining users have been dwindling, and I feel like I need to take advantage of it while I still can if I am going to do this.
As an indie developer, it may be possible to satisfy other developers by publishing some of your work for free in the form of reusable libraries, but average users without programming experience don't seem to understand the concept of a free app or the work behind it, let alone open source software. Publishing a project for free and asking for donations won't get you any pity; from what I have seen, you will get just as many feature requests, and just as many people *telling* you to implement them. There is no point in rewarding your users for nothing, and donations can only get you so far.
In order to support my reasoning, I will now provide a set of statistics including how many users Status has, how many have donated, and exactly how much I have made from it.
- **Total Downloads**: Google Play removed the statistic, so idk. Used to be somewhere around 1.5M.
- **Active Downloads**: 31K. I know, brilliant retention (about 2% of total downloads). The crash rate isn't bad, so there doesn't seem to be anything I can really do about this. It seems like there is a user leaving for Oreo every day, which I am sure isn't helping.
- **Rating/Raters**: 4.18 out of 5, with 13.9K leaving a rating (so, about 1/3 of the people that actually use the app).
- **Donations**: 54
- **Revenue**: $147.43
- **The Total Cost Of The ThinkPad T520 I Got Last Year**: around $300
......@@ -26,7 +26,7 @@ eleventyExcludeFromCollections: true
if (links[args.t]) {
var url = links[args.t].url + (args.d != null ? "/" + args.d : "");
var url = links[args.t] + "/" + decodeURIComponent(args.d || "").replace('${}', 'fennifith');
document.getElementById("container").innerHTML = "Redirecting to... <a href=\"" + url + "\">" + url + "</a>"
window.location = url;
} else location.href="/404.html";
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment