Aller au contenu

« Réunion du 06-08-2024 » et « Réunion du 20-08-2024 » : différence entre les pages

De OSWiki
(Différence entre les pages)
Page créée avec « = Changements du code de la semaine= == Références nulles == *[http://opensimulator.org/viewgit/?a=commit&p=opensim&h=f1b6d9186e26d4219bf13f7f972c378de895e5b5 Commit f1b6d9] et [http://opensimulator.org/viewgit/?a=commit&p=opensim&h=70fa48280cd0fe93dff10537aec75d2ac7db4fb3 Commit 70fa48]: solutions de contournement pour certaines '''références nulles'''. [http://opensimulator.org/mantis/view.php?id=9135 Mantis 9135] == Temps de calcul CPU == *[http://opensim... »
 
Page créée avec « = Changements du code de la semaine= === Certificats SSL auto-signés === ====Ubit Umarov a intégré les Pull-request d'Adil El Farissi ==== Ces pull-request ajoutent du code pour faire des certificats auto-signés en utilisant les outils '''dotnet'''. La création de [https://fr.wikipedia.org/wiki/Certificat_autosign%C3%A9 '''certificats auto-signés'''] [https://fr.wikipedia.org/wiki/Transport_Layer_Security '''SSL'''] à chaqu... »
 
Ligne 1 : Ligne 1 :
= Changements du code de la semaine=
= Changements du code de la semaine=
== Références nulles ==
=== Certificats SSL auto-signés ===
*[http://opensimulator.org/viewgit/?a=commit&p=opensim&h=f1b6d9186e26d4219bf13f7f972c378de895e5b5 Commit f1b6d9] et [http://opensimulator.org/viewgit/?a=commit&p=opensim&h=70fa48280cd0fe93dff10537aec75d2ac7db4fb3 Commit 70fa48]: solutions de contournement pour certaines '''références nulles'''. [http://opensimulator.org/mantis/view.php?id=9135 Mantis 9135]
====Ubit Umarov a intégré les Pull-request d'Adil El Farissi ====
Ces pull-request ajoutent du code pour faire des certificats auto-signés en utilisant les outils [[Lexique_des_réunions#dotnet|'''dotnet''']]. La création de [https://fr.wikipedia.org/wiki/Certificat_autosign%C3%A9 '''certificats auto-signés'''] [https://fr.wikipedia.org/wiki/Transport_Layer_Security '''SSL'''] à chaque démarrage d'une standalone  est une solution pratique et efficace pour gérer les  adresses IP non-fixes ou les changements d'environnement et pour utiliser SSL avec une Standolone.
* [http://opensimulator.org/viewgit/?a=commit&p=opensim&h=c2c3ca418acb314ff94178f792c3fbe0815fd416 '''Commit c2c3ca''']] : Implémentation de la création et du renouvellement de certificats SSL auto-signés.
* [http://opensimulator.org/viewgit/?a=commit&p=opensim&h=ac9ed3d5d140ae2ad0d7f2d4d92551b75fc833eb '''Commit ac9ed'''3]: Ajout du support des certificats auto-signés à Robust, à osGetLinkInventoryKeys plus quelques corrections.
* [http://opensimulator.org/viewgit/?a=commit&p=opensim&h=207c3d1e71b00bdba4dabd63d7274e8f4a395a59 '''Commit 207c3d''']: Rétablissement de certains paramètres par défaut et correction du support SSL
{{NDLR|fond=white |bord=green|message = <br>
* '''Pull-request''' (PR) :  Lorsqu'un développeur souhaite intégrer ses changements dans la branche principale d'un dépôt, il crée un pull request. Cela permet aux autres membres de l'équipe de revoir, commenter et discuter des modifications avant qu'elles ne soient fusionnées dans le code principal.
}}


== Temps de calcul CPU ==
Il faut noter que bien que des efforts aient été faits pour intégrer le support SSL, il n'est pas encore entièrement fonctionnel. Dans ces cas, il peut y avoir des redirections entre les connexions sécurisées et non sécurisées. Il reste encore beaucoup de travail à faire pour que tout cela fonctionne correctement.
*[http://opensimulator.org/viewgit/?a=commit&p=opensim&h=d9cfb3bcae4365bb1a20652d4465a25f6db191d7 Commit d9cfb3]:  amélioration du '''temps de calcul CPU pour la résolution des scripts''', en particulier sous Windows.
 
* Remplacement de '''datetime''' par '''stopwatch'''.  
====Extension du code ====
* Le temps de résolution passe de 15ms à 0.1μs sur la plupart des systèmes Window et de 1ms à 0.1μs sur GNU/Linux.
* [http://opensimulator.org/viewgit/?a=commit&p=opensim&h=79dbca84f96064a92e20ff27e2d3829e7801fa38 '''Commit 79dbca'''] : Quelques modifications. Dans certains cas, il est difficile de savoir si une ressource utilise HTTP ou HTTPS. Il se peut que les deux soient nécessaires, avec éventuellement une redirection de HTTP vers HTTPS. TODO
* Questions débattues pendant la réunion : a t-on besoin d'une vitesse de calcul aussi rapide dans OpenSim, quels impact cela pourrait avoir sur le CPU ?
* [http://opensimulator.org/viewgit/?a=commit&p=opensim&h=8eef70ec9cde95d0eb03c9cc47f1ab18475d8ce6 '''Commit 8eef70'''] : ... Dans certains cas, il est impossible de déterminer si une ressource utilise HTTP ou HTTPS. Il se peut que les deux soient nécessaires, avec éventuellement une redirection de HTTP vers HTTPS.TODO
* [http://opensimulator.org/viewgit/?a=commit&p=opensim&h=4a72e92a749a1d5447182be78cab260c4a5e5554 '''Commit 4a72e9'''] : Correction de la vérification de l'option EnableSelfsignedCertSupport.


= Avertissement =
= Avertissement =
{{Avertissement_résumé|fond=pink |bord=red |message = Ce résumé existe pour orienter vos recherches. Des erreurs d'interprétation ne sont pas à exclure. Pour plus de précisions, veuillez vous référer aux sources ou vous adresser directement aux développeurs d'OpenSimulator en assistant aux [http://opensimulator.org/wiki/Office_hours réunions du mardi] ou  sur [http://opensimulator.org/wiki/IRC le canal IRC]. Je ne fais pas partie des développeurs, ne vous adressez pas à moi pour les joindre. Merci.😉}}
{{Avertissement_résumé|fond=pink |bord=red |message = Ce résumé existe pour orienter vos recherches. Des erreurs d'interprétation ne sont pas à exclure. Pour plus de précisions, veuillez vous référer aux sources ou vous adresser directement aux développeurs d'OpenSimulator en assistant aux [http://opensimulator.org/wiki/Office_hours réunions du mardi] ou  sur [http://opensimulator.org/wiki/IRC le canal IRC]. Je ne fais pas partie des développeurs, ne vous adressez pas à moi pour les joindre. Merci.😉}}
= Modules =
==Optimisation de la génération des carreaux de carte==
* Il y a plusieurs mois Vincent Sylvester avait commencé à optimiser le code de génération des [[Lexique_des_réunions#Maptile|'''maptiles''']], il avait déplacé la plupart des tâches de génération dans  un [[Lexique_des_réunions#Thread|'''thread''']] indépendant.Ainsi, la génération des carreaux de cartes ne bloque pas le reste du programme, ce qui améliore son efficacité.
* Grâce à cette optimisation, Vincent Sylvester a pu créer des milliers de carreaux de carte à partir d'une seule tuile (map-1 tiles) en environ 20 minutes, pour créer des niveaux de zoom.
* Amélioration supplémentaire avec le [[Lexique_des_réunions#Maptile|'''multithreading''']] : le traitement des carreaux un par un et leur ajout à des fichiers n'était  pas assez efficace. Vincent Sylvester a donc décidé de paralléliser l'ensemble du processus. Il a utilisé plusieurs threads pour traiter plusieurs carreaux en même temps, ce qui permet de gagner du temps.
* Résultat, il a pu générer  5085 tuiles de niveau de zoom  pour 13056 carreaux de carte en seulement 144,23 secondes.
* Ce code s'exécute sur un minuteur et vérifie si de nouveaux fichiers map-1 sont trouvés en fonction de la date, puis, normalement, il ajoute les niveaux. Dans OpenSimulator, lorsque 20 régions uniques  doivent être intégrées à un même niveau de zoom, leur enregistrement sur la grille déclenche un minuteur pour ajouter le carreau de carte de ce niveau. Si une région est démarrée pendant ce processus, cela réinitialise le minuteur, certaines tuiles ne sont pas générées donc, elles manquent. En modifiant le système pour qu'il vérifie régulièrement la date et l'heure des fichiers et ajoute tous ceux qui manquent, ce problème peut être résolu. Les autres améliorations visent à rendre le processus plus rapide et à permettre le rafraîchissement de tous les niveaux.
* Maintenant le goulot d'étranglement ne se situe plus au niveau du code mais au niveau des CPU et des disques. Il faut encore nettoyer le code et résoudre de petites incohérences.


= Viewers=
= Modules=
== Viewer Dayturn ==
==Module de chat vocal==
* Pas beaucoup d'évolution depuis quelques semaines, ajout d'un peu de code et nettoyage.
* Ubit Umarov  a examiné [[Lexique_des_réunions#WebRTC | '''WebRTC''']] et il a testé la fonctionnalité de communication '''peer-to-peer''' (P2P) dans Second Life. Cependant, il a constaté que Second Life ne propose pas cette fonctionnalité, mais '''uniquement la voix sur les parcelles''' pour la grille principale.
* La base du code Liden Lab devient de plus difficile à suivre.
* Second Life a changé le code de la voice 2 jours avant la réunion.
* Janus Beg a listé les régions de Second Life où tester WebRTC sur l'un de ses blogs ou dans les  annonces bêta. Il y en a 4 et elles  doivent se nommer webrtcx1 à 4.
 
= Noyaux =
== Problème de sérialisation binaire obsolète : sécurité et gestion des données ==
=== Le problème posé ===
* Mike Chase soulève un problème concernant '''la sérialisation binaire''', qui est obsolète depuis [[Lexique_des_réunions#dotnet |'''.NET 5''']] et qui pose des problèmes de sécurité. Il pense qu'il est nécessaire de revoir la manière dont les données sont sérialisées dans OpenSimulator, en tenant compte de la grande quantité de données héritées qui utilisent actuellement cette méthode (assets, etc.). Il invite les autres à réfléchir à une solution globale.
{{NDLR|fond=white |bord=green|message = <br>
* [https://fr.wikipedia.org/wiki/S%C3%A9rialisation '''La sérialisation'''] est le codage d'une information sous la forme d'une suite d'informations plus petites pour, par exemple, sa sauvegarde ou son transport sur le réseau. L'activité réciproque, visant à décoder cette suite pour créer une copie conforme de l'information d'origine, s'appelle la désérialisation.
* '''Sérialisation binaire''' : est le processus de conversion d'objets ou de structures de données en un format binaire, qui peut être facilement stocké ou transmis. La sérialisation binaire peut poser des problèmes de compatibilité et de sécurité.
* '''Sérialisation textuelle''' : sérialisation lisible, plus facilement validés, plus simple ce qui réduit les risques, interopérabilité.  Exemple JSON ou XML.
}}
===Discussion ===
====Point de vue de Mike Chase ====
* Mike Chase commence tout juste à examiner le problème. Il a peur d'avoir des '''problèmes  pour mettre à jour au-delà de [[Lexique_des_réunions#dotnet |dotnet 8]]''' si une solution n'est pas trouvée. Il pense qu'il pourrait y avoir des dépendances qui suppriment du code même dans dotnet 8. Il va commencer à chercher des aternatives et reste ouvert aux solutions décrites par Ubit Umarov.
* Pour lui '''le problème réside surtout dans l'injection lors de la désérialisation'''.  
* La suggestion de Microsoft est de passer à la sérialisation JSON [https://fr.wikipedia.org/wiki/JavaScript_Object_Notation].
* Il dit qu''''une première étape serait de faire l'inventaire de ce qui est affecté''', il va commencer par là.
* Quand il aura mieux cerné le problème il compte  revenir avec quelques suggestions.
 
====Point de vue d'Ubit Umarov====
* '''Ubit Umarov pense que la sérialisation binaire n'est pas un gros problème de sécurité'''. Il dit que jusqu'à présent tout fonctionne avec dotnet 8 et que le problème de sécurité est lié à la sérialisation automatique ou pire à la désérialisation faite par Microsoft.
* Si un jour il y avait un problème de compatibilité, il pense qu'il faudrait simplement « cloner » le code actuel pour que tout fonctionne avec les assets actuels.
* Il pense également qu'il faudrait avoir une sérialisation binaire pour toutes les communications.
* '''Il est contre l'utilisation d'une alternative telle que Linden Lab Structured Data (LLSD) proposée par Joe Magarac. Il n'est pas plus intéressé par JSON ou XML.'''
* Il propose '''MessagePack''' comme standard de format d'échange de données informatiques.
* Il est d'accord avec Joe Magarac et confirme que '''la sérialisation binaire est plus un problème pour les communications interrégion et pour les services de la grille'''.


== Problèmes liés au récentes modifications de Second Life ==
====Point de vue de Joe Magarac ====
=== Second Life ===
* Joe Magarac utilise XML LLSD, Notation LLSD, et binary LLSD écrit en Rust. Il donne le lien d''''une implémentation de LLSD en Rust'''[https://docs.rs/serde-llsd/latest/serde_llsd/].  
* Sur certains forums, il semble que '''quelques clients de Linden Lab sont fatigués par les changements''' et '''annulent leurs abonnements'''. Les gens ont passé des années à créer leurs environnements, et soudainement leur simulation ne ressemble plus à rien à moins de tout renouveler. Ils  achetent des assets [[Lexique_des_réunions#PBR | PBR]] alors qu'il suffit de désactiver une option.
* Il dit que le '''problème avec la sérialisation textuelle''' est que les données de type OpenSim/Second Life contiennent beaucoup de flottants, et que '''la conversion de ces données en chaînes de caractères et inversement est coûteuse et encombrante'''.
* Beaucoup de gens sur les groupes de Firestorm demandent de '''désactiver PBR'''. [[Lexique_des_réunions#Viewer_Coll_VL |'''Cool VL Viewer''']] permet cela et il implémente même '''"Advanced Lighting Model"''' ALM (le mode de rendu avancé). Il a 3 de moteurs de rendu ou plus.
* Il dit que la sérialisation n'est pas un problème de viewer.
* Mais Liden Lab va probablement rendre  [[Lexique_des_réunions#PBR | '''PBR''']] obligatoire à cause du '''viewer mobile'''. Ils poussent tous les viewers tiers à passer à [[Lexique_des_réunions#PBR | '''PBR''']]et à [[Lexique_des_réunions#WebRTC |'''WebRTC''']] rapidement. Ils sont forcés par les investisseurs. Il semble que Liden Lab dépensent beaucoup de dollars, ils embauchent beaucoup de codeurs.
* Liden Lab semble également envisager de revenir à baking côté viewer. Ils auraient trop de charge sur les systèmes de gestion de données.


=== Firestorm et OpenSim ===
==== Informations complémentaires ====
* '''Problèmes avec PBR''' : Depuis vendredi, il était impossible d'utiliser une version fonctionnelle de Firestorm avec PBR dans OpenSimulator.
{{NDLR|fond=white |bord=green|message = <br>
* Les seules versions qui fonctionnaient ont été retirées.
* [https://fr.wikipedia.org/wiki/JavaScript_Object_Notation '''JSON'''] : JavaScript Object Notation (JSON) est un format de données textuel dérivé de la notation des objets du langage JavaScript.
* Un nouveau lien a été ajouté, permettant au moins de récupérer les '''"bakes"''' d'avatar, mais cela ne concerne que les textures de peau, ce qui fait que l'avatar apparaît nu.
* [https://wiki.secondlife.com/wiki/LLSD '''Linden Lab Structured Data (LLSD)'''] : LLSD fournit un système de données flexible similaire aux systèmes de données des langages dynamiques tels que Perl et Python. Il prend en charge l'échange de données structurées entre des systèmes séparés.
* '''Les bake sur meshes ([[Lexique_des_réunions#BOM |BOM]])''' dépendent des avatars système et si l'avatar système ne fonctionne pas, le BOM ne fonctionnera pas non plus. BOM est en fait un système qui permet de faire fonctionner les wearables sur le maillage sans avoir besoin de couches alpha... etc.
* [https://fr.wikipedia.org/wiki/MessagePack '''MessagePack'''] est un format d'échange de données informatique. C'est un format binaire qui permet de représenter les structures de données simples comme les tableaux et les tableaux associatifs. MessagePack a pour objectif d' être le plus compact et le plus simple possible.
* Gavin Hird pense que seuls les BOM fonctionneront dans les futurs viewers pour s'adapter aux avatars des viewers mobiles.
}}


=== Migrations vers OpenSim ? ===
= Bugs =
* Vincent Sylvester se demande si cela veut dire que tous ceux qui ont encore de la matière grise vont migrer de Second Life vers OpenSim ?  
== Problème de texture/inventaire ==
* C'est possible mais,  il existe quelques raisons qui ne le permettent pas.
===Question ===
<ul>
* Est-il possible que le chargement des textures dans le monde lors de la connexion puisse déclencher le même problème de texture/inventaire que celui observé ?
<li>Certains sont tout simplement '''trop investis'''. Une chose est de déplacer votre présence, une autre de déplacer toutes vos affaires.</li>
=== Réponse ===
<li>Second Life ne rend très difficile un déménagement. '''L'importation de mesh est bloquée''', ce qui rend la tâche presque impossible.</li>
* Nous n'avons pas vu de problème de texture/inventaire...Les textures dans le monde sont pour la plupart séparées de l'inventaire. Les textures sont des assets.
<li>Même pour les créateurs, qui en théorie devraient avoir tout ce qu'il faut pour déplacer leur contenu, c'est un travail colossal. Sans compter '''les dépendances aux choses achetées'''.</li>
* Les crashs de l'inventaire sont du côté viewer et ne concernent peut-être que Firestorm.
<li></li>
</ul>


===Importation de mesh depuis SL vers OpenSim ===
== Erreur de serveur HTTP dans OpenSimulator ==
* La dernière fois qu' orbert tatham a essayé d'importer [[Lexique_des_réunions#Mesh |'''un mesh''']] depuis SL, '''la couche physique a été complètement détruite'''. Il a essayé toutes les solutions qu'il a pu trouver expliquées sur internet.
=== Question et description du  bug ===
* '''Collada''' exige que chaque objet séparé ait sa propre correspondance de collision qui lui soit assignée, ce qui peut être pénible à mettre en place, mais c'est une pratique standard de développement de jeux.
* Cuga Rajal voit occasionnellement une exception dans la console du serveur HTTP d'OpenSim.
* Ubit Umarov rappelle que '''les options "analyse" changent le format du maillage''' et rend les choses plus complexes. Cela peut faire échouer l'importation d'un mesh. Mais orbert tatham semble dire que même sans  utiliser l'analyse, cela ne fonctionne pas.  
<pre>
* Gavin Hird a cacher toutes les fonctionnalités d'analyses sur le viewer Dayturn pour OpenSim, il dit que cela crée beaucoup de confusions (ndrl: pour être polie).
  [BASE HTTP SERVER]: OSHttpServer.OSHttpListener had an exception System.Net.Sockets.SocketException (22): Invalid argument
==== Quelques solutions pratiques proposées par les participants ====
  at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, Boolean disconnectOnFailure, String callerName)
* '''Utilisation de maillages de physique simples''' : Vincent Sylvester mentionne qu'il crée un mesh de physique et dans les propriétés physique il définit le niveau de détail sur  "Lowest" (le plus bas niveau de détail), ce qui permet de contrôler le niveau de détail et d'assurer de bonnes performances physiques.
  at System.Net.Sockets.Socket.UpdateStatusAfterSocketOptionErrorAndThrowException(SocketError error, String callerName)
* '''Création de colliders (volume de collision) simples''' : Ubit Umarov suggère que dans de nombreux cas, ajouter quelques boîtes ou sphères peut suffire à créer des colliders efficaces, ce qui simplifie le processus de création de collisions.
  at OSHttpServer.OSHttpListener.AcceptLoop() in /Users/cuga/opensim/OpenSim/Framework/Servers/HttpServer/OSHttpServer/HttpListener.cs:line 145
* '''Téléchargement et réparation de meshes''' : Vincent Syslvester  propose de télécharger un mesh cassé et de créer des boîtes pour les parties, puis de les assigner, ce qui peut aider à corriger les problèmes de collision. Il mentionne également que les versions récentes de Blender ont modifié l'emplacement de certains outils, ce qui peut compliquer ce processus.
</pre>
* '''Éviter les trous pour les fenêtres''' : Vincent Sylvester dit qu'il ne crée plus de trous pour les fenêtres, car cela peut compliquer la gestion des collisions, en soulignant que les fenêtres ne sont pas des portes.
* Le serveur HTTP s'éteint, mais le serveur continue de fonctionner en pensant que tout va bien. La région reste inaccessible jusqul'arrêt manuel et le redémarrage. Il y a un thread suspendu qui nécessite un arrêt depuis la console.  
* '''Utilisation de la version la plus récente d'outils''' : Gavin Hird fait référence à une nouvelle version d'un outil (meshoptimizer) qu'il prévoit de tester, ce qui montre l'importance de rester à jour avec les outils disponibles pour améliorer la gestion des meshes.
* La région est redémarrée tous les quelques jours. Cela n'arrive qu'une fois toutes les deux semaines environ, mais cela fait un an que cela se produit.
* '''Importance de la séparation des meshes''' : Ubit Umarov souligne qu'il est souvent nécessaire de diviser le mesh afin que chaque upload soit une seule prim, ce qui est une bonne pratique pour la gestion des objets dans l'environnement virtuel.
* Dotnet est mis à jour régulièrement quand les mises à jour sortent. Version de dotnet8 et trunk sans rien modifier
* '''Création de physiques minimales''' : orbert tatham qu'il crée une physique minimale, grossièrement façonnée comme les éléments visibles, ce qui peut être une approche efficace pour simplifier la gestion des collisions.
* N'importe qui peut atteindre ce port avec n'importe quoi.
* '''Utiliser des primitives''' : La construction de Prim est un art en soi mais il n'y a plus beaucoup de gens qui le maîtrisent. On peut construire des maisons et autres avec des primitives à l'échelle, les exporter en OBJ et les réimporter en meshes.


===Utilisation de glTF ===  
=== Réponse ===
* '''Second Life''' est en train de remplacer Collada et d'utiliser '''glTF''' dans le viewer. Ubit Umarov et Vincent Sylvester n'ont pas l'air d'apprécier ce changement. Ils poussent les viewer tiers à faire pareil mais le peuvent-ils ?
* Il est la possible que le serveur reçoive des requêtes HTTP inattendues, ce qui pourrait causer des erreurs. Des données corrompues ou malveillantes pourraient être à l'origine des problèmes.
* D'après ce que Ubit Umarov a lu, Second Life prévoit de remplacer tous les éléments existants (comme les modèles, les textures, etc.) par des équivalents utilisant le format glTF. Il ajoute " les primitives ne fonctionnes plus ? Achetez en de nouvelles ! "
* Un proxy pourrait surveiller les requêtes entrantes et l'utilisation  un "pinger"[https://fr.wikipedia.org/wiki/Ping_(logiciel)] servirait à redémarrer automatiquement le serveur. Il faudrait  vérifier les journaux système et d'autres ressources pour diagnostiquer le problème.
* Les piques humoristiques vont bon train pour exprimer des préoccupations sur les exigences matérielles et les performances liées à l'utilisation de glTF dans le viewer de Second Life, en particulier en ce qui concerne les ressources nécessaires pour faire fonctionner des graphismes avancés.
* Cela pourrait être un problème spécifique à macOS, il faudrait  vérifier les journaux du système macOS. Gavin Hird donne un [https://www.dayturn.com/viewer/index.php?resources/increasing-system-resource-limits-on-macos.91/ lien] qui indique comment augmenter les limites  de ressources du système ( le nombre de fichiers ouverts par processus) sur macOS.


'''Quelques exemples'''
= Viewers=
* '''"Commencez à économiser pour acheter un 4090."''': carte graphique NVIDIA GeForce RTX 4090
==Crashs de FS 7.x ==
* '''"Et un abonnement perpétuel à Substance Painter."''' :  Substance Painter est un logiciel de texturage 3D qui nécessite un abonnement. Cette remarque suggère que les utilisateurs devront investir dans des outils coûteux pour créer des textures de haute qualité pour leurs modèles.
===[[Réunion_du_16-07-2024#PBR_dans_Firestorm_7.1.9 | Situation au 16 juillet 2024]]===
*'''"Et une nouvelle climatisation pour la maison..."'''  
=== Problèmes ===
*'''"La région LBSA transforme mon PC en chauffage d'appoint."'''
* Sur le JIRA de Firestorm il semble que les utilisateurs rapportent des crashs sur les versions Firestorm 7.x .  
* '''"Il va falloir que ça marche aussi pour les mobiles, ça va faire exploser les téléphones partout."'''
* Le problème c'est  qu'ils ne disent pas s'ils testent la versoion alpha ou une version plus ancienne. Ubit Umarov n'a pas de crash sur les versions beta/alpha récentes.  
* '''"Il suffit de transporter une éolienne."'''
=== Solutions ===
* Ubit Umarov a étudié les raisons des crashs de FS 7.x quand le cache est vide, il a recherché une requête de Firestorm envoyée pour récupérer l'inventaire au moment de la connexion.
* Mike Chase,  signale qu'il a trouvé une solution de contournement en réglant sur false un paramètre de débogage d'AISv3 [https://wiki.secondlife.com/wiki/Agent_Inventory_Service]. Ubit Umarov pense que cela ne devrait pas avoir d'impact. Mike Chase confirme mais il maintient que cela a un impact probablement dû à l'absence de capability.
{{NDLR|fond=white |bord=green|message = <br>
* [https://opensimworld.com/user/mike.chase Mike Chase] : développeur du fork [[Réunion_du_12-12-2023#OpenSim_NGC | OpenSim_NGC]]
}}
* Ubit Umarov a identifié le changement de code nécessaire pour permettre le chargement complet de l'inventaire à la connexion. La solution consiste sipmplement à commenter un "else" dans le code. Le chargement complet de l'inventaire est particulièrement important pour les utilisateurs qui se déplacent entre différentes grilles ('''hypergrid'''). Si les utilisateurs prenaient l'habitude de récupérer tout leur inventaire avant de se téléporter  cela ne poserait pas de problème.
{{NDLR|fond=white |bord=green|message = <br>
* '''Si les utilisateurs prenaient l'habitude de récupérer tout leur inventaire avant de se téléporter''' : Je ne vois pas bien ce que cela veut dire, attendre que l'inventaire soit complètement enregistré dans la base de données ? Une option que je ne connais pas ? )
}}


===Un viewer pour OpenSim ===  
=== Version alpha et beta testées ===
* Tout le monde est d'accord pour dire qu'il faut qu'OpenSim ait sont propre viewer. Mais c'est un projet énorme qui demanderait des développeurs supplémentaires (8 personnes de plus).
* Micke Chase est en train de parler avec Beq Janus(Développeur et chef de projet Firestorm) pour obtenir une version alpha claire à tester.  Il a le même viewer alpha que Ubit Umarov, c'est à dire la version du 11 Août, un viewer avec WebRTC. D'après Ubit Umarov Beq a apporté un changement aux délais d'inventaire, ce qui a peut-être corrigé les plantages. Le viewer doit être testé. Cela a corrigé le problème pour Ubit Umarov et pour toutes les personnes à qui il a posé la question. Cela concerne aussi la dernière version Beta. '''Donc tout indique que c'est un problème de delais''' lié à la manière dont les coroutines sont gérées ou contrôlées dans le code. '''Cela pourrait cacher un problème plus profond''' qui pourrait nous toucher plus tard.
* Vincent Sylvester dit qu'il est temps d'apprendre le language Rust[https://fr.wikipedia.org/wiki/Rust_(langage)] pour aider Joe Magarac à developper son viewer [[Lexique_des_réunions#Viewer_Sharpview |'''Sharpview''']]. Sharpview a déjà trois ans d'expérience.  
{{NDLR|fond=white |bord=green|message = <br>
* Mais Rust est en train de perdre ses points forts.
* Les coroutines [https://fr.wikipedia.org/wiki/Coroutine] permettent de gérer des opérations longues, comme le chargement d'un inventaire, de manière fluide et efficace, sans bloquer l'interface utilisateur.
* Orbert  Tatham signale que Rust est le seul langage à mémoire sûre sans runtime [https://fr.wikipedia.org/wiki/Environnement_d%27ex%C3%A9cution] et garbage collection[https://fr.wikipedia.org/wiki/Ramasse-miettes_(informatique)]. Il ajoute bonne chance pour écrire un viewer dans n'importe quel autre langage.
}}
* '''Ubit Umarov demande aux utilisateurs de tester la version alpha de Firestorm''' ce qui permettrait de visualiser tous les problèmes liés au chargement d'inventaire à la connexion. Il dit aussi qu'il qu'il est nécessaire de réduire les problèmes liés à la '''suitecase''' utilisée en hypergrid.


==Viewer CoolVL ==
=Sharpview=
* [[Lexique_des_réunions#Viewer_Coll_VL|Cool VL]] viewer développé en C++ pour Linux/Mac/Win. Branche du viewer de SL V1.
* '''Joe Magarac n'a pas encore touché à l'inventaire.'''
* Henri Beauchamp a ajouté le terrain [[Lexique_des_réunions#PBR | PBR]]
* Ubit Umarov pense que Sharpview ne sera pas confronté au problème de chargement d'inventaire au démarrage puisque le viewer utilise sa propre gestion des threads en Rust. Il dit à Joe Magarac de noter qu''''OpenSim a besoin d'une mise à jour complète du cache à la connexion''' pour éviter les problèmes de téléportation en Hypergrid plus tard.
* La version Mac semble mal fonctionner d'après Gavin Hirt.  
* Ubit Umarov dit que Cool VL a consommé 250 W sur la région Ubittest2 alors que Firestorm en a consommé 120 mais il faut dire que Cool VL fait 140 fps et firestorme 30fps.


= Source=
= Source=
http://opensimulator.org/wiki/Chat_log_from_the_meeting_on_2024-08-06
http://opensimulator.org/wiki/Chat_log_from_the_meeting_on_2024-08-20

Dernière version du 30 novembre 2024 à 16:04

Changements du code de la semaine

Certificats SSL auto-signés

Ubit Umarov a intégré les Pull-request d'Adil El Farissi

Ces pull-request ajoutent du code pour faire des certificats auto-signés en utilisant les outils dotnet. La création de certificats auto-signés SSL à chaque démarrage d'une standalone est une solution pratique et efficace pour gérer les adresses IP non-fixes ou les changements d'environnement et pour utiliser SSL avec une Standolone.

  • Commit c2c3ca] : Implémentation de la création et du renouvellement de certificats SSL auto-signés.
  • Commit ac9ed3: Ajout du support des certificats auto-signés à Robust, à osGetLinkInventoryKeys plus quelques corrections.
  • Commit 207c3d: Rétablissement de certains paramètres par défaut et correction du support SSL
NDLR  :
  • Pull-request (PR) : Lorsqu'un développeur souhaite intégrer ses changements dans la branche principale d'un dépôt, il crée un pull request. Cela permet aux autres membres de l'équipe de revoir, commenter et discuter des modifications avant qu'elles ne soient fusionnées dans le code principal.


Il faut noter que bien que des efforts aient été faits pour intégrer le support SSL, il n'est pas encore entièrement fonctionnel. Dans ces cas, il peut y avoir des redirections entre les connexions sécurisées et non sécurisées. Il reste encore beaucoup de travail à faire pour que tout cela fonctionne correctement.

Extension du code

  • Commit 79dbca : Quelques modifications. Dans certains cas, il est difficile de savoir si une ressource utilise HTTP ou HTTPS. Il se peut que les deux soient nécessaires, avec éventuellement une redirection de HTTP vers HTTPS. TODO
  • Commit 8eef70 : ... Dans certains cas, il est impossible de déterminer si une ressource utilise HTTP ou HTTPS. Il se peut que les deux soient nécessaires, avec éventuellement une redirection de HTTP vers HTTPS.TODO
  • Commit 4a72e9 : Correction de la vérification de l'option EnableSelfsignedCertSupport.

Avertissement

Attention : Ce résumé existe pour orienter vos recherches. Des erreurs d'interprétation ne sont pas à exclure. Pour plus de précisions, veuillez vous référer aux sources ou vous adresser directement aux développeurs d'OpenSimulator en assistant aux réunions du mardi ou sur le canal IRC. Je ne fais pas partie des développeurs, ne vous adressez pas à moi pour les joindre. Merci.😉


Modules

Module de chat vocal

  • Ubit Umarov a examiné WebRTC et il a testé la fonctionnalité de communication peer-to-peer (P2P) dans Second Life. Cependant, il a constaté que Second Life ne propose pas cette fonctionnalité, mais uniquement la voix sur les parcelles pour la grille principale.
  • Second Life a changé le code de la voice 2 jours avant la réunion.
  • Janus Beg a listé les régions de Second Life où tester WebRTC sur l'un de ses blogs ou dans les annonces bêta. Il y en a 4 et elles doivent se nommer webrtcx1 à 4.

Noyaux

Problème de sérialisation binaire obsolète : sécurité et gestion des données

Le problème posé

  • Mike Chase soulève un problème concernant la sérialisation binaire, qui est obsolète depuis .NET 5 et qui pose des problèmes de sécurité. Il pense qu'il est nécessaire de revoir la manière dont les données sont sérialisées dans OpenSimulator, en tenant compte de la grande quantité de données héritées qui utilisent actuellement cette méthode (assets, etc.). Il invite les autres à réfléchir à une solution globale.
NDLR  :
  • La sérialisation est le codage d'une information sous la forme d'une suite d'informations plus petites pour, par exemple, sa sauvegarde ou son transport sur le réseau. L'activité réciproque, visant à décoder cette suite pour créer une copie conforme de l'information d'origine, s'appelle la désérialisation.
  • Sérialisation binaire : est le processus de conversion d'objets ou de structures de données en un format binaire, qui peut être facilement stocké ou transmis. La sérialisation binaire peut poser des problèmes de compatibilité et de sécurité.
  • Sérialisation textuelle : sérialisation lisible, plus facilement validés, plus simple ce qui réduit les risques, interopérabilité. Exemple JSON ou XML.


Discussion

Point de vue de Mike Chase

  • Mike Chase commence tout juste à examiner le problème. Il a peur d'avoir des problèmes pour mettre à jour au-delà de dotnet 8 si une solution n'est pas trouvée. Il pense qu'il pourrait y avoir des dépendances qui suppriment du code même dans dotnet 8. Il va commencer à chercher des aternatives et reste ouvert aux solutions décrites par Ubit Umarov.
  • Pour lui le problème réside surtout dans l'injection lors de la désérialisation.
  • La suggestion de Microsoft est de passer à la sérialisation JSON [1].
  • Il dit qu'une première étape serait de faire l'inventaire de ce qui est affecté, il va commencer par là.
  • Quand il aura mieux cerné le problème il compte revenir avec quelques suggestions.

Point de vue d'Ubit Umarov

  • Ubit Umarov pense que la sérialisation binaire n'est pas un gros problème de sécurité. Il dit que jusqu'à présent tout fonctionne avec dotnet 8 et que le problème de sécurité est lié à la sérialisation automatique ou pire à la désérialisation faite par Microsoft.
  • Si un jour il y avait un problème de compatibilité, il pense qu'il faudrait simplement « cloner » le code actuel pour que tout fonctionne avec les assets actuels.
  • Il pense également qu'il faudrait avoir une sérialisation binaire pour toutes les communications.
  • Il est contre l'utilisation d'une alternative telle que Linden Lab Structured Data (LLSD) proposée par Joe Magarac. Il n'est pas plus intéressé par JSON ou XML.
  • Il propose MessagePack comme standard de format d'échange de données informatiques.
  • Il est d'accord avec Joe Magarac et confirme que la sérialisation binaire est plus un problème pour les communications interrégion et pour les services de la grille.

Point de vue de Joe Magarac

  • Joe Magarac utilise XML LLSD, Notation LLSD, et binary LLSD écrit en Rust. Il donne le lien d'une implémentation de LLSD en Rust[2].
  • Il dit que le problème avec la sérialisation textuelle est que les données de type OpenSim/Second Life contiennent beaucoup de flottants, et que la conversion de ces données en chaînes de caractères et inversement est coûteuse et encombrante.
  • Il dit que la sérialisation n'est pas un problème de viewer.

Informations complémentaires

NDLR  :
  • JSON : JavaScript Object Notation (JSON) est un format de données textuel dérivé de la notation des objets du langage JavaScript.
  • Linden Lab Structured Data (LLSD) : LLSD fournit un système de données flexible similaire aux systèmes de données des langages dynamiques tels que Perl et Python. Il prend en charge l'échange de données structurées entre des systèmes séparés.
  • MessagePack est un format d'échange de données informatique. C'est un format binaire qui permet de représenter les structures de données simples comme les tableaux et les tableaux associatifs. MessagePack a pour objectif d' être le plus compact et le plus simple possible.


Bugs

Problème de texture/inventaire

Question

  • Est-il possible que le chargement des textures dans le monde lors de la connexion puisse déclencher le même problème de texture/inventaire que celui observé ?

Réponse

  • Nous n'avons pas vu de problème de texture/inventaire...Les textures dans le monde sont pour la plupart séparées de l'inventaire. Les textures sont des assets.
  • Les crashs de l'inventaire sont du côté viewer et ne concernent peut-être que Firestorm.

Erreur de serveur HTTP dans OpenSimulator

Question et description du bug

  • Cuga Rajal voit occasionnellement une exception dans la console du serveur HTTP d'OpenSim.
   [BASE HTTP SERVER]: OSHttpServer.OSHttpListener had an exception System.Net.Sockets.SocketException (22): Invalid argument
   at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, Boolean disconnectOnFailure, String callerName)
   at System.Net.Sockets.Socket.UpdateStatusAfterSocketOptionErrorAndThrowException(SocketError error, String callerName)
   at OSHttpServer.OSHttpListener.AcceptLoop() in /Users/cuga/opensim/OpenSim/Framework/Servers/HttpServer/OSHttpServer/HttpListener.cs:line 145
  • Le serveur HTTP s'éteint, mais le serveur continue de fonctionner en pensant que tout va bien. La région reste inaccessible jusqu'à l'arrêt manuel et le redémarrage. Il y a un thread suspendu qui nécessite un arrêt depuis la console.
  • La région est redémarrée tous les quelques jours. Cela n'arrive qu'une fois toutes les deux semaines environ, mais cela fait un an que cela se produit.
  • Dotnet est mis à jour régulièrement quand les mises à jour sortent. Version de dotnet8 et trunk sans rien modifier
  • N'importe qui peut atteindre ce port avec n'importe quoi.

Réponse

  • Il est la possible que le serveur reçoive des requêtes HTTP inattendues, ce qui pourrait causer des erreurs. Des données corrompues ou malveillantes pourraient être à l'origine des problèmes.
  • Un proxy pourrait surveiller les requêtes entrantes et l'utilisation un "pinger"[3] servirait à redémarrer automatiquement le serveur. Il faudrait vérifier les journaux système et d'autres ressources pour diagnostiquer le problème.
  • Cela pourrait être un problème spécifique à macOS, il faudrait vérifier les journaux du système macOS. Gavin Hird donne un lien qui indique comment augmenter les limites de ressources du système ( le nombre de fichiers ouverts par processus) sur macOS.

Viewers

Crashs de FS 7.x

Situation au 16 juillet 2024

Problèmes

  • Sur le JIRA de Firestorm il semble que les utilisateurs rapportent des crashs sur les versions Firestorm 7.x .
  • Le problème c'est qu'ils ne disent pas s'ils testent la versoion alpha ou une version plus ancienne. Ubit Umarov n'a pas de crash sur les versions beta/alpha récentes.

Solutions

  • Ubit Umarov a étudié les raisons des crashs de FS 7.x quand le cache est vide, il a recherché une requête de Firestorm envoyée pour récupérer l'inventaire au moment de la connexion.
  • Mike Chase, signale qu'il a trouvé une solution de contournement en réglant sur false un paramètre de débogage d'AISv3 [4]. Ubit Umarov pense que cela ne devrait pas avoir d'impact. Mike Chase confirme mais il maintient que cela a un impact probablement dû à l'absence de capability.
NDLR  :


  • Ubit Umarov a identifié le changement de code nécessaire pour permettre le chargement complet de l'inventaire à la connexion. La solution consiste sipmplement à commenter un "else" dans le code. Le chargement complet de l'inventaire est particulièrement important pour les utilisateurs qui se déplacent entre différentes grilles (hypergrid). Si les utilisateurs prenaient l'habitude de récupérer tout leur inventaire avant de se téléporter cela ne poserait pas de problème.
NDLR  :
  • Si les utilisateurs prenaient l'habitude de récupérer tout leur inventaire avant de se téléporter : Je ne vois pas bien ce que cela veut dire, attendre que l'inventaire soit complètement enregistré dans la base de données ? Une option que je ne connais pas ? )


Version alpha et beta testées

  • Micke Chase est en train de parler avec Beq Janus(Développeur et chef de projet Firestorm) pour obtenir une version alpha claire à tester. Il a le même viewer alpha que Ubit Umarov, c'est à dire la version du 11 Août, un viewer avec WebRTC. D'après Ubit Umarov Beq a apporté un changement aux délais d'inventaire, ce qui a peut-être corrigé les plantages. Le viewer doit être testé. Cela a corrigé le problème pour Ubit Umarov et pour toutes les personnes à qui il a posé la question. Cela concerne aussi la dernière version Beta. Donc tout indique que c'est un problème de delais lié à la manière dont les coroutines sont gérées ou contrôlées dans le code. Cela pourrait cacher un problème plus profond qui pourrait nous toucher plus tard.
NDLR  :
  • Les coroutines [5] permettent de gérer des opérations longues, comme le chargement d'un inventaire, de manière fluide et efficace, sans bloquer l'interface utilisateur.


  • Ubit Umarov demande aux utilisateurs de tester la version alpha de Firestorm ce qui permettrait de visualiser tous les problèmes liés au chargement d'inventaire à la connexion. Il dit aussi qu'il qu'il est nécessaire de réduire les problèmes liés à la suitecase utilisée en hypergrid.

Sharpview

  • Joe Magarac n'a pas encore touché à l'inventaire.
  • Ubit Umarov pense que Sharpview ne sera pas confronté au problème de chargement d'inventaire au démarrage puisque le viewer utilise sa propre gestion des threads en Rust. Il dit à Joe Magarac de noter qu'OpenSim a besoin d'une mise à jour complète du cache à la connexion pour éviter les problèmes de téléportation en Hypergrid plus tard.

Source

http://opensimulator.org/wiki/Chat_log_from_the_meeting_on_2024-08-20