Outsourcing Linux development to Red Hat

In a previous post I explained how Red Hat is earning money. It is the same way, like other staffing companies like Manpower are doing so. Let us investigate the principle in detail. The beginning of the business process is the decision for outsourcing opensource development. For example, IBM needs an operating system for the new Z/OS server. They can program the code by it’s own, or they can outsource the job to somebody how is an expert for it. Red Hat can be called the central hub for opensource development. All the major kernel hackers (Torvalds, Kroah-Hartman and Cox) have a contract there.

The question is: why is IBM not developing opensource software inhouse, why they are using an external staffing firm? It is the same reason, like Manpower and Adecco are so successful in business, because it is more flexible. The reason is, that IBM and other tech companies are not interested in hiring opensource developers inhouse. Because OpenSource is a risky business. It can destroy former closedsource business model and it is more healthy to separate between them. What Red Hat does is programming software for somebody other. Red Hat itself doesn’t need a Linux kernel, because they have no Z/OS machine, and they also have no android phone which they want to sell to the customer. Instead Red Hat has other companies as clients who have a demand for programmers. IBM made the specification, of how the next kernel will look like, and the experts from Red Hat are fulfil the job.

Let us investigate how to compete with Red Hat. Today, Red Hat is the only company who is developing opensource software. Or to be more specific, Red Hat is the only staffing firm who is specialized on employees who are familiar with Linux kernel development. Copying the business model is possible. At first, we need a tech company who has a demand for opensource software. For example, Microsoft. They can decide to develop the code for the new Visual Studio IDE inhouse, or they can outsource the task to an external Manpower-like company, who is specialized on programmers. This newly founded staffing firm would be the direct competitor of Red Hat. They have a client (Microsoft) and they have employees. And they can start to programming code.

Let us investigate what the unique advantage of todays Red Hat company is. It is not the sourcecode, it is the employee they have under a contract. The sourcecode itself can’t be protected, but the employees who are developed them are save. That means, Torvalds is working exclusively for Red Hat, and most of the other programmers too. That means, even IBM wants he can’t hire Torvalds. The business of making opensource and earning money with it, is grouped strongly around certain employees who are a technical expert on a certain field, for example for the storage subsystem of the Linux Kernel or the jboss sourcecode. It is not possible to train an average programmer in a short timeperiod to become familiar with the code. And this is the advantage of Red Hat. They have already people under contract who have written a certain piece of code, and they can easy extend it with new features.

On http://www.briteadvice.co.uk/outsourcing/outsourcing-your-open-source-development/ the concept of outsourcing opensource development is explained briefly. The surprising finding is, that it has nothing to do with programming or Linux, instead the advantage has to do with hiring of people. Outsourcing means, to recruit people in a certain way, use a certain contract with them, and minimizing the overall costs. It seems, that Red Hat is an expert for this niche. They have a talent pool in their database, which makes it attractive for clients to work with them.

Here, https://www.informationweek.com/red-hat-ceo-bemoans-state-of-education-tech-talent-pool/d/d-id/1044688? is detailed description of what Red Hat is in reality. It is not a tech-company, it is a headhunter. Red Hat CEO Matthew Szulik describes how difficult it is to find skilled programmers in the U.S. I’m referencing to the source, to make clear that Red Hat is not competing on the software-level with other companies, but on the talent pool of people they have under contract. The game, what Red Hat is playing is not about Kernel drivers and server software, it is about human-capital.

Let us take a look back in history, how Microsoft went big. The first operating system was an outsourcing project of IBM. IBM only shipped the hardware, and the MS-DOS software came from Microsoft. Later other hardware manufactorer like Compaq sold the computers, and Microsoft added the software which made the hardware more useful.

The problem with Microsoft is, that it is only possible to outsource closedsource software there. That means, if nvidia needs a proprietary driver, Microsoft is the right company for them. But if a hardware manufacture needs an opensource operating system, Microsoft isn’t able to deliver. They have not the right employees for the job. And this is the niche why Red Hat was founded. They are doing all the work, which has to do with software, and which is opensource. Fulfil this tasks, needs a different culture, a certain kind of people and a different business model.

At the end, let us investigate what Red Hat can’t do: everything which is apart from operating system and standard-software. For example, Red Hat is not able to deliver a SAP like business software, they are also not able to create a robotics-control-system. They can only deliver the base-system, which consists of Linux, GUI, desktop applications, and server software.


Saving money in using Linux


Many companies are trying to reduce their licensing fees. The amount of money they spend for Visual Studio, Perforce, Framemaker and other proprietary software is huge. It is obvious that a transition from Windows to Linux is the right idea. But not so fast. If we are looking at real migration projects in the past, the result is, that after the migration is users are not happy with the system. They don’t like Linux very much, it is too complicated for them. But there is a soft-migration strategy available which I want to present in the following blogpost.

The general idea is, that the user do not delete his Windows OEM version from the PC, instead the Windows 10 operating system is the standard and only software installed on the PC. That means, every program will run on it, and the user doesn’t have to change his work habit. What he is doing instead is too boot Linux in a Virtual machine, for example in Virtual box. And he installs OpenSource under his Windows operating system, for example the LLVM compiler suite which can not only be installed in Ubuntu but also in Windows 10. So it is possible to switch to Linux without inistalling the kernel directly.

It is not a real migration strategy, because the users has best of both worlds. He uses Windows 10 which gives him access to the most dominant software platform today, and on top of it he installs free software which comes for free. This helps him to reduce his licences fees.

Let us investigate a Windows 10 minimal installation further. It means, that only the OEM version is installed on the machine, nothing else. This OEM version is shipped on every new PC but can be bought also for little money. Reducing this costs would be only possible if the user installs Linux as their main operating system, which means to boot the Linux kernel itself. (hard migration). In most cases this is not necessary and the user will loose the ability to run MS-Windows software on that machine. But what he can try out is to replace all other software ontop of the MS-windows operating system. That means, he can replace MS-Office with the windows version of Libreoffice. He can replace Framemaker with the windows version of Lyx and he can replace Visual studio with LLVM for Windows. And with a Linux in a virtual box environment he gets access to powerfull webservers and bash scripting languages.

For most users, this soft-migration / hybrid strategy is the most cost effective solution. It means to be a loyal Windows 10 user which doesn’t use Linux on the machine and at the same time, the user has installed every major Open Source available.

From a technical point of view, the next step after a soft-migration is a full migration. That means to deinstall Windows 10 and instead booting the original Linux kernel. In the new Linux distrubution Windows is installed in a virtual machine or the user do not use Windows anymore. But, this hard-migration strategy is in reality not needed in most cases. It helps to reduce the costs only minimal. The reason is, that the OEM costs for a Windows 10 license itself are very small and if the user do not use the system, he will loose the ability to start Windows applications, which is for most companies a disadvantage.


The marketshare of Linux on physical desktops is small than 1%. That means, noone has installed the system on his PC. But, the marketshare inside virtual machines is much higher. According to the uploaded youtube videos, there are millions of users how have downloaded the Ubuntu Iso image and boot it inside Virtualbox. They are using the distribution not as a replacement for windows, but as some kind of game. They are starting Virtualbox like they start the Minecraft game of trying out some hints.

Getting real numbers is difficult, but i would guess that Linux is by far the most dominant operating system which is running inside Virtual machines on the desktop. From a technical perspective, the users have not installed Linux itself, because the Kernel boots only in sandbox, so it is comparable with a graphicadventure. On the other hand, the users can’t be classified as Windows users, because they are playing around with Open Source software.

Kim Dotcom – leader of the Opensource movement

The songwriter Kim Dotcom has spoken against what he called copyright extremism. https://www.msn.com/en-au/sport/afl/kim-dotcom-i-dont-believe-in-copyright-extremism/vi-BBjKy0o?refvid=BBjNnhM In the interview he gave as an example the Hollywood industry for arguing that copyright must be restricted to empower the customer. I do not believe that Kim Dotcom is right, because Linux itself can be also described as copyright-extremism. The opensource movement not only respect the copyright, it uses it as a viral weapon. For example, if a wikipedia article is under a GPL license published, the user has some obligations.

Was the interview of Kim Dotcom a war declaration against the Open Source movement? I don’t know. Kim Dotcom himself only targets the Hollywood industry but not mentioned the Linux ecosystem. So it is a question of interpretation. Perhaps he can explain in detail what he thinks about the GNU licence ,which was invented by Richard Stallman.

Bug: Lyx makes trouble again


After the last month, the Lyx software for authoring ebooks had shown serious problems. After editing a bit in a text, the screen freezes. This problem occurred only sometime, but the View mechanism for preview a pdf-paper is completely broken. Round about every 20th execution the screen freezes after pressing the button. And it depends not only on the pdflatex engine, but also the xelatex engine makes trouble. So my conclusion is, that inside the Lyx program at all is something really wrong.

In most cases the freeze is recognized after 2 minutes from the operating system and the system is killed hard via the dialog-box of Fedora. If the document was saved correctly depends on random. In 90% of the cases it was saved before, but i had also some cases in which after open the paper again, my text was lost. So if somebody has a time-critical workflow with important documents like a phd-thesis i can no longer recommend the software. Instead the better option would be MS-Word which is very stable and runs under all operating systems.

Bug: zuwenig Paranoia in OpenSource Filmen

Wikipedia hält eine Liste mit OpenSource Movies bereit https://en.wikipedia.org/wiki/List_of_open-source_films Darunter werden Filme subsummiert welche sich ähnlich wie Linux unter einer GPL artigen Lizenz verbreitet werden. Die Liste ist sehr kurz und wenn man einige der Filme die ab 2002 erschienen sind anschaut so macht bereits der Trailer wenig Lust sich den ganzen Film reinzuziehen. Anders formuliert, die Filme sind grottenschlecht. Das einzig positive ist noch die freie Lizenz, aber die bräuchte es eigentlich weil diese Filme garantiert kein Publikum finden werden.

Aber wieso gelang mit dem großen Vorbild Linux es eine OpenSource Software zu entwickeln die nützlich ist, das selbe Konzept jedoch bei der Filmproduktion scheitert? Kann man generell mit wenig Budget keine guten Filme machen? Meiner Analyse nach fehlt den Filmen vor allem eines: Paranoia. Damit ist gemeint, dass vor dem eigentlichen Dreh ein gutes Drehbuch nötig ist und um das spannend zu schreiben müssen die Protoganisten etwas zu verlieren haben und dann hilflos mitansehen wie sie nichts dagegen tun können. Das ist das wichtigste Rezept was in traditionellen Kinofilmen eingesetzt wird. Leider nicht so bei OpenSource Produktionen.

Warum Paranoiade Filme beim Zuschauer besser ankommen als belanglose Filme hat damit zu tun wie Menschen funktionieren, es hat also etwas mit den Rezipienten zu tun und wann sie einen Film als sehenswert einschätzen. Üblicherweise werden Themen als wichtig / wertvoll bezeichnet die etwas mit Gefahr, Schrecken und Bedrohung zu tun haben. Sowas zieht den Kinozuschauer in seinen Bann, er glaubt etwas zu verpassen wenn er den Film nicht zuende anschaut. Genauer gesagt möchte der Zuschauer vom Drehbuchschreiber also manipuliert werden. Er will eine Geschichte erzählt bekommen die ihn persönlich betrifft. Und genau daran mangelt es den Filmen auf der OpenSource Liste von Wikipedia. In keinem einzigen Film ist die Rede davon, dass gleich die Welt untergeht.

Aber technisch wäre es durchauus möglich solche Filme zu produzieren, wohlgemerkt das Geheimnis liegt weniger im Budget, in den Schauspielern oder in der FullHD Kamera, sondern man muss das richtige Drehbuch haben.

Testbericht Torcs

Um den Programmieraufwand zu minimieren soll man ja auf bestehende Software zurückgreifen. Nun gut habe ihc mir gesagt, lasse ich meine eigene Trafficsimulation einfach unberücksichtigt und installiere ich mir lieber die Standard-Software TORCS. Wikipedia ist voll des Lobes und es gibt unendlich viele Paper dazu. Und oh Wunder, seit 2008 finden sogar jährliche Meisterschaften statt, wo Teams mit selbstprogrammierten AI Bots gegeneinander antreten. Genau mein Fall. Nur was ist das? Nachdem der Fedora Paketmanager die stolze 400 MB auf meine Festplatte beförderte und ich in den Settings erstmal die richtige Auflösung eingestellt hat, fängt nach ca. 30 Sekunden mein Lüfter in den Dauerbetrieb zu schalten. Das geht auch nicht weg, wenn man die Texturenanzahl reduziert und ein wenig mit den Options herumspielt. Woran das liegt ist unklar, offenbar bin ich der einzige mit derlei Problemen. Wenn aber noch nichtmal das manuelle Fahren im Simulator funktioniert wie soll es erst werden, wenn ich versuche einen Bot zu schreiben der 24/7 die Runden abfährt? Nein, Torcs war keine gute Idee und auf die zahlreichen Ableger wie Speed-Dreams, vdrift habe ich auch keine Lust mehr. Letzteres würde lauf der Prognose des Paketmanagers bereits 1,3 GB auf der Festplatte beanspruchen, und weil dort die Grafik noch weiter verbessert wurde, ist anzunehmen dass meine CPU vollends kapituliert.

Grundsätzlich stehe ich dem Ansatz von Torcs positiv gegenüber, auch die verwendete Programmiersprache C++ erhält meinen Beifall. Aber ich glaube ich werde vorerst doch bei meiner selbstprogrammierten Trafficsimulation verbleiben. Die war schön als 2D Topdown realisiert und hat die CPU exakt mit 0% belastet. Das Problem ist folgendes: wenn nochnichtmal die Spiele-Umgebung Torcs Sinn macht, dann gibt es im Grunde keine C++ Bibliothek die man installieren kann. Weil irgendwelche Standard-Software zu Botprogrammierung gibt es unter C++ nicht. Im Grunde ist das einzige worauf man aufbauen kann noch SFML in Verbindung mit Box2D. Damit ein Spiel hinzubekommen ist noch der leichte Part. Schwerer wird es, wenn es an die Botprogrammierung geht. Gerne würde ich an dieser Stelle ein Loblied singen auf Bibliotheken die schon existieren und die man nur bei sich installieren muss, doch wie gesagt scheint es sowas nicht zu geben. Und auch die vorhandenen Bots die für Torcs geschrieben wurden und die bei github gehostet sind, machen vorsichtig ausgedrückt einen unfertigen Eindruck. Mehr als 500 Lines of Code hat keiner der Teams in Stellung gebracht.

Anders ausgedrückt, die Thematik ist noch komplett unerschlossenes Gelände, da funktioniert noch überhaupt gar nichts. Mit nur wenig Programmier-Aufwand kann man richtig viel erreichen.

Flaschenhals Softwareerstellung

Robotik Projekte scheitern selten an theoretischen oder mathematischen Schwierigkeiten. Man muss also keine Theorie von Künstlicher Intelligenz besitzen um mit dem Programmieren zu beginnen. Ganz im Gegenteil, das Adhoc Vorgehensmodell bei dem man einfach mal einige Behavior Trees implementiert ist ausgezeichnet geeignet um Bottom-up Prototypen zu entwickeln. Nein der Flaschenhals liegt woanders. Und zwar ist es nicht möglich Autoprogrammierung anzuwenden. Damit ist gemeint, dass ein Codegenerator der anschließend weiteren Code erzeugt technisch nicht machbar ist. Die Alternative dazu lautet, dass die Programimerung eines Roboters vollständig von menschlichen Programmierern abhängig ist. Mag ein autonomes Robotersystem was eigenständige Entscheidungen trifft das Ziel sein (technisch ist es sogar möglich), aber der Weg hin zur Realisierung geht nur über händisches Programmieren.

Ich habe mir mal einige Softwaregroßprojekte sowohl aus dem Bereich Robotik als auch in der klassischen Betriebssystementwicklung näher angeschaut und bin zu der Erkenntnis gelangt, dass die Produktivität niemals höher liegt als 10 Zeilen Code pro Tag und Mann. Will man also die Software für ein Selbstfahrendes Auto, einen Pick&Place Roboter, für eine Drone oder für einen Küchenroboter programmieren muss man im Schritt 1 grob schätzen wieviel Codezeilen erforderlich sind. Minimum für ein selbstfahrendes Auto sind 1 Mio Lines of Code, in der Praxis haben die meisten Systeme sehr viel mehr Codezeilen. Umgerechnet sind das nicht mehr als 40 MB Sourcecode, das ist weniger als der Linux Kernel benötigt. Im Schritt 2 berechnet man jetzt die benötigten Mannjahre, wenn alles glatt läuft. Obiges Beispielprojekt würde 274 Mannjahre benötigen, bis die Software fertig programmiert ist. Wenn man als Einzelperson sich daran macht wird das Projekt scheitern und wenn man es im Team macht besteht die Gefahr dass sich das Team streitet oder die Finanzierung nicht sichergestellt ist. Und genau liegt die eigentliche Schwierigkeit bei der Realisierung von Robotik, und zwar geht es um die Frage ob man Softwaregroßprojekte mit mehr als 1 Mio Codezeilen durchführen kann. Also ob man prinzipiell das nötige Fachwissen hat und eine geeignete Projektstruktur.

Die spannende Frage lautet jetzt wie man verhindern kann solche Großprojekte anstoßen zu müssen. Deutlich einfacher zu realisieren sind kleine Softwareprojekte, wo also in wenigen Codezeilen eine sehr überschaubare Funktion realisiert wird die von einem sehr kleinen Team umgesetzt wird. Ein erster Ansatz in diese Richtung ist die Verwendung von Simulationen. Anstatt einen echten Roboter zu programmieren wie das bei Robocup Wettbewerben gemacht wird, sollte man sich auf ein Teilgebiet fokussieren, also das Programmieren eines Controllers in einer 3D Welt. Dafür ist der Programmieraufwand deutlich reduziert. Man kann sich die meisten Vision-Komponenten sparen und legt den Fokus stattdessen auf kognitive Agenten. Solche Systeme sind praktisch gesehen zwar nutzlos, weil man damit nicht wirklich Fußball spielen kann, dafür jedoch ist der Erstellungsaufwand niedriger und die Möglichkeit des Erfolgs ist vorhanden.

Einerseits steigt die Anzahl von benötigten Codezeilen in realen Projekten an, gleichzeitig passiert in der öffentlichen Wahrnehmung eine Verschiebung hin zu nicht-programmier-Ansätzen wie DeepLearning. Deeplearning ist eine Technologie die vorwiegend auf leistungsfähige Grafikkarten setzt um mittels Numbercrunching automatisch Software zu erzeugen. Man braucht nur ein sehr kompaktes Framework wie Caffee und kann damit Robotersoftware synthetesieren — so zumindest das Versprechen. Natürlich funktioniert DeepLearning in der Praxis nicht und das wissen die Beteiligten nur zu genau. Echte Software besteht zwingend aus vielen Codezeilen. Aber genau deshalb ist DeepLearning ja so attraktiv: man schreibt einfach ein 10 Zeilen Script in Python worin man Beispieldaten auswertet und nur Sekunden später ist dann der Roboter-Controller von dem neuronalen Netz erzeugt worden.

Eine interessante Mischung aus klassischer objektorientierter Softwareentwicklung und neuartigen DeepLearning Verfahren stellt “ontology based deeplearning” da. Es ist der Versuch, einerseits Ontologien und Objektmodelle zu verwenden, gleichzeitig aber ohne selbstgeschriebenen Code auszukommen.

Dazu ein kleiner Exkurs: normalerweise werden Softwareprojekte mittels objektorientierter Programmierung ausgeführt. Die Entwickler programmieren Klassen, legen Vererbungen fest und implementieren Methoden. Die objektorientierte Programmierung ist ein Hilfsmittel zur Domainmodellierung: die Umwelt wird in Software nachgebaut. Wie eingangs schon erwähnt ist die Durchführung solcher Projekte zeitaufwendig. Bei DeepLearning hingegen wird überhaupt kein Sourcecode erstellt, es werden auch keine Klassen definiert, sondern DeepLearning bedeutet, dass man sich ein Optimierungsproblem überlegt und dieses als Reward Funktion in 2 Zeilen Python Code niederlegt. Jetzt startet man das DeepLearning Framework auf einem GPU Cluster und die Software optimiert sich dann von allein. DeepLearning kann man als Quatsch bezeichnen, es ist komplett unwissenschaftlich und gleicht mehr Hokuspokus als seriöser Softwareerstellung. Es besitzt aber einen großen Vorteil: DeepLearning Softwareprojekte sind extrem billig. Eigentlich reicht es die Hardware anzuschaffen, weil groß programmiert werden braucht da nichts. Da ist der Grund warum es aktuell bei Google Scholar geschätzt mehrere Tausend Paper gibt, in denen DeepLearning in allen möglichen Facetten dargestellt wird. Solche Projekte durchzuführen ist unglaublich billig. Irgendwelche konkrete ausführbare Software gibt es zwar keine, aber dafür ist es interessant sich damit zu beschäftigen.