According to the book “Producing Open Source Software: How to Run a Successful Free Software Project, 2006” an open source project contains of a mailing list, a bug tracker and a version control system. Let us describe an example:
A version control system and a bugtracker can be realized with github. It is only one click away. A mailing list can be created with other tools, or in the simple case a Facebook group is well suited. Now the fictional project has everything what is needed. But something is missing: right, the project is not attractive to anybody. After a month, we as the admin are the only guy who is contributing to the github repository, and apart from us nobody else is posting to the Facebook group. It is not wrong to use these tools, but it seems that something is missing.
Successful Open Source projects like the Linux kernel or the Lyx software for writing scientific papers contains usually of the above cited tools. There is a mailing list, a bugtracker and a version control system. But why have these projects traffic but our example project not? The answer is given in the following diagram:
Additional to the technical infrastructure, the figure has a social component which is called customer. The relationship is now divided. The customer is the outside world, while the group is locked in the project. The relationship between the customer and the open source projects defines in which direction the project will go. In our fictional project with a github repository and a facebook group no customer is there. That means, there is no need for traffic. In the case of the Linux kernel there is a customer, called Red Hat. The relationship between customer and project members is defined by money. Here the details: A company like IBM needs a certain feature in the Linux kernel. They are asking Red Hat for doing so. Red Hat collects there feature-request and prioritize them according to what the customer want to pay. IBM says for example, that the new scheduler is fair paid with 10000 US$. This money is the motivation for the Linux kernel team to have a detailed look into the need of IBM. They will analyze the problem, discuss the issues at the mailing list and write a patch to fix the problem. After the modifications runs, IBM pays the money and the transaction is complete. Understanding Open Source projects is possible with understanding the customer relationship and the amount of money which is transferred.
Let us make a different example. Somebody needs a 100 page long academic paper about a topic. This is without any doubt a project which can be done with group work. The naive approach is, if the students starts a github project, and initiate a mailing list. He believes, that his project is so important for the world, that other people will fork his github project with the LaTeX source and discuss the issue on the mailing. This will never happen. After 2 months, the student will alone on his github project, the group work isn’t there.
Now we modify the situation a bit and focus on a customer-relationship. This time, the student goes to a ghostwriter, pays 1000 US$ and after 2 months he gets the paper. It was written by a group, and this group is using github together with a mailing list. What is different, is that a social aspect is there and that some money was transferred.
It seems, that customer relationship and money are going hand in hand. But perhaps we can modify the chain a bit, but maintaining group working at the same time? The Stackoverflow website has an interesting reputation system, called “featured questions”, https://stackoverflow.com/?tab=featured The idea is the somebody sets a bounty (for example 400 points of his score) and after the question gets answered this score is transfered to other party. The result is amazing: Featured questions gets more attention than normal one. A bounty of 400 points is not so valuable like real money but it comes close to the idea. The reputation system abstracts from a concret problem. It is no longer interesting if somebody has a bug with “react-native” or “Json” instead it is about an issue which is connected to a bounty of 400 points, 200 points or whatever.
What I want to make clear, that groupworking needs a customer from the outside. That is the purpose of forming groups, and that is the motivation why the team is working together. Without a customer, the groupworking isn’t there. The success rate of a group is defined by the relationship to the customer. The group is not intrinsically motivated because a certain problem is so interesting. If this would be true, a student can set up a github project with the title “homework: programming a database in Java”, and after one day, he will gets lots of contributers to his project. But this won’t happen. Because the world has different plans than contributing to a students homework.
Stackoverflow’s reputation system
The Stackoverflow reputation system is interesting because it contains no real money but a fictional score at the website. Each user of the website can accumulate points for contributing content. It is similar to a computergame in which the player has also a score. If somebody sets a bounty for a question he doesn’t provide new content to the website, instead he asking the community for providing content. That means, a user sets a bounty and the other side is providing the answer. Suppose, somebody has an unlimited score. He can put via a random generator the maximum bounty of 400 points to all the question he likes. The result is, that these questions gets a higher traffic and after a short time they get answered by the community. This relationship is not totally predictable, because sometimes a question has a bounty but not answer, but in general there is a connection.
The bounty system of Stackoverflow simulates a customer relationship. The user who provides the bounty is the customer. He can ask for support. And the other side has to provide the work.
Exactly the same principle is used by Open Source projects like the Linux kernel. The only difference is, that the bounty there is real money and that the sum is higher. The principle itself remains the same. Somebody has unlimited amount of money, and can exchange this into sourcecode. Other people are able to program the sourcecode but they need the money. The group working is organized in a way, that the people are working together because this allows them to get a higher bounty from the customer. A single programmer is not able to program the request of IBM, but if this programmers talks on the mailing list with other user, they can combine their force. The reason why they are talking on the mailing list is not because they are interested in programming, but they need the bounty.
But let us go back to the Stackoverflow website, which has the advantage that everything is transparent. Suppose somebody is able to provide a bounty. What will happen? He can ask anything what he want. For example “Hello world, i need a gui written in Java which is connected to a server database”. Then he puts the 400 point bounty on this question and waits. What will happen? At first, the traffic of this question will raise. That means, many people are clicking on the question because they want to help. After a while, comments and answers are there. If the problem is larger the people will work together in the hope that each of them gets a proportion of the bounty. That means, user1 gets 200 points and user2 gets 200 points because both have contributed a bit.
But what is the inner principle? Why generate bounty questions more traffic and more answers? This has to do with the social situation. The stackoverflow website works like a computer game. The winner is the person, who gets the highest score. And answering bounty questions is one way to maximize the own score.
The reason why people are contributing to a team is because the teams gets reputation. Every company works with that principle. The company has customer, they pay for a service, and this payment is transferred to the individuals in the company. That means, McDonalds employees are not interested foremost in meat in general, they are interested in selling the meat to the customer and receiving back a salary. The workflow is usually organized as teamwork. And if the team become more reputation which is equal to higher sales, this team is attractive to more employees because the hope, that they will get a fraction from the reputation for their own.
What is not widely known is, that apart from business, also scientific projects, open source projects and research can be organized with that principle. If a customer interacts with a a group, the group will find a result. Bringing Open Source projects forward is very simple. All what the group needs are better customers. That means, if the Linux kernel finds somebody who needs Linux and is able to pay for it, the traffic on the Linux mailing list will grow and the number of programmers too.
Customer for the Lyx software
The Lyx software is apart from the Linux kernel another famous example for a successful open source project. Lyx is using like all projects a mailing list, a bug tracker and a version control system. But the success come from a different direction, called customers and sponsering. On the URL https://www.lyx.org/Donate some past subprojects in the Lyx ecosystem are visible. A while ago a, Continuous spell checking feature was implemented. In my installation of Lyx, this feature works great. It is equal to what is known from MS-Word. The user enters text and wrong written words gets a red underline. The more interesting point is how this feature was implemented. It was sponsered and the customer paid 1000 EUR for that. That means, an individual or a company asked for that feature, sponsered the bounty, and the lyx team programmed the sourcecode.