Display Names im Main Grid angekommen

Wer sich bei Linden Lab einen der aktuellen Betaviewer Version 2.3.x besorgt, der kann ab sofort im Main Grid mit Display Names experimentieren. Man kann den Namen dabei aber nur im Abstand von mindestens einer Woche ändern, dafür ist die Änderung bisher kostenlos. Vielleicht wird man das in Zukunft dann gegen Zahlung eines kleinen Entgelts, wenn es die Beta verlässt, auch häufiger tun können.

Wie auch immer, es ist eine tolle Sache für Rollenspieler und Mitmenschen, die bei der Erstellung ihres Avatarnamens einen Knoten in den Fingern hatten. Für die Freunde weniger lustig ist dabei allerdings, dass in der Freundesliste standardmäßig bisher nur die Displaynames angezeigt werden und nicht die alten.

Wenn dann auf einmal „Bruteforce Oh“ ohne Vorwarnung meinetwegen zu „Pa Ha Gwarhalla Lalla“ von den Navi mutiert und man nur noch diesen Namen in der Freundesliste vorfindet, ist es natürlich logisch, dass man den erst einmal nicht zuordnen können wird.

DIsplay Names sind dabei eine weitere Sache, die Viewern auf Codebasis 2.X vorbehalten sind. Man darf gespannt sein, in welcher Form sie die Beta wann verlassen werden.

Phoenix&Co., Kakadu, Linden Lab und der Rest…

Linden Lab ist mal wieder auf Kriegspfad, so sehen es jedenfalls viele Verschwörungstheoretiker. Deren Meinung ist ganz einfach diese: Linden Lab verfolge eine Strategie, alle wichtigen alternativen Viewer uninteressant zu machen, so dass man geradezu gezwungen ist, den unglücklichen Viewer 2.x von Linden Lab zu benutzen. Diese Theorie ist weit verbreitet und macht immer wieder die Runde, was die Vertreter dabei allerdings  übersehen ist der einfache Fakt, dass das Linden Lab herzlich egal ist, mit welchem Viewer man auf das Grid zugreift, Hauptsache man greift darauf zu und lässt sein Geld dort. Das Geschäftsmodell von Linden Lab basiert nämlich nach wie vor Großteils auf der Landvermietung und nichts anderem, der Viewer der Wahl ist dabei wirklich herzlich egal.

Nun ist es so, dass alle Texturen in Second Life auf dem Bildformat JPEG2000 basieren (nähere Erklärung in diesem Blogpost von mir). JPEG2000 ist eine sehr stark verlustbehaftete Bildkomprimierung und benötigt sehr viel Rechenzeit.

Der Viewer von Linden Lab benutzt dafür eine kommerziell vertriebene Programmbibliothek aus dem Hause Kakadu Software, während die meisten alternativen Viewer dafür das deutlich langsamer arbeitende OpenJPEG benutzen, welches Opensource ist (wen es interessiert, hier gibt es dazu viele Benchmarks, Kakadu gewinnt dabei immer). Nun war es bisher aber möglich, und der Code dafür stammt von den Lindens selbst, dass man einem alternativen Viewer wie meinetwegen Phoenix dazu überreden kann, die Bibliothek aus dem Hause Kakadu zu benutzen. Man musste dafür nur die Programmbibliothek llkdu.dll aus dem Verzeichnis eines offiziellen Second Life Viewers in das Verzeichnis des alternativen Viewers kopieren, neu starten – fertig. Das ist eine Sache, die auch viele gemacht haben, der alte Emerald kam am Ende sogar mit einer eigenen Version dieser Bibliothek namens emkdu.dll daher. Dies war für viele ein schöne, gern gesehene Sache, da doch so der alternative Viewer vor allem auch auf älteren Prozessoren spürbar flotter arbeitete.

Die Technik, die dabei eingesetzt wird, nennt sich DSO – dies steht für „Dynamic Shared Object“ und ist nichts anderes als eine zur Laufzeit geladene Programmbibliothek. Im Falle der Second Life Viewer wird diese Bibliothek direkt aus dem Programm heraus geladen, die dafür notwendigen Routinen befinden sich im Quellcode in der Datei llimage/llimagej2c.cpp. Das Vorhandensein der KDU-Bibliothek ist dabei für keinen der Viewer ein Muss, weil er nicht gegen diese Bibliothek gelinkt worden ist. Ist diese nicht vorhanden, läuft er dennoch und benutzt statt dessen als Fallback OpenJPEG. Ist allerdings auch OpenJPEG nicht vorhanden, dann startet er erst gar nicht richtig und quittiert das mit einer Fehlermeldung.

So. Die Codebasis, auf der alle bisherigen alternativen Viewer basieren, steht unter der GPLv2 inkl. einiger Ausnahmen, einer sog. FLOSS, damit man gegen Bibliotheken linken darf, die nicht mit der GPL kompatibel sind, die der Viewer aber zum Laufen benötigt (Snowstorm steht unter der LGPL, aber auf dessen Basis gibt es bisher keinen alternativen Viewer).

Was aber ist die GPL? Die GPL (Wikipediartikel dazu und Post von Kris Köhntopp) ist die Softwarelizenz, unter der dieser Code vertrieben wird und die genau festlegt, was man damit machen darf und was nicht. Das zentrale Wesen der GPLv2 ist dabei, dass sie virulent ist. Code, der einmal unter der GPL publiziert worden ist, bleibt das auf alle Zeit und alle daraus abgeleiteten Programme müssen ebenfalls unter dieser Lizenz zur Verfügung gestellt werden. Wichtig dabei ist, dass die GPL sagt: du musst mit mir kompatibel sein! Wenn man ein Projekt leitet und Code damit baut, der zum Teil auf Produkte mit anderen, inkompatiblen Lizenzen basiert, dann verstösst man damit gegen die GPL. Will man gegen lizenzmässig inkompatible Bibliotheken linken, dann braucht es eine FLOSS, so wie Linden Lab das getan hat.

Nun wird die KDU-Bibliothek als „Black Box“ benutzt. Das bedeutet, der Viewer checkt, ist sie da und lädt sie dann zur Laufzeit, ansonsten funktioniert das Programm auch ohne. Das Vorhandensein von KDU ist keine Voraussetzung für das Funktionieren des Viewers an sich. Damit bewegt man sich lizenzmässig gleich auf einem Drahtseilakt, aber möglich ist dieses durchaus. Letztendlich wäre es ein Fall für die Juristen, das abzuklären.

Jedenfalls sagt jetzt Linden Lab nun dies: „Wer alternative Viewer baut, die auf das Grid zugreifen wollen, der darf die KDU egal welcher Form nicht mehr nutzen können.“ und daran scheiden sich jetzt die Geister. Es bedeutet für die Benutzer von alternativen Viewern eine gehörige Verschlechterung der Ladezeiten und der Aufruhr ist dementsprechend groß. Es hat zudem Auswirkungen auf die in world Wirtschaft, da OpenJPEG mit einigen Texturen einfach nicht klar kommt und diese bestenfalls falsch darstellt, wenn überhaupt. Sollten dies natürlich Height Maps für Sculpties sein, dann guckt man schön in die Röhre. Entsprechend sauer sind viele auf Linden Lab und meinen sarkastisch, LL wolle die letzten verbliebenen Avatare nun auch noch endgültig aus Second Life vertreiben.

Nun ist die Begründung von Seiten Linden Labs, mit der sie das durchsetzen wollen, auch reichlich dünn: sie begründen das mit einem Verstoß gegen die GPL. Die meisten Entwickler alternativer Viewer sehen das naturgemäß anders, aber kommen in der Mehrheit Linden Labs Wünschen dennoch nach.

Warum? Weil Linden Lab eine ganz einfache Stellstchraube hat, mit denen sie die Entwickler dazu bewegen können: sie müssen keinen alternativen Viewer aufs Grid lassen, der ihnen nicht gefällt. Das ist der Knüppel im Sack, mit dem Linden Lab zur Not arbeiten kann, Emerald hat das bereits ja zu spüren bekommen.

Über den Grund, warum Linden Lab auf einmal diesen Schritt vollzieht, gibt es auch so einige Spekulationen. Am wahrscheinlichsten ist dieser, dass Kakadu Software Linden Lab mit der juristischen Keule in Form massiver Schadensersatzzahlungen wegen möglicher Lizenzverletzungen gedroht hat. Denn was Linden Lab mit der llkdu.dll geschaffen hat ist nichts anderes als eine beliebig kopierbare Variante dieser proprietären Bibliothek, die von jedem beliebigen Programm unter Windows, Linux und Mac OX S aufgeruft werden kann, um JPEG2000 zu handhaben. Die dafür notwendigen Schnittstellen sind ja offen im Quellcode von Linden Lab dokumentiert und so ist das ein leichtes. Es ist durchaus möglich, dass dies auch bereits geschehen ist, jedenfalls ist das so oder so eine Sache, die man natürlich im Hause Kakadu Software nicht gerne sehen dürfte.

Wenn dem aber so ist, dann sollte Linden Lab wenigstens auch so ehrlich sein und das offen zugeben. So aber kommen die meisten Entwickler mit der geballten Faust in der Tasche den Forderungen Linden Labs nach, aber bezeichnen die Begründung bestenfalls als unehrlich, meist eher noch als verlogen. Den Schaden tragen jedenfalls alle Benutzer, die lieber mit einem alternativen Viewer unterwegs sind in Form deutlich langsamerer Texturaufbauzeiten davon. Bis OpenJPEG die Qualität und Geschwindigkeit von Kakadu erreicht, dürfte noch einiges an Zeit vergehen, Bildkomprimierung ist ein ungeheuer theoretisches und ekliges Feld der Programmierung.

Phoenix Viewer Changeset 3de7c9b5acf3: OpenJPEG statisch unter Windows

Die Macher vom Phoenix-Viewer haben im Changeset 3de7c9b5acf3 eine wichtige Änderung eingebaut: fortan wird OpenJPEG als statische Bibliothek direkt ins Programm gelinkt und nicht mehr erst zur Laufzeit als DLL geladen.

Wer sich mit einem Texteditor auskennt, für den ist es natürlich ein Leichtes, diese Änderung zu revidieren, dann muss er aber noch immer ein komplettes Buildsystem haben und Phoenix selber bauen können. Der tiefere Sinn dieser Änderung erschließt sich mir jedenfalls nicht wirklich.

Neuer Emerald plus noch mehr Verschwörungsunsinn

Totgesagte leben länger, so sagt schon der Volksmund und auch auf den Emerald Viewer trifft das zu. Es gibt eine neue Version, die speziell auf eine andere virtuelle Welt namens „Virtual World Web“ zugeschnitten worden ist, zum Download bereit. Es gibt sogar eine Möglichkeit, seinen Linden-Dollar zu einer guten Rate in deren eigene, lokale Währung einzutauschen.

Die Tatsache, dass der Emerald so schnell an diese Welt angepasst werden konnte deutet darauf hin, dass diese auf Opensim oder einer ähnlichen Technologie basiert. Arabella Steadham (Korrektur: Phox Modularsystems) ließ es sich jedenfalls nicht nehmen, wenn man schon dabei ist, noch gleich mal wieder eine volle Breitseite gegen Linden Lab abzufeuern, als da wäre:

Linden Lab has concocted various allegations and made outrageous demands on us in an effort to force people to stop using the Emerald Viewer, they’ve gone so far as to ban part of the development team to make further releases impossible.

We are very unhappy with how our dedicated team has been maligned, and we believe that the entire reason for the campaign was to prevent Emerald Viewer from becoming even more popular so that Linden would have to acknowledge our achievement and begin to give us something for our tireless work.

Unfortunately, what they gave us was an undeserved slam to our reputation and a kick out the door.

Auf Deutsch übersetzt bedeutet das nicht weiter als das:

Linden Lab hat verschiedene Beschuldigungen erfunden und uns hanebüchene Forderungen gestellt gehabt, um mit dieser Aktion die Benutzer davon abzubringen, Emerald zu benutzen. Sie gingen sogar soweit, dass sie Teile des Entwicklerteams einfach bannten, um weitere Releases zu verhindern.

Wir sind sehr unglücklich darüber, wie unser engagiertes Team verleumdet wurde, und wir glauben fest daran, dass der wahre Grund für diese Kampagne nur gewesen ist, zu verhindern, dass der Emerald Viewer noch beliebter werden würde und so Linden Lab endlich unsere Verdienste hätte anerkennen müssen und uns für unsere unermüdliche Arbeit etwas als Entschädigung zurückgeben müssen.

Leider war alles, was sie uns gaben, eine unverdiente Beschädigung unseres guten Rufes und einen Tritt, so dass wir im hohen Bogen zur Tür heraus flogen.

Also das strotzt mal wieder so vor Selbstgerechtigkeit, Verdrehungen und Weglassungen, dass ich eines sicher weiß: damit haben diese Leute endgültig kein Mitleid mehr verdient, sie sind nicht kritikfähig, Schuld sind immer nur die anderen und die eigenen Fehler sind wohl Geschichte oder ähnliches. Denn erwähnt werden diese gar nicht mehr, noch dass Linden Lab sehr wohl genügend Gründe hatte, viele Entwickler zu bannen.

Außerdem: was hätte ihnen Linden Lab denn als Entschädigung/Anerkennung für deren Arbeit geben sollen? Anspruch hat man als Entwickler alternativer Viewer auf rein gar nichts, schon allein diese Denke ist komisch. Die Sim Emeraldpoint vielleicht umsonst? Einen Angestelltenvertrag bei Linden Lab? Gutes Karma? Emerald als offizieller Viewer?

Kurz: wieso sollte man von diesem Team noch einen Viewer nutzen, das sich so stur und unbelehrbar sowie die Wirklichkeit verdrehend in der Öffentlichkeit zeigt, auch wenn er nun auf ein anderes Grid zugreift?