Présentation

Petal est un outil de pair programming publié sous licence open source, issu du projet CoScreen/ScreenHero. Il offre un partage d’écran à haute résolution et un contrôle à distance avec une latence réduite, disponible pour macOS et Windows, avec un support Linux annoncé. L’interface se présente sous forme de fenêtres classiques, ce qui évite les grilles de tuiles souvent rencontrées dans d’autres solutions.

Architecture et fonctionnalités

Le cœur de Petal repose sur un backend vidéo fourni par LiveKit. La couche vidéo gère la diffusion en temps réel, tandis que le composant compositor.rs assure la continuité visuelle. Le code suivant, extrait du fichier compositor.rs, montre la fonction qui prévient l’apparition d’un cadre noir lorsqu’une fenêtre devient inactif :

/// Never show a black frame.
pub fn hold_last_frame(id: WindowId) {
    let Some(w) = windows.get_mut(&id) else { return };
    w.layer.retain_frame();
    w.tracked = true;
}

Cette logique conserve le dernier rendu graphique et marque la fenêtre comme suivie, garantissant une expérience visuelle fluide même en cas de perte momentanée de paquets. Au niveau de l’interface, chaque fenêtre partagée apparaît comme une fenêtre native, redimensionnable et déplaçable, avec des curseurs identifiés par utilisateur. Les entrées clavier et souris sont transmises instantanément, permettant à chaque participant d’interagir comme s’il contrôlait localement la fenêtre.

Déploiement et options d’hébergement

Petal propose trois modes d’utilisation : un service cloud géré par LiveKit (Petal Cloud), une version auto‑hébergée via Docker‑Compose, et une version entièrement personnalisable à partir du code source. Le mode cloud nécessite uniquement l’installation du client desktop, le serveur vidéo étant fourni par LiveKit. Pour l’auto‑hébergement, un fichier docker-compose.yml suffit à lancer un serveur LiveKit privé, garantissant que le trafic reste sous le contrôle de l’organisation. Cette approche répond aux exigences de conformité et de souveraineté des données, car le flux vidéo n’est jamais transmis à des tiers.

Le modèle « fork & build » permet aux équipes de modifier le client, d’ajouter des modules ou d’intégrer leur propre infrastructure de signalisation. Le processus de compilation suit les standards Rust/Cargo, et la documentation indique les étapes de construction et de déploiement.

Analyse des limites et perspectives

Bien que la latence soit décrite comme « faible », aucune métrique chiffrée n’est fournie dans la documentation publique, ce qui complique l’évaluation comparative avec des solutions concurrentes. Le support Linux reste en phase de pré‑release, limitant l’adoption dans les environnements de développement multiplateformes. De plus, la dépendance à LiveKit implique que la qualité du streaming dépend de la configuration du serveur (bandwidth, CPU, GPU). Enfin, la gestion des permissions d’accès aux fenêtres n’est pas détaillée, ce qui pourrait poser des risques de sécurité dans des contextes où plusieurs utilisateurs partagent le même poste.

En résumé, Petal combine un modèle de partage d’écran natif avec une architecture vidéo moderne, tout en offrant des options d’hébergement flexibles. Son code ouvert permet d’auditer les mécanismes de rendu et de contrôle, mais la maturité du support Linux et l’absence de mesures de performance publiques restent des points d’attention pour les équipes techniques.