close
  • Ar chevron_right

    Seeed and Beagleboard team up to provide a new RISC-V based Linux PC

    news.movim.eu / ArsTechnica · Wednesday, 13 January - 13:00

Seeed Studios—the makers of the Odyssey mini-PC we reviewed back in August—have teamed up with well-known SBC vendor BeagleBoard to produce an affordable RISC-V system designed to run Linux.

The new BeagleV (pronounced "Beagle Five") system features a dual-core, 1GHz RISC-V CPU made by StarFive —one of a network of RISC-V startups created by better-known RISC-V vendor SiFive. The CPU is based on two of SiFive's U74 Standard Cores —and unlike simpler microcontroller-only designs, it features a MMU and all the other trimmings necessary to run full-fledged modern operating systems such as Linux distributions.

StarFive's VIC7100 processor design is aimed at edge AI tasks as well as general-purpose computing. In addition to the two RISC-V CPU cores, it features a Tensilica Vision VP6 DSP for machine-vision applications, a Neural Network Engine, and a single-core NVDLA (Nvidia Deep Learning Accelerator) engine.

Read 5 remaining paragraphs | Comments

index?i=Nv1U_C60cgA:n0Wz1U3HFiU:V_sGLiPBpWUindex?i=Nv1U_C60cgA:n0Wz1U3HFiU:F7zBnMyn0Loindex?d=qj6IDK7rITsindex?d=yIl2AUoC8zA
  • Li chevron_right

    Bâtir une communauté comme un service

    pubsub.eckmul.net / linuxfr_news · Saturday, 9 January - 20:23 · 92 minutes

<div><p>Du 19 au 22 novembre 2020, Debian a organisé une « MiniDebConf » en ligne avec pour thème principal le jeu vidéo, et <em>nattie</em> a invité le projet Unvanquished à soumettre une conférence. Membre actif de ce projet j’ai proposé le sujet suivant :</p> <blockquote> <p>Bâtir une communauté en tant que service : comment cesser de souffrir de « ce code est censé être forké ».</p> </blockquote> <p>Dont voici la présentation :</p> <blockquote> <p>Il est connu que les précédents moteurs id Tech ont vu leur code source ouvert lorsqu’ils furent remplacés et donc non rentables. Bien que l’apport à l’humanité fut gigantesque, les développeurs de jeux souffrent encore aujourd’hui des choix de conception et de l’état d’esprit induit par le fait qu’une telle base de code était destinée à mourir. 20 ans plus tard, nous nous concentrerons sur l’héritage de l’id Tech 3, sur la manière dont le marché, les communautés open source et les pratiques de développement ont évolué, et nous embarquerons dans l’aventure de la transition nécessaire depuis des vidages de dépôt de code mort à un écosystème en tant que service.</p> </blockquote> <p><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-001.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3030312e6d656469756d2e706e67/slide-001.medium.png" alt="Mini Deb Conf: bâtir une communauté comme un service" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-001.medium.png"></a></p> <p>En partant de divers exemples tirés de l’industrie du jeu vidéo, la conférence est le fruit d’une quinzaine d’année d’observations et d’immersion et développe une réflexion plus large sur la nature d’un service, le besoin de développer des communautés, la place de la collaboration dans une communauté de logiciel libre, comment des choix de conceptions peuvent induire un état d’esprit qui nourrit la conception à son tour, etc. Sont abordées certaines problématiques comme le coût (éventuellement caché) de certaines pratiques, la nature d’une économie, ou encore comment certaines méthodes encouragent plus volontiers la production de déchet ou bien le recyclage de la production.</p> <p>Cette conférence de 45 minutes a été donnée en ligne, en anglais, le dimanche 22 novembre 2020 à 19:30 UTC.</p> <p>Cette dépêche propose une retranscription et traduction en français de cette conférence. La vidéo peut également être visionnée en anglais avec un sous-titrage francophone (ou anglophone).</p> <p>Merci à Debian pour l’accueil et l’organisation de l’événement et à <a href="//linuxfr.org/users/thomasv--2">Thomas Vincent</a> de Debian France pour la transformation de la retranscription en sous-titres et le fastidieux travail de synchronisation, ainsi que son méticuleux travail de relecture et de correction de la traduction en français.</p> <p><em>Note de l’auteur</em> — Cet article et la retranscription sont couverts par les termes de la licence <a href="https://creativecommons.org/publicdomain/zero/1.0/deed.fr">CC 0 1.0 « Transfert dans le domaine public »</a>.</p> </div><ul><li>lien nᵒ 1 : <a title="https://www.youtube.com/watch?v=ijfuuCGOTCA" hreflang="fr" href="https://linuxfr.org/redirect/107417">La conférence en vidéo en anglais sous-titrée français (youtube.com)</a></li><li>lien nᵒ 2 : <a title="https://mdco2.mini.debconf.org/schedule/" hreflang="en" href="https://linuxfr.org/redirect/107418">MiniDebConf Online: Gaming Edition, le site de l’événement et les autres conférences (debconf.org)</a></li><li>lien nᵒ 3 : <a title="https://unvanquished.net/building-a-community-as-a-service/" hreflang="en" href="https://linuxfr.org/redirect/107419">Transcription complète de la conférence en anglais (unvanquished.net)</a></li><li>lien nᵒ 4 : <a title="https://linuxfr.org/users/illwieckz/journaux/unvanquished-un-patch-de-derniere-minute-pour-la-0-51-et-une-conference-ce-dimanche" hreflang="en" href="https://linuxfr.org/redirect/107420">Le journal annonçant la conférence (linuxfr.org)</a></li><li>lien nᵒ 5 : <a title="https://gitlab.com/illwieckz/building-a-community-as-a-service/" hreflang="en" href="https://linuxfr.org/redirect/107421">Dépôt Git des ressources de la conférence (gitlab.com)</a></li><li>lien nᵒ 6 : <a title="https://linuxfr.org/news/une-histoire-de-fork" hreflang="fr" href="https://linuxfr.org/redirect/107604">Une histoire de fork, essai de 2012 avec une première approche du sujet (linuxfr.org)</a></li><li>lien nᵒ 7 : <a title="https://linuxfr.org/news/unvanquished-maintenant-nous-sommes-libres" hreflang="fr" href="https://linuxfr.org/redirect/107605">Unvanquished : maintenant nous sommes libres ! (linuxfr.org)</a></li></ul><div><h2 class="sommaire">Sommaire</h2> <ul class="toc"> <li><a href="#toc-b%C3%A2tir-une-communaut%C3%A9-comme-un-service">Bâtir une communauté comme un service</a></li> <li><a href="#toc-une-histoire-des-moteurs-id-tech">Une histoire des moteurs id Tech</a></li> <li> <a href="#toc-comp%C3%A9titeurs">Compétiteurs</a><ul> <li><a href="#toc-epic-et-son-moteur-unreal">Epic et son moteur Unreal</a></li> <li><a href="#toc-valve-et-le-moteur-source">Valve et le moteur Source</a></li> </ul> </li> <li><a href="#toc-du-c%C3%B4t%C3%A9-libre-godot">Du côté libre : Godot</a></li> <li><a href="#toc-les-moteurs-id-software-%C3%A9diteurs-et-outils-%C3%A9taient-des-mod%C3%A8les">Les moteurs id Software, éditeurs et outils étaient des modèles</a></li> <li><a href="#toc-des-formats-de-fichiers-destin%C3%A9s-%C3%A0-%C3%AAtre-fork%C3%A9s">Des formats de fichiers destinés à être forkés</a></li> <li><a href="#toc-des-%C3%A9diteurs-destin%C3%A9s-%C3%A0-%C3%AAtre-fork%C3%A9s">Des éditeurs destinés à être forkés</a></li> <li><a href="#toc-au-sujet-du-d%C3%A9veloppement-logiciel-et-du-sacrifice-denfant">Au sujet du développement logiciel et du sacrifice d’enfant</a></li> <li><a href="#toc-un-%C3%A9tat-desprit-induit-par-le-code">Un état d’esprit induit par le code</a></li> <li><a href="#toc-sur-le-code-open-source-et-les-communaut%C3%A9s-humaines-de-partage">Sur le code open source et les communautés humaines de partage</a></li> <li><a href="#toc-b%C3%A2tir-un-%C3%A9cosyst%C3%A8me-et-une-communaut%C3%A9-comme-un-service">Bâtir un écosystème et une communauté comme un service</a></li> <li><a href="#toc-questions">Questions</a></li> </ul> <p><strong>Avertissement :</strong> <em>Le sujet de cette conférence prend le parti d’étudier l’héritage du code libéré d’id Software d’un point de vue qui a été négligé par les études : ce qui peut être amélioré. L’héritage d’id Software a profondément changé le paysage, la libération du code a alimenté à la fois le monde universitaire et une passion vive chez de nombreuses personnes, et le jeu Unvanquished lui-même n’existerait tout simplement pas sans cet héritage. Rien ne doit donc être enlevé à la gratitude envers les différents acteurs qui ont rendu cela possible. Cependant, au-delà de se concentrer sur ce qui est très bon, il semble intéressant d’étudier également ce qui est moins bon, car c’est souvent moins la réussite que l’échec qui permet d’apprendre et de se dépasser.</em></p> <p><em>Cet exposé présente des opinions personnelles et fait appel à des métaphores colorées (voire infernales, « doom-esque »).</em></p> <p>La vidéo peut être visionnée avec les sous-titres (français et anglais) <a href="https://www.youtube.com/watch?v=ijfuuCGOTCA">sur Youtube</a>, ou visionnée en anglais <a href="https://peertube.debian.social/videos/watch/9063a45f-041e-4e48-a7c6-9dd31be49c1c">sur le Peertube Debian</a> (je ne sais pas quand seront disponible les sous-titres sur le Peertube) :</p> <p><a href="https://www.youtube.com/watch?v=ijfuuCGOTCA"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f766964656f2d707265766965772e6d696e692e706e67/video-preview.mini.png" alt="Bâtir une communauté comme un service, prévisualisation de la vidéo" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/video-preview.mini.png"></a></p> <p><em>La vidéo peut-être <a href="https://dl.illwieckz.net/b/conference/20201122.debian-minidebconf-online/20201122.building-a-community-as-a-service.thomas-debesse.mkv">téléchargée ici</a> (incluant les sous-titres et le chapitrage en anglais et en français). Les diapositives (en anglais) peuvent-être <a href="https://dl.illwieckz.net/b/conference/20201122.debian-minidebconf-online/20201122.building-a-community-as-a-service.thomas-debesse.pdf">téléchargées ici</a>. Les transcriptions, sous-titres, le chapitrage, les sources des diapositives et de la vidéo sont disponibles sur le <a href="https://gitlab.com/illwieckz/building-a-community-as-a-service/">dépôt GitLab</a> de la conférence (les « rush » audio vidéo et vidéo sont pré-édités pour des raisons de discrétion mais le montage final doit pouvoir être reproduit).</em></p> <p>Tout ce que j’ai produit d’original pour cette conférence (voix/image/texte…) est distribuée sous <a href="https://creativecommons.org/publicdomain/zero/1.0/deed.fr">licence CC 0 1.0</a>. D’autres licences peuvent s’appliquer (logos, images de décoration, la partie en direct).</p> <p>Ci-après la transcription.</p> <p><strong>NdM.:</strong> il a été explicitement demandé à la modération de ne pas éditer la transcription.</p> <hr> <h2 id="toc-bâtir-une-communauté-comme-un-service">Bâtir une communauté comme un service</h2> <p>Bonjour, je suis Thomas Debesse du projet de jeu Unvanquished. Je fais partie de la direction et suis un contributeur à de nombreux projets associés. Unvanquished est un jeu de science-fiction mêlant des mécanismes de stratégie en temps réel avec une vue de jeu de tir à la première personne. Le projet Unvanquished est destiné à fournir un jeu entièrement libre depuis le code jusqu’aux données.</p> <p><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-005.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3030352e6d696e692e706e67/slide-005.mini.png" alt="Un service est un acte d’assistance auprès de quelqu’un" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-005.mini.png"></a></p> <p>En dehors du développement de logiciel libre, je suis plus dans l’administration système et l’ingénierie de fiabilité de site (SRE, <em>site reliability engineering</em>), ou je dirais plutôt, ingénierie de réhabilitation de site (<em>site rehabilitation engineering</em>). Ce qui fait de Debian une part importante de mon travail et je suis convaincu que l’un des premiers services de Debian après sa communauté est une méthode de travail. Quand votre travail est de fournir des infrastructures, le logiciel lui-même devient moins important<br> que la manière dont vous l’utilisez, et Debian définit des moyens de traiter les problèmes et construit un état d’esprit pour les penser.</p> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-002.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3030322e6d696e692e706e67/slide-002.mini.png" alt="Thomas est un chef du projet Unvanquished" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-002.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-003.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3030332e6d696e692e706e67/slide-003.mini.png" alt="Unvanquished est un jeu libre de stratégie en temps réel à la première personne" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-003.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-004.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3030342e6d696e692e706e67/slide-004.mini.png" alt="Debian définit des méthodes de travail" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-004.mini.png"></a></td> </tr> </tbody> </table> <p>Parce que ce que je fais est de rendre les autres capables de faire leur propre travail, je connais le premier sens d’un service : un acte d’assistance auprès de quelqu’un.<br> Je crois qu’il est important de replacer ce mot dans nos métiers, un service n’est pas une fonction logicielle, n’est pas un abonnement à une industrie économique, un service est un acte d’assistance auprès de quelqu’un.</p> <p>Le moteur de jeu propulsant le jeu Unvanquished est nommé le moteur Dæmon, lui-même étant un petit-petit fils de nombreux forks incluant Quake 3.</p> <p>Les projets basés sur le code ouvert d’id Software font face à de très nombreux forks. Nous investiguerons les raisons pour lesquelles ce problème ne réside pas seulement dans le côté humain des personnes, mais comment la conception du code induit ce comportement. Nous essaierons de comprendre pourquoi certains projets arrivent à développer des communautés et d’autres non, et ce qui peut être fait pour limiter le gaspillage de ressource et prendre soin des efforts humains, ce qui est prendre soin des humains eux-mêmes.</p> <h2 id="toc-une-histoire-des-moteurs-id-tech">Une histoire des moteurs id Tech</h2> <p>Pour commencer, nous allons observer l’histoire des jeux id Software.</p> <p>Dans les pas du succès de Wolfenstein 3D, Doom est sorti en 1993 et son code source ouvert en 1999. Ce moteur est d’ordinaire appelé id Tech mais le terme de “moteur” ne correspond pas au sens actuel et les noms comme id Tech 1, 2, 3 et les autres font partie d’un effort rétroactif pour nommer les instantanés (<em>snapshots</em>) de code de manière à ce qu’ils ressemblent aux produits faits par d’autres sociétés.</p> <p>Il n’y a jamais de choses comme des moteurs id Tech à l’époque. Il y avait le moteur de Doom, le moteur distribué avec Doom. Ensuite, des dérivés ont été faits à partir de lui, ce que l’on appelle fork.</p> <p><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-016.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3031362e6d696e692e706e67/slide-016.mini.png" alt="Distribué en open-source quand devenu obsolète" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-016.mini.png"></a></p> <p>Quake est sorti en 1996 et tandis que Doom était un jalon important dans le jeu à la première personne, Quake fut un jalon important pour les environnements 3D. En 2020 un jeu comme Xonotic utilise toujours un moteur basé sur et compatible avec Quake premier du nom tout en fournissant une scène compétitive et une expérience de jeu actuelle.</p> <p>Les Jeux id Software arrivant après Quake sont des améliorations itératives au-dessus de Quake, de même pour les outils. Les moteurs distribués avec les nouveaux jeux sont des instantanés de l’arbre des sources et ces jeux sont des forks.</p> <p>Quake II a été distribué en 1997. Tandis que Quake et Quake World furent ouverts en 1999, le code de Quake II fut ouvert en 2001. Ces trois forks de Quake sont rétroactivement appelés sous le même nom id Tech 2.</p> <p>Des instantanés de Quake et Quake II furent vendus et utilisés par des sociétés tierces comme base de jeux et de séries comme Kingpin, Soldier of Fortune ou Half Life.</p> <p>En tant que société, id Software vendait essentiellement deux choses : des jeux, et des instantanés de code (<em>snapshot</em>).</p> <p>Nous pouvons dire que certains instantanés d’id Tech 2 furent ouverts, mais cela ne fait pas sens de dire que id Tech 2 l’a été. id Tech 2 est seulement une approximation commode pour classer diverses choses qui sont proches les unes des autres, cela ne nomme pas un produit tangible.</p> <p>Grâce à l’ouverture du code des projets communautaires <em>open source</em> émergèrent comme Nexuiz et son successeur Xonotic, Warsow, AlienArena, UFO: Alien Invasion, DDay: Normandy, l’à venir Quetoo, etc. Nous pouvons même voir des sorties commerciales comme le prochain Wrath: Aeon of Ruin par 3D Realms qui utilise le moteur DarkPlaces comme Xonotic.</p> <p>id Software a sorti Quake III Arena en 1999. Les instantanés de code sont rétroactivement appelés id Tech 3. id Software a ouvert l’instantané Quake 2, l’instantané Return to Castle Wolfenstein, et l’instantané Wolfenstein: Enemy Territory. Une autre société a ouvert deux instantanés de jeux Jedi Knights.</p> <p>Ce code source de Quake 3 eu beaucoup de succès et fut utilisé dans de nombreuses franchises bien connues<br> comme celles que l’on vient de citer mais aussi Star Trek Elite Forces, encore une fois Soldier of Fortune, Medal of Honor, quelques jeux James Bond, Resident Evil, Call of Duty et d’autres.</p> <p>En 2005 le code de Quake 3 fut libéré quand il était obsolète d’un point de vue économique. Les anciens codes étaient ouverts par id Software quand un autre code était commercialisé à la place.</p> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-013.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3031332e6d696e692e706e67/slide-013.mini.png" alt="Sélection de jeux construits sur le code de Quake et Quake 2" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-013.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-017.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3031372e6d696e692e706e67/slide-017.mini.png" alt="Sélection de jeux construits sur le code de Quake 3" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-017.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-022.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3032322e6d696e692e706e67/slide-022.mini.png" alt="Une chronologie de quelques sorties et libérations majeures d’id Software" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-022.mini.png"></a></td> </tr> </tbody> </table> <p>Cette ouverture a permis de nombreux jeux libres, ou jeux avec un code source libre, de devenir des choses autonomes. Nous pouvons citer Tremulous sur lequel Unvanquished est fondé, World of Padman, Smokin' Guns, OpenArena et d’autres. Urban Terror a été distribué avec le moteur Quake 3 <em>open source</em> mais le code du jeu fut toujours propriétaire.</p> <p>Doom 3 a été distribué en 2004 et son code source ouvert en 2011. Comme à l’ordinaire des instantanés<br> furent utilisés dans des franchises établies comme Doom, Quake, Enemy-Territory et Wolfenstein, mais moins d’instantanés semblent avoir été vendus à des sociétés tierces. L’ouverture du code de Doom 3 a donné naissance à moins de projets libres, mais nous pouvons nommer The Dark Mod qui a construit un produit viable.</p> <p>Nous pouvons encore remarquer la confusion entre les moteurs utilisés par tous ces jeux et ceux qui furent ouverts, sur la <a href="https://en.wikipedia.org/wiki/Quake_(video_game)">page Wikipédia anglophone sur le jeu vidéo Quake</a> nous pouvons lire :</p> <blockquote> <p>Quake 4 […] utilisait le moteur de Doom 3.</p> </blockquote> <p>Mais vous ne pouvez pas faire tourner Quake 4 avec le moteur fermé de Doom 3, pas plus avec le moteur libéré. Ces moteurs sont des forks incompatibles.</p> <p>Le code de Doom 3 fut couvert par une licence différente des codes précédemment ouverts. Quand on regarde les dérivés de Quake 3 et de Doom 3 ayant leur code ouvert, nous pouvons voir des projets ayant une licence GPLv2 seulement, GPLv2 ou supérieur, et GPLv3. Il peut donc être compliqué d’échanger du code.</p> <p>Dans ce cas les licences copyleft semblent être un moyen pour les sociétés impliquées de garder le contrôle du code source, comme une variante non-commerciale mais avec le sceau d’approbation de la FSF et de l’OSI. Cela a l’inconvénient de limiter ce que la communauté peut faire et éventuellement rendre plus difficile pour les personnes de travailler ensemble, échanger du code, rétroporter du code et fusionner des branches.</p> <p>Le moteur de l’époque d’id Tech 5 utilisé par le jeu Rage n’a pas vraiment été utilisé en dehors d’une poignée de titres Wolfenstein et quelques rares autres. Les moteurs de génération id Tech 6 et 7<br> semblent ne pas avoir été utilisés en dehors de jeux préexistants comme Doom et Wolfenstein et de ne pas avoir été commercialisé pour ce que j’en sais. Et avec Quake Champions ils ont commencé à utiliser du code tierce-partie. À ce niveau il semble que vous ne pouvez plus faire un jeu avec les technologies d’id Software actuelles.</p> <h2 id="toc-compétiteurs">Compétiteurs</h2> <h3 id="toc-epic-et-son-moteur-unreal">Epic et son moteur Unreal</h3> <p>Un compétiteur bien connu d’id Software fut Epic Games. Ils ont sorti Unreal Tournament en 1999, presque au même moment que Quake III Arena.</p> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-025.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3032352e6d696e692e706e67/slide-025.mini.png" alt="Rendre possible la modification est différent de concevoir pour la modification" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-025.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-026.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3032362e6d696e692e706e67/slide-026.mini.png" alt="Epic and Unreal : l’éditeur d’abord" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-026.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-030.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3033302e6d696e692e706e67/slide-030.mini.png" alt="Epic : la communauté d’abord" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-030.mini.png"></a></td> </tr> </tbody> </table> <p>Epic Games et les jeux id Software ont attiré une large communauté de <em>modders</em>, des personnes réalisant de nouveaux niveaux, implémentant des modifications de jouabilité et plus encore. Tandis que le temps passe nous pouvons remarquer des différences parmi la façon dont ces modifications furent prises en compte.</p> <p>Si vous regardez le code d’id Software, vous remarquerez une grande quantité de choses qui vous donnent la possibilité de modifier et étendre le jeu, et faire de nouveau jeux à partir de ça.<br> Je dis que le design « rend possible de modifier » et je ne dis pas qu’il est conçu pour être modifié.<br> Certaines choses dans le code d’id Software sont pensées pour que réaliser des modifications soient une chose facile mais lorsque vous y faites face vous découvrez qu’elles rendent possible de faire des choses nouvelles mais ne s’attendent pas à ce que cette modification soit faite par vous.</p> <p>Epic et Unreal ont commencé avec des éditeurs. Le premier jeu de Tim Sweeney ZZT a évolué depuis un éditeur de texte. Ce jeu de 1991 était distribué avec un éditeur de niveaux et a toujours une scène active de modification (<em>modding</em>).</p> <p><a href="https://www.youtube.com/watch?v=-d7xzAZTBA8">J’ai entendu dire que les développeurs</a> à Epic Mega Games passaient leur temps sinon perdaient leur temps à jouer à Doom donc pour les rendre plus efficace dans leur travail, Tim Sweeney leur a écrit un éditeur. Pour ce que j’en sais, cet éditeur a précédé Unreal et a précédé Quake.</p> <p>Le premier pas qu’Epic a fait pour que Unreal Tournament tienne la compétition avec Quake III Arena avant que Quake 1 soit annoncé fut un éditeur.</p> <p>Après la sortie d’Unreal de nombreux développeurs ont demandé à utiliser le moteur. Le code source semble<br> avoir été rapidement re-designé pour être réutilisable, de même pour l’éditeur.</p> <p>Si vous regardez ce <a href="https://www.gamedev.net/forums/topic/159377-what-engine-does-halflife-quake2-and-unreal-use/1922976?page=2">fil de discussion</a> de 2003 sur gamedev.net, vous pouvez voir une personne dire :</p> <blockquote> <p>Je suis quasiment sûr que cette chose telle le « Unreal Engine » n’existe pas. Le moteur utilisé dans tous les jeux Unreal est optimisé et modifié pour chaque jeu Unreal.</p> </blockquote> <p>Et quelqu’un d’autre cite le <a href="https://web.archive.org/web/20030210190739/http://udn.epicgames.com/">site web Unreal Developer Network de l’époque</a> en disant :</p> <blockquote> <p>L’Unreal Developer Network est un groupe de sites et de services fournissant du support et des ressources pour les licenciés utilisant les derniers build d’Epic Games, (builds 600+).</p> </blockquote> <p>Puis la personne continue en disant :</p> <blockquote> <p>Le moteur est en développement continu […] et les fonctionnalités sont seulement figées pour la sortie du jeu (si tu licencies le moteur de la part d’Epic tu peux avoir les mises à jour pour le moteur à tout moment).</p> </blockquote> <p><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-028.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3032382e6d696e692e706e67/slide-028.mini.png" alt="C’est le moteur Unreal" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-028.mini.png"></a></p> <p>Le <a href="https://web.archive.org/web/20030210090322/http://www.epicgames.com/licensing.html">site web d’Epic Games disait à cette époque</a> au sujet de l’Unreal Developer Network :</p> <blockquote> <p>Les licenciés reçoivent le code source complet pour notre moteur, des outils et le jeu le plus récent.<br> Le support est fourni directement par l’équipe qui développe actuellement le moteur […] UDN est un dépôt de connaissance, de documentation et de tutoriels pour les « builds » récents de l’Unreal Engine.</p> </blockquote> <p>À la question « est-ce le Unreal II Engine, le UT2003 Engine, le Unreal Warfare Engine, le Unreal Championship engine ou le Unreal Tournament Engine ? », la réponse était claire :</p> <blockquote> <p>Ce n’est ni l’un ni l’autre. C’est simplement le « Unreal Engine ».</p> </blockquote> <p>Bien sûr cela fait partie d’un effort de communication, mais tandis que nous voyons le flux de travail à base d’instantanés distribués comme id Software le faisait, cela révèle un tronc commun, ou comme nous pourrions l’appeler aujourd’hui, une branche maîtresse. Ils parlaient déjà de « build ». Cela signifie que le moteur doit être réaffectable sans requérir du développeur qu’il le recompile.</p> <p>Aujourd’hui l’Unreal Engine est l’un des moteurs de jeux les plus populaires, ou cadriciel de jeu (<em>game framework</em>) comme les gens disaient à l’époque. Peut-être l’Unreal Engine fut la cause de ce glissement de vocabulaire.</p> <p>Epic a construit une communauté de développeurs de jeu autour de leurs technologies, ils fournissent<br> des outils réutilisables et des éditeurs, et maintenant ils se concentrent sur le fait de faire se rencontrer artistes et développeurs. Ceci est fait avec la communauté à l’esprit. Le premier produit d’Epic est son service, et la communauté est un service en elle-même.</p> <p>Bien que non-libres, les sources de l’Unreal Engine sont mises à disposition et il est prévu de recevoir des contributions en retour de la part des développeurs de jeu. C’est la problématique des projets logiciels qui sont en vie.</p> <h3 id="toc-valve-et-le-moteur-source">Valve et le moteur Source</h3> <p>Bien que nous puissions nous attendre à ce que des gros projets de jeux puissent utiliser des branches personnalisées du moteur, avec le temps il devient évident que l’un des premiers services à rendre aux développeurs de jeux est un « précompilé » (<em>build</em>) réutilisable.</p> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-033.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3033332e6d696e692e706e67/slide-033.mini.png" alt="Gold Source de Valve est basé sur Quake" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-033.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-035.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3033352e6d696e692e706e67/slide-035.mini.png" alt="Des outils pensés pour être réutilisables" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-035.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-039.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3033392e6d696e692e706e67/slide-039.mini.png" alt="Valve : la communauté d’abord" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-039.mini.png"></a></td> </tr> </tbody> </table> <p>Concentrons-nous désormais sur Valve. Valve a obtenu des instantanés de Quake et Quake II, et quand ils les eurent dans les mains ils appelèrent ceci de l’or. Ils appelèrent leur arbre de source « Gold source ». Ils sortirent Half Life sur le moteur qu’ils bâtirent à partir de cela et plus tard, de la même manière qu’Epic Mega Games a retiré l’adjectif « Mega » pour se focaliser sur « Epic », Valve a retiré le mot « Gold » pour se focaliser sur « Source ».</p> <p>Le moteur Source de Valve est prévu pour être réutilisable. Vous pouvez installer le « Source 2007 SDK » dans Steam et installer le jeu « GoldenEye: Source ». Les développeurs n’ont pas à compiler le moteur eux-mêmes. Le moteur source n’est pas un modèle (<em>template</em>), vous ne devez pas le <em>forker</em>, le compiler et le maintenir vous-même.</p> <p>Valve fournit des outils comme l’éditeur de niveau Hammer et le compilateur de carte. Ces outils sont maintenus par Valve et conçus pour être réutilisables. Les cartographes (<em>mappers</em>) n’ont pas à recompiler les outils.</p> <p>Il semble que cela n’a pas été si évident du côté d’id Software.</p> <p>Avec Steam, Valve a bâti une distribution logicielle. Ils ont donc eu à concevoir leurs logiciels<br> de façon à ce qu’ils soient distribuables dans un dépôt, ils ont résolu la duplication des fichiers<br> et la fragmentation des fichiers, ils ont résolu les dépendances et ont rendu possible pour des équipes diverses d’avoir leur propre cycle de production tout en dépendant les uns des autres. Au-delà des questions légales et idéologiques, peut-être pourrions-nous techniquement faire des paquets Debian<br> du moteur Source et des jeux. Du moins, certains problèmes ont été corrigés, Valve dut le faire.</p> <p>Valve porte ses précédents jeux vers les versions mises à jour du moteur. Ils ne voient pas le vieux code comme du code mort, et ils doivent traiter des problèmes spécifiques que vous rencontrez en portant des jeux. Leur conception ne doit pas empêcher des portages de se produire.</p> <p>Tandis que ces produits ont leur code source fermé on voit qu’ils ont trouvé des solutions à des difficultés que nous rencontrons en tant que communauté de logiciel libre. Le premier produit de Valve est son service et la communauté est un service elle-même, c’est la problématique des projets logiciels qui sont en vie.</p> <p>Ces services induisent des méthodologies comme Debian en tant que distribution logicielle doit développer des méthodologies.</p> <h2 id="toc-du-côté-libre-godot">Du côté libre : Godot</h2> <p><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-043.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3034332e6d696e692e706e67/slide-043.mini.png" alt="Godot : la communauté d’abord" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-043.mini.png"></a></p> <p>Du côté libre, Godot est un écosystème libre et <em>open source</em> qui est en compétition avec des moteurs<br> comme Unreal, Unity ou Unigine, mais n’est pas en compétition avec id Tech pour une raison simple : Godot est pensé pour être réutilisable depuis le début et le développement est pensé pour recevoir des contributions dans la branche principale. Par conception Godot n’est pas voulu pour être un jeu en lui-même mais la technologie sous-jacente pour vos jeux. Le produit n’est pas le jeu, mais les outils.<br> Cette perspective introduit des problèmes intéressants à traiter.</p> <p>En tant que développeur de jeu, vous téléchargez une version pré-compilée de Godot et c’est parti. Godot est pensé avec la communauté en tête, bâti comme un logiciel communautaire libre et open source.</p> <h2 id="toc-les-moteurs-id-software-éditeurs-et-outils-étaient-des-modèles">Les moteurs id Software, éditeurs et outils étaient des modèles</h2> <p>À la différence des autres que je viens de citer, les codes ouverts et fermés d’id Software étaient des modèles (<em>templates</em>).</p> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-046.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3034362e6d696e692e706e67/slide-046.mini.png" alt="id Software vendait des modèles de jeu" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-046.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-047.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3034372e6d696e692e706e67/slide-047.mini.png" alt="Ça a toujours été fait ainsi" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-047.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-049.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3034392e6d696e692e706e67/slide-049.mini.png" alt="Corriger l’état d’esprit induit par le code" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-049.mini.png"></a></td> </tr> </tbody> </table> <p>Quand vous faites un jeu basé sur les technologies d’id Software, vous devez forker une arborescence existante et la maintenir vous-même.</p> <p>id Software vendait des instantanés de codes comme des modèles, et en tant que développeur vous aviez à faire des modifications nécessaires pour que ce ne soit plus destiné à un autre jeu mais au vôtre. Ceci est appelé « instanciation ».</p> <p>Il y a quelques fonctionnalités limitées pour exécuter un <em>mod</em> « conversion complète » avec un jeu existant, mais vous ne pouvez pas prendre une précompilation du moteur et simplement la rempaqueter avec votre jeu pour en faire un jeu autonome qui tourne sans l’original.</p> <p>Vous devez faire des changements nécessaires et mettre en œuvre l’infrastructure pour recompiler le moteur vous-même. Ceci produit un « état d’esprit induit par le code ».</p> <p>Parce que le code lui-même est conçu pour être forké, quand vous travaillez avec, si vous n’essayez pas<br> de penser en dehors des clous et de faire des efforts spécifiques pour aller contre ce que le code induit à votre esprit, vous commencez à penser que la seule manière de faire des choses est de forker sans contribuer en retour. Si vous demandez « pourquoi je devrais forker ? », certaines personnes pourraient vous répondre comme si vous aviez posé une question idiote s’ils ne répondent pas tout simplement « on a toujours fait comme ça ».</p> <p>Pour prévenir cela du côté du moteur des changements de conception sont requis.</p> <p>Pour corriger l’état d’esprit au niveau du code du jeu, le plus simple serait de cloner un dépôt amont et de faciliter les fusions dans un sens et dans l’autre. Les anciens systèmes de suivi de version comme Subversion sont aussi connus pour rendre la collaboration plus coûteuse que de forker c’est pourquoi utiliser des outils induisant de bonnes pratiques comme Git sont une bonne idée.</p> <p>Parce que les codes d’id Software furent ouverts parce qu’abandonnés, en dehors de quelques projets comme le nôtre vous ne pouvez pas compter sur un amont (<em>upstream</em>).</p> <p>Du côté du code du jeu il est aussi possible de diviser des parties du code en bibliothèques réutilisables. Pour Unvanquished nous ne considérons pas encore cette éventualité, mais nous avons jeté<br> le code d’interface historique pour une bibliothèque tierce-partie que nous ne maintenons pas nous-mêmes,<br> et pour d’autres parties nous avons introduit quelques mécanismes de génération de code.</p> <h2 id="toc-des-formats-de-fichiers-destinés-à-être-forkés">Des formats de fichiers destinés à être forkés</h2> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-054.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3035342e6d696e692e706e67/slide-054.mini.png" alt="Le format de fichier BSP devait être forké pour ajouter des fichiers" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-054.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-055.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3035352e6d696e692e706e67/slide-055.mini.png" alt="Exemple du greffon Blender de SomaZ : personne ne veut le forker pour tous les jeux" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-055.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-057.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3035372e6d696e692e706e67/slide-057.mini.png" alt="Modifier le format BSP perd la compatibilité avec les outils et les fichiers existants" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-057.mini.png"></a></td> </tr> </tbody> </table> <p>Jetons un œil au format de fichier BSP. BSP est le nom d’une technique pour stocker des informations spatiales pour le niveau du jeu en tant que modèle 3D. Nous ne nous focaliserons pas sur cette technique<br> mais sur le fichier avec une extension <code>.bsp</code> qui est utilisé pour stocker ces informations et d’autres choses.</p> <p>Vous pouvez voir un fichier BSP comme un tarball primitif : un container pour de multiples fichiers<br> que le moteur de jeu charge. Cela peut être le modèle 3D lui-même mais aussi d’autres chose comme des images. Un fichier BSP commence par une entête avec des nombres magiques (<em>magic numbers</em>), comme la chaîne « <code>IBSP</code> » pour les jeux id Software, « <code>RBSP</code> » pour les jeux Raven, « <code>VBSP</code> » pour les jeux Valve. Puis un numéro de version. Après cela vous devez vous attendre à ce que tout le reste soit non-documenté et spécifique à chaque fork sur terre.</p> <p>Il y a un tableau pour les entrées de sous-fichiers avec leurs décalages (<em>offset</em>) et tailles,<br> mais il n’y a pas de nombre pour vous dire combien de fichiers il y a. Donc, vous ne pouvez pas extraire de sous-fichier provenant d’autres forks.</p> <p>Imaginez que chaque jeu basé sur id Tech utilise son propre format <code>tar</code>, et que si votre jeu a besoin de distribuer un fichier supplémentaire, il vous est requis de forker le format tar et de créer une autre variante non-documentée.</p> <p>Tout d’abord le problème ne semble pas si problématique parce qu’il est aussi attendu que vous forkiez l’éditeur de niveau, le compilateur de carte qui produit les données BSP, et de forker le traceur de rayon pour faire le rendu des cartes de lumière (<em>light map</em>). Tout fonctionne dans votre écosystème fermé qui n’échange jamais avec le monde.</p> <p>Les choses commencent à devenir difficiles quand vous avez besoin de sortir de cet état d’esprit. SomaZ du projet OpenJK est en train d’écrire un <a href="https://github.com/SomaZ/Blender_BSP_Importer">greffon Blender pour charger des fichiers BSP</a> et rendre les cartes de lumière en utilisant le traceur de rayon Cycle. Personne ne veut forker ce greffon pour chaque jeu, donc au final un tel greffon devra implémenter<br> votre propre variante spécifique à votre jeu si vous voulez l’utiliser.</p> <p>Quand vous êtes un éditeur des années 90 gravant des jeux sur des CD ROMs qui ne seront jamais mis à jour, vous ne vous en préoccupez pas. Mais même si les jeux id Tech ont été produits avec le marché du PC en tête, quand vous mettez en œuvre les technologies ouvertes d’id Software vous appliquez des méthodologies qui conviendraient parfaitement si vous cibliez des cartouches de consoles.</p> <p>Le jeu Unvanquished utilise le moteur Dæmon qui est un fork du moteur XreaL qui est un fork du moteur ouvert de Quake 3. Pour introduire de nouvelles fonctionnalités et pour résoudre des problèmes, XreaL a dû étendre le format BSP. Ce moteur avait du code pour charger à la fois le nouveau format et l’original,<br> mais à cause de la manière dont ces formats et le moteur étaient conçus, vous deviez recompiler le moteur<br> avec des définitions (<em>defines</em>) spécifiques pour activer la prise en charge d’un format ou d’un autre, sans être capable de prendre en charge les deux au même moment. Pour Unvanquished et Dæmon nous avons pour le moment renoncé à ces améliorations pour ne pas perdre la compatibilité avec les logiciels tierce-parties et les actifs (<em>assets</em>) existant, mais cela signifie que nous devons contourner des problèmes qui ont des correctifs connus que nous n’utilisons pas encore.</p> <h2 id="toc-des-éditeurs-destinés-à-être-forkés">Des éditeurs destinés à être forkés</h2> <p><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-061.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3036312e6d696e692e706e67/slide-061.mini.png" alt="Longue liste de fork de radiant" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-061.mini.png"></a></p> <p>Du temps de Quake il y avait un éditeur de niveau maison appelé QuakeEd, du temps de Quake 3 cet éditeur était nommé QERadiant puis Q3Radiant, de là vous obtenez CoDRadiant pour Call of Duty, MoHRadiant pour Medal of Honor,<br> vous avez compris…</p> <p>Comme le moteur, l’éditeur de niveau devait être forké, instantié, édité pour s’adapter à votre jeu spécifique,<br> construit et maintenu par le développeur de jeu. La même chose se produisait avec les outils de compilation de carte.</p> <p>Ici est <a href="https://github.com/illwieckz/compare-radiant/blob/master/docs/known-radiant-list.md">ma liste personnelle</a> d’instance de Radiant connus pour divers jeux. Attendez-vous aussi à une longue liste pour les compilateurs de cartes et traceurs de rayon.</p> <p>Quand vous regardez en dehors de cet héritage d’id Software, il n’y a pas de DarkBlender, pas de NetBlender,<br> pas de ÜberBlender… mais quand vous jonglez avec les technologies d’id Software, vous le devez. Ceci n’est pas seulement parce que le code ouvert est mort, non-supporté et que les gens ne savent pas travailler entre eux.<br> La raison est que c’était voulu comme cela : les dévelopeurs payant id Software à l’époque devaient forker et faire le travail de maintenance et de publication de l’éditeur. Splash Damage avait son propre fork à l’époque, Raven avait un fork par jeu et ça fait beaucoup.</p> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-067.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3036372e6d696e692e706e67/slide-067.mini.png" alt="Radiant est peut être OK pour des employés, pas pour des indépendants" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-067.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-062.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3036322e6d696e692e706e67/slide-062.mini.png" alt="La liste des forks de compilateurs de cartes est toute aussi longue" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-062.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-068.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3036382e6d696e692e706e67/slide-068.mini.png" alt="À l’époque de Quake Live id Software a forké l’éditeur tandis que la communauté le maintenait" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-068.mini.png"></a></td> </tr> </tbody> </table> <p>À un moment id Software a ouvert le code source de l’éditeur et du compilateur de carte de Quake 3, il a été porté vers GTK pour devenir multiplateforme, et rendu à peu près multijeu. Ne vous attendez pas à ce que la fonctionnalité multijeu aille de soi. Ce n’est pas prévu pour que vous travailliez sur plusieurs jeux en même temps, multijeu signifie seulement que vous n’avez pas à réinstaller l’éditeur quand vous arrêtez de travailler<br> sur un jeu pour travailler sur un autre.</p> <p>Même avec cette amélioration multijeu, l’éditeur de niveau Radiant n’attend pas de vous que vous éditiez des niveaux pour un jeu un jour et pour un autre jeu un autre jour. Cela peut satisfaire le modèle de développement de jeux commerciaux, mais pas le modèle de contribution d’une communauté bénévole et libre motivée par la passion et le désir.</p> <p>L’éditeur s’attend à ce que vous stockiez les fichiers à seulement un endroit codé en dur, donc vous ne pouvez pas stocker vos fichiers où vous le voulez. Ceci est suffisant si vous faites partie d’une équipe travaillant sur un seul jeu dans un dossier partagé fourni par votre société, pas si vous êtes un passioné.</p> <p>L’histoire a aussi révélé un comportement intéressant d’id Software : quand ils ont eu besoin d’un éditeur de niveau pour leur jeu Quake Live, au lieu d’utiliser GtkRadiant 1.5 qui était maintenu par la communauté après qu’ils l’ont ouvert, ils sont simplement revenus à une ancienne version 1.4 qu’ils ont gardée en interne avant de la republier et la réouvrir une nouvelle fois. Ils ont forké leur propre code depuis une ancienne version,<br> et après cela les gens ont eu à choisir entre deux forks parce que les fonctionnalités et la prise en charge des jeux étaient partagées. À ce niveau il semble qu’id Software ne savait pas comment faire avec une communauté.</p> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-064.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3036342e6d696e692e706e67/slide-064.mini.png" alt="Il n’y a pas de DarkBlender, pas de NetBlender, pas d’ÜberBlender" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-064.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-071.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3037312e6d696e692e706e67/slide-071.mini.png" alt="Forks de Radiant déjà distribué dans Debian" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-071.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-069.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3036392e6d696e692e706e67/slide-069.mini.png" alt="Changements apportés à NetRadiant pendant les trois dernières années tandis que le logiciel est vieux de 20 ans" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-069.mini.png"></a></td> </tr> </tbody> </table> <p>Voici une simple liste de fonctionnalités qui furent ajoutées à l’initiative d’Unvanquished à la branche NetRadiant, qui est le fork communautaire avec probablement la liste la plus étendue de jeux pris en charge aujourd’hui :</p> <ul> <li>ouvrir un fichier depuis la ligne de commande et le gestionnaire de fichier,<br> cela a été implémenté en 2017.</li> <li>charger les données de jeu depuis des chemins arbitraires et prédéfinis,<br> cela a été implémenté en 2017.</li> <li>changer le jeu courant sans avoir à redémarrer l’éditeur vous-même, recharger la carte courante avec le nouveau jeu dans l’éventualité où vous auriez chargé la mauvaise carte avec le mauvais jeu,<br> cela a été implémenté en 2019, l’année dernière.</li> </ul> <p>La capacité de choisir où sauver vos données et d’ouvrir un fichier depuis le gestionnaire de fichier fut ajoutée pendant les trois dernières années, pour un logiciel conçu avant l’an 2000. Pourquoi cela a pris tant de temps est parce que ce logiciel est pensé pour être forké pour cibler la hiérarchie spécifique de votre jeu.</p> <p>Parce que ceci est une conférence Debian, je cite une fonctionnalité spéciale qui a été ajoutée à NetRadiant en 2018 : rendre possible d’installer l’éditeur en suivant le standard FHS (<em>File Hierarchy Standard</em>). Quand il est attendu que vous distribuiez un fork de l’éditeur avec chacun des différents jeux que vous publiez, rendre l’éditeur capable d’être installé globalement est la dernière de vos préoccupations, et cela pourrait même être stupide parce que tous ces forks seront distribués avec les outils associés comme les compilateurs de carte qui pourraient partager le même nom de binaire mais sans avoir le même comportement.</p> <p>Il y a déjà deux forks de Radiant distribués dans Debian, DarkRadiant qui est un fork de NetRadiant destiné pour The Dark Mod et focalisé sur les jeux basés sur Doom 3, et UFO Radiant qui est un fork d’une autre branche de DarkRadiant qui peut seulement éditer les données du jeu UFO: Alien Invasion.</p> <h2 id="toc-au-sujet-du-développement-logiciel-et-du-sacrifice-denfant">Au sujet du développement logiciel et du sacrifice d’enfant</h2> <p><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-076.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3037362e6d696e692e706e67/slide-076.mini.png" alt="Le flux de travail tue le précédent pour rediriger les ressources et le support de vie vers le nouveau" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-076.mini.png"></a></p> <p>Donc, nous avons mis en lumière plusieurs choses :</p> <ul> <li>la technologie d’id Software est très efficace mais c’est comme si chacune de ses parties suppose que vous forkiez l’ensemble et ne contribuiez jamais en retour ni ne mutualisiez les efforts de développement,</li> <li>les moteurs id Tech étaient censés être vendus et oubliés. Il semble que cela a été conçu pour une seule relation sociale : la vente,</li> <li>les formats de carte, matériaux, code réseau et autres choses ne sont pas vraiment pensées pour être étendues, versionnés, et dans de nombreux cas, il n’y a rien pour seulement détecter le format, quand parfois un seul entier aurait été suffisant pour parser des données inconnues.</li> </ul> <p>À peu près tout dans les moteurs id Tech est pensé pour distribuer un jeu qui va tuer le précédent. Le développement nouveau est pensé pour distribuer un jeu incompatible. La conception est pensée autour de cet état d’esprit, et ensuite le design induit cet état d’esprit à son tour.</p> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-075.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3037352e6d696e692e706e67/slide-075.mini.png" alt="Forker est comme donner naissance à un nouveau-né" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-075.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-073.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3037332e6d696e692e706e67/slide-073.mini.png" alt="La conception d’id Tech suppose que vous forkez" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-073.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-078.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3037382e6d696e692e706e67/slide-078.mini.png" alt="Les méthodologies évitent les situations requérant de résoudre des problèmes" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-078.mini.png"></a></td> </tr> </tbody> </table> <p>Forker un projet logiciel c’est comme donner naissance à un enfant, un fork est aussi fragile qu’un nouveau-né : il ne peut rien faire d’autre par lui-même que mourir. Si vous n’êtes pas capable de donner assez d’attention et de soin à un nouveau-né, le bébé va mourir. De même pour les forks.</p> <p>Le flux de travail d’id Software à l’époque ressemblait à du sacrifice d’enfant : à chaque fois qu’un nouveau jeu devait être développé, l’enfant précédent était tué pour rediriger les ressources et le support de vie sur le nouveau. À la différence des autres développeurs de moteur de jeu comme Epic ou Valve, id Software n’a jamais pris le risque de laisser son enfant atteindre l’adolescence et devenir un adulte.</p> <p>Ils n’ont pas distribué de précompilation réutilisable du moteur, les éditeurs n’étaient pas vraiment réutilisables, ils n’ont pas construit une communauté autour des outils comme si c’était un produit par lui-même, ils n’ont pas bâti une distribution logicielle donc ils n’ont jamais eu à en résoudre les problèmes associés, ils n’ont pas bâti un système de distribution de données donc ils n’ont pas eu à traiter les problèmes<br> d’incompatibilité de formats et de conflits de fichiers.</p> <p>À un moment dans le développement de jeu avec du code basé sur id Tech, vous remarquerez que pour solutionner certains problèmes vous ne devez pas seulement étendre votre moteur mais forker votre propre jeu. En travaillant sur Unvanquished je dois avoir rencontré cette situation 5 ou 6 fois.</p> <p>D’une certaine manière on peut mesurer le génie impressionnant de John Carmack par le fait que ses compétences techniques ont gardé id Software en vie pendant tant d’années malgré tant d’erreurs commerciales, ratages stratégiques et pertes d’opportunité, empêchant leurs propres communautés de joueurs de grandir avec eux.</p> <p><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-081.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3038312e6d696e692e706e67/slide-081.mini.png" alt="Du code mort produit des zombies" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-081.mini.png"></a></p> <p>Avec une telle rétrospective, ce qui semble bizarre est découvrir que c’est parce que le code était mort, je veux dire tué, qu’il était possible de l’ouvrir. Donc d’un côté nous avons reçu un code libre et ouvert,<br> mais de l’autre ce code était censé être mort et produire des morts-vivants (<em>zombies</em>).</p> <p>Aussi, le moins vous obtenez des contributions, plus facile il devient pour votre service juridique<br> de mettre tout en ordre pour une libération du code. Donc c’est comme s’il était plus possible pour le code source d’id Software d’être ouvert parce que le flux de travail était plus fermé que les autres.<br> Ça fait un peu bizarre de s’en rendre compte.</p> <p>En 2020, aucun développeur de jeu recherche un moteur qui requiert d’être forké et maintenu seul.<br> Pour Dæmon un de nos objectifs est de rendre possible à un développeur de jeu de simplement réutiliser une précompilation existante, disons celui que nous faisons pour Unvanquished, et de l’empaqueter avec son propre code de jeu et ses données. Cela n’est pas entièrement terminé, mais nous voulons que ce le soit.</p> <h2 id="toc-un-état-desprit-induit-par-le-code">Un état d’esprit induit par le code</h2> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-085.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3038352e6d696e692e706e67/slide-085.mini.png" alt="Le VFS PK3 est conçu pour recevoir des mises-à-jour de la part du vendeur, pas de vous" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-085.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-086.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3038362e6d696e692e706e67/slide-086.mini.png" alt="Le VFS DPK introduit un nouvel état d’esprit et une économie" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-086.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-087.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3038372e6d696e692e706e67/slide-087.mini.png" alt="Le BSP n’a rien pour versionner les formats d’image" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-087.mini.png"></a></td> </tr> </tbody> </table> <p>Le moteur de Quake 3 vient avec une fonctionnalité vraiment sympa appelée VFS PK3, c’est un système de fichier virtuel qui facilite vraiment l’extension de données de jeu. Mais ce n’est pas conçu pour la modification (<em>modding</em>). Cela peut être utilisé pour le <em>modding</em>, mais c’est conçu pour permettre au jeu de recevoir des mises à jour provenant d’une seule source : le vendeur.</p> <p>La conception n’empêche pas le jeu du joueur d’être cassé par n’importe quel fichier arbitraire provenant de n’importe quel serveur arbitraire. Donc nous l’avons étendu en créant le VFS DPK de manière à ce que cela rende possible de charger seulement une sélection prédéfinie de données au lieu de charger tout.</p> <p>Cela n’est pas suffisant pour corriger certains problèmes et il y a quelques autres fonctionnalités à implémenter, mais vous verrez la différence entre concevoir un format pour permettre au vendeur de mettre à jour le jeu, et de concevoir le format en prenant en compte que des gens au hasard vont mettre à jour votre propre jeu.</p> <p>Ce petit changement mineur introduit un nouvel état d’esprit. Parce que les paquets ont maintenant un nom de base et une chaîne de version standardisée (réutilisant le tri de version de Debian), il devient naturel de penser ces paquets comme des bibliothèques. Les artistes peuvent faire des bibliothèques de textures et des bibliothèques de modèles, ils peuvent avoir leur propre cycle de sortie et les cartographes (<em>mappers</em>) peuvent alors créer des niveaux utilisant cette-version-ci ou cette-version-là de bibliothèque de modèle ou de texture.</p> <p>Ce changement que nous avons fait est tellement mineur que si vous ne faites que rétablir l’extension du fichier<br> pour celle attendue par Quake 3, un binaire d’il y a 20 ans peut lire les données.</p> <p>Mais cette modification vraiment mineure signifie beaucoup de choses pour une communauté, chaque membre étant capable de développer son propre métier et ses relations aux autres, devenant un fournisseur pour d’autres ou se reposant sur des fournisseurs, ça s’appelle une économie.</p> <p><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-089.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3038392e6d696e692e706e67/slide-089.mini.png" alt="Motif de consommation moderne" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-089.mini.png"></a></p> <p>Nous avons parlé du format de fichier BSP. Il embarque des images qui sont des textures de lumières et d’ombres précalculées. Seulement un format de stockage était pris en charge et seulement une seule taille d’image permise, et il n’y avait rien pour décrire le format, seulement le nombre d’images était variable. Il y a plusieurs années des personnes ont eu la bonne idée de rendre le moteur capable de charger ces textures depuis l’extérieur de ce fichier. Cela a permis de nouvelles tailles, de nouveaux formats d’images incluant des formats compressés.</p> <p>Ce simple exemple montre comment le premier concept requérait que les jeux forkent le format pour créer des variantes incompatibles si quelqu’un avait besoin de stocker des textures avec une plus grande résolution, quand le second concept permet à n’importe quel moteur d’ajouter n’importe quel format sans introduire des incompatibilités dans la spécification du fichier BSP lui-même.</p> <p>Le code id Tech suivaitle motif de consommation linéaire moderne : production, consommation, déchet. Nos efforts à Unvanquished est de recréer un cycle. Et pour recréer ce cycle, nous avons à corriger le concept induisant l’état d’esprit du motif linéaire.</p> <h2 id="toc-sur-le-code-open-source-et-les-communautés-humaines-de-partage">Sur le code open source et les communautés humaines de partage</h2> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-092.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3039322e6d696e692e706e67/slide-092.mini.png" alt="Copie d’écran du billet de blog de Dave Airlie" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-092.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-093.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3039332e6d696e692e706e67/slide-093.mini.png" alt="Les entreprises doivent passer du temps à construire des projets et des communautés" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-093.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-099.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3039392e6d696e692e706e67/slide-099.mini.png" alt="Le modèle de distribution de sources n’est pas un modèle de développement partagé" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-099.mini.png"></a></td> </tr> </tbody> </table> <p>Dave Airlie de Red Hat <a href="https://airlied.blogspot.com/2020/11/linux-graphics-why-sharing-code-with.html">a publié un article de blog</a> sur ce sujet pendant que je préparais cette conférence. Parlant de pile graphique au lieu de moteur de jeux, il a dit :</p> <blockquote> <p>Il y a une grande différence entre les projets distribués comme open source et développés comme open source<br> en termes de durabilité et de communauté.</p> <p>En théorie il pourrait être possible de produire une telle pile avec les bénéfices du développement open source, cependant la plupart des vendeurs semblent y échouer. Ils voient l’open source comme un modèle de distribution, ils développent en interne et jettent les résultats à la pelle par-dessus la barrière dans un dépôt github tous les X semaines, […] mais ils ne passent jamais de temps à construire des projets ou des communautés autour d’eux.</p> </blockquote> <p>Il ajouta :</p> <blockquote> <p>J’ai commencé radv parce qu’AMD promettait au monde un pilote Vulkan open source pour Linux […]. Mais quand il fut livré il était distribué comme open source mais développé en interne. Il n’y avait aucune passerelle pour la participation de la communauté […]. Comparez cela au projet radv dans Mesa qui permit à Valve de contribuer le compilateur <em>backend</em> ACO et fournir de meilleurs résultats qu’AMD […] n’aurait jamais pu obtenir, avec bien moins d’investissement et de main d’œuvre.</p> </blockquote> <p>Il y a quatre choses importantes dans cette citation. Premièrement il est important pour les entreprises<br> de dépenser du temps à construire des projets et des communautés autour de leurs propres projets.</p> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-095.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3039352e6d696e692e706e67/slide-095.mini.png" alt="id Software a ouvert des moteurs mais n’a pas construit de communauté" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-095.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-098.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3039382e6d696e692e706e67/slide-098.mini.png" alt="La conception ne reflète pas les problèmes rencontrés par les communautés" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-098.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-101.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3130312e6d696e692e706e67/slide-101.mini.png" alt="La conception d’id Software économise les ressources au niveau local, pas à l’échelle de la communauté" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-101.mini.png"></a></td> </tr> </tbody> </table> <p>En second, le nom de Valve a été encore cité. La frontière entre le bien et le mal n’est pas entre les hommes mais passe au travers de chaque être humain, de même pour les sociétés et organisations humaines. Tandis qu’Epic et Valve n’ont jamais rendu leur moteur de jeu libre et open source, ils comprirent ce qu’est une communauté.<br> De l’autre côté, tandis qu’id Software savait ce que c’était de publier son code de manière libre et ouverte, ils n’ont pas vraiment bâti de communauté autour d’eux, pas même de communauté à code fermé.</p> <p>Quand vous regardez dans le passé il semble que les entreprises qui utilisaient les technologies d’id Software étaient plus susceptibles d’accepter cette situation étant donné que le code était efficace, et pour certaines d’entre elles la seule relation sociale a pu être la vente.</p> <p>Rebecca Heineman, la développeuse du port 3DO de Doom <a href="https://www.youtube.com/watch?v=rBbIil2HPSU">a même dit</a> que lorsque sa société a acheté le droit de porter Doom sur cette plateforme, elle n’a pas eu le code source au début. Cela n’était pas la faute d’id Software et elle n’a pas rencontré de problème particulier à obtenir une copie du source sur un CD en contactant John Carmack directement, mais cela signifie que même quand le code source est acheté à cette intention l’idée d’un service semble être optionnelle.</p> <p>La conception logicielle reflète usuellement les services autour de lui. Bien sûr nous ne pouvons pas attendre<br> des méthodologies de l’époque de Doom d’être au niveau de celles actuelles, mais quand on regarde les codes sources ultérieurs, ils ne semblent pas refléter de changements fondamentaux dans ces méthodes de travail.</p> <p>La façon dont les problèmes sont solutionnés et fonctionnalités implémentées reflètent ordinairement les méthodologies et flux de travail. Et les reflets des problèmes rencontrés par les communautés sont difficiles à remarquer dans la conception du code d’id Software.</p> <p>La troisième chose importante est la formulation que Dave utilise dans son billet de blog quand il parle au sujet du « modèle de distribution de source ouverte ». Nous pouvons enlever l’adjectif « ouverte ». Les logiciels id Tech semblent avoir été plutôt construits autour d’un modèle de distribution de source qu’un modèle de développement d’effort partagé, même si propriétaire et sous accord de non-divulgation.</p> <p>La quatrième chose importante est le coût. Les logiciels id Software semblent avoir été seulement conçus<br> pour traiter des problèmes techniques, pas les problèmes sociaux comme récupérer les contributions en retour<br> et prévenir le gaspillage de ressources de développement à l’échelle d’une communauté. Les ressources semblent avoir été économisées au niveau local de l’entreprise au détriment de la communauté.</p> <p>Enfin, une telle conception blesse profondément la croissance technique du logiciel lui-même quand il doit survivre à un homme ou à une entreprise, et que ce logiciel repose sur des contributions bénévoles.</p> <h2 id="toc-bâtir-un-écosystème-et-une-communauté-comme-un-service">Bâtir un écosystème et une communauté comme un service</h2> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-106.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3130362e6d696e692e706e67/slide-106.mini.png" alt="Les humains ont besoin d’expérimenter les projets comme des amonts" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-106.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-107.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3130372e6d696e692e706e67/slide-107.mini.png" alt="Rôder et vivre dans les communautés" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-107.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-109.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3130392e6d696e692e706e67/slide-109.mini.png" alt="Pour ouvrir des portes vous devez regarder les chemins des gens" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-109.mini.png"></a></td> </tr> </tbody> </table> <p>Comment faire qu’un projet comme Unvanquished et le moteur Dæmon fassent ce que le moteur Quake 3 n’a jamais vraiment fait sur le plan de la communauté et se fraient un chemin à travers l’enfer de l’état d’esprit de fork d’id Software ?</p> <p>D’abord, ce n’est pas technique, mais les être humains ont besoin d’expérimenter un projet existant comme un projet amont. Par exemple quand vous avez besoin d’ajouter quelque chose à Blender, cela semble évident<br> que vous devez leur soumettre des patchs. Cela n’est pas évident en soi, c’est une connaissance qu’un projet doit construire.</p> <p>Les gens doivent entendre parler des intentions des organisations et des personnes de relire et fusionner leur code. Les gens doivent entendre que leur code est censé faire partie d’un tout. Il est nécessaire de construire une visbilité sur ces buts et ces intentions.</p> <p>Si vous pensez qu’il est évident que n’importe quel patch que vous feriez pour le noyau Linux ferait mieux d’être fusionné en amont (<em>upstreamed</em>), cela signifie que quelqu’un a semé avec succès ce sentiment dans votre cœur. L’industrie Android révèle que cette conviction n’est pas évidente : malgré tous les efforts faits<br> pour rendre l’amont clairement identifiable et le code et les outils conçus pour les contributions, de nombreuses entreprises agissent comme si le noyau Linux était conçu pour être forké et ils implémentent leurs fonctionnalités sur ce qui est déjà un cadavre de Linux.</p> <p>Une chose très importante est de marauder (<em>lurk</em>) et de vivre dans les communautés, d’écouter leurs besoins,<br> remarquer les aspirations grandissantes, et d’accompagner les naissances. C’est comme sonder un marché sauf qu’il s’agit d’être un ami.</p> <p>Nous ne pouvons sous-estimer l’importance d’être proche des communautés. Je viens seulement de découvrir ce mois-ci un autre projet basé sur XreaL à peu près en vie. Une refonte (<em>remake</em>) de Kingpin sur XreaL. Je fais partie de ceux ayant la plus profonde connaissance de tous ces forks mais j’ai manqué celui-ci pendant une décennie. Moins de deux semaines après avoir parlé pour la première fois avec l’un des contributeurs agonisants<br> il nous a aidé à corriger un problème pour notre version à venir. Cela m’a pris 10 années pour rencontrer cette communauté, j’espère que nous pouvons faire plus de choses ensemble.</p> <p>Parfois un concept peut être amélioré seulement en parlant à d’autres même s’ils n’utiliseront jamais le logiciel. Cela aide à prendre du recul et avoir un meilleur panorama de ce qui peut être fait. Parfois on découvre que le logiciel peut faire plus que nos propres besoins en faisant seulement la même chose différemment. Pour ouvrir des portes vous devez regarder le chemin des gens.</p> <p><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-112.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3131322e6d696e692e706e67/slide-112.mini.png" alt="Tout patch solutionnant un problème est pour de vrai" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-112.mini.png"></a></p> <p>Les gens sous-estiment la valeur de leur contribution. Certains forks sont faits par des personnes bidouillant pour s’amuser ou des étudiants expérimentant quelque chose par curiosité. Ils ignorent souvent que ce qu’ils font est précieux. Cela peut être dû à des présupposés faux provenant du système scolaire qui leur font penser qu’ils ne sont pas encore des adultes ou pas encore des professionnels et que rien de ce qu’ils font ne l’est pour de vrai. Mais tout patch qui résout un problème est pour de vrai. Aussi en grandissant on découvre que les professionnels peuvent être simplement des adolescents prétendant être sérieux… Donc, personne ne doit sous-estimer la valeur d’une contribution.</p> <p>Certaines personnes forkent simplement en disant « je veux simplement ajouter cela », supposant que le code original est terminé et qu’il n’y aurait rien à tirer de lui dans le futur. Le logiciel fermé peut introduire cet état d’esprit mais pour un projet open source il n’y a rien de tel qu’un code étant terminé. Aussi, ils ignorent que d’autres personnes veulent « simplement ajouter cela » aussi.</p> <table> <thead> <tr> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-113.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3131332e6d696e692e706e67/slide-113.mini.png" alt="Le moteur Dæmon est pensé pour être réutilisable, de l’aide a été fournie par Xonotic" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-113.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-116.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3131362e6d696e692e706e67/slide-116.mini.png" alt="Le coût de forker est supérieur au coût de contribuer en retour" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-116.mini.png"></a></td> <td><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-117.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3131372e6d696e692e706e67/slide-117.mini.png" alt="Laisser grandir un enfant signifie que tout le monde est libre" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-117.mini.png"></a></td> </tr> </tbody> </table> <p>Comme nous le voyons avec les formats BSP et DPK, il est parfois possible de repenser les choses avec des différences vraiment mineures de façon à ce qu’il soit rendu plus facile d’étendre le code sans avoir à le forker. Parfois une seule petite modification peut révéler que l’idée de forker une base de code complète<br> pour changer la taille d’une image est du gaspillage, quand précédemment un tel fork pour une modification aussi mineure était requis par conception.</p> <p>Pour Unvanquished nous avons clairement signifié que le moteur est censé être réemployable, et nous avons reçu beaucoup d’aide de la part de personnes de Xonotic pour diviser les arborescences et faire du moteur Dæmon un projet par lui-même. Parce que l’un des premiers services qui doit être rendu à un développeur de jeu est un binaire réutilisable, chaque problème qui empêche encore cela est désormais proprement rapporté et est prévu d’être corrigé un jour.</p> <p>Une autre chose importante étant l’éditeur et les outils, avec encore l’aide de Xonotic nous avons fait beaucoup de travail pour rendre l’éditeur de niveau NetRadiant plus accessible aux nouveaux-venus et améliorer le flux de travail de façons plus naturelles.</p> <p>Cependant, tant d’efforts n’ont pas empêché un autre fork de NetRadiant d’apparaître tout juste et les gens doivent à nouveau choisir entre quel jeu est pris en charge et les fonctionnalités, encore. Parce que ce fork est basé sur une vieille branche qui précède une large réorganisation du code, l’effort pour les fusionner est élevé et sur la base d’un salaire de développeur, le coût de la quantité de travail pour fusionner les deux branches serait un nombre avec quatre zéros si évalué en dollars. Cela ne serait pas le coût d’une fonctionnalité, cela serait seulement le coût du gaspillage. Faire travailler les gens entre eux est vraiment une route longue et difficile.</p> <p><a href="https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-118.png"><img src="//img.linuxfr.org/img/68747470733a2f2f646c2e696c6c776965636b7a2e6e65742f622f6c696e757866722e6f72672f636f6e666572656e63652f62617469722d756e652d636f6d6d756e617574652d636f6d6d652d756e2d736572766963652f736c6964652d3131382e6d696e692e706e67/slide-118.mini.png" alt="Le premier service que chacun reçoit dans la vie est une communauté" title="Source : https://dl.illwieckz.net/b/linuxfr.org/conference/batir-une-communaute-comme-un-service/slide-118.mini.png"></a></p> <p>Ce qu’il est important de garder à l’esprit est qu’à un certain point le coût du fork est plus élevé que le coût de contribuer en retour. Cela peut être difficile à remarquer dans des communautés de personnes bénévoles quand vos propres actes ne signifient pas plus d’effort pour vous mais plus d’efforts pour les autres.</p> <p>Nous ne pouvons pas faire de la magie et devons nous reposer sur la volonté des autres. C’est le risque de laisser un enfant grandir : nous pouvons donner la direction que nous pensons être la bonne, mais à la fin tout le monde est libre.</p> <p>Un service est un acte d’assistance auprès de quelqu’un, et le premier service que chacun reçoit dans la vie est une communauté.</p> <h2 id="toc-questions">Questions</h2> <p><strong><em>Sahil :</em></strong> Merci Thomas pour la conférence, passons aux questions, donc la première question est :</p> <blockquote> <p>Tout cela me semble super, mais avez-vous déjà réussi à réunir à bord d’autre forks non-Unvanquished ?</p> </blockquote> <p><strong><em>Thomas :</em></strong> Si la question est au sujet des autres projets qui sont intéressés par notre moteur, aucun n’a encore abouti dans leur portage de leur jeu sur le moteur parce que cela requiert beaucoup de main d’œuvre, donc cela pourrait se produire dans le futur, mais pour le moment nous ne savons pas. Mais cependant cela nous a déjà aidé à, comment dire… par exemple ils ont corrigé des bugs ou nous avons trouvé des bugs que nous avons corrigés<br> en regardant comment rendre possible leur portage, donc au final si aucun jeu n’a encore été porté avec succès,<br> le moteur est meilleur grâce à eux, grâce à leurs effort pour leur portage.</p> <p><strong><em>Sahil :</em></strong> Très bien, ensuite je crois que la seconde question a déjà été répondue, à propos de l’animal vert.</p> <p><strong><em>Thomas :</em></strong> Oui ça s’appelle un granger. Il y a plein d’histoires qui ont été écrites par certaines personnes donc parfois vous pouvez entendre le nom de « <em>Dave</em> », vous pouvez lire ce nom dans certains de nos articles de blogs par exemple, blaguant à son sujet.<br><br> Donc il s’appelle Dave, c’est un granger. C’est une espèce dans Unvanquished qui a le rôle de construire les structures donc si tout est détruit dans l’équipe alien et qu’il n’y a pas de granger, l’équipe alien a perdu.</p> <p><strong><em>Sahil :</em></strong> Très bien ! Maintenant nous avons presque dépassé le temps, donc merci Thomas pour cette incroyable conférence et tout le travail que vous avez fait, et merci à Jathan pour la direction et, profitez de la suite de la MiniDebConf.</p> <p><strong><em>Jathan :</em></strong> Merci Thomas.</p> <p><strong><em>Thomas :</em></strong> À Bientôt !</p> </div><div><a href="https://linuxfr.org/news/batir-une-communaute-comme-un-service.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122414/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/news/batir-une-communaute-comme-un-service#comments">ouvrir dans le navigateur</a> </p>
  • Pl chevron_right

    A happy new year.

    pubsub.slavino.sk / planetdebian · Friday, 1 January - 00:32

A happy new year. It was a challenging year last year; hopefully the new one will be less of a stay-home.


Značky: #Debian

  • Pl chevron_right

    Free software activities in December 2020

    pubsub.slavino.sk / planetdebian · Thursday, 31 December - 18:19 · 4 minutes

Here is my monthly update covering what I have been doing in the free software world during December 2020 ( previous month ):

  • Reviewed and merged a contribution from Peter Law to my django-cache-toolbox library for Django -based web applications, including explicitly requiring that cached relations are primary keys ( #23 ) and improving the example in the README ( #25 ).

Conservancy is not-for-profit 501(c)(3) charity focused on ethical technology and user freedom.
  • I took part in an interview with Vladimir Bejdo, an intern at the Software Freedom Conservancy , in order to talk about the Reproducible Builds project , my participation in software freedom, the importance of reproducibility in software development, and to have a brief discussion on the issues facing free software as a whole. The full interview can be found on Conservancy's webpages.

  • As part of my duties of being on the board of directors of the Open Source Initiative , I attended its monthly meeting and participated in various licensing and other related discussions occurring on the internet. Unfortunately, I could not attend the parallel meeting for Software in the Public Interest this month.

§


Reproducible Builds


One of the original promises of open source software is that distributed peer review and transparency of process results in enhanced end-user security. However, whilst anyone may inspect the source code of free and open source software for malicious flaws, almost all software today is distributed as pre-compiled binaries. This allows nefarious third-parties to compromise systems by injecting malicious code into ostensibly secure software during the various compilation and distribution processes.

The motivation behind the Reproducible Builds effort is to ensure no flaws have been introduced during this compilation process by promising identical results are always generated from a given source, thus allowing multiple third-parties to come to a consensus on whether a build was compromised.

This month, I:


I also made the following changes to diffoscope , our in-depth and content-aware diff utility that can locate and diagnose reproducibility issues, including releasing version 163 :


  • New features & bug fixes:

    • Normalise ret to retq in objdump output in order to support multiple versions of GNU binutils . ( #976760 )
    • Don't show any progress indicators when running zstd . ( #226 )
    • Correct the grammatical tense in the --debug log output. [ ... ]
  • Codebase improvements:

    • Update the debian/copyright file to match the copyright notices in the source tree. ( #224 )
    • Update various years across the codebase in .py copyright headers. [ ... ]
    • Rewrite the filter routine that post-processes the output from readelf(1) . [ ... ]
    • Remove unnecessary PEP 263 encoding header lines; unnecessary after PEP 3120 . [ ... ]
    • Use minimal instead of basic as a variable name to match the underlying package name. [ ... ]
    • Use pprint.pformat in the JSON comparator to serialise the differences from jsondiff . [ ... ]

§



Debian

Uploads

I also sponsored an upload of adminer ( 4.7.8-2 ) on behalf of Alexandre Rossi and performed two QA uploads of sendfile ( 2.1b.20080616-7 and 2.1b.20080616-8 ) to make the build the build reproducible ( #776938 ) and to fix a number of other unrelated issues.

Debian LTS


This month I have worked 18 hours on Debian Long Term Support (LTS ) and 12 hours on its sister Extended LTS project.

You can find out more about the Debian LTS project via the following video:

hqdefault.jpg


Značky: #Debian

  • Pl chevron_right

    Pandemic, Informal economy and Khau Galli.

    pubsub.slavino.sk / planetdebian · Thursday, 31 December - 17:39 · 7 minutes

Formal sector issues

Just today it was published that output from eight formal sectors of the economy who make the bulk of the Indian economy were down on a month to month basis . This means all those apologists for the Government who said that it was ok that the Govt. didn’t give the 20 lakh crore package which was announced. In fact, a businessman from my own city, a certain Prafull Sarda had asked via RTI what happened to the 20 lakh crore package which was announced? The answers were in all media as well as newspapers but on the inside pages. You can see one of the article sharing the details here . No wonder Vivek Kaul also shared his take on the way things will hopefully go for the next quarter which seems to be a tad optimistic from where we are atm.

Eight Sectors declining in Indian Economy month-on-month CNBC TV 18

The Informal economy

The informal economy has been strangulated by the current party in power since it came into power. And this has resulted many small businesses which informal are and were part of culture of cities and towns. I share an article from 2018 which only shows how good and on the mark it has aged in the last two years. The damage is all to real to ignore as I would share more of an anecdotes and experiences because sadly there never has been any interest shown especially by GOI to seek any stats. about informal economy. Although CMIE has done some good work in that even though they majorly look at formal, usually blue-collar work where again there is not good data. Sharing an anecdote and a learning from these small businesses which probably an MBA guy wouldn’t know and in all honesty wouldn’t even care.

Khau galli

Few years back, circa 2014 and on wards, when the present Govt. came into power, it did come with lot of promises. One of which was that lot of informal businesses would be encouraged to grow their businesses and in time hopefully, they become part of the formal economy. Or at least that was the story that all of us were told. Due to that they did lot of promises and also named quite a few places where street food was in abundance. Such lanes were named ‘Khau galli’ for those who are from North India, it was be easily known and understood. This was just saying that here are some places where you could get a variety of food without paying obscene prices as you would have to vis-a-vis a restaurant. Slowly, they raised the rates of inputs (food grains), gas cylinder etc. which we know of as food inflation and via ‘GST’ made sure that the restaurants were able to absorb some of the increased inputs (input credit) while still being more than competitive to the street food person/s. The restaurant F&B model is pretty well known so not going there at all. It is however, important to point out that they didn’t make any new ‘khau gallis’ or such, most or all the places existed for years and even decades before that. They also didn’t take any extra effort either in marketing the khau gallis or get them with chefs or marketing folks so that the traditional can marry to the anew. They just named them, that was the only ‘gain’ to be seen on the ground.

In its heyday, the khau galli near my home used to have anywhere between 20-30 Thelas or food carts. Most of the food carts would be of wood and having very limited steel. Such food carts would cost anywhere around INR 15-20k instead of the food cart you see here . The only reason I shared that link is to show how a somewhat typical thela or food cart looks in India. Of course YouTube or any other media platform would show many. On top of it, you need and needed permission from the municipality a license for the same which would be auctioned. Now that license could well run from thousands into lakhs depending on various factors or you gave something to the Municipal worker when he did his rounds/beat much like a constable every day or week. Apart from those, you also have raw material expenditure which could easily run into few thousands depending upon what sort of food you are vending. You also would typically have 2-3 workers so a typical Thela would feed not only its customers but also 2-3 families who are the laborer families as well as surrounding businesses.

As I used to be loyal and usually go to few whom I found to be either tasty or somehow they were good for me. In either case, a relationship was formed. As I have been never fond of crowds, I usually used to in their off-beat hours either when they are close to packing up of when I know they usually have a lull. That way I knew I would get complete attention of the vendor/s. Many a times I used to see money change hands between the vendors themselves and used to see both camaraderie as well as competition between them. This is years ago, once while sharing a chai (tea) with one of the street vendors I casually asked I have often seen you guys exchanging money with each other and most of the time quite a bit of the money is also given to the guy who didn’t make that much sales or any sales at all.

The vendor replied sharing practical symbiotic knowledge. All of us are bound by a single thing called poverty. All of us are struggle. Do you know why so many people come here, because they know that there would be a variety of food to be had. Now if we stopped helping each other, the number of people who would make the effort would be also less, we know we are not the only game in town. Also whatever we give, sooner or later it gets adjusted. Also if one of us has good days, he knows hardship days are not far. Why, simply because people change tastes or want variety. So irrespective of good or bad the skills of the vendor is, she or he is bound to make some sales. The vendor either shares the food with us or whatever. Somehow these things just work out. And that doesn’t mean we don’t have our fights, we do have our fights, but we also understand this. Now you see this and you understand that these guys have and had a community. Even if they changed places due to one reason or the other, they kept themselves connected. Unlike many of us, who even find a hard time keeping up with friends let alone relatives.

Now cut to 2020, and where there used to be 20-30 thelas near my home, there are only 4-5. Of course, multiple reasons, but one of the biggest was of course demonetization. That was a huge shock to which many of thela walas succumbed. Their entire savings and capital were turned to dust. Many of their customers will turn up with either a INR 500 or INR 2000/- Re note where at the most a dish costed INR 100/- most times half or even 1/3rd of that amount. How and from where the thela walas could get that kind of cash. These are people who only if they earn, they and their family will have bread at night. Most of the loose change was tied up at middle to higher tier restaurants where they were giving between INR 20/- 30/- for every INR 100/- change of rupees and coins. Quite a few bankers made money by that as well as other means where the thela walas just could not compete. These guys also didn’t have any black money even though they were and are part of the black/informal economy. Sadly, till date no economist or even sociologist as far as I know has attempted or done any work from what I know on this industry. If you want to formalize such businesses then at the very least understand their problems and devise solutions. And I suspect, what is and has happened near my house has also happened everywhere else, at least within the geographical confines of the Indian state. Whether it was the 2016 demonetization or the pandemic, the results and effects have been similar the same all over. Some states did do well and still do, the suffering still continues.

With the hope that the new year brings cheer to you as well some more ideas to remain in business by the thela walas, I bid you adieu and see you in new year 🙂


Značky: #Debian

  • Pl chevron_right

    20201231-no-source-change-source-uploads

    pubsub.slavino.sk / planetdebian · Thursday, 31 December - 12:05 · 3 minutes

On doing 540 no-source-change source-only uploads in two weeks

So I've been doing 540 no-source-change source-only uploads in the last two weeks and am planning to do 3000 more in January 2021. We'll see how that goes ;)

Let me explain what I have been doing and why.

So, starting with the Bullseye release cycle the Release Team changed policy: only packages which were build on buildds are allowed to migrate to testing.

Which is pretty nice for reproducible builds as this also ensures that a .buildinfo file is available for anyone wanting to reproduce the binaries of that package.

However, there are many binary (and source) packages in Debian which were uploaded before 2016 (which is when .buildinfo files were introduced) or were uploaded with binaries until that change in release policy July 2019.

Then Ivo De Decker scheduled binNMUs for all the affected packages but due to the way binNMUs work, he couldn't do anything about arch:all packages as they currently cannot be rebuilt with binNMUs.

Ivo and myself discussed what could be done about the remaining packages and (besides long complicated changes to Debian's workflows) the only thing deemed possible was doing many many source uploads with just a new changelog entry:

  * Non maintainer upload by the Reproducible Builds team.
  * No source change upload to rebuild on buildd with .buildinfo files.

These packages are all inherently buggy, because Debian policy mandates that packages should be reproducible and without .buildinfo files one cannot reproducibly rebuild packages. So instead of filing many many bugs we've decided to just fix these bugs by doing a no-source-change source uploads. One nice aspect of these uploads is that there's no follow-up work imposed on the maintainer: whether they keep that changelog entry or whether they discard it, it does not matter.

So Ivo had developed an SQL query which showed 570 packages needing an update roughly two weeks ago, on December 18 and so I started slowly. This is the amount of NMUs I did in the last days:

for i in $(seq 18 30) ; do echo -n "Dec $i: " ; ls -lart1 done/*upload|grep -c "Dec $i" ; done
Dec 18: 12
Dec 19: 0
Dec 20: 3
Dec 21: 13
Dec 22: 13
Dec 23: 16
Dec 24: 4
Dec 25: 28
Dec 26: 0
Dec 27: 38
Dec 28: 198
Dec 29: 206
Dec 30: 9

About ten packages had FTBFS bugs preventing an upload and seven packages were uploaded by the maintainer before me. I've seen two cases of sudden maintainer uploads after 8 and 10 years of no activity!

So what did I do for each upload?

  • pre upload work:
    • test build with pbuilder in sid
    • check PTS for last upload date (and having arch:all binaries) and open RC bugs
    • modify d/changelog
    • check debdiff between two sources (just the changelog entry...!)
    • upload
    • (some times filing bugs or modifying bug meta data etc)
  • post upload:
    • check PTS for testing migration, so for this I've still got >500 browser tabs open and will keep them open until the packages migrates

Much to my surprise I didn't get much feedback, there were like 6 people on the #debian-reproducible channel cheering and one on #debian-qa, though that person is a Release Team member so that was kind of important cheering. And I've seen some maintainer uploads to packages which haven't seen uploads since some years. And really nice: no-one complained so far. I hope this will stay this way with the plan to do 3000 more uploads of this kind:

Those 570 packages were only key packages but there are 3000 more source packages which have a binary in bullseye for which no .buildinfo file exists. So I plan to upload them all in January 2021 and you can help me doing so, by uploading your packages before me - and maybe fixing some other bugs in the process!

I'll post the list of packages (sorted by ddlist) to debian-devel@lists.d.o shortly and will then amend this blog post to link to that mail.

Many thanks to Ivo and the whole Release Team for their support of Reproducible Builds and generally speaking for the many many enhancements to the release process we've seen over the years. Debian in 2021 will rock'n'roll more than ever! So thank you all, once again, for making Debian what it is and what it will be!


Značky: #Debian

  • Pl chevron_right

    Review: Billion Dollar Loser

    pubsub.slavino.sk / planetdebian · Thursday, 31 December - 04:04 · 7 minutes

Review: Billion Dollar Loser , by Reeves Wiedeman

Publisher: Little, Brown and Company
Copyright: October 2020
ISBN: 0-316-46134-2
Format: Kindle
Pages: 315

WeWork was founded in 2010 by Adam Neumann and Miguel McKelvey as a successor company to their similar 2008 GreenDesk business. (Adam's wife Rebekah is now presented as a co-founder. This seems dubious in Wiedeman's account, although Rebekah's role in the company is murky, ever-changing, and hard to pin down.) Its business model in reality was to provide turn-key, pre-furnished and stocked co-working and small office space to individuals and businesses on flexible, short-term leases. Its business model in Neumann's speeches and dreams, and represented by the later renaming of the company to the We Corporation, was nothing less than to transform the way people worked, learned, and lived.

Through aggressive, money-losing expansion, WeWork grew rapidly to over 500 locations in 29 countries and became the largest office tenant in New York City. Based primarily on massive financial support from Masayoshi Son, CEO of Japanese holding company SoftBank, WeWork's private valuation rose to $47 billion. In 2019, the company attempted to go public, but its IPO collapsed, in part due to deeper analysis of the company's books. Neumann was forced out of the company (with an individual payout valued at $1.7 billion), the IPO was withdrawn, SoftBank wrote down 90% of their investment in the company and took control of it, and WeWork laid off more than 20% of its workforce.

This book is a detailed history of WeWork's rise and fall, joining a genre that includes The Smartest Guys in the Room (Enron), Bad Blood (Theranos), and Super Pumped (Uber). I believe it's the first full book on WeWork, although it was preceded by several long-form stories, including "The I In We" by Wiedeman for New York magazine. As the first history, it's a somewhat incomplete cut: litigation between Neumann and WeWork is still pending, WeWork staggered into 2020 and a world-wide pandemic that made cramped open-plan offices an epidemiological disaster, and there will doubtless be new revelations yet to come. The discovery process of lawsuits tends to be good for journalists. But despite being the first out of the gate, Billion Dollar Loser reaches a satisfying conclusion with the ouster of Neumann, who had defined WeWork both internally and externally.

I'm fascinated by stories of failed venture capital start-ups in general, but the specific question about WeWork that interested me, and to which Wiedeman provides a partial answer, is why so many people gave Neumann money in the first place. Explaining that question requires a digression into why I thought WeWork's valuation was absurd.

The basic problem WeWork had when justifying its sky-high valuation is competition. WeWork didn't own real estate; it rented properties from landlords with long-term leases and then re-rented them with short-term leases. If its business was so successful, why wouldn't the landlords cut out the middle man, do what WeWork was doing directly, and pocket all the profit? Or why wouldn't some other company simply copy WeWork and drive the profit margins down? Normally with startups the answer revolves around something proprietary: an app, a server technology, patents, a secret manufacturing technique, etc. But nothing WeWork was doing was different from what innumerable tech companies and partner landlords had been doing with their office space for a decade, and none of it was secret.

There are two decent answers to that question. One is simple outsourcing: landlords like being passive rent collectors, so an opportunity to pay someone else to do the market research on office layouts, arrange all the remodeling, adapt to changing desires for how office space should be equipped and stocked, advertise for short-term tenants, and deal with the tenant churn is attractive. The landlord can sit back and pocket the stable long-term rent.

The second answer is related: WeWork is essentially doing rental arbitrage between long-term and short-term rents and thus is taking on most of the risk of a commercial real estate downturn. If no one is renting office space, WeWork is still on the hook for the long-term rent. The landlord is outsourcing risk, at least unless WeWork goes bankrupt. (One infuriating tidbit from this book is that Neumann's explicit and often-stated goal was to make WeWork so large that its bankruptcy would be sufficiently devastating to the real estate industry that it would get a bailout.)

There's a legitimate business here. But that business looks like a quietly profitable real estate company that builds very efficient systems for managing short-term leases, remodeling buildings, and handling the supply chain of stocking an office. That looks nothing like WeWork's business, has nothing to do with transforming the world of work, and certainly doesn't warrant sky-high valuations. WeWork didn't build an efficient anything. It relied on weekend labor from underpaid employees and an IT person who was still in high school. And WeWork actively resisted being called a real estate company and claimed it was a tech company or a lifestyle company on the basis of essentially nothing.

Wiedeman seems almost as baffled by this as I am, but it's clear from the history he tells that part of the funding answer is the Ponzi scheme of start-up investing. People gave Neumann money because other people had previously given Neumann money, and the earlier investors cashed out at the expense of the later ones. Like any Ponzi scheme, it looks like a great investment until it doesn't, and then the last sucker is left holding the bag. That sucker was Masayoshi Son, who in Wiedeman's telling is an astonishingly casual and undisciplined investor who trusted knee-jerk personal reactions to founders over business model analysis and historically (mostly) got away with it by getting extremely lucky.

(I now want to read one of these books about SoftBank, since both this book and Super Pumped make it look like a company that makes numerous wild gambles for the flimsiest of reasons, pushes for completely unsustainable growth, and relies on the sheer volume of investments catching some lucky jackpots and cashing out in IPOs. Unfortunately, the only book currently available seems to be a fawning hagiography of Son.)

On one hand, the IPO process worked properly this time. The sheer madness of WeWork's valuation scared off enough institutional investors that it collapsed. On the other hand, it's startling how close it came to success. If WeWork had kept the Ponzi scheme going a bit longer, the last sucker could have been the general investing public.

Another interesting question that Billion Dollar Loser answers is how Neumann got enough money to start his rapid growth strategy. The answer appears to be the oldest and most obvious explanation: He made friends with rich people. The initial connections appear to have been through his sister, Adi Neumann, who is a model and hosted parties in her New York apartment (and also started dating a Rothschild heir). Adam met his wealthy wife Rebekah, cousin to actress and "wellness" scam marketer Gwyneth Paltrow, via a connection at a party. He built social connections with other parts of the New York real estate scene and tapped them for investment money.

The strong impression one gets from the book is that all of these people have way more money than sense and we should raise their taxes. It won't come as a surprise that Adam and Rebekah Neumann are good friends of Jared Kushner and Ivanka Trump.

Those are the questions I was the most curious about, but there's much more here. Wiedeman's style is nearly straight chronological reporting with little analysis, but the story is so wild and absurd that it doesn't need much embellishment. Neumann is obviously a megalomaniac whose delusions of grandeur got worse and worse as WeWork was apparently succeeding. Rebekah Neumann is if anything even less in touch with reality than he is, although in her case that appears to stem from having so much money that reality is an inconvenient speed bump. Miguel McKelvey, Neumann's co-founder, is an odd and interesting side note to the story; he appears to have balanced Adam out a bit in the early going but then wisely started to cash out and pocket his winnings while letting Adam dominate the stage.

There are some places where I don't think Wiedeman pushed hard enough, and which cut against the view of Neumann as a true believer in his impossible growth vision. Neumann took several investment opportunities to cash out large amounts of his stock even while WeWork employees were being underpaid and told their stock options would make up for it. He clearly used WeWork as a personal piggy bank on multiple occasions. And Wiedeman documents but doesn't, at least in my opinion, make nearly enough of Neumann's self-dealing: buying real estate that WeWork then rented as a tenant, or paying himself for a license for the name We Holdings (although there at least he later returned the money). I think a good argument could be made that Neumann was embezzling from WeWork, at least morally if not legally, and I wish Wiedeman would have pressed harder on that point.

But that aside, this is a great first history of the company, told in a clean, readable, and engaging style, and with a lot more detail here than I've touched on (such as Rebekah Neumann's WeGrow school). It's not as good as Bad Blood (what is), but it's a respectable entry in the corporate collapse genre. If you like this sort of thing, recommended.

Rating: 7 out of 10


Značky: #Debian