Comment contribuer à Duniter-UI ?

duniter-ui

#1

@cgeek, pourrais-tu me résumer la procédure pour contribuer/tester Duniter-ui.

J’ai l’impression que le Readme n’est plus à jour.
Duniter-ui ne semble plus être un submodule git du dépôt Duniter.

J’ai cloné le dépôt Duniter-ui de Gitlab, qui semble être un module nodejs, mais comment tester mes modifs avec Duniter ?

Merci d’avance pour toute aide.


#2

Tout d’abord, je ne conseille pas d’apporter d’améliorations à cette interface écrite en Angular 1. Mieux vaudrait réécrire une interface basée sur Angular 4.

Néanmoins si tu souhaites mettre à jour duniter-ui, voici la procédure :

Une fois positionné dans le dépôt duniter-ui :

yarn watch

Cette commande s’occupera d’installer les dépendances, de compiler l’UI et de surveiller les modifications de fichier.

Pour pouvoir constater les modifications dans un navigateur, il faut lancer la partie « backend » de l’UI en lançant le nœud duniter co-installé avec les dépendances de développement :

node run.js direct_webstart

Ensuite il suffit d’accéder à http://localhost:9220 pour visualiser l’UI.


#3

Merci beaucoup ! Je vais essayer tout ça.

Je désire juste modifier le sélecteur BMA ipv4 remote en “entrée manuelle” ou “combo entrée manuelle/sélecteur”.

Bref, je ne ferai rien de plus sur du “legacy code”. :wink:

De plus, mon IDE me dit que les templates Jade se nomme Pug maintenant…

La suite la plus judicieuse serai une migration vers angular4/Pug2 effectivement.


#4

Bon ben évidemment j’ai eu qq soucis.

Notamment avec bower, car yarn n’installait pas les dépendences de dev.

Une fois bower installé, lui aussi est déprécié et devra être migré :wink: :

warning bower@1.8.4: We dont recommend using Bower for new projects. Please consider Yarn and Webpack or Parcel. You can read how to migrate legacy project here: https://bower.io/blog/2017/how-to-migrate-away-from-bower/

J’ai ajouté au readme un chapitre development pour mémoriser ce que j’ai lancé…

Development

Install Nodejs v8+ (use nvm is recommended) and Yarn.

Install with dev dependencies:

yarn install --production=false

Auto build while coding:

yarn watch

J’ouvre un autre terminal, avec la même version de nodejs assigné par nvm (8.9.x) et je lance le serveur :

ce qui me renvoie une erreur :

TypeError: duniterServer.requireFile is not a function
    at new WebAdmin (/mnt/data/Documents/dev/nodejs/duniter-ui/server/controller/webmin.js:21:32)
    at module.exports (/mnt/data/Documents/dev/nodejs/duniter-ui/server/controller/webmin.js:16:10)
    at /mnt/data/Documents/dev/nodejs/duniter-ui/index.js:80:25
    at Generator.next (<anonymous>)
    at onFulfilled (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/co/index.js:65:19)
    at /mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/co/index.js:54:5
    at new Promise (<anonymous>)
    at co (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/co/index.js:50:10)
    at Object.onDatabaseExecute (/mnt/data/Documents/dev/nodejs/duniter-ui/index.js:53:97)
    at Stack.<anonymous> (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/duniter/index.js:348:38)
    at Generator.next (<anonymous>)
    at fulfilled (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/duniter/index.js:4:58)
    at <anonymous>

#5

Cette version de duniter-ui se base sur la nouvelle version de Duniter (1.7), et comme je ne l’ai pas publiée ça coince.

Je viens de pusher un commit sur duniter-ui, un yarn devrait permettre de corriger ton problème une fois mon commit rappatrié.

edit : ceci dit il semble y avoir ensuite un problème avec la synchro qui prend une éternité et finit par crasher. Je dois avoir du code à pusher qui traîne car mes derniers essais fonctionnaient en moins de quelques minutes. Et là je n’ai pas le temps de regarder, désolé :confused:

edit 2 : bon j’ai malgré tout tenté de publier duniter 1.7 sur NPM, mais là c’est la CI gitlab qui ne marche plus, donc je ne peux pas publier par ce biais.

edit 3 : j’ai publié manuellement, bref ça devrait fonctionner, mais ce n’est pas le cas. Je te conseille donc soit de te rebaser sur un commit de version 1.6, soit d’abandonner l’idée de commiter sur duniter-ui.


#6

Ne ris pas ! Je vois ton sourire en coin à distance :slight_smile:

Mais je fais de mon mieux, et je vais réussir à t’aider à contribuer. Ce n’est qu’une question de jours :slight_smile:


#7

Ah Ah ! Je ris jaune plutôt ! Je suis devant nodejs/typescript/angular1/jade comme une poule devant un couteau.

Je commence un peu à regretter d’avoir voulu contribuer un ch’touille à cette interface. :sweat_smile:

Mais je le ferai !


#8

Bonjour,
Si ça peut t’aider à décider d’y investir du temps, saches qu’on est déjà deux à bien souffrir de cette difficulté. On cherchait à faire le tuto. Merci en tous cas.


#9

Oui merci, c’est important d’avoir ce genre de retours, ça aide :slight_smile:

En tous les cas je suis déjà sur le sujet, j’avais juste besoin d’un créneau.


#10

Encore un petit essai ce soir, pour info…

Avec node v8.9.4 (npm v5.6.0)

Sur le commit “[fix] make duniter-ui compliant with duniter 1.7.x” de duniter-ui.

yarn install

-> installation de duniter 1.6.25…

node run.js direct_webstart

{ Error: Cannot find module '/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/duniter/node_modules/scryptb/lib/binding/Release/node-v57-linux-x64/scryptb.node'
    at Function.Module._resolveFilename (module.js:538:15)
    at Function.Module._load (module.js:468:25)
    at Module.require (module.js:587:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/duniter/node_modules/scryptb/index.js:6:20)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)
    at Function.Module._load (module.js:491:3)
    at Module.require (module.js:587:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/duniter/app/modules/keypair/lib/scrypt.js:18:16)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)
    at Function.Module._load (module.js:491:3)
    at Module.require (module.js:587:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/duniter/app/modules/keypair/index.js:16:18)
    at Module._compile (module.js:643:30) code: 'MODULE_NOT_FOUND' }

Bon, je vais m’arrêter là pour duniter-ui, car j’ai plein de choses en préparation (duniterpy 0.50.0 et 0.60.0 et d’autres top secrètes :shushing_face: ) et j’ai peut-être enfin trouvé un développeur susceptible de nous aider sur Duniter pendant son temps libre, à partir d’octobre.

A suivre !


#11

Pour info : les choses avancent, je stablise Duniter 1.7 qui gagne clairement en vitesse pour la synchro, tout en restant modeste sur la consommation mémoire.

C’est un travail préalable à tout le reste, désolé si ça prens du temps mais je n’en ai pas beaucoup en ce moment.

Je vais y arriver, et je réserve quelques surprises :slight_smile:


#12

Petites questions :

Duniter-ui est-il fait avec ionic ?

Duniter-ui est-elle une “one page app” ?

Quitte à refaire l’interface d’administration de Duniter, serait-il judicieux de partir sur Vue.js, qui semble plus flexible et moins lourd que Angular4 ?

Si la réponse à la troisième question est oui, alors j’ai peut-être trouvé une personne motivée pour le faire.


#13

Duniter n’est pas fait avec Ionic.

Oui.

Pas spécialement. Il n’y a pas vraiment besoin de performance ou de légèreté. Même un gros framework comme Angular est chargé immédiatement dans la version Desktop car il n’y a pas de transmission réseau. A choisir je partirais sur Angular 6 pour plusieurs raisons. Et c’est déjà en projet.


#14

Que proposerais-tu comme première tâche à un nouveau contributeur qui connaît nodejs/typescript et voudrait contribuer au cœur pour découvrir le concept de blockchain ?

Je lui ai parlé de l’api GraphQL et il est partant. Mais c’est peut-être un peu gros pour un début…


#15

Étant donné que l’API GraphQL se fait de plus en plus désirer, je lui proposerai de commencer par développer celle-ci.

Ce n’est d’ailleurs pas si difficile, on peut commencer par cloner Duniter puis faire une copie du fichier app/modules/dump.ts et de s’en inspirer pour créer une nouvelle commande qui prendrait en paramètre un fichier (de requête GraphQL) et produirait en sortie le résultat.

Si un tel développeur réussissait à faire cela, alors il ne resterait plus qu’à brancher la partie réseau et étoffer l’API ainsi débutée :slight_smile:

Ainsi les développeurs de clients pourraient rapidement se brancher sur un nœud qui proposerait cette API, ce qui serait une 1ère chose appréciée, tandis que le développeur en écrivant cette API devrait nécessairement se pencher sur les données et la façon dont elles sont générées (blockchain).


#16

est-ce que tu aurais un extrait de dump à proposer en exemple?

En ce qui concerne l’API GraphQL, je peux faire des requêtes et mutation. mais je vois penses que c’est surtout le système de souscription qui peut être intéressant. et je penses que ça serait pas mal si quelqu’un se penche dessus je veux bien être mis en relation. pour l’instant j’utilise les même dto que bma, je vois certaines requêtes dans les tickets mais pas une api listant les fonctionnalités clairement.

Si quelqu’un si met contactez moi.