Équipage · Open source

Nous écrivons les clients des composants que nous opérons.

Près de quinze mille lignes de Rust publiées, sur deux briques que nous exploitons tous les jours : le système d'exploitation de nos clusters et le moteur SQL de nos plateformes data.

Compte d'organisation
github.com/nudibranches-tech
Volume publié
près de 15 000 lignes de Rust
Licences
MIT OR Apache-2.0 · Apache-2.0
Distribution
crates.io (talos-rust-client)
Langage
Rust

Pourquoi

On n'opère bien que ce qu'on comprend.

Écrire le client d'un composant qu'on exploite n'est pas un exercice de style. C'est la seule façon de connaître exactement ce que la machine reçoit, ce qu'elle renvoie et ce qui se passe quand elle ne répond plus. Un client tiers abandonné place la compréhension d'une brique critique hors de portée au moment précis où elle devient nécessaire : pendant l'incident.

Le coût est réel, et il se compare. Sur ces deux briques, écrire le client a coûté moins cher que de contourner durablement celui qui existait — et il en reste quelque chose de public, que nos clients peuvent lire, reprendre et faire auditer.

Publications

Les dépôts, un par un.

talos-rust-client

Client gRPC pour Talos Linux : mTLS par défaut, API typée générée depuis les fichiers proto officiels de SideroLabs.

Talos Linux pilote le système d'exploitation de nos clusters, et son API n'est accessible qu'en gRPC sous mTLS. Le client est généré depuis les proto officiels plutôt que réécrit à la main : les types suivent l'amont, et une rupture d'API se voit à la compilation. Il est publié sur crates.io, sous double licence MIT OR Apache-2.0 — la convention de l'écosystème Rust, qui laisse le choix au réutilisateur.

Volume
8 316 lignes de Rust · 14 fichiers
Licence
MIT OR Apache-2.0
Notre rôle
Écrit et maintenu par nos ingénieurs. Publié sur crates.io.

github.com/nudibranches-tech/talos-rust-client

s0

Passerelle d'autorisation compatible S3 qui applique une politique OPA/ABAC à chaque requête, avant de la réémettre vers le stockage sous une identité par locataire.

Le contrôle d'accès natif d'un stockage objet s'arrête au seau et à la clé. Nos clients ont besoin de décider par attribut — qui, depuis où, sur quel objet, à quelle heure — et d'un journal nominatif unique quel que soit le backend. s0 termine donc le protocole S3 lui-même : la requête est désérialisée en valeur typée, une décision OPA porte sur cette valeur, et c'est la même valeur qui repart vers le stockage sous une identité par locataire. Sur les 99 opérations du protocole, 23 sont appliquées et 76 refusées ; il n'existe pas de troisième catégorie, et un test échoue si le tableau des opérations et la documentation divergent.

Volume
30 980 lignes de Rust · 68 fichiers
Licence
BUSL-1.1 · Apache-2.0 au 18 août 2030
Notre rôle
Ce n'est pas un proxy d'octets avec un crochet d'autorisation greffé : la requête est désérialisée en valeur typée, la décision porte sur cette valeur, et c'est la même valeur qui repart vers le stockage. Sur les 99 opérations du protocole, 23 sont appliquées et transmises, 76 refusées — il n'y a pas de troisième catégorie. Un test échoue si le tableau et la documentation divergent.

github.com/nudibranches-tech/s0

talos-rust-client

Client gRPC pour SideroLabs Talos, avec mTLS par défaut et une API typée générée depuis les fichiers proto officiels.

Talos Linux pilote le système d'exploitation de nos clusters, et son API n'est accessible qu'en gRPC sous mTLS. Le client est généré depuis les proto officiels plutôt que réécrit à la main : les types suivent l'amont, et une rupture d'API se voit à la compilation. Il est publié sur crates.io, sous double licence MIT OR Apache-2.0 — la convention de l'écosystème Rust, qui laisse le choix au réutilisateur.

Volume
8 316 lignes de Rust · 14 fichiers
Licence
MIT OR Apache-2.0
Notre rôle
Talos n'a pas de shell : on ne s'y connecte pas, on lui parle. Il nous fallait ce client pour exploiter les clusters de nos clients.

github.com/nudibranches-tech/talos-rust-client

trino-rust-client

Client Trino pour Rust, avec authentification et protocole spooling.

Repris en décembre 2024 depuis prusto. Le support de Presto a été retiré, ce qui a permis de suivre Trino sans compromis, et le protocole spooling a été ajouté : sans lui, un résultat volumineux transite par le coordinateur et le sature. C'est la fonctionnalité qui décide de la tenue d'une plateforme data sous charge, et c'est celle qui manquait.

Volume
6 374 lignes de Rust · 45 fichiers
Licence
Apache-2.0
Notre rôle
Écrit et maintenu par nos ingénieurs. Utilisé en production dans Hyperfluid.

github.com/nudibranches-tech/trino-rust-client

Ferris Key

Serveur d'authentification et de gestion d'identités, écrit en Rust.

Nous n'en sommes pas les mainteneurs : nous contribuons au projet et nous le soutenons, parce que l'identité est la brique dont dépendent toutes les autres et que nous préférons qu'elle reste libre.

Volume
contribution et soutien
Licence
Apache-2.0
Notre rôle
Projet communautaire auquel nous contribuons et que nous soutenons.

github.com/ferriskey/ferriskey

Périmètre

Support et veille CVE, dépôt par dépôt.

Trois réponses décident d'une mise en production : qui maintient, sous quelle licence, et qui doit le correctif.

Périmètre du support et de la veille CVE pour chaque dépôt publié ou soutenu.
DépôtMainteneurCorrectifs de sécuritéVeille CVE
talos-rust-clientNos ingénieurs. Le dépôt est sous notre organisation.Publiés sur le dépôt public et sur crates.io. Aucun délai contractuel hors contrat de support.Assurée pour les clients sous contrat de support, si le composant figure au périmètre annexé au contrat.
s0Nos ingénieurs. Le dépôt est sous notre organisation.Publiés sur le dépôt public. Aucun délai contractuel hors contrat de support.Assurée pour les clients sous contrat de support, si le composant figure au périmètre annexé au contrat.
talos-rust-clientNos ingénieurs. Le dépôt est sous notre organisation.Publiés sur le dépôt public et sur crates.io. Aucun délai contractuel hors contrat de support.Assurée pour les clients sous contrat de support, si le composant figure au périmètre annexé au contrat.
trino-rust-clientNos ingénieurs. Le dépôt est sous notre organisation.Publiés sur le dépôt public. Aucun délai contractuel hors contrat de support.Assurée pour les clients sous contrat de support, si le composant figure au périmètre annexé au contrat.
Ferris KeyMainteneurs amont indépendants. Nous contribuons au projet et nous le soutenons.Décidés en amont. Nous n'en contrôlons ni le contenu ni la date de publication.Veille possible sous contrat. La correction dépend de l'amont : nous ne l'engageons pas.

Hors contrat, ces dépôts sont fournis tels quels : c'est la licence qui le dit. Sous contrat de support open source, la liste des composants couverts est annexée au contrat, avec les horaires couverts, la garantie de prise en compte et la garantie de rétablissement selon la criticité du composant — et c'est cette annexe qui fait foi. §

Voir le mode « support open source »

Ce que la licence donne au client

Trois garanties qu'un fournisseur fermé ne peut pas donner.

Les trois garanties que nos clients demandent le plus souvent — pouvoir vérifier, pouvoir partir, pouvoir continuer sans nous — ne peuvent pas être données par un fournisseur qui garde son code fermé. Une clause de réversibilité vaut ce que vaut l'entreprise qui l'a signée ; une licence permissive, une fois accordée, ne dépend plus de nous.

Auditabilité
Vous lisez ce que vous exécutez. Un RSSI qui qualifie une brique n'a pas à nous croire sur parole, et il peut faire relire le code par un tiers de son choix.
Réversibilité
La licence vous laisse le droit d'utiliser, de modifier et de redistribuer, y compris après la fin de la relation commerciale, et y compris contre nous.
Indépendance à notre survie
Si l'entreprise disparaît, le code reste et reste utilisable par quelqu'un d'autre. C'est la seule garantie de continuité qu'une entreprise de cette taille peut donner honnêtement, et elle rend une clause de séquestre sans objet sur ces composants.

Aller voir

Le code, et les gens qui l'écrivent.

Les dépôts sont publics et les contributions extérieures sont lues. Si vous cherchez un contrat de support couvrant votre pile open source — Kubernetes, Talos, PostgreSQL, Trino, Ceph, Kafka, Keycloak et le reste — la page des modes d'engagement en décrit le périmètre.