Puh, das ist nicht einfach. Alle? Aber liebe sie alle auf eine andere Weise. Und während es viele Klischees zu Systemen gibt, die vielleicht aus dem Bauch heraus richtig klingen mögen muss man halt auch der Tatsache ins Auge sehen, dass alle BSDs komplett eingenständig Betriebssysteme, mit eigenen Communities und doch recht langer (vor allem auf heutiger Perspektive) Geschichte sind. Und ich glaube das ist eine falsche Herangehensweise wenn man so tut als wären "das halt alles BSDs" in die Richtung "eh alles das Selbe" oder noch schlimmer "das ist ein BSD für". Das sind komplette Multi Purpose Systeme und man kann mit jedem alles machen und die Stärken und Schwächen sind da, aber auch bei all diesen Themen kommt es auf den Einzelfall an. Jedes der Systeme hat Hardware, die wahrscheinlich sonst unter keinem anderen richtig funktioniert, jedes der Systeme hat Szenarios wo man einen Angreifer abhalten würde, der anderswo durchkäme und jedes dieser Systeme hat Software die anderswo nicht so einfach läuft. Es sind eben keine Linux-Distributionen und es gibt riesige und teils komplett unerwartete und anti-intuitive Unterschiede. Aber zurück zum eigentlichen Thema...
FreeBSD ist unglaublich flexibel und lässt sich für alles verwenden. Allein schon die Ports-Collection und die Infrastruktur ist etwas wo kein anderes Betriebssystem rankommt. Keine Linux-Distribution, keines von den großen OSs. Das steht einfach nur da, völlig konkurrenzlos. Man findet so gut wie alles drin, viel mehr als in den offiziellen Repos von anderen OSs, aber nicht nur das. Das zeug ist aktuell und nicht X Jahre alt, weil alles aus einer Quelle ist hat man keine komischen Konflikte, aber nicht nur das. Die Software gibt es auch meist in mehreren Major-Versionen, aber nicht nur das, die Major-Versionen lassen sich auch beliebig kombinieren (Postgres + PostGIS is da der Klassiker bei mir), aber nicht nur das, schaut euch auch nur das nginx-Paket an und die Patch-Sets die man da auswhählen kann. Da haben Unternehmen, die andere Systeme nutzen oftmals ein eigenes Team dafür sowas zusammen zu bauen, ein Repository mit Notes, und Skripts, das ständig bricht. Bei FreeBSD ist das einfach so dabei. Und dann kommen noch Dinge von dtrace bis ZFS dazu, die einfach so funktionieren. Kein Gefrickle, keine Besonderheit wie sonst wo. Und um nochmal auf Pakete zurückzukommen. Wenn man sich um Systeme kümmert und ein Entwickler hat gerade irgendwo in einem Blog irgendwo was aufgeschnappt, was er einfach mal probieren will, dann kann ich das schnell mal aufsetzen und einen Plan machen das eine Produktivversion zu packen. Habe ich ein anderes System am Laufen ist das ein Projekt für sich, wo wenn es als wichtig genug angesehen wird man sich das mal anschauen kann und eine Frickelversion unter stöhnen erstellt werden muss, oder man verwendet Docker als hacky Workaround, vielleicht in irgendeinem Ökosystem das gerade irgendwie gehyped wird, aber eigentlich auch im besten Fall als Alpha bezeichnet wird, wo nichts durdacht ist, weshalb man sowieso im Jahrestakt Zeit einplanen muss, alles über den Haufen zu werfen, weil irgendwas bricht oder eine neue Major-Version raushaut, die man verwenden muss weil sonst nichts mehr geht, nur um den Status Quo beizubehalten.
OpenBSD ist simpel. Das ist für mich die primäre Eigenschaft des Systems. Das System läuft einfach. Man weiß woran man ist. Es ist simpel in so vielen Facetten. Das beginnt bei Dingen wie WiFi, da trägt man Netzwerkname, Username und Passwort ein und es klappt. Einfach so. Kein Gefrickel, kein komisches Config-Format, einfach so. Oder System-Updates und Systemupgrades. Ein Command und es läuft, oder Sound, das sich gefühlt gerade jedes andere Betriebssystem zur Frickel-Landschaft umgestaltet, das Probleme macht, die teilweise von Leuten zur Normalität und zu Muscle-Memory werden, die sie selbst nicht mehr bemerken. Oder APIs, pledge, unveil. Funktioniert einfach so. Portiert auf alle möglichen Sprachen, tut genau was man will, und man fragt sich warum das nicht schon alle seit Jahrzehnten so machen. Und das Basissystem. Man hat einfach alles was man so als Standard-Server haben will, egal ob's jetzt ein Mailserver ist, der endlich mal mit einer Config daherkommt, die auch verständlich ist, einen simplen HTTP-Server, samt trivial konfigurierbaren TLS-Zertifikaten, und dann vergisst man schon auf die ganzen Dinge, die OpenBSD gefühlt schon immer hatte. pf ist genau so wie Packet Filtering sein sollte, wo man sich auch fragt, warum man das anders machen würde, oder verschlüsselte Swap. Es gibt ja wirklich keinen Grund das nicht zu haben, Security-Pragmatismen. Wenn man anderswo mal das Thema Security angeht dann sind das Tools, die fast eigene Wissenschaften werden, allein schon wenn man die Grundfunktion aktivieren will. Und dann schaut man vielleicht mal unter die Haube und wundert sich wenn man den Code liest "das war's? Das kann ich einfach so lesen und nachvollziehen?". Ähnlich bei den RC-Scripts, wo sich auch die anderen BSDs vielleicht noch was abschneiden können. OpenBSD fühlt sich ein bisschen wie das gallische Dorf an, während sonst Layer auf Layer gelegt wird, Features gebaut werden, von denen man weiß dass sie im nächsten Jahr Altlast sind, wo jedes kleine Tool siebzig Abhängigkeiten hat und Code nicht nachvollziehbar ist, während riesige Systeme gebaut werden, in die sich alle einarbeiten müssen um irgendeinen Edge-Case wie "Aber was wenn der Angreifer genau dort reinkommt, und dann da eine Lücke findet, aber nicht auf das zugreifen, kann, und das ganze am siebten Vollmond ist, dann können wir ihn damit vielleicht davon abhalten die vierte Zeile in der Datei, falls es sie gibt auszulesen". Und das ganze Stoppt auch nicht an irgendwelchen Grenzen. Da werden dann pledge und Co in Browser eingebaut, sndio, libreSSL, OpenSSH, OpenNTPD und Co. sind ohnehin portabel, und die
Listen von Innovations und "Projects maintained by OpenBSD developers outside OpenBSD" könnten ja genau so gut Listen von Software die alle verwenden, die einfach funktioniert sein. Von OpenSSH, über sudo, doas und co ist da ja einiges drin.
Und
DragonFly und
NetBSD mal gemeinsam, um nicht noch länger zu werden. Dass DragonFly performant ist ist ja bekannt, aber auch der Pragmatismus ist immer wieder was wo ich mir denke, das könnten sich andere Systeme abschauen. In beiden Systemen "macht man halt einfach mal". Ist das jetzt ein Makefile in DragonFlys /usr für soruce und ports maintainance, oder sich einfach mal ransetzen und Bugs fixen. Könnt ihr euch noch an das USB-Thema bei FreeBSD und auch anderen erinnern? Das war ein Drama und niemand wollte sich ransetzen, weil es ja eh meistens okay ist. Da hat sich ein Dev rangesetzt, USB rein, gemount, gepullt, errors debugged, rinse, repeat. Und dann hat das geklappt. NetBSD ist ein kleines OS-Projekt und hat noch keinen eigenen Hypervisor? Geschaut was da ist, darauf aufgebaut und auf einmal ist das FreeBSD-Forum voll mit Leuten die fragen warum man nicht einfach das nehmen kann. DragonFly hat das aufgegriffen und portiert. Beide Projekte haben einen Developer-Geist der gefühlt oftmals als "verloren" bezeichnet werden kann. Sich hinsetzen und was bauen, ohne Tamtam - oh und was das betrifft. OpenBSD bezeichnet sich ja gern mal als Hype-Free und ich denke das stimmt aus der Perspektive mit Simplizität und man macht dann halt mal ein Skript, das funktioniert und gut ist es, aber dann schaut man sich NetBSD und DragonFly an und was die einfach mal so raushauen, schon seit vielen Jahren ganz ohne Hype und kann sich über andere Projekte nur wundern. Ohne da jetzt zu weit abdriften zu wollen, aber das fehlt einfach in Projekten. Einfach mal gute Software, oft cutting edge Technologie einfach mal zu bauen, weil sie fehlt, oder weil es geht, oder weil man auch einfach Lust drauf hat sich eine Herausforderung zu stellen. Nicht weil es Geld macht, nicht weil man irgendwelchen User-Zahlen beim Wachsen zusehen will, nicht weil man sich damit riesige Berühmtheit erwartet, sich das sicher gut im Bewerbungsgesrpäch macht, nicht weil man ein Thema für einen Blog-Artikel braucht, sondern einfach weil man genau das machen will, was man macht, und das ist gute Software zu programmieren. Natürlich weiß ich nicht, was wessen Ansporn ist, aber wenn ich an Open Source Communities heute und Open Source Communties in den 2000ern denke, dann ist das echt was, was man in diesen Tagen suchen muss. Und bevor das jetzt jemand nostalgisch nennt. So ist es ja auch nicht. Es gibt viele neue Projekte, die von Grund auf darauf ausgelegt sind, dass die eben nicht zu so etwas führen. Nischen, die entstehen weil es da ein Vakuum gibt. Komplett neue Projekte, die schon vom Design her so sind, dass sie was neues, cooles, was Spaß macht bauen, aber eher nicht in Gefahr laufen dass man irgendwann groß Business-Entscheidungen treffen muss. Da müsste man aber wohl einen eigenen Thread dazu machen. Um zurück zum Thema zu kommen. Ich glaube pkgsrc ist unterschätzt. Das ist ja ein NetBSD-Projekt, aber während NetBSD auf unzähliger Hardware läuft, läuft pkgsrc auf unzähligen Betriebssystem, und zwar so gut, dass es das Default von diversen Linuxdistributionen, Solaris-Derivaten, Betriebssystemen wie Minix und auch mal DragonFly war. Gefühlt ist ein prtables Port-System ja ein Projekt das regelmäßig anderswo versucht wird und grandios scheitert. pkgsrc funktioniert einfach. Ja, es hat hier und da Macken, aber das hat ja wirklich jeder Package Manager. Mit pkgsrc gibt es tatsächliche Success Stories und das Projekt ist nur nicht nur "wäre cool wenn" und "schau wie viele Pakete es schon gibt" oder "wir haben Pläne für...". Das Projekt läuft. Und das schon ziemlich lang.