UNIXwork

Tags

c dav unix shell linux xattr solaris links x11 java rant fun webdav sync gnome apple benchmark network ldap oracle analytics xnedit macos windows graalvm bsd curl mac apache wtf virtualbox microsoft zfs sparc tomcat rhel freebsd arm

Wie man nicht einen WebDAV-Server implementiert

20. Februar 2019

Ich hatte vor, als eine Ergänzung für dav, einen leichtgewichtigen WebDAV-Server zu entwickeln. Wäre gut wenn ich zu dav-sync gleich noch eine kompatible Server-Komponente anbieten kann, denn von verbreiteten Webservern kann eigentlich nur Apache WebDAV richtig. Alternativ könnte man hierfür auch Nextcloud verwenden, aber das will vielleicht auch nicht jeder.

Verwenden wollte ich das Go Package golang.org/x/net/webdav. Bis ich es mir genauer angeschaut habe.

Ein essentielles Feature sind die sogenannten Dead Properties. WebDAV erlaubt es beliebige XML-Werte als Properties in einer Ressource zu speichern. Dummerweise wird dies immer wieder schlecht implementiert. Ein Auszug aus der Dokumentation aus dem Go-Package:

// Property values of complex type or mixed-content must have fully
// expanded XML namespaces or be self-contained with according
// XML namespace declarations. They must not rely on any XML
// namespace declarations within the scope of the XML document,
// even including the DAV: namespace.
InnerXML []byte `xml:",innerxml"`

Es wird gefordert, dass wenn XML-Elemente darin vorkommen, diese ihren Namespace selbst deklarieren. Anders könnte man den Content auch nicht als einfaches Byte-Array speichern.

Man zwingt damit den Client dazu, seine XML-Requests auf besondere Art zu gestalten, die nirgendwo im WebDAV RFC gefordert wird. Es ist sogar so, dass im RFC Beispiele vorhanden sind, die dies schon nicht erfüllen.

Und wieder mal ein Beispiel für "zu faul um XML richtig zu verarbeiten". Leider nicht das erste mal, dass ich das bei einer WebDAV-Implementierung sehe.

Oracle, Solaris, Linux und warum alles Scheiße ist

19. Dezember 2016

Es scheint jetzt offenbar doch sehr schlecht für die Zukunft von Solaris auszusehen. Vor ein paar Monaten hat Oracle noch einige neue Solaris-Features angekündigt. Ein Entwickler hat sogar Screenshots von Gnome 3 unter Solaris veröffentlicht. Offenbar hat Oracle sich aber kurzfristig komplett umentschieden und holzt jetzt einiges ab.

Ihr Cloud-Geschäft läuft ziemlich gut, und dort kommt auch Solaris zum Einsatz. Daher wird es wohl noch irgendwie erhalten bleiben. Aber wie genau wird sich erst zeigen müssen. Server mit Solaris hat offenbar keine Priorität mehr, es sollen stattdessen alle auf Cloud-Produkte umsteigen.

Linux ist mitlerweile das dominierende Betriebsystem im Unix-Segment. Es gibt viele Gründe dafür, warum dies so ist, technisch gesehen ist Solaris aber mehr als konkurrenzfähig. Features, die jetzt erst langsam zu Linux wandern gibt es schon seit mehr als 10 Jahren bei Solaris:

  • Mit systemd wurden unter Linux die alten Sys V init-Skripte abgelöst. Seit Solaris 10 kommt dort dafür smf zum Einsatz, was auch das Vorbild für systemd war.
  • Linux hat mitlerweile auch Container, Solaris hat die schon wesentlich länger und auch deutlich ausgereifter. FreeBSD Jails sind sogar noch älter.
  • Btrfs ist immer noch nicht production ready, auf jedenfall nicht, wenn man Raid5/6 will. Wichtige Daten vertraue ich nur noch ZFS an (auch unter Linux), alles andere ist nicht mehr zeitgemäß (oder unfertig).
  • Seit Linux 4.9 gibt es endlich eine Dtrace-Alternative. Ja, jetzt erst im Jahr 2016.

Es gibt auch sehr viele Kleinigkeiten, die mir unter Solaris besser gefallen.

  • Dank Boot Environments muss man keine Angst vor Upgrades haben. Außerdem müssen auch nie Upgrades beim Booten oder Shutdown installiert werden.
  • NFS kann kein Betriebsystem besser als Solaris.
  • Linux hat immer noch keine NFSv4 ACLs. Selbst btrfs unterstützt nur Posix-ACLs. Und unter vielen Distris sind die Dateisysteme standardmäßig auch ohne ACL-Support gemounted.
  • Solaris hat Event Ports als Alternative für poll, die wesentlich mächtiger sind als die Linux Alternative epoll.

Vor allem sind bei Solaris viele Dinge schöner integriert und arbeiten wunderbar zusammen, wärend Linux ein wenig mehr Gefrickel ist.

Das soll jetzt kein Linux-Bashing werden, aber es ist meiner Meinung nach nicht das völlig überlegene Betriebsystem. Wenn Solaris stirbt wäre das einfach ein Technologie-Verlust. Vor allem will ich mich nicht mit Problem rumschlagen, die schon vor Jahren gelöst wurden. Es gibt natürlich noch IllumOS, den OpenSolaris-Fork, das müsste ich mir mal genauer anschauen.

Düstere Zukunftsaussichten

Nicht nur um Solaris wäre es schade. Generell verschwinden die guten Produkte.

Von 2009 bis Ende 2013 war ich Apple-User. Mich hat damals sowohl OS X überzeugt als auch die Hardware. Heute überzeugt mich von Apple leider gar nichts mehr. Ich bin immer bereit für hohe Qualität mehr Geld zu bezahlen. Apple liefert aber nicht mal mehr ansatzweise etwas wie Qualität. Nach jeder Einführung eines neuen Mac häufen sich Berichte über Probleme damit. Wann kam eigentlich der letzte Mac raus, der keine Grafik-Probleme hatte? Und auf verlöteten RAM hab ich auch keine Lust. Ich hab wenig Hoffnung, dass zukünftige Desktop-Macs wieder besser werden.

Als Smartphone hatte ich schon immer Nexus-Geräte. Erst das Nexus One, dann ein Nexus 4. Ein neues Smartphone könnte ich langsam mal gebrauchen. Leider hat Google die Nexus-Reihe beerdigt, und das Pixel ist einfach lächerlich überteuert und überzeugt generell nicht.

Irgendwann brauch ich auch mal einen neuen Desktop-Computer. Ich bin ein bisschen ein Fan der HP Z-Workstations. Leider entwickelt sich HP immer mehr zur völligen Idioten-Firma. Ich bin auch sehr überzeugt von Fujitsu. Die halte ich eigentlich für den aktuell besten Hersteller. Dumm nur, dass es da Gerüchte gibt, dass sie ihre PC-Sparte verkaufen wollen.

Zu guter Letzt veraltet die von mir bevorzugte Linux-Distribution CentOS 7 leider immer mehr. Kurz nach Release ist die Software schon nicht top aktuell, für mich jedoch neu genug. Mit den Jahren wird das leider nicht besser. Da ein EL8 noch nicht in Sicht ist, muss ich mich möglicherweise nach einer neuen Distri umschauen.