Faciliter les contributions sur GitHub

Salut à tous!

Je viens de passer la matinée à merger des pull-requests, et j’ai pensé qu’il y avait pas mal de petits trucs qu’on pourrait améliorer sur le repo Gladys pour que ce soit plus pratique pour tout le monde de contribuer :slight_smile:

Quelques changements sur Github

Déjà, il manquait pas mal de trucs sur le repository que j’ai ajouté:

  • Un fichier CONTRIBUTING.md avec les règles pour contribuer
  • Un template de pull request => PULL_REQUEST_TEMPLATE.md avec une check list des trucs à penser en faisant une PR :slight_smile: Au moins ça sera plus clair et on évitera d’oublier des trucs
  • Un template d’issue, maintenant quand on créé une issue on doit choisir un template, au moins c’est plus clair et plus propre pour tout le monde:

  • Un fichier SUPPORT.md qui est montré par GitHub quand un utilisateur créé une issue, ça évitera qu’on ait à l’avenir d’autres issues “support” et ça redirige les gens vers le forum :slight_smile:

Des changements au niveau du code

Jusque là, je n’avais pas mis de tool de lint de manière obligatoire (déclenché à chaque build TravisCI)

C’était pas super pratique parce que du coup chacun à son style de code, et à chaque PR je passe du temps manuellement à ajouter des points-virgules ou changer les indentations, c’est pas fou ^^

Il fallait clairement qu’on force le passage d’eslint sur le repo Gladys…

Sur le Gladys Gateway, j’ai tout mis propre dès le début et c’est vraiment un plaisir de coder dessus, donc j’ai mis le même fichier “eslint” que sur le Gateway server sur Gladys.

Bon au début il trouvait beaucoup d’erreurs (11k :smile:) =>

Mais en 1h de boulot j’ai réussi à tout cleaner!

Zero erreur!! :smiley:

Pour passer eslint, installez eslint sur votre machine :

npm install -g eslint

Puis lancez le dans le repo:

npm run eslint

Je vous conseille d’utiliser Vscode pour coder, qui highlight tout seul les erreurs et dis l’erreur eslint à corriger, super pratique :slight_smile:

Pour corriger les erreurs, il y a l’option “–fix” de eslint, “prettier” ou “jsbeautify”, je vous laisser tester les outils et voir celui qui vous plait le plus!

@piznel @Boimb @MathieuA @VonOx @Jean-Philippe vous qui avez fais des contributions récemment, ça devrait vous intéresser :slight_smile:

9 Likes

La next step pour moi, c’est de mieux expliquer concrètement sur le GitHub comment développer sur Gladys, parce que pour l’instant c’est pas clair:

  • Installer Gladys en local sur sa machine
  • Connecter Gladys à sa DB local
  • Lancer les tests
  • Lancer en mode développement
2 Likes

A effectivement, je crois que je mis prend comme un pied pour dev. A chaques fois je mets 5 min à transférer le code sur Gladys :sweat_smile:

Excellent @pierre-gilles !

Perso depuis peu je suis passé sur l’IDE IntellJ qui embarque d’office eslint et c’est méga pratique !
Par contre l’IDE me fait souvent la remarque des var dans les fichiers du front, var qui devrait être let ou const avec l’ES6. Il me semblais que c’était un problème lié au module que grunt lance pour minimifiés les fichiers non ? Tu as pu corriger ça aussi ?

1 Like

Alors ça c’est un autre débat :stuck_out_tongue:

J’ai pas touché à ça, et c’est un chantier un peu plus solide.

On peut créer un topic spécifique pour en parler si tu veux, mais j’ai des idées un peu plus long terme pour Gladys v4 (release majeure breaking!).

Pour faire simple, je t’en avais déjà parlé mais j’aimerais virer Sails.js qui est un framework un peu lourd et un peu à l’abandon, pour du Express.js brut, tellement plus souple et plus performant. ( en terme de temps de boot vous allez halluciner ^^ )

C’est un beau chantier mais quand on y pense n’est pas si compliqué, vu que sails est basé sur express les controllers restent les même, le core reste le même, on a juste a remplacer les fonctions type sails.[…] et plugger l’ORM à côté (voir changer d’ORM si waterline nous gonfle :wink: )

Et niveau front transformer le front actuelle en une SPA avec preact!

BIG LOVE!

Heu… T’as déjà regardé du côté de koa côté serveur ?
C’est les gars d’express qui ont fait ça apparemment, mais le truc n’a pas trop pris, bien que [pincettesModeOn] stable / performant / promised based / approche middleware [/].
J’avais regardé vite fait, et je ne suis pas un spécialiste, clairement, mais ça avait l’air sweet :smiley: … worth a try amha :wink:

Pffoooouuuuuu j’suis carrément chaud !!! :grinning:

Le must du must ça serais aussi de virer complètement AdminLTE ! Soit on utilise le même template que la Gateway soit on se fait notre propre template made for Gladys :muscle:

Si on pouvait avoir notre propre template ça serais génialissime ! Donc tant qu’à refaire la structure du projet autant le faire aussi !
Il y aurait beaucoup d’avantages !

3 Likes

Avec l’approche « composants » de react/preact, ça semble ok pour répliquer à moindre coût le design de la gateway

@Boimb : je connais Koa, mais ça n’a pas super pris, et au final:

  • Express nu est tout aussi performant
  • promised based => au final express aussi si tu rajoute un petit middleware maison qui fait 1 ligne.
  • express a 1000x plus d’intégrations et ça c’est pratique :slight_smile:

Regarde le travail que j’ai fais sur le gladys-gateway, c’est 100% à base de async/await, c’est super propre =>

https://github.com/GladysProject/gladys-gateway/blob/master/src/gladys-gateway-server/core/api/instance/instance.controller.js

ahaha nice!

Je serais plus chaud d’harmoniser avec le Gladys Gateway! :slight_smile: Pour être honnête, j’en ai pas parlé, mais j’ai conçu le Gladys Gateway Frontend pour qu’il puisse tourner aussi bien via le Gateway qu’en direct sur Gladys. Il y a un peu d’adaptation à faire mais pas énorme, en gros la partie E2E encrypted est faite dans un module séparé, le gladys-gateway-js qui abstrait tout, et donc on peut très bien utiliser le front sans ce module.

Notre propre template a moins que quelqu’un dans ce forum ait comme métier d’être designer front-end avec de belles années d’expérience et un portfolio qui claque, je suis pas chaud. C’est un vrai boulot à temps plein de concevoir un template CSS, il y a des tonnes de petits edge case de responsive à gérer, et croyez moi pour arriver au niveau de AdminLTE ou du template que j’ai utilisé pour le Gateway, il faut être une machine de guerre de frontend, et surtout il faut avoir la garantie que cette personne reste dans le projet sur les prochaines années pour aider à maintenir ^^ Je préfère les templates!

*Mon avis là dessus

Le projet est certes excitant, mais c’est quand un même un très très gros projet ^^

Surtout que si on refait le front/le back, c’est l’occasion de repenser pas mal de choses que je referais pas forcément pareil aujourd’hui, avec l’expérience des dernières années sur le projet, les nouveautés technologiques, toussa toussa, donc pour moi c’est pas qu’une réécriture de code.

A mon avis en 1 mois à plusieurs à fond la partie code est pliée. la partie la plus longue va être la conception :

  • Base de donnée : c’est l’occasion de construire nous même la DB et donc de repenser éventuellement certaines tables qu’avec l’expérience je referais pas forcément de la même façon.
  • Backend: Si on repense la stack, c’est le moment de changer pas mal de petits trucs pour que Gladys soit plus rapide, j’ai pas mal d’idées
  • Architecture des module interne: Comment faire pour que Gladys soit plus résiliente à l’installation d’un module foireux? Maintenant qu’on pourra gérer nous même le démarrage des modules (vu qu’on va pouvoir écrire le code nous même, on sera plus dépendant de sails), on va pouvoir détecter les modules foireux et donc éliminer à 100% les erreurs 502 liés aux installations pourries.
  • UX : Avec l’expérience des dernières années, se poser les bonnes questions sur l’interface: Qu’est ce que l’utilisateur essaie de faire dans Gladys? Quels screens sont importants/inutiles? Quels screens sont incompréhensibles ? Beaucoup de réflexions là dessus à avoir, de recherches utilisateurs, et de tests.

La next step

Si vous voulez on peut commencer un groupe de réflexion là dessus (j’ai l’impression d’être un cadre de 40 ans qui parle, désolé :stuck_out_tongue: ), mais pour l’instant moi je suis à 100% sur le Gladys Gateway qui est ma priorité tant qu’il n’est pas sorti! A part des petits merge de PR à droite à gauche, je suis uniquement focus sur le Gladys Gateway, sinon il sortira jamais :smiley:

Deuxième chose à prendre en compte, je vais sûrement commencer le temps partiel dans la semaine qui arrive, genre semaine là ou semaine d’après, pour la simple et bonne raison qu’il faut que j’ai des sous pour manger :stuck_out_tongue: Donc mes disponibilités vont se réduire à nouveau. Malheureusement tant que le Gateway n’est pas sorti pour que les revenus sur le projet augmente, je dois travailler à côté.

Mais je suis super chaud pour ce projet, je rêve de virer sails, grunt et AngularJS croyez moi :heart_eyes:

1 Like

:pray: amen :pray:

:smiley:

1 Like

C’est quand même mieux que les Promesses :stuck_out_tongue:

Et bien qu’est-ce qu’on attend ? ^^

Aller c’est parti !

2 Likes

Aha allez go! @MathieuA tu créé un topic sur le forum pour en parler ? :slight_smile: Mets un lien vers mon message sur ce post, et on en parle!

Je te laisse leader l’initiative, comme je dis pour l’instant je veux finir le Gateway qui est en très bonne voie!! :smiley:

Merci @Bob pour ton message :slight_smile: C’est exactement ce que j’ai en tête, le marché domotique est un super beau marché en pleine croissance, et je pense qu’on peut clairement très vite se démarquer si on mise sur un produit simple, sexy, et facile à mettre en place. Surtout en France grâce à l’atout de se projet: être francophone!

Les compatibilités comme tu dis grâce au MQTT, Zwave, ou carrément via Node-red (pas con faudrait qu’on se renseigne!) on peut facilement tout ajouter.

4 Likes

:+1:
C’est vrai que ça manque…
Des tutos existent mais assez compliqué pour le commun des mortels… Il faudrait le standardiser et non que ce soit à l’initiative de l’utilisateur.
Eh oui, un dev le fera régulièrement car il connais les risques s’il plante son installation lors de tests… Mais un user lambda ne pensera pas à le faire

Il y a une card sur trello a propos de ça

En soit il ne faut faire un backup que de la base.
Comme cela l’utilisateur install Gladys, puis restore son backup qui va allez faire le traitement d’aller réinstaller les modules qui était présent en base.

2 Likes

Ce point serait ainsi traité par la card trello que @pierre-gilles avait instancié dans trello :wink:

C’est effectivement quelque chose que j’ai en tête :slight_smile: C’est dans le Trello!

Je pense que c’est quelque chose qui va arriver dès qu’on aura le Gateway, car le Gateway est parfait pour ce genre d’usage: chiffré de bout en bout (utile pour les sauvegardes), et online. Je vois très bien la sauvegarde automatique et la restauration en un clic :slight_smile:

Hello à tous, Ce qui serait bien ce mettre à dispo une doc même minimale sur Gladys, son architecture, les fichiers qui le compose ce qui permettrait de mieux comprendre son fonctionnement. Je pense qu’une idée plus claire de tout cela permettra d’avoir plus de contributeurs prompts à apporter des idées, participer aux développement de modules, aux tests sur différents matériels, à des tutoriels, contribuer via Patreon bref in fine de faire avancer plus vite le projet. Ce qui serait bien aussi serait d’adopter un langage moins abscons avec moins d’acronymes, d’abréviations ou d’anglicismes à tout va dans les forums pour une compréhension minimale pour tous, nous avons une belle et riche langue, je n’ai rien contre les anglicismes quand il n’y a pas d’équivalents en français mais des fois il y en a pléthore je trouve…y compris par le géniteur et exégète de ce projet ! :wink:

D’accord avec toi sur l’ensemble de ton post.
Voici quelques docs (je pense que tu as déjà dû les lire, mais ça répond à certains points que tu soulèves) :

Pour ce qui est de l’anglais, c’est vrai que @pierre-gilles aime bien caler quelques mots par ci par là mais malheureuseument, c’est une déformation professionnelle je pense.
En effet, le code (au sens large, pas seulement Gladys) est international et basé sur l’anglais, on a beau avoir une belle langue, c’est comme ça…
Donc quand ils (les devs) donnent des explications, c’est souvent basé sur des fonctionnalités en langue anglaise et dont le sens pourrait être mal compris en traduisant à tout va.

(Mais ça n’enlève en rien le fait que le papa de Gladys aime bien placer des mots en anglais… :p)

Bonjour Hamtaro, Certes je l’ai lu la doc mais je parlais d’une doc qui permettrait de faire une install de Gladys sur n’importe quel config en partant de 0 (et surtout pouvoir ainsi faire une install sur d’autres matos), là dans la doc on reste sur cantonné sur du Raspi à cause de l’image et c’est bien dommage. Il serait déjà plus simple bien de faire un package de déploiement genre sudo apt-get install gladys . Pour l’anglais, j’ai commencé à coder pro en vb3 (et même le VbDos avant) en 95, lisp(Autocad), et je parles pas du GFA Basic sur Atari 520 ni du Qbasic sur Sinclair QL en 85…Snif la belle époque ! Non je déconnes, on rêvait des machines et leurs possibilités d’aujourd’hui avec les frustrations qui découlaient de leurs limitations d’alors ! Donc, la langue anglaise on en bouffait des km via les bouquins d’infos ou docs rarement traduit (la prog des API, DLL de Windows fut un délice intellectuel dont j’ai étonnement évité la calvitie ! :wink: ), la langue de Shakespeare ne me déranges pas outre mesure mais elle, je pense, quand elle est mélangée donne une impression plus floue de l’ensemble…Donc, je reste preneur d’une doc qui me permettrait de faire une install sur une VM (que ce soit sur une VM Linux, Mac, Windows, ReactOS ! J’ai acheté le Starter Pack, contribue sur Patreon (également pour ReactOs, Openmediavault ) mais cela me frustres de ne pas pouvoir déployer Gladys sur d’autre matos surtout sur une VM (je suis en train de regarder pour le déployer sur Qemu). Bref, pour résumer ce qu’il manque à ce jour c’est une solution d’install simple voire triviale…et donc d’une doc ad hoc !!! Une bonne âme pour s’y coller ? :weary:

Je ne sais plus trop où , mais tu trouveras sur le forum des membres qui n’utilisent pas de RPi, mais des VM ou des NAS Syno pour faire tourner Gladys :wink:

Edit : Lien pour un exemple sur NAS Synology :wink:

Edit 2 ; Lien pour un exemple sur VM :wink:

1 Like