Jeffrey Cross
Jeffrey Cross

Espruino: Les défis de la gestion d'une entreprise de logiciels et de matériel open source

Lire des articles du magazine ici même sur Faire:. Vous n'avez pas encore d'abonnement? Obtenez un aujourd'hui.

J'ai passé les 13 dernières années en tant qu'ingénieur logiciel, travaillant principalement sur les graphismes 3D et les compilateurs. Développer pour les microcontrôleurs a toujours été un passe-temps, mais j’ai trouvé que les outils de développement de microcontrôleur ARM existants étaient très difficiles à installer et à utiliser, en particulier sous Linux. Passer des heures à lutter avec des outils logiciels le soir après avoir passé une journée complète devant un ordinateur était extrêmement frustrant, alors je me suis mis à créer quelque chose que je trouverais agréable à utiliser, pas douloureux.

Je voulais déplacer toute la chaîne d'outils sur le microcontrôleur lui-même, permettant ainsi à quiconque de la programmer, depuis n'importe quelle plate-forme, à l'aide de JavaScript. Mon objectif était que quelqu'un avec des connaissances minimales en programmation puisse commencer à faire clignoter un microcontrôleur en quelques minutes, au lieu de plusieurs heures. C’est dans cet esprit que j’ai lancé le projet Espruino - un nom de portemanteau d’Espresso (en raison des associations de café Java et JavaScript) et d’Arduino (dont la fin «uino» est désormais synonyme de microcontrôleurs). J'avais écrit un interpréteur de langage extrêmement basique ressemblant à JavaScript, TinyJS, pour un autre de mes projets. Il y a cinq ans, après une gigantesque piratage informatique dans lequel je l'avais réécrit à partir de zéro pour utiliser de la mémoire allouée de manière statique, j'avais commis mon premier code dans un Référentiel Git.

Quelques mois plus tard, en vacances au pays de Galles avec des amis, je me suis mis au travail. Je me souviens du sentiment d'accomplissement lorsque j'ai vu le petit tableau de ST Discovery imprimer une fractale de Mandelbrot ligne par ligne. Cependant, ce n'était que le début d'un long voyage, qui est maintenant devenu un travail à plein temps pour moi.

Photos de Hep Svadja

Logiciel Freemium

Peu de temps après, j'ai décidé de mettre mon travail en ligne - non pas au début open source, mais à télécharger gratuitement. Je me suis vite retrouvé à passer beaucoup de temps à essayer d'aider les utilisateurs dans le processus ardu de flasher un micrologiciel sur les microcontrôleurs eux-mêmes. Je me suis rendu compte que si je pouvais continuer à travailler correctement sur Espruino, je devais passer plus de temps dessus, ce qui signifiait trouver un moyen de me payer un salaire.

Ma première tentative a consisté à créer Espruino «freemium». J'ai ajouté la possibilité de sauvegarder une image du code en cours d'exécution dans la mémoire flash et j'ai facturé 4 $ - malheureusement, sur une année entière, je n'ai gagné que 40 $ alors que j'ai passé des semaines à aider les utilisateurs. J'avais d'importants téléchargements, mais très peu de personnes ont pu installer le micrologiciel et aller au-delà du «Hello World» des voyants clignotants pour même enregistrer ce qu'elles avaient fait.

J'ai essayé de contacter tous les fabricants de cartes STM32 que je pouvais trouver au sujet de la pré-installation d'Espruino, mais aucun d'entre eux n'était disposé à prendre un risque sur ce qui était, à l'époque, un logiciel relativement inconnu. J'ai donc décidé de faire quelque chose moi-même.

Démarrer une planche

À peu près à la même époque, Kickstarter venait tout juste d’ouvrir les portes de créateurs anglais et j’avais l’impression de tenter ma chance en fabriquant mon propre tableau. Si tout se passait bien, j’ouvrais tout ce qui était en source et pouvais passer plus de temps sur Espruino. Si ce n’était pas le cas, je le mettrais au placard et me trouverais un emploi convenable. Cela s'est mieux passé que je n'aurais pu l'espérer, et j'ai obtenu plus de 100 000 £ de financement grâce à une vidéo que ma femme et moi avions combinée avec une caméra bon marché et iMovie. J'ai donc commencé à y travailler à plein temps.

Dans le sens des aiguilles d'une montre à partir du haut à gauche: Espruino d'origine Puck.js; Espruino WiFi; Espruino Pico (avec et sans épingles).

Toute l'expérience de Kickstarter était incroyable - mais c'était extrêmement stressant et a pris énormément de temps. J'étais assez novice dans la conception de circuits imprimés. J'ai donc utilisé quelque chose appelé OPL (Open Parts Library) de Seeed Studio. C’est un kit de pièces que vous pouvez acheter, qui comprend également tous les descriptifs des outils de conception de circuits imprimés. Une fois que j’ai assemblé un prototype fonctionnel, j’ai pu confier les conceptions à Seeed, qui fabriquait la carte avec toutes les pièces qu’elles avaient déjà en stock. Cela signifiait que même si tout avait pris plus de temps que prévu, je pouvais expédier les panneaux un mois seulement après la date d'expédition prévue.

L’emballage récompense la première campagne Kickstarter d’Espruino.

Seeed a posté les cartes Espruino individuelles pour moi; Cependant, j'avais également proposé des kits de démarrage à des clients contenant de nombreux composants électroniques. Nous avons donc dû les assembler nous-mêmes. C'était un peu révélateur. Quand je crée un logiciel, 500 téléchargements ne semblent pas du tout comme cela, mais il en va tout autrement lorsque vous devez emballer des kits, les étiqueter et vous assurer qu'ils sont livrés!

Les cartes Espruino assemblées chez Seeed sont prêtes pour la programmation et les tests.

Presque cinq ans après avoir écrit mes premières lignes de code, je viens tout juste d’acheter toutes les récompenses d’une troisième campagne Kickstarter: Puck.js, un bouton Bluetooth programmable. Il existe maintenant une grande communauté d’utilisateurs autour d’Espruino et un forum de plus de 20 000 publications, alimenté principalement par l’enthousiasme de mes donateurs Kickstarter. Tout est open source (matériel et logiciel), et pourtant, je suis enfin arrivé au stade où les ventes mensuelles de cartes Espruino suffisent pour me payer un salaire - sans que des campagnes Kickstarter ne me soutiennent.

Le portage génère des problèmes

Comme le micrologiciel et les outils sont à code source ouvert, Espruino est utilisé sur un nombre croissant de périphériques. La communauté Espruino a porté Espruino sur l'ESP8266 et fin 2016, plus de personnes utilisaient l'ESP8266 que toutes les cartes que je vends réunies. En fait, seulement un tiers des utilisateurs d’Espruino utilisaient une carte que j’avais fabriquée.

C'est fantastique, mais cela pose certains problèmes. Je me targuais toujours d’offrir un très bon support aux utilisateurs des forums Espruino, qui passent souvent deux heures ou plus par jour à aider. Alors que le nombre de personnes utilisant mes forums a diminué, je me suis retrouvé à passer une proportion croissante de mon temps à travailler efficacement et gratuitement.

La première fois qu'Espruino fonctionnait sur du matériel réel, en 2012 (carte STM32VLDISCOVERY).

Une entreprise de matériel informatique open source présente des avantages évidents pour tous. Les coûts des composants électroniques et de la production individuels chutent considérablement à des quantités plus importantes, ce qui signifie que la plupart des éditeurs de logiciels open source peuvent se permettre de vendre leurs produits moins cher, tout en vous offrant tous les modèles afin que vous puissiez voir comment ils fonctionnent. avec eux.

Les logiciels open source reposent généralement sur le fait de proposer aux entreprises de conseil un produit open source permettant de travailler avec vos logiciels plus efficacement que d’autres Cependant, les choses se compliquent lorsque le matériel et les logiciels Open Source entrent en collision, ce qui se produira de plus en plus à l'avenir.

Dans Espruino, l’objectif a toujours été de remplacer la complexité matérielle par la complexité logicielle. Le matériel est très simple, mais le logiciel est extrêmement complexe et prend la plus grande partie du temps de développement (au moins 10 fois plus). Je dois calculer le coût de mon matériel pour pouvoir payer le temps nécessaire au développement du logiciel. Cela rend mes cartes très peu compétitives par rapport à une carte ESP8266 à 2 $ sur laquelle Espruino a été flashée gratuitement, ou même à une autre société vendant une carte avec Espruino préinstallé.

Le premier panel de 30 Espruino Pico sort de la chaîne de production.

Cela nuit un peu aux ventes, mais le plus gros problème est en réalité celui du support. Si vous rencontrez un problème avec une carte matérielle open source normale, vous devez contacter le fabricant.Toutefois, si vous rencontrez un problème avec un clone Arduino que vous avez acheté sur eBay, vous accédez aux forums Arduino. Il en va de même pour Espruino, et les utilisateurs de ces autres cartes rencontrent généralement plus de problèmes en raison d'une documentation incorrecte et d'un micrologiciel obsolète / erroné. Il peut être très frustrant de fournir un niveau approprié de support client et de ne pas passer trop de temps sur tout le monde, sauf moi-même. C’est particulièrement difficile lorsque je ne peux même pas déterminer qui utilise quel tableau!

Dans les logiciels open source normaux, vous espériez que les contributions de la communauté contribueraient grandement à compenser cela, mais lors de la rédaction d’outils pour logiciels embarqués, cela risque de ne pas se produire autant. La majorité de mes utilisateurs apprécient Espruino car ils préfèrent ne pas écrire de code C; il est donc très peu probable qu’ils se plongent dans le code source C optimisé de l’interpréteur. Lorsque vous écrivez un logiciel pour le bureau, vous pouvez écrire des tests pour vous assurer qu'il fonctionne correctement. Tandis que cela est effectué autant que possible avec Espruino, pour tester complètement les API de matériel, vous devez les exécuter sur le matériel lui-même. Bien que la plupart des contributeurs testent leur code sur leurs propres cartes, il est très peu probable de le faire sur les quatre types de cartes Espruino que je fabrique, sans parler des 40 autres types de cartes sur lesquelles Espruino fonctionne. Ainsi, même la vérification des contributions peut prendre beaucoup de temps.

Pour couronner le tout, le logiciel qui nécessite tous ces efforts de maintenance n'a que peu, voire aucune valeur. Je ne parviens pas à octroyer de licence à des entreprises intéressées, car elles peuvent l’utiliser comme elles le souhaitent sans en avoir besoin. Au lieu de cela, je ne peux que facturer les services que je fournis en plus d'Espruino, tels que la maintenance d'un port ou l'ajout de fonctionnalités.

Commande de servomoteur utilisant Espruino sur une carte de développement STM32 à écran tactile.

Bien que je sois capable de me payer un salaire, c’est purement dû à la générosité de la communauté, non pas à mon excellent modèle commercial. Je ne peux pas m'empêcher de penser que le manque d'un argumentaire clair en faveur de l'utilisation d'outils logiciels ouverts avec du matériel open source nuit à l'innovation sur le terrain. Je pense qu’il est révélateur qu’il existe désormais des centaines de sites Web Internet des objets financés par capital-risque. Dans le même temps, malgré des millions d’utilisateurs, l’EDI Arduino n’a pas sensiblement changé depuis la première version alpha, il y a 10 ans, alors que l’IDE ​​en ligne Codebender a dû être fermé.

Cela dit, je suis très chanceux d’être payé pour faire ce que je veux. Espruino n’aurait pas la même popularité que s’il n’était pas open source, et j’utilise presque exclusivement des logiciels open source. J'ai eu quelques contributions fantastiques à Espruino de la part de la communauté (par exemple, les ports ESP8266 et nRF52), et même les rapports de bugs des utilisateurs d'autres cartes ont amélioré la fiabilité d'Espruino pour tout le monde. Tout bien considéré, je tire assurément parti des logiciels open source, tout en ayant l’impression de donner quelque chose en retour.

Part

Laisser Un Commentaire