The Best Business Model for your Software ?

Sometimes, there is a product of yours; a blog post, a code source, a tutorial or even a tweet, that just goes viral. You observe unusual statistics about it; people are reading/downloading/using/quoting/… it much more than what else you produced. The metrics won’t tell much about the why and, the time you understand it and make a plan to profit on it, it’s usually done and useless.

As many, finding a success and exploiting it to be able to live on a personal project seems a sweet idea. And occasional success, when you produce content frequently, is not a rare thing. The trouble is to transform it into something that let you, at least, finance your full-time implication on your personal projects.

My reflexion is an analysis on the opportunities and strategy to force a project successful into a source of revenue

Types of Softwares Productions

First we might need to get a rough idea on how types of projects are doing. The following represent my current understanding of the industry, don’t take it too roughly if I’m mistaken.

  • Open source : highly adopted, they are usually the handy tools few would pay off but everyone is glad to use. The few that have to pay are usually the company for license or support, generating few revenue but of high importance.
  • Expert system : few people know about them, they are targeted to specific domain and usually don’t have an open source counter part. The few clients are usually industries who pay high amount for acquisition
  • Product driven : in a more popular way, there are products who try to reach the larger audience. Therefore, most people have heard of them but the adopters and promoters are also the one paying the most for their products
  • Free software : they generate no revenue by definition but that also helps them to be adopted and promoted more easily; they evolve in different ways and spread more easily. Because, sometimes, ideas are more substantial than what they were applied to

From plotting the conversion and the revenue generated on a plane, I can picture the sort of a relation every software producer has with the public. In the plane of my links, I can picture the domain of scenarii. The worst case being on the bottom left; unknown with no revenue. The best case being commonly spread and generating massive profits on the top-right corner.

But, obviously, those extrems haven’t the same distribution; the first one being the default, ergo the common, case. The second being the unicorns, highly improbable. [none poops a Google or a Facebook in the morning or on purpose]

Spreading Ideas or Making a Living ?

According to the project you have; it’s better to face this question due to your limited resources.
As most of people, I’m alone when I do something and, if it gets too complicated, it’s hard to keep up with updates. Maybe, sometimes, when you really believe in your project it is better to let it be open sourced or free; people will manage to improve it beyond what you can manage to produce alone and great ideas can emerge from new adopters. Also, some licenses can restrict the commercial use, allowing to propose a paying license, support and extra features.
This business case is relevant when your project hits a sufficiently wide-spread audience. Though there also exists donations for the non-paying users to contribute.

Also, having limited resources, you have to study the case of other licenses. If your project benefits from other softwares, they need to be usable in a commercial case. If they are and there is no other option; it means you need to develop every external functionality in your proper implementation. That’s harsh as added work; it increases the cost of starting a paying product. Meaning the product-driven case is exclusive; it requires to have either few dependencies or to re-code them with extra cost for the software.

The different costs on this plane might vary alot. For example, how much is it to start being “heard about” ?
Getting people engaged is hard, so making the information is too. But we have tools, like social networks, to reach quickly the targeted audience. Today, we have an efficient way to slide on the bottom from the left to…. a value depending on which amounts of them you can reach.
Keeping them engage is another difficulty. Which is inherent to the quality of your product and its market place; free or not, it’s the same economic laws.

So we observe there are costs; we cannot be payable right up with no more cost than if we are open source. Though, from our different software scenarii previously seen, case when you can be paid by more people helps reaching a larger audience. From income, you can invest in promoting product; that’s an added value to reach a larger audience. And it works for both commercial use only and all customers payment.


I’m not sure how the plane might look if we had a cost dimension. And what could be a good business model to navigate this weird domain. But my feelings are telling some mixed business model could help navigate it better. Payment enables the feedback loop of adoption, if well used, but it’s also a break in early adopters. But I don’t have much overall clue on how to plot it.

Math, Thoughts

My Learning grows like Math

I don’t think it’s innate, but I discern a pattern through the way I learn stuff in a unkown environment.
This is not a discrete process but more some fuzzy steps adding to a global context. So here’s the way I get the grip on this unknown environment :

  • When I don’t know, I’m just following orders and establishing rules based on induction and questioning
  • When I start figuring out the rules, I’m aiming for the limits implied by the rules and I observe what constrains are behind
  • When the constraints are established, I observe their reasons by the way I could go around them and overpass the limits
  • Finally, figuring out constraints and limits, I established a structure of the topic, I made the first tools to think on this unknown environment; seeding a knowledge I could grow the now-known environment by finding other ways around in different cases

What it seems to me is; the first two steps are hard to acquire. The two last parts can be iterated to populate an environment. When you know the limits, you get generally stuck. But, adding a hypothesis, there might be a work around. The nature of this assumption makes a specific context of your environment.

I like math, and I could picture it the same way it develops, in a sense.
When you end with something impossible. For instance, you haven’t heard about irrational number and you try to measure the diagonal of a one unit square.

You have a ruler of one unit to make the square, but the diagonal is a bit longer than your ruler. So you decide to put a mark after one unit and break the ruler into 10 pieces. Then you put pieces after your mark and you can fit a little more than 4 of them.
So you break a piece into 10 more pieces (it was a really huge ruler. Like skyscraper tall) and put a piece while still having to break another into 10. You figure out it can go for pretty long before you reach something.

Damn that’s not cool ! My goal was to find the way to measure the diagonal but there’s no limit to this breaking system.
As an engineer (yeaaaah! I finally got the title ffs!), I will have tools to make it (my ruler) but that have a given limit of “breakability”. So I assume I’m making an error.

You broke  your ruler 2 times into 10 pieces. If you had done that for every piece, you would have 10^2=100 of them. Also you calculated there is 1 unit and 4 subunits and 1 subsubunit and some subsubsubunits undefined. That gets a value of 141/100 but it’s not quite acurate.
We’ll give a margin to this value, it will account for the part we haven’t measure due to the precision. This part is less than a subsubunit, so we define a 1/100 error margin.

So I could express my diagonal as 1.41 (+/- 0.01) units. That’s cool and accurate enough for an engineer. Things are defined in a context; it’s somehow a local approximation of larger possibilities. I don’t need more accuracy to make it works.

But the mathematician won’t accept the engineer approximation. He doesn’t work in the real world, with its fuzzy noisiness, but in this thought world made of pure ideas where everything is perfectly defined and is also abstraction. Therefore, he won’t be satisfied with this idea and will try to find a logical way to express it.

You seem now desperate to measure the diagonal of a one unit square (you got some silly hobby though). To get a grip on this idea, you decide to make the context evolve by adding some stuff.
If you use this diagonal with others of the same length to make a new square, you observe its diagonal fitting 2 rulers exactly. That is an interesting property. So you decide to define this length as a square root of 2. By showing you can use your unit back and forth on this property, you opened crazy ideas that’ll lead to years of headaches. Now people will extend this “square root of” idea to crazy extreme like making a square root of 3, or even defining the 2 unit square diagonal as two times the square root of 2. But who really has an exact square root of 2 ruler ?

Well, that’s the idea and the generalisation. It can grow on different context while the rule still apply. Even better as there are some surprising square roots like 9 going back to 3 units, but you can navigate this acquired knowledge with this handy tool.
By adding other ideas, like negative numbers, you end up with new limits. The reason being; length are always positive. If you have a negative, it’s not a length but a distance from some point, and a positive direction have to be given. (leading to imaginary numbers and complex numbers allowing rotation in the plane)
That’s really something you can grow in tremendous way to establish a richer context; the spatial geometry, vectors, matrices and so on.


While my point here is reached on the comparison between how to grow math and how I think I approach unknown environment, I just thought of something really interesting !