Chapitre 2

La naissance d'Editors Factory

« 0,2% de chances de voir le jour »

Juillet 2020 : le début

Le développement démarre en juillet 2020. David et STARGÅTE se mettent au travail. David envoie les spécifications, les cas d'usage, les maquettes. STARGÅTE code. Le rythme est soutenu, la collaboration fonctionne.

Le concept est ambitieux pour un module PureBasic. L'architecture repose sur trois couches distinctes : une couche de données (gestion des propriétés et hiérarchies d'objets), une couche d'événements (interactions souris et clavier), et une couche de dessin (rendu visuel via des callbacks personnalisables). Le développeur qui utilise le module définit ses propres procédures de dessin via SetObjectDrawingCallback() — il a un contrôle total sur l'apparence de ses objets.

L'accueil sur le forum français

Quand David présente le projet sur le forum français de PureBasic, la réception est... brutale.

Des membres du forum lui lancent qu'il a « 0,2% de chances de voir le jour ».

Zéro virgule deux pour cent. Autant dire : aucune chance. Laisse tomber. Tu perds ton temps. C'est impossible. Le scepticisme de la communauté francophone est cinglant. Pour certains membres, l'idée même d'un module de manipulation d'objets dans un Canvas Gadget est trop ambitieuse, trop complexe, et le fait que David délègue le moteur à quelqu'un d'autre le rend encore moins crédible aux yeux de certains. Un développeur qui donne des directives à un autre développeur ? Ça n'a aucune chance de fonctionner.

David encaisse. Il encaisse, mais il n'oublie pas. Et surtout, il ne lâche pas.

La première version publique

En janvier 2021, six mois après le début du développement, la première version publique d'Editors Factory sort sur les forums PureBasic.

Elle existe. Elle fonctionne. Le module gère la création et la suppression d'objets, le déplacement, le redimensionnement, la sélection multiple, les poignées de manipulation. Les 0,2% de chances se sont matérialisés en un logiciel fonctionnel.

Le thread principal sur le forum anglais (purebasic.fr/english/viewtopic.php?t=76588) va accumuler plus de 13 pages de discussions. Certains utilisateurs reconnaissent la qualité du travail :

« Looks great, useful, and I know how good STARGATE's modules are! »— kenmo
« With each passing moment, I realize more and more the power of this module. »— Amitris_de

Les fonctionnalités

Au fil des mises à jour, Editors Factory gagne en puissance. Le module offre une panoplie impressionnante de fonctionnalités :

La distribution se fait sous forme de fichier include (.pbi), directement intégrable dans un projet PureBasic. Sept exemples officiels sont fournis, couvrant les fonctionnalités principales.

Les versions majeures

Version 1.16.04 (20 mars 2021)
Introduction du système de gestion des cadres. Les fonctions AddObjectFrame(), RemoveObjectFrame(), MoveObjectFrame() et IsObjectFrame() permettent de créer des hiérarchies d'objets avec plusieurs cadres à l'intérieur d'un même objet. La fonction ReleaseCanvasObjects() est ajoutée pour le nettoyage mémoire.
Version 1.17.01 (7 août 2021)
Amélioration de ObjectState() qui retourne maintenant plus d'états (disabled, hovered, pushed), facilitant la création de gadgets personnalisés. L'exemple 6 est ajouté pour démontrer cette capacité.
Version 1.18.01 (4 février 2023)
La dernière version stable officielle. Elle introduit les fonctions cruciales LoadObject() et SaveObject() pour la sérialisation JSON des objets, avec support d'encodage Base64 pour les images. La signature de SetObjectDrawingCallback() change pour nécessiter le mot-clé Runtime et le nom de la fonction sous forme de chaîne.

Les exemples de David

En parallèle des exemples officiels de STARGÅTE, David crée ses propres exemples avancés en français. Ils démontrent des cas d'usage plus complexes :

En janvier 2025, il publie "The Gost", un exemple particulièrement complexe qui permet de dessiner directement sur des objets avec différents modes de dessin (cercle, carré plein, carré contour), via un canvas temporaire qui apparaît au double-clic. David commente :

« C'était assez difficile à réaliser, je l'admets, un vrai casse-tête, mais ça fonctionne comme prévu. »

Le problème de la licence

Editors Factory est distribué sous licence Creative Commons Attribution-NonCommercial 4.0 (CC BY-NC 4.0). En clair : gratuit, mais interdit pour un usage commercial. C'est David qui a choisi cette licence. Il est « totalement contre le fait que quelqu'un puisse gagner de l'argent à ses dépens ». L'idée qu'un développeur prenne son travail et le vende sans rien lui reverser lui est insupportable.

Le problème, c'est que cette restriction tue l'adoption. Plusieurs membres de la communauté expriment leur frustration. ChrisR commente :

« Le plus gros problème pour l'utiliser est la licence. J'en ai déjà parlé avec ShadowStorm et je pense ne pas être le seul (Stargate aussi je pense), mais malheureusement je n'ai pas pu le convaincre. »

David ne cède pas. La licence reste non-commerciale, même s'il suggère qu'elle pourrait devenir libre commercialement « après sa mort » ou après 5 ans d'absence. Un compromis qui ne satisfait personne.

Les limites techniques

Derrière le succès technique d'Editors Factory, des limitations fondamentales se dessinent. Certaines sont surmontables. D'autres, non.

La rotation d'objets est le mur le plus solide. STARGÅTE est catégorique :

« Object rotation is impossible, because the module, drawing and event pipeline was not designed for such things and have to be re-coded from scratch. »

(La rotation d'objets est impossible, car le module, le pipeline de dessin et d'événements n'a pas été conçu pour cela et devrait être entièrement recodé depuis zéro.)

Ce n'est pas un bug à corriger. C'est une limitation architecturale fondamentale. Le système de coordonnées, le pipeline de dessin, la gestion des événements — tout a été construit sans prévoir la rotation. L'ajouter nécessiterait de tout réécrire. D'autres fonctionnalités manquent à l'appel :

Et la tentative de créer une DLL ou une bibliothèque utilisateur échoue à cause de problèmes d'accès aux objets PureBasic depuis une DLL. Le module reste distribué en code source, un choix qui limite aussi les possibilités de protection intellectuelle.

La pause

En octobre 2021, le constat est amer. Editors Factory fonctionne, il est techniquement solide, mais l'adoption ne décolle pas. La communauté PureBasic est petite, la licence non-commerciale bloque les professionnels, et l'intérêt retombe. David exprime sa déception publiquement :

« Editors Factory n'ayant pas le succès attendu, avec une très grande surprise je l'avoue, et ne comprenant pas cela, je décide d'apporter ce message. »

STARGÅTE, de son côté, admet ouvertement :

« Au moment actuel, je n'ai ni le temps ni l'envie (je l'admets ouvertement) de travailler sur ce module. Je peux juste donner un petit support (aide ou corrections de bugs). »

Le projet entre en pause.

Editors Factory n'est pas mort — la version 1.18.01 fonctionne toujours, les fichiers sont disponibles en téléchargement sur les forums. Mais le développement actif s'arrête. Le module a atteint ses limites, et la motivation n'est plus là. Pour beaucoup, l'histoire s'arrête là. Pas pour David.

Le forum ForumForever

En parallèle des discussions sur les forums PureBasic, David crée un forum dédié à Editors Factory sur ForumForever (editorsfactory.forumforever.com). Le forum est créé en 2020, avec des sections pour le téléchargement, l'aide et le support, des tutoriels (4 tutoriels, 7 messages), des discussions générales, des demandes de fonctionnalités, des exemples de code et des showcases de logiciels créés avec le module.

Le forum reste modeste — 2 membres, 15 sujets, 20 messages. La dernière activité notable date du 6 janvier 2024 avec une annonce de mise à jour. C'est un espace que David maintient pour la communauté francophone, même si l'audience reste limitée. C'est aussi un précédent important : David créera plus tard un site web dédié pour Visual Objects Handler — le successeur d'Editors Factory — perpétuant cette habitude de donner à ses projets un espace de communication indépendant des forums PureBasic.

CanvasDrawingManager

Editors Factory est en pause, mais David, lui, ne l'est pas. En février 2022, il publie sur le forum français de PureBasic un nouveau module : CanvasDrawingManager.

Le concept est différent d'Editors Factory. Là où Editors Factory gère des objets manipulables sur un canvas, CanvasDrawingManager gère l'affichage lui-même. C'est un module de gestion du rendu dans un CanvasGadget, avec deux modes de fonctionnement : un mode FPS (image par seconde) où une boucle d'affichage appelle une procédure de dessin personnalisée à chaque frame — un peu comme un écran de jeu vidéo —, et un mode statique où la procédure n'est pas appelée tant que rien ne change.

Le développeur peut limiter le nombre de FPS pour stabiliser l'affichage, choisir entre le mode 2DDrawing et VectorDrawing de PureBasic (l'un ou l'autre, jamais les deux en même temps), et récupérer automatiquement dans sa procédure de dessin la position de la souris, les dimensions du canvas, l'état des boutons de la souris et les touches du clavier. Le module fournit aussi des informations sur le taux de rafraîchissement.

Le topic accumule 26 messages — un accueil correct pour un module PureBasic. C'est un projet modeste comparé à Editors Factory, mais il montre quelque chose d'important : même pendant la pause, même quand la motivation pour EF n'est plus là, David continue de créer des outils pour la communauté PureBasic. L'envie de construire ne s'arrête jamais.