13.05.2026, 15:31
## Deutsche Zusammenfassung des OpenSimulator-Meetings vom 12.05.2026
Das Meeting drehte sich hauptsächlich um aktuelle Codeänderungen, Performance-Probleme, Viewer-/Cache-Fehler sowie Infrastruktur- und Shutdown-Themen in OpenSimulator.
### 1. Änderungen und Verbesserungen im Code
Ubit Umarov berichtete über mehrere kleinere Änderungen im OpenSimulator-Code:
* Ein Pull Request von Holoneon wurde übernommen, der einen Fehler bei `AssetTransactionModule` behebt. Dabei wurde ein Konfigurationswert (`min asset upload level`) zuvor nicht korrekt gelesen.
* Danach wurde die Konfigurationslogik weiter verbessert:
* Neue Methode `GetFirstConfigVarFromSections<T>` eingeführt.
* Vorteil: Die Suche stoppt sofort beim ersten Treffer statt alle Config-Sektionen unnötig zu durchsuchen.
* Dadurch weniger Overhead und bessere Performance.
Außerdem wurden viele kleinere „kosmetische“ Modernisierungen vorgenommen:
* Ersetzen von `Dictionary.Contains()` durch `TryGetValue()`
* Ziel:
* weniger doppelte Hash-Lookups,
* weniger unnötige Suchvorgänge,
* saubererer und effizienterer Code.
Es wurde mehrfach erwähnt, dass ein Großteil des OpenSim-Codes sehr alt sei und moderne .NET-Methoden beim ursprünglichen Schreiben teilweise noch nicht verbreitet waren.
---
### 2. Diskussion über Asset-Spam / Asset-Bombing
Bianca Blast berichtete über ein Problem mit sogenanntem „Asset Bombing“:
* Ein Benutzer konnte in kurzer Zeit extrem viele kleine Assets hochladen.
* Beispiel:
* etwa 100.000 Assets in ungefähr 10 Sekunden.
* Die hochgeladenen Dateien waren überwiegend kleine Animationen vom Typ 20.
Diskutiert wurde:
* ob ein Rate-Limiter direkt im Asset-Storage eingebaut werden sollte,
* oder ob das Problem bereits „vorne“ im Netzwerk-/Viewer-Bereich abgefangen werden sollte.
Ubit bemerkte dazu ironisch:
> „OpenSim vertraut seinen Benutzern …“
Die Teilnehmer waren sich einig:
* praktisch alle Systeme sollten heute irgendeine Form von Rate-Control besitzen.
---
### 3. Unsichtbare Prims / Viewer-Cache-Probleme
Ein großer Teil des Meetings beschäftigte sich mit einem schwer reproduzierbaren Problem:
* bestimmte Objekte („Prims“) werden im Viewer manchmal unsichtbar.
Vincent Sylvester erklärte:
* Das Problem tritt regionenabhängig auf.
* Nach bestimmten Scene-Updates funktionieren Regionen teilweise tagelang korrekt.
* Danach erscheinen plötzlich wieder unsichtbare Objekte.
* Besonders merkwürdig:
* welche Objekte fehlen, ändert sich ständig,
* manche Objekte laden immer korrekt,
* das Verhalten wirkt inkonsistent.
### Vermutete Ursachen
Diskutiert wurden mehrere mögliche Ursachen:
#### Objekt-Cache des Viewers
Ubit kritisierte den Viewer-Cache sehr deutlich:
* der Cache speichere LLUDP-Nachrichten statt echter Objekte,
* das Design sei problematisch,
* möglicherweise werde der Cache „vergiftet“.
#### Terse Updates
Es wurde beobachtet:
* das Senden von sogenannten „terse updates“ scheint das Problem oft temporär zu beheben.
Allerdings:
* das gilt eher als Workaround („Bandaid“) statt echte Lösung.
* Vermutlich zwingt ein Terse-Update den Viewer dazu, Objekte neu zu laden.
#### Viewer-/Protokoll-Inkompatibilität
Die Teilnehmer vermuten:
* Änderungen in modernen Viewern könnten alte Protokollfehler sichtbar gemacht haben.
* Möglicherweise existiert seit Jahren ein versteckter Kommunikationsfehler zwischen Viewer und Simulator.
Es wurde mehrfach beklagt:
* mangelnde Dokumentation des Protokolls,
* hoher technischer Schuldenstand („tech debt“),
* komplizierter Legacy-Code.
---
### 4. Threading und Performance
Ein weiterer Schwerpunkt war Multithreading und Threadpools.
Ubit erklärte:
* `Util.FireAndForget`
* nutzt den Threadpool,
* blockiert nicht den Hauptthread,
* eignet sich für asynchrone Aufgaben.
Außerdem gab es Kritik an:
* Microsofts Standard-Threadpool,
* .NET Tasks,
* langsamer Thread-Skalierung,
* möglicher Thread-Starvation.
Ubit bevorzugt weiterhin:
* den älteren „SmartThreadPool“,
* da dieser in manchen Szenarien stabiler arbeite.
---
### 5. Region-Shutdown und Events
Vincent suchte nach einem Mechanismus:
* der beim Shutdown einer Region ausgeführt wird,
* bevor die Scene-Daten gelöscht werden.
Problem:
* viele Events passieren erst nachdem wichtige Objektlisten bereits freigegeben wurden.
Diskutiert wurde:
* Nutzung des Backup-Events,
* mögliche neue „PreShutdown“-Events,
* Probleme mit Event-Reihenfolgen,
* Gefahr von Speicherverlusten bei Scene-Unload.
Ubit warnte:
* Scene-Unload sei generell problematisch,
* Speicher werde oft nicht sauber freigegeben.
---
### 6. Diskussion über Ctrl-C und Shutdown
Ein überraschend langer Teil des Meetings behandelte Konsolen-Shutdowns.
Wichtige Erkenntnisse:
* `Ctrl-C` ruft inzwischen sauber den normalen Shutdown-Prozess auf.
* `shutdown` und `quit` sind identische Befehle.
* Shutdown wartet auf Backups bevor beendet wird.
Außerdem wurde gewarnt:
* wenn die Konsole markiert oder gescrollt wird,
kann das Log-Ausgabesystem blockieren,
wodurch Regionen scheinbar „einfrieren“.
---
### 7. Firestorm Viewer und Gruppen-System
Nebenbei wurde erwähnt:
* eine neue Firestorm-Beta ist erschienen,
* Gruppenfunktionen fühlen sich weniger träge an,
* hauptsächlich kosmetische Verbesserungen.
Außerdem wurde über alternative Gruppenmodule gesprochen:
* insbesondere XML-basierte Varianten.
---
### 8. Standalone → Grid-Migration
Cuga Rajal berichtete:
* sein System wurde erfolgreich von Standalone auf Grid-Betrieb umgestellt.
* Die Grid-Version wirke insgesamt „snappier“ und performanter.
Vincent half dabei intensiv bei der Migration.
---
## Gesamteindruck des Meetings
Das Meeting war stark technisch geprägt und fokussierte sich vor allem auf:
* Low-Level-Protokolle,
* Viewer-Caching,
* Threading,
* alte Architekturprobleme,
* Performance-Optimierungen,
* Shutdown-Mechanismen,
* und schwer reproduzierbare Bugs.
Besonders deutlich wurde:
* OpenSimulator kämpft weiterhin mit historischem Legacy-Code,
* viele Probleme liegen tief in alten Viewer-/Protokollstrukturen,
* gleichzeitig wird kontinuierlich modernisiert und optimiert.
Das Meeting drehte sich hauptsächlich um aktuelle Codeänderungen, Performance-Probleme, Viewer-/Cache-Fehler sowie Infrastruktur- und Shutdown-Themen in OpenSimulator.
### 1. Änderungen und Verbesserungen im Code
Ubit Umarov berichtete über mehrere kleinere Änderungen im OpenSimulator-Code:
* Ein Pull Request von Holoneon wurde übernommen, der einen Fehler bei `AssetTransactionModule` behebt. Dabei wurde ein Konfigurationswert (`min asset upload level`) zuvor nicht korrekt gelesen.
* Danach wurde die Konfigurationslogik weiter verbessert:
* Neue Methode `GetFirstConfigVarFromSections<T>` eingeführt.
* Vorteil: Die Suche stoppt sofort beim ersten Treffer statt alle Config-Sektionen unnötig zu durchsuchen.
* Dadurch weniger Overhead und bessere Performance.
Außerdem wurden viele kleinere „kosmetische“ Modernisierungen vorgenommen:
* Ersetzen von `Dictionary.Contains()` durch `TryGetValue()`
* Ziel:
* weniger doppelte Hash-Lookups,
* weniger unnötige Suchvorgänge,
* saubererer und effizienterer Code.
Es wurde mehrfach erwähnt, dass ein Großteil des OpenSim-Codes sehr alt sei und moderne .NET-Methoden beim ursprünglichen Schreiben teilweise noch nicht verbreitet waren.
---
### 2. Diskussion über Asset-Spam / Asset-Bombing
Bianca Blast berichtete über ein Problem mit sogenanntem „Asset Bombing“:
* Ein Benutzer konnte in kurzer Zeit extrem viele kleine Assets hochladen.
* Beispiel:
* etwa 100.000 Assets in ungefähr 10 Sekunden.
* Die hochgeladenen Dateien waren überwiegend kleine Animationen vom Typ 20.
Diskutiert wurde:
* ob ein Rate-Limiter direkt im Asset-Storage eingebaut werden sollte,
* oder ob das Problem bereits „vorne“ im Netzwerk-/Viewer-Bereich abgefangen werden sollte.
Ubit bemerkte dazu ironisch:
> „OpenSim vertraut seinen Benutzern …“
Die Teilnehmer waren sich einig:
* praktisch alle Systeme sollten heute irgendeine Form von Rate-Control besitzen.
---
### 3. Unsichtbare Prims / Viewer-Cache-Probleme
Ein großer Teil des Meetings beschäftigte sich mit einem schwer reproduzierbaren Problem:
* bestimmte Objekte („Prims“) werden im Viewer manchmal unsichtbar.
Vincent Sylvester erklärte:
* Das Problem tritt regionenabhängig auf.
* Nach bestimmten Scene-Updates funktionieren Regionen teilweise tagelang korrekt.
* Danach erscheinen plötzlich wieder unsichtbare Objekte.
* Besonders merkwürdig:
* welche Objekte fehlen, ändert sich ständig,
* manche Objekte laden immer korrekt,
* das Verhalten wirkt inkonsistent.
### Vermutete Ursachen
Diskutiert wurden mehrere mögliche Ursachen:
#### Objekt-Cache des Viewers
Ubit kritisierte den Viewer-Cache sehr deutlich:
* der Cache speichere LLUDP-Nachrichten statt echter Objekte,
* das Design sei problematisch,
* möglicherweise werde der Cache „vergiftet“.
#### Terse Updates
Es wurde beobachtet:
* das Senden von sogenannten „terse updates“ scheint das Problem oft temporär zu beheben.
Allerdings:
* das gilt eher als Workaround („Bandaid“) statt echte Lösung.
* Vermutlich zwingt ein Terse-Update den Viewer dazu, Objekte neu zu laden.
#### Viewer-/Protokoll-Inkompatibilität
Die Teilnehmer vermuten:
* Änderungen in modernen Viewern könnten alte Protokollfehler sichtbar gemacht haben.
* Möglicherweise existiert seit Jahren ein versteckter Kommunikationsfehler zwischen Viewer und Simulator.
Es wurde mehrfach beklagt:
* mangelnde Dokumentation des Protokolls,
* hoher technischer Schuldenstand („tech debt“),
* komplizierter Legacy-Code.
---
### 4. Threading und Performance
Ein weiterer Schwerpunkt war Multithreading und Threadpools.
Ubit erklärte:
* `Util.FireAndForget`
* nutzt den Threadpool,
* blockiert nicht den Hauptthread,
* eignet sich für asynchrone Aufgaben.
Außerdem gab es Kritik an:
* Microsofts Standard-Threadpool,
* .NET Tasks,
* langsamer Thread-Skalierung,
* möglicher Thread-Starvation.
Ubit bevorzugt weiterhin:
* den älteren „SmartThreadPool“,
* da dieser in manchen Szenarien stabiler arbeite.
---
### 5. Region-Shutdown und Events
Vincent suchte nach einem Mechanismus:
* der beim Shutdown einer Region ausgeführt wird,
* bevor die Scene-Daten gelöscht werden.
Problem:
* viele Events passieren erst nachdem wichtige Objektlisten bereits freigegeben wurden.
Diskutiert wurde:
* Nutzung des Backup-Events,
* mögliche neue „PreShutdown“-Events,
* Probleme mit Event-Reihenfolgen,
* Gefahr von Speicherverlusten bei Scene-Unload.
Ubit warnte:
* Scene-Unload sei generell problematisch,
* Speicher werde oft nicht sauber freigegeben.
---
### 6. Diskussion über Ctrl-C und Shutdown
Ein überraschend langer Teil des Meetings behandelte Konsolen-Shutdowns.
Wichtige Erkenntnisse:
* `Ctrl-C` ruft inzwischen sauber den normalen Shutdown-Prozess auf.
* `shutdown` und `quit` sind identische Befehle.
* Shutdown wartet auf Backups bevor beendet wird.
Außerdem wurde gewarnt:
* wenn die Konsole markiert oder gescrollt wird,
kann das Log-Ausgabesystem blockieren,
wodurch Regionen scheinbar „einfrieren“.
---
### 7. Firestorm Viewer und Gruppen-System
Nebenbei wurde erwähnt:
* eine neue Firestorm-Beta ist erschienen,
* Gruppenfunktionen fühlen sich weniger träge an,
* hauptsächlich kosmetische Verbesserungen.
Außerdem wurde über alternative Gruppenmodule gesprochen:
* insbesondere XML-basierte Varianten.
---
### 8. Standalone → Grid-Migration
Cuga Rajal berichtete:
* sein System wurde erfolgreich von Standalone auf Grid-Betrieb umgestellt.
* Die Grid-Version wirke insgesamt „snappier“ und performanter.
Vincent half dabei intensiv bei der Migration.
---
## Gesamteindruck des Meetings
Das Meeting war stark technisch geprägt und fokussierte sich vor allem auf:
* Low-Level-Protokolle,
* Viewer-Caching,
* Threading,
* alte Architekturprobleme,
* Performance-Optimierungen,
* Shutdown-Mechanismen,
* und schwer reproduzierbare Bugs.
Besonders deutlich wurde:
* OpenSimulator kämpft weiterhin mit historischem Legacy-Code,
* viele Probleme liegen tief in alten Viewer-/Protokollstrukturen,
* gleichzeitig wird kontinuierlich modernisiert und optimiert.
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.


![[-]](https://www.gridtalk.de/images/collapse.png)