Faciliter les contributions sur GitHub


#1

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:


#2

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

#3

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:


#4

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 ?


#5

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!


Parlons de Gladys V4
#6

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:


#7

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 !


#8

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


#9

@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 =>

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:


Parlons de Gladys V4
#10

:pray: amen :pray:

:smiley:


#11

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

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

Aller c’est parti !


#12

Bonjour,
C’est impressionnant tout ce qu’il y a à faire.
J’ai découvert ce projet très récemment. Je le trouve très bien (en plus d’être en français), et je pense qu’il pourrait se démarquer rapidement des autres solutions domotiques.

Je me fais plusieurs réflexions, en tant qu’utilisateur (je ne suis pas un spécialiste) :

  1. il y a de nombreuses solutions sur le marché. Gladys doit apporter une vraie plus-value tout de suite pour enrôler de nombreux utilisateurs et évoluer par la suite
  2. il me semble que Gladys pourrait miser (se recentrer) tout de suite sur la visualisation (web et mobile), ainsi que l’édition des règles (scénario) pour apporter quelque chose de très simple et complet. La gateway me semble aussi astucieux comme solution. Je pense que Gladys pourrait se démarquer rapidement sur ces points.
  3. Pour les interfaces avec les objets, je pense qu’il n’y a pas d’urgence à en développer le max aujourd’hui si Gladys s’appuie, dans un premier temps au moins, sur un bus du type MQTT très utilisé par ailleurs. Cela permettrait de se recentrer sur mon point 2 ci-dessous, le temps de s’imposer et faire venir beaucoup d’utilisateurs. Puis cela pourrait évoluer par la suite si Gladys souhaite fournir elle-même toute la solution complète. Node red apporte aussi de nombreuses solutions pour se raccorder au matériel, avec une communauté importante. Gladys pourrait exploiter ces possibilités, dans un premier temps au moins.

Je ne suis pas spécialiste. Il s’agit tout simplement de réflexions que je souhaitais partager.

Félicitations pour ce travail.


#13

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.


#14

Pierre-Gilles,
Un lien, si besoin

Bonne soirée


#15

Je sais que je m’y prends tardivement dans la conversation mais j’aimerais ajouter quelques éléments…

Comme je l’ai expliqué dans ma présentation, je suis passé par SynoZwave, Domoticz, Jeedom, revenu à Domoticz avant de découvrir Gladys.

A mon sens, le plus important dans la domotique c’est qu’elle doit être facile à paramétrer pour ensuite se faire oublier. On ne doit se rendre compte de son existence que le jour où il y a un problème.
Pour l’instant aucun des systèmes que j’ai testé n’arrive à le faire : Domoticz est difficile à paramétrer, Jeedom souffre d’une complexité dans ses scénarios et j’ai eu avec tous des problèmes de fiabilité.
En plus, on est dans l’univers du DIY, dans ce cas, difficile de rendre les choses payantes (comme le fait Jeedom)… En soit on peut offrir un service supplémentaire payant ou appeler aux dons. Bien présenté ça peut fonctionner.
Enfin, la compatibilité avec de nombreux devices n’est surtout pas à négliger. Si je suis revenu et resté à Domoticz, c’est bien parce qu’il est compatible avec énormément de matériel. Pour palier à ça, on peut imaginer des modules, dans Gladys, de commande de Domoticz ou Jeedom, le temps que la compatibilité se développe. Gladys a une super interface et peut servir de centralisateur.

Enfin, il manque une chose primordiale à Gladys, c’est la sauvegarde! Il faut impérativement pouvoir restaurer facilement et rapidement son système en cas de défaillance.

Je suis prêt à vous aider mais je ne suis qu’un développeur Web. J’adore et maitrise plutôt pas mal CSS et le couple PHP/MySQL, si ça peut aider mais j’ai peu de temps et je ne maitrise pas très bien GIT.


#16

:+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


#17

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.


#18

Il faut également penser à la migration. On doit pouvoir quitter un raspberry pi pour son nouveau modèle ou même passer sur un PC recyclé ou un vrai serveur sans devoir tout raparamétrer et perdre ses historiques.


#19

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


#20

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: