Comment contribuer à Duniter-UI ?

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

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.

1 Like

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.

2 Likes

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>

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.

2 Likes

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:

2 Likes

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 !

3 Likes

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.

1 Like

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.

3 Likes

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 !

5 Likes

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:

11 Likes

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.

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.

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…

É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).

3 Likes

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.

Tiens je regardais justement un article de son concepteur où ce dernier explique les grandes lignes de la migration Vue 2 vers Vue 3, notamment celles destinées à favoriser la contribution au cœur.

C’est très inspirant pour Duniter qui se trouve dans une situation similaire, toutes proportions gardées. On voit notamment que Vue est désormais écrit en TypeScript. :wink:

1 Like

salut, je comptais contribuer quelques trucs à duniter-ui.
par exemple le nombre de DU de la masse monétaire qui sort de son carré.
angular ça m’arrange :slight_smile:
je forke le dépot duniter-ui ou bien tu es parti sur un autre dépot ?

2 Likes

Tu peux forker le dépôt https://git.duniter.org/nodes/typescript/modules/duniter-ui, j’ai pushé dessus avant-hier.

Si tu as besoin d’aide sur la mise en route dis-moi :slight_smile:

1 Like

cool,
bon donc j’ai bien la partie duniter-ui qui fonctionne si on met une version de node pas trop récente avec nvm,
cependant il faut faire marcher aussi duniter.
et là c’est curieux, peu importe la version de node, 8, 10 ou 12, lors de l’install des dépendances de duniter (en typescript) j’ai toujours cette erreur:

error /var/www/html/duniter/node_modules/dubp-wot-rs: Command failed.
Exit code: 1
Command: neon build --release
Arguments:
Directory: /var/www/html/duniter/node_modules/dubp-wot-rs
Output:
neon ERR! spawn cargo ENOENT

Error: spawn cargo ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:264:19)