Un fonds LBO qui publie du code. Sérieusement.
Quand on rachète des PME SaaS pour les transformer par l’IA, on ne s’attend pas à voir le mot “open source” dans le communiqué. Et pourtant.
Aujourd’hui, BSG Holding publie edomata — une librairie Scala de 14 modules pour construire des systèmes event-driven en production. Licence Apache 2.0. Zéro restriction. Le même code qui tourne chez nos participations depuis des mois.
Pourquoi ? Parce que BSG Holding ne rachète pas des boîtes pour les optimiser. On les transforme en AIDC — AI Driven Companies. Des entreprises où l’IA n’est pas un outil périphérique, mais le système d’exploitation. Et ça commence par montrer le code qui fait tourner cette transformation.
Le problème : l’event sourcing en Scala, c’était le Far West
Pendant que l’écosystème Java/Kotlin avait Axon Framework et les développeurs TypeScript avaient EventStoreDB, la communauté Scala Typelevel n’avait pas de solution production-ready pour l’event sourcing et le CQRS.
On avait besoin d’un outil qui :
- Gère les automates à états finis avec des garanties typées
- Supporte PostgreSQL nativement (pas Kafka, pas EventStore — du Postgres, celui que nos PME connaissent déjà)
- Tourne sur JVM, Scala.js et Scala Native — parce que nos cas d’usage vont du backend lourd au edge computing
- Permette le multi-tenant SaaS — parce que c’est le modèle de nos participations
Hicham Naderi avait posé les fondations avec hnaderi/edomata. On a forké, durci, étendu, et mis en production.
14 modules. 2 sociétés en production. 0 compromis.
edomata n’est pas un prototype. C’est le socle technique de deux sociétés du groupe BSG :
Eveince Capital — chaque décision de trading tracée
Eveince Capital gère un OMS (Order Management System) où chaque décision doit être auditée. Pas “devrait” — doit, réglementairement. edomata leur donne un audit trail complet : chaque commande, chaque événement, chaque état reconstruit depuis l’historique.
Résultat : 100% de traçabilité sur les opérations de trading. Zéro perte d’événement en 6 mois de production.
expert-flow.ai — 70% de temps gagné par dossier
expert-flow.ai, startup du studio BSG, automatise l’expertise judiciaire. Un dossier d’expertise passe par 8 étapes — réception, analyse, calculs, rapport, envoi, relance, facturation, archivage. Chaque étape est un état dans un automate edomata.
Avant : un expert passait 8 heures par dossier. Avec expert-flow.ai + edomata : 2h30. Ça fait 70% de gain et un ROI de 3000% pour l’abonné.
Comment ça marche : 3 abstractions, pas plus
edomata repose sur trois types fondamentaux. Pas dix. Pas un framework avec 200 classes. Trois.
Decision — Encapsule une logique métier qui produit des événements ou des rejets. Déterministe, testable, rejouable.
Edomaton — Un automate à états finis. Il consomme des commandes, reconstruit son état depuis les événements, et produit de nouvelles décisions.
Stomaton — Ajoute les side-effects (appels API, envoi d’emails) au-dessus de l’Edomaton, sans sacrifier les garanties event-driven.
import edomata.core.*
// Un automate de commande en 10 lignes
enum OrderEvent:
case Created(item: String, qty: Int)
case Confirmed
case Shipped
enum OrderRejection:
case OutOfStock
case AlreadyShipped
val createOrder = Decision
.validate(OrderRejection.OutOfStock)(stock > 0)
.publish(OrderEvent.Created(item, qty))
L’architecture : modulaire par design
| Module | Ce qu’il fait |
|---|---|
edomata-core | Decision, Edomaton, Stomaton |
edomata-skunk | Backend PostgreSQL via Skunk (JVM, JS, Native) |
edomata-doobie | Backend PostgreSQL via Doobie (JVM) |
edomata-saas | Abstractions multi-tenant |
edomata-munit | Framework de test |
edomata-circe / upickle / jsoniter | Codecs JSON (au choix) |
14 modules au total. Vous prenez ce dont vous avez besoin, pas le reste. Le backend recommandé est Skunk — il tourne sur les 3 plateformes (JVM, Scala.js, Scala Native).
Pourquoi open source ? Parce que c’est cohérent.
Notre conviction : les équipes qui ont construit l’entreprise sont les mieux placées pour la faire grandir. Ça vaut pour nos participations. Ça vaut aussi pour le code.
edomata a été construit par la communauté Typelevel. Le durcir en interne et le garder fermé serait incohérent avec ce qu’on défend.
Trois raisons concrètes :
- Transparence — Quand on dit “transformation par l’IA et la technologie”, autant montrer le code. Pas un slide deck. Le code.
- Recrutement — Les meilleurs développeurs Scala ne postulent pas sur LinkedIn. Ils regardent les repos GitHub.
- Écosystème — Typelevel nous a donné Cats, fs2, http4s. On rend à la communauté.
Démarrer en 2 minutes
Ajoutez à votre build.sbt :
libraryDependencies += "dev.bsg" %% "edomata-skunk" % "0.12.5"
- Code source : github.com/beyond-scale-group/edomata
- Documentation : beyond-scale-group.github.io/edomata
- Licence : Apache 2.0
Issues, pull requests, discussions — tout est ouvert. Le projet suit les conventions Typelevel.
Et après ?
edomata est le premier. Pas le dernier.
Pendant que certains fonds gardent leur stack propriétaire et leurs méthodes opaques, nous ouvrons le code qui transforme nos participations en AIDC. Parce que la confiance se construit avec de la transparence, pas des slides.
Prochaines étapes pour BSG Holding en open source : restez connectés sur le blog et sur GitHub.