Ich kenne mehrere Personen und Unternehmen, die in dem großen Bereich "Embedded" tätig sind. Vor allem Industrietechnik. Natürlich setzt die Mehrheit nach wie vor auf Linux - Linux ist in diesem ganzen Bereich "Embedded" wohl nahe eines Monopols - oder sogar die Produkte des sympathischen Weltmarktführers aus dem sonnigen Redmont. Allerdings sind auch einige mit neuen Produkten oder Auftragsarbeiten auf eine FreeBSD-Basis gewechselt. Wenn man nach dem Wieso fragt, sind es eigentlich immer die gleichen Gründe:
- Die Lizenz. Die meisten Entwickler haben kein Problem mit der GPL2 und auch nicht mit der GPL3. Das Problem sehen sie eher darin, wie die GPL3 zustande kam. Die berüchtigte "TiVo-Klausel" hat sehr viel Vertrauen zerstört, denn sie verdeutlichte wie leicht Ideologen freie Software als politische Waffen missbrauchen können. Wer sagt, dass eine eventuelle GPL4 keine "Hans Müller Industriesoftware GmbH"-Klausel haben wird und man aufgrund der großen Verbreitung von Software aus dem direkten FSF-Dunstkreis plötzlich ohne aktualisierbaren Softwarestack darsteht? In die Kerbe schlagen z.B. auch die (juristisch natürlich völlig korrekten) Busybox-Klagen, wo man sich schon mal wegen 2 trivialen Zeilen vor'm Kadi sah oder das ständige Geschrei einige Parteien betreffend Closed Source Module für den Linux-Kernel. Natürlich hat ein Entwickler jedes Recht seine Software zu lizensieren, wie er möchte und auch diese Lizenz durchzusetzen. Aber umgekehrt haben Anwender auch das Recht Software aufgrund ihrer Lizenz und der Durchsetzung der Lizenz nicht mehr zu nutzen.
- POLA, auch als "Frickelfaktor" bekannt. Im Linux-Umfeld gibt es nur eine einizige ABI / API, die dauerhaft kompatibel ist. Ja sogar erstaunlich kompatibel, kompatibler als bei den BSDs. Das Interface zwischen dem Linux-Kernel und seinem Userland. Alles andere ist in einem beständigen Fluss. Es hat sicherlich seine Vorteile, aber wenn man ein proprietäres Produkt über 10 oder vielleicht sogar 20 Jahre warten will, wird es zu einem großen Problem. Ein heute geschriebenes Modul für den Linux-Kernel wird sich schon in zwei Jahren sehr weit von der Realität der dann aktuellen Kernel entfernt haben. Kernelupgrades sind daher in einem solchen Fall mit einem enormen Aufwand verbunden, teilweise nahezu unmöglich. Umgekehrt kann man ältere Kernel auch nur sehr eingeschränkt selbst weiterpflegen. (Free)BSD hat diese Probleme nicht. Auch dort muss man über die Zeit Anpassungen an seinen Kernelmodulen vornehmen, aber der Aufwand hält sich zumeist in Grenzen. Zudem ist es relativ problemlos möglich, aktuelle Änderungen in ältere Branches zurückzuportieren. Im Userland ist es ähnlich. Sobald man Busybox verlässt, ist man in dem Strudel ständiger Änderungen gefangen. Wenn ich heute auf systemd setze (zugegeben für Embedded-Anwendungen noch nicht unbedingt relevant), ist das Risiko hoch, dass es schon in 3 Jahren zur ungeliebten und kaum mehr unterstützten Altlast geworden ist. Die BSDs sind dort beständiger.
- Der Community-Faktor. Linux hat eine riesige Community. Das ist erstaunlich und wunderbar, hat aber einen Nachteil. Als einzelner Entwickler geht man schnell unter. Wenn man z.B. ein Problem mit dem Kernel hat, findet man im Linux-Lager nur noch mit einer sehr tiefgehenden Analyse und idealerweise einem Patch Gehör. Ansprechpartner sind zudem oft schwer auszumachen. Die Doku spärlich und häufig veraltet. Hat man nur begrenzte Ressourcen, kommt man kaum drum herum sich Wissen einzukaufen. Im BSD-Lager ist es noch deutlich persönlicher. Auch diffuse Probleme und Fragen werden oftmals diskutiert, man kann mit den Entwicklern zusammen Fehler suchen. Es gibt mehr Doku und dank weitgehend stabiler APIs / ABIs veraltet sie deutlich langsamer.
Im größeren Umfeld wird man wahrscheinlich wieder anders argumentieren. Dort dürfte die Lizenz durchaus ein nochmals schlagendes Argument sein. Ich kann mir sehr gut vorstellen, dass ein Unternehmen wie ScaleEngine FreeBSD als Basis für ihre Produkte gewählt hat, um nicht alle Optimierungen hinsichtlich Videostreamings am Kernel offen legen zu müssen. Sony wird die Playstation 4 sicher auch aus gutem Grund nicht auf Linux-Basis gebaut haben. Wer will schon riskieren, dass aufgrund der Lizenz offen gelegter Code in kurzer Zeit zum ersten Emulator führt?
Ich glaube es war Sandvine, die einmal argumentierten, dass FreeBSD ihnen einen deutlich größeren Gestaltungsspielraum im Upstream-Projekt einräumt, als es bei Linux der Fall wäre. Änderungen, die kein Geschäftsgeheimnis darstellen, kann man in FreeBSDs Code-Tree entwickeln und ins eigene Produktion zurückportieren. Man hat nicht den Aufwand eines umgekehrtes Weges, gleich eine Community die es verfolgt und auf Fehler hinweist. Am Ende profitiert man selbst dadurch genauso sehr wie die Allgemeinheit.