The famous Ubuntu Linux distribution was founded with a certain vision about the future. The idea was to use Linux to motivate non-programmers to become programmers. The website ubuntuusers has as a target group the ordinary PC user who is currently running MS-Windows but is interested to do advanced stuff with the command line, with the Python interpreter and with Linux. Ubuntu is some kind of broader movement with the aim to make programming knowledge more attractive for the masses. And with open source software this is an easy going task, because advanced programming environments and Unix like operating systems are distributed for free.
There is only a small problem. Ubuntu wasn’t a success. People who are already programmers have tried the system and they loved it, but non-programmers are not interested in Ubuntu Linux. They preferred their MS-Windows box and stay away from any kind of IDE, texteditor, compiler and make tool.
Ubuntu was attacked from two sides at the same time. Profi programmers from within the Open Source community like Linus Torvalds doesn’t like Ubuntu because it wasn’t possible to compile software with the system. Instead it was an operating system for beginners with a reduced feature set. Newbies and non-programmers also don’t like Ubuntu, because it was too complicated for them and they understand nothing. As a consequence, Ubuntu was not accepted. The aim to attract millions of non-programmers for doing advanced stuff with their computer was not reached. The ubuntu project failed, and the LInux community too.
What can we learn from this experiment? We can learn, that 99% of the PC users are not interested in programming. What they want is using a computer for surfing in the Internet but they don’t want to write any single line of code. Not in Windows, and also not in Linux. They have nothing against Python, Java or C++ in special, they have something against programming in general. Any effort which is trying to educate people in learning programming will fail. That means, Ubuntu fails, Windows subsystem on Linux fails, Microsoft C# fails and so on. The most advanced stuff the mainstream user is doing with a computer is using it like a calculator in MS-Excel. That means, he writes numbers in cells and then calculates the sum. Using MS-Excel is used very often by million of people. But the next logical step after MS-excel, which are bash scripts, Visual Basic, Python or C++ is ignored. Real programming is something which is ignored by the mainstream user.
What is the reason why the normal users resists to learning programming? Because it has something to do, that knowledge about programming is useless. It is changing all the time, and what is right in programming language A is different in programming language B. Let us make an example. Suppose somebody have learned the perl language 20 years before. What can he do with this knowledge in the now? Right, nothing, Perl is called an obsolete language. It is no longer used for writing code. And the same will happen with all the other languages. From a technical perspective it makes absolute sense, that C++11 looks different from C++98 but suppose somebody is familiar with C++98 what can he do next? Learning programming is some kind of dead end and the mainstream users is aware of it. He knows, that if he want’s to program his first hello world example in Python, he will invest many months and as a result he gets an error warning that some library isn’t installed in his computer. So the right decision is to stay aware from the voodoo and let other people become a programming expert. If he can give to these Microsoft programmers a small amount of 50 US$ for the OEM license the customer is happy, because he isn’t force to programing for himself.
On that basis, Microsoft have created a business model and the customer isn’t interested in destroying this model with Linux. Because in the future of LInux, everybody needs to be a programmer.
Let us observe how the communication flow between programmers and non-programmer is. It works not in a way, that programmer will teach to mainstream users how to become programmers itself. That was the idea behind ubuntu and it failed. Instead the interaction works in a way, that the non-programmer is paying 50 US$ into the pockets of software company and they are writing the software for them. The aim is, that the numbers of programmers stays small below 20 million. There is no need, that a huge number of people is able to debug C++ application or can install a webserver in under 5 minutes. Instead the work distribution is organized by capitalism ideas which means with money in the loop. That is the explanation, why Linux failed. Linux is trying to convince the mainstream users to become computer experts and learn to program by it’s own. So that the user no longer needs a software company like MIcrosoft but can create his own operating system. This vision isn’t possible, because the value of learning programming is very small.
Programming isn’t a universal skill which has to be teached to anybody in the internet age and it isn’t the road to understanding robotics. It is some kind of skill which is outdated today. Programming was a major subject in the early 1980s in which the commercial software market didn’t exists. In that time programming was the only way to get new software. Nowadays the situation has changed. To get the latest software nobody needs to learn programming, instead he is visiting a software store and click the buy button.
The most pessimistic outlook is, that learning programming in the now isn’t the best hint. Because even somebody is very good in writing code, his knowledge will be outdated in 5 years. The software industry invents all the time new programming languages and new backend libraries. Some kind of general pattern which remains the same isn’t there. In a worst case scenario somebody is investing many hours in learning a language and if he is an expert in it, the language is outdated and he can learn the next language.
What the user wants
Let us first explain what the mainstream is interested in. He want’t to buy Windows PC, he want’s access to the internet and he want’s to try out different software. That means, the PC and the ecosystem around it can be called a great success. The trend is positive. Right now, more then 2000 million PC are worldwide in use, and the number will grow in the future. On the other hand, the mainstream user isn’t interested in becoming a power user, which includes to learn programming. That means, the students are not motivated to attend a programming course, the elderly do not want to program in old-school language and the mainstream user isn’t interested in give away his Windows operating system and switch to a Linux distribution.
Sure, there is a group out there which is fascinated by Open Source software and by writing it’s own software. But compared to all PC users it is a minority. They are less then 0.3% of all the users which means, the group is too small to talk about it. The problem in the media is, that in the past this small group has reached a high attention and the idea was, that this small group will become a large group. This wasn’t happen.
The mainstream user see the advantage of getting a PC incontrast to get not a PC. With a PC and a working internet connection he can send e-Mail, watch Youtube and write letters in MS-Word. Without a PC he can’t do so. The decision to become interested in PC technology is very easy and it was done by nearly all the people worldwide. But what is the advantage of learning to program and mastering the LInux operating system? Right, there is no advantage, the customer will loose he time and he gets nothing. If he don’t want to learn programming he has made the rational decision. What he can do with his time alternatively is to learn a foreign language, read a book or making sport.