• Li chevron_right

      Gestion de jardin : Garden party

      mtancoigne · pubsub.eckmul.net / linuxfr_news · Wednesday, 30 December, 2020 - 08:34 edit · 13 minutes

    <div><p>Cette dépêche concerne Garden Party, une application web opensource de gestion de jardin.</p> <h3 id="toc-contexte">Contexte</h3> <p>Lassés de la ville et de ses sirènes, nous avons cette année cherché à nous en éloigner.</p> <p>Après plusieurs visites et quelques concessions, nous avons trouvé quelque chose dans nos moyens.</p> <p>Environ 1 700m² de terrain contenant déjà quelques arbres, où nous allons nous mettre à jardiner. L’objectif est encore flou, mais il est question de résilience. Et pour apprendre, j’aime faire.</p> <p>En attendant la vente, nous avons commencé à réfléchir à notre futur jardin : quoi planter et où ?</p> </div><ul><li>lien nᵒ 1 : <a title="https://garden-party.experimentslabs.com/" hreflang="fr" href="https://linuxfr.org/redirect/107591">Instance active</a></li><li>lien nᵒ 2 : <a title="https://gitlab.com/experimentslabs/garden-party" hreflang="fr" href="https://linuxfr.org/redirect/107592">Sources</a></li><li>lien nᵒ 3 : <a title="https://doc.garden-party.experimentslabs.com/" hreflang="fr" href="https://linuxfr.org/redirect/107593">Manuel utilisateur</a></li><li>lien nᵒ 4 : <a title="https://matrix.to/#/!fROsPDUgtYILajhMWg:matrix.org" hreflang="fr" href="https://linuxfr.org/redirect/107594">Chat Matrix</a></li><li>lien nᵒ 5 : <a title="https://framalistes.org/sympa/subscribe/garden-party" hreflang="fr" href="https://linuxfr.org/redirect/107595">Liste de diffusion</a></li><li>lien nᵒ 6 : <a title="https://blog.garden-party.experimentslabs.com/" hreflang="fr" href="https://linuxfr.org/redirect/107596">Blog</a></li></ul><div><h2 class="sommaire">Sommaire</h2> <ul class="toc"> <li> <ul> <li><a href="#toc-la-carte-du-jardin">La carte du jardin</a></li> <li><a href="#toc-naissance-de-garden-party">Naissance de Garden Party</a></li> <li> <a href="#toc-maturation-et-publication">Maturation et publication</a><ul> <li><a href="#toc-techniquement-parlant">Techniquement parlant…</a></li> </ul> </li> <li><a href="#toc-futur-de-garden-party">Futur de Garden Party</a></li> <li><a href="#toc-%C3%89cosyst%C3%A8me">Écosystème</a></li> <li><a href="#toc-vous-voulez-participer">Vous voulez participer ?</a></li> </ul> </li> </ul> <h3 id="toc-la-carte-du-jardin">La carte du jardin</h3> <p>Nous avons donc commencé à dessiner notre jardin, d’abord à partir de calques réalisés sur des vues aériennes, puis en utilisant <a href="https://www.inkscape.org">Inkscape</a>. En quelques heures, nous sommes arrivés cette carte-ci :</p> <p><img src="//img.linuxfr.org/img/68747470733a2f2f626c6f672e67617264656e2d70617274792e6578706572696d656e74736c6162732e636f6d2f6173736574732f696d616765732f32303230313231365f63617274655f766964652e737667/20201216_carte_vide.svg" alt="Terrain vide" title="Source : https://blog.garden-party.experimentslabs.com/assets/images/20201216_carte_vide.svg"></p> <p>Puis nous l'avons peuplée :</p> <p><img src="//img.linuxfr.org/img/68747470733a2f2f626c6f672e67617264656e2d70617274792e6578706572696d656e74736c6162732e636f6d2f6173736574732f696d616765732f32303230313231365f63617274655f6172627265732e737667/20201216_carte_arbres.svg" alt="Terrain complet" title="Source : https://blog.garden-party.experimentslabs.com/assets/images/20201216_carte_arbres.svg"></p> <p>En gros, nous avons remis les arbres et arbustes, colorés par genre, la taille représentant grosso-modo leur âge. Les points représentent les zones qui d’après nous seront principalement ombragées.</p> <p>Et la carte a évolué, avec différents essais, pour arriver, à son apogée, à un ensemble totalement surréaliste et ingérable pour des débutants :</p> <p><img src="//img.linuxfr.org/img/68747470733a2f2f626c6f672e67617264656e2d70617274792e6578706572696d656e74736c6162732e636f6d2f6173736574732f696d616765732f32303230313231365f63617274655f70617263656c6c65732e737667/20201216_carte_parcelles.svg" alt="Terrain, licornes" title="Source : https://blog.garden-party.experimentslabs.com/assets/images/20201216_carte_parcelles.svg"></p> <p>Il faut gérer tout ça…</p> <h3 id="toc-naissance-de-garden-party">Naissance de Garden Party</h3> <p>En attendant la vente, nous trépignons. Les quelques travaux concernant la maison sont chiffrés, reste l’inconnue : le jardin. La carte est jolie mais ne permet pas de suivi, car… c’est une carte.</p> <p>Donc l’idée germe, au fil de nuits à me demander par où commencer, comment garder une trace de ce qui sera fait, de créer une application. Son but sera simple pour commencer : pouvoir recréer la carte que nous avions imaginée et assurer un suivi de la vie de ces éléments, tout en planifiant les actions à mener, plant, taille, récolte…</p> <p>Le confinement de novembre lié à la COVID19 a donné un peu de temps pour développer une application qui répond à ce cahier des charges.</p> <p>C’est donc avec un code opensource (licence MIT), que Garden Party voit le jour.</p> <p><img src="//img.linuxfr.org/img/68747470733a2f2f626c6f672e67617264656e2d70617274792e6578706572696d656e74736c6162732e636f6d2f67656e6572617465642f6173736574732f696d616765732f32303230313231365f67705f696e746572666163652d313030302d3332333239303030612e706e67/20201216_gp_interface-1000-32329000a.png" alt="Interface principale" title="Source : https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_interface-1000-32329000a.png"></p> <h3 id="toc-maturation-et-publication">Maturation et publication</h3> <p>Au cours des quelques semaines de développement initial, il a été proposé de pouvoir utiliser les cartes OpenStreetMap directement en fond de plan, en plus des images téléversées et c’est maintenant possible.</p> <p><img src="//img.linuxfr.org/img/68747470733a2f2f626c6f672e67617264656e2d70617274792e6578706572696d656e74736c6162732e636f6d2f67656e6572617465642f6173736574732f696d616765732f32303230313231365f67705f6f736d2d313030302d3035663334323966332e706e67/20201216_gp_osm-1000-05f3429f3.png" alt="Carte OSM" title="Source : https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_osm-1000-05f3429f3.png"></p> <p>De plus, il a fallu créer une bibliothèque de plantes, ce qui a mené à ces différents points :</p> <ul> <li>le <em>genre</em> des plantes ? (la <em>famille</em> aurait peut-être été plus pertinente, à discuter…) ;</li> <li>les relations avec d’autres plantes ? (les tomates ont une bonne relation avec les œillets d’inde) ;</li> <li>une description ? (OK, on les a pompées sur Wikipedia, mais du coup, il fallait une <em>source</em> pour l'indiquer) <img src="//img.linuxfr.org/img/68747470733a2f2f626c6f672e67617264656e2d70617274792e6578706572696d656e74736c6162732e636f6d2f67656e6572617465642f6173736574732f696d616765732f32303230313231365f67705f6c69627261697269652d313030302d3063643431616332632e706e67/20201216_gp_librairie-1000-0cd41ac2c.png" alt="Librairie" title="Source : https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_librairie-1000-0cd41ac2c.png"> </li> </ul> <p>Chaque plante « appartient » à un des niveaux que l’on retrouve dans les concepts de forêt-jardin (du sou-sol à la canopée), ce qui permet de filtrer l’affichage sur la carte.</p> <p>On peut planter des éléments « seuls », comme des arbres, ou créer des parcelles contenant plusieurs éléments.</p> <p>Il est possible d’ajouter des animaux sur les cartes, car oui, <s>ce sont des plantes</s> ils ont leur place dans les jardins. Bon, la bibliothèque en est exempte pour le moment.</p> <p>Un élément (animal ou végétal) a une sorte de cycle de vie: <em>planifié</em> (on veut/va en mettre), <em>mis en place</em> (on l’a planté/mis en liberté) ou <em>retiré</em> (le plant est mort, on l’a coupé, l’animal *n’est plus là*).<br> <img src="//img.linuxfr.org/img/68747470733a2f2f626c6f672e67617264656e2d70617274792e6578706572696d656e74736c6162732e636f6d2f67656e6572617465642f6173736574732f696d616765732f32303230313231365f67705f616374696f6e732d3836332d3039636662323139302e706e67/20201216_gp_actions-863-09cfb2190.png" alt="Cycles de vie" title="Source : https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_actions-863-09cfb2190.png"></p> <p>Chaque action est planifiable et pour les plus courantes, on les retrouve dans une liste de « trucs à faire »<br> <img src="//img.linuxfr.org/img/68747470733a2f2f626c6f672e67617264656e2d70617274792e6578706572696d656e74736c6162732e636f6d2f67656e6572617465642f6173736574732f696d616765732f32303230313231365f67705f746f646f2d3939362d6664363166663463352e706e67/20201216_gp_todo-996-fd61ff4c5.png" alt="Liste de tâches" title="Source : https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_todo-996-fd61ff4c5.png"></p> <p>Chaque élément a son historique d’actions.<br> <a href="https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_historique-988-16f271336.png">Historique</a></p> <p>Une vue d’ensemble affiche tous les différents éléments.<br> <img src="//img.linuxfr.org/img/68747470733a2f2f626c6f672e67617264656e2d70617274792e6578706572696d656e74736c6162732e636f6d2f67656e6572617465642f6173736574732f696d616765732f32303230313231365f67705f7675655f645f656e73656d626c652d313030302d3239643562373831342e706e67/20201216_gp_vue_d_ensemble-1000-29d5b7814.png" alt="Vue d’ensemble" title="Source : https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_vue_d_ensemble-1000-29d5b7814.png"></p> <h4 id="toc-techniquement-parlant">Techniquement parlant…</h4> <p>C’est une application Ruby on Rails (web, donc) avec, pour l’<em>application</em>, un frontend en VueJS et des cartes affichées grâce à OpenLayers. Pour l’administration, des vues « standard » Ruby on Rails.</p> <p>Une API REST est disponible pour les utilisateurs inscrits (à voir s’il ne faudrait pas l’ouvrir en partie pour la librairie). Une documentation Swagger est disponible aussi, pour un petit confort non négligeable si vous voulez créer votre client.</p> <p>Le code est testé, au moins sur le <em>backend</em> (droits, retours d’API, comportement des actions…), et les tests pourraient être améliorés sur le <em>frontend</em>.</p> <p>Le support multi-langue est implémenté ; l’ensemble de l’application est traduit en français/anglais (mis à part les données : c’est en français)</p> <p>Pour les devs Rails + Vue, il y a des trucs potentiellement intéressants: des tâches Rake pour générer les <strong>stores VueX</strong> et des simili-modèles en JS; des <strong><em>templates</em> de <em>scaffolding</em></strong> modifiés pour les contrôleurs, vues d’administrations et tests de requête ; une gem qui <strong>teste les retours API avec RSpec</strong> et génère la doc Swagger (elle aurait bien besoin d’amour, cette gem) ; les traductions <code>vue-i18n</code> sont gérées par Rails \o/…</p> <h3 id="toc-futur-de-garden-party">Futur de Garden Party</h3> <p>Le projet est jeune mais a un potentiel d’évolution intéressant ; hormis le fait qu’il soit libre, quelques idées font partie de la feuille de route aujourd’hui, et seront développées si une communauté se forme autours de ce logiciel :</p> <ul> <li>intégration de données géographiques ;</li> <li>statistiques géographiques (qu’est-ce qui est planté quand et où ?) ;</li> <li>partage d’agencements fonctionnels (tel plant marche bien avec tel plant, plantés de telle manière) ;</li> <li>intégration de données météorologiques ;</li> <li>sauvegarde de photos des plants ;</li> <li>partage de données inter-instances : bibliothèque de plantes, de statistiques, etc. (ActivityPub ?).</li> </ul> <h3 id="toc-Écosystème">Écosystème</h3> <p>Si on peut parler d’écosystème, on a <a href="https://garden-party.experimentslabs.com">une instance qui tourne</a>, un semblant de <a href="https://doc.garden-party.experimentslabs.com">manuel utilisateur</a> et ce blog. Ah, et un <a href="https://matrix.to/#/!fROsPDUgtYILajhMWg:matrix.org">chat matrix</a>, une <a href="https://framalistes.org/sympa/subscribe/garden-party">liste de diffusion</a> et <a href="https://blog.garden-party.experimentslabs.com">un blog</a> avec application dans la vie réelle.</p> <h3 id="toc-vous-voulez-participer">Vous voulez participer ?</h3> <ul> <li>Vous êtes dev VueJS et que vous aimez écrire des tests, bah… plus que bienvenue, on en manque cruellement (tests avec <code>vue-test-utils</code> et <code>Jest</code>)</li> <li>Vous avez utilisé l’application mais l’interface vous rebute, on en discute, elle répond au besoin de ses devs pour le moment… Ce qui est très bien, mais pas assez pour être utilisé par d’autres.</li> <li>Les pictos d’éléments sont générés (SVG) et peu différenciables : un <em>Poirier</em> et un <em>Pommier</em> auront exactement le même picto (même <em>niveau</em>, même première lettre). Ce serait top d’avoir des pictos par famille (forme par famille, lettre par élément, par exemple).</li> <li>Vous voulez plus de contenu dans la bibliothèque, proposez !</li> <li>Heu… On est des quiches en jardinage… les termes ne collent pas ? On veut apprendre ! Dites-nous tout !</li> <li>Il manque des actions…</li> </ul> <p>Si vous voulez nous dire merci, c’est gentil.</p> <p>Et si vous nous dites que c’est tout pourri, sans explication… → <code>/dev/null</code></p> <p>Une nouvelle aventure commence !</p> </div><div><a href="https://linuxfr.org/news/gestion-de-jardin-garden-party.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122694/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/news/gestion-de-jardin-garden-party#comments">ouvrir dans le navigateur</a> </p>