Journal Atlas toolkit - sur la route du Libre

Posté par (page perso) . Licence CC by-sa
13
13
avr.
2018

Hormis lorsque je fus employé par une SS2L, l'essentiel de mon activité professionnelle, que ce soit en tant que salarié ou, plus tard, en tant que freelance, consistait à concevoir et développer des logiciels propriétaires. Néanmoins, les bibliothèques logicielles plus ou moins généralistes sur lesquelles ces logiciels reposaient m'appartenaient et avaient toujours été développées en-dehors de tout cadre professionnel, et j'ai donc pu les publier, ainsi que certains logiciels de mon crû, sous licence libre, comme on peut le voir sur ce compte GitHub.

Concernant les bibliothèques, vu leur quantité, et le fait qu'elles évoluent en permanence, je n'ai jamais pris le temps d’écrire une documentation digne de ce nom, la tâche me semblant d'une ampleur démesurée. De ce fait, bien que diffusées sous licence libre, probablement personne d'autre que moi, à ma connaissance, ne les a jamais utilisées. Ce qui, on s'en doute, n'a pas accru ma motivation pour écrire la documentation idoine.

Quant aux logiciels, ils n'ont guère pas eu plus de succès. Pour certains, sans doute parce qu'ils n'étaient pas assez aboutis, pour d'autres, sans doute de par leur nature. Bref, malgré cette notable exception et la quantité de code que j'ai publié sous licence libre, on ne peut guère affirmer que ma contribution au Logiciel Libre soit significative.

Parmi les bibliothèques que j'ai développées, il y en a une qui permet de manipuler des interfaces web, mon objectif étant de disposer d'une alternative aux frameworks JavaScript habituellement utilisés dans ce but, mais dont aucun ne me convenait. Je parle bien d'une alternative à l'ensemble de ces frameworks, et non pas d'un framework JavaScript de plus (pas de syndrome NIH ici).

Après réflexion, il me sembla que cette bibliothèque est peut-être suffisamment (vite, sortez vos cartons de business loto) disruptif pour intéresser les développeurs en général, et ceux du Logiciel Libre en particulier. Mais, pour que celle-ci connaisse une destinée plus enviable que ses consœurs, j'ai décidé de la mettre en valeur, notamment par la création d'un site web dédié.

À minima, j'espère que cela me facilitera, en tant que vitrine technologique, la prospection commerciale, activité ô combien ingrate à laquelle je dois me livrer en tant que freelance. Mais, comme tout projet libre, pour pouvoir être réellement contributif, il doit fédérer une communauté. Et si cette communauté est suffisamment importante, peut-être pourrais-je même tirer quelques revenus (crowdfunding, campagne de dons…) du développement de cette bibliothèque, et ainsi détourner une partie de mon activité professionnelle du propriétaire vers le Libre…

Ce temple francophone du Logiciel Libre qu'est ce site me parait tout indiqué pour recueillir des avis éclairés, autant sur le fond que sur la forme, de ce projet. C'est pour cela que, avant le grand opening, je vous propose, en avant-première, de découvrir ce projet à l'adresse http://atlastk.org/.

  • # Ce temple francophone du Logiciel Libre ..

    Posté par . Évalué à 2 (+4/-3).

    What is the Atlas toolkit?

    How does it look like?

    How does it work?

    To understand

    Tout le monde a un cerveau. Mais peu de gens le savent.

    • [^] # Re: Ce temple francophone du Logiciel Libre ..

      Posté par (page perso) . Évalué à 3 (+1/-0).

      S'il veut présenter son outil a un maximum de personnes de par le monde, il n'a pas trop le choix.

      Python 3 - Apprendre à programmer en Python avec PyZo et Jupyter Notebook → https://www.dunod.com/sciences-techniques/python-3

      • [^] # Re: Ce temple francophone du Logiciel Libre ..

        Posté par . Évalué à 0 (+0/-1).

        ce site me parait tout indiqué pour recueillir des avis éclairés, autant sur le fond que sur la forme, de ce projet.

        plus pour le journal
        moins pour le temple francophone

        no comment …

        Tout le monde a un cerveau. Mais peu de gens le savent.

  • # Y'a pas de code

    Posté par . Évalué à 2 (+0/-0).

    Salut,

    Tu as toute mon oreille, mais pour commencer, il n'y a pas de code sur la doc (allé jusqu'à la section 4). Un exemple ? Comment ça s'articule ? Regarder un long main.js n'aide pas, et voir des fichiers .xls n'ai pas encourageant.

    Ces infos importantes que je cherchais apparaissent tard (section 2): c'est pour écrire des SPA, il y a un binaire C++, on doit qd même avoir node.js (aïe, mais voyons), l'interface est en fait Électron (…mmh. Autant dire qu'on peut envoyer sur Électron facilement), il y a un client et un serveur.

    Je n'ai pas compris si on édite les fichiers xls. Perso, e n'ai jamais approché xlst, je t'invite à expliquer un peu plus dans ta doc.

    Pas clair pour moi: est-ce que le site a été écrit avec ? Y a-t-il une sorte de routeur (pour avoir de belles urls) ? Dans la démo le filtre est "statique", on doit appuyer sur entrée, est-il possible d'en avoir un dynamique ? (type select2, ajax-based)

    Dans la démo j'ai cliqué sur Create, j'aurais bien eu un bouton retour (pas d'intégration avec le navigateur ?), j'ai mis du tps à voir Cancel, tout en bas. Dans un TodoMVC généralement on peut marquer une tâche comme faite, pas vu ici.

    Je vais regarder et viens donner des nouvelles dans un moment :)

    ps: ah mais oui, le "hide descriptions" est dynamique lui ! J'aurais bien vu un filtre dynamique, de suite ça claque plus.

    • [^] # Si, si !

      Posté par (page perso) . Évalué à 2 (+1/-0).

      Salut,

      Salut !

      Tu as toute mon oreille, mais pour commencer, il n'y a pas de code sur la doc (allé jusqu'à la section 4). Un exemple ? Comment ça s'articule ? Regarder un long main.js n'aide pas, et voir des fichiers .xls n'ai pas encourageant.

      Le code des exemples se trouvent dans les repository dont on trouve les liens sur la homepage. Cependant, ayant fait peu de Java/JavaScript/PHP, et c'était il y a longtemps, il y a probablement moyen de rendre le code des exemples plus compréhensible. C'est typiquement le genre de retour que j'aimerais avoir de la part de personnes développant dans l'un de ces langages.

      J'ai ajouté unes petite section sur la structure d'une application basée sur le toolkit Atlas. Et c'est des fichiers .xsl, pas .xls :-), mais j'y reviendrais plus tard.

      Ces infos importantes que je cherchais apparaissent tard (section 2): c'est pour écrire des SPA, il y a un binaire C++, on doit qd même avoir node.js (aïe, mais voyons), l'interface est en fait Électron (…mmh. Autant dire qu'on peut envoyer sur Électron facilement), il y a un client et un serveur.

      Je ne voulais pas être trop technique dés la première page ; ceci dit, j'y parle déjà de SPA. Quant au fait qu'il y ai un binaire C++ (en fait, il y en a même plusieurs), c'est juste pour justifier certains choix en terme de packaging, dont l'utilisation de Node.js. En outre, le serveur web est actuellement basé sur Node.js.

      Le problème, c'est que je ne connais actuellement pas suffisamment les outils entourant PHP ou Java pour, d'une part, packager le toolkit, surtout les binaires, juste en utilisant les outils propres à chaque langage, et, d'autre part, mettre en place un serveur web sans procédure d'installation compliquée. C'est pour cela que j'utilise Node.js pour le serveur web, et le package manager de Node.js, à savoir NPM, pour packager le toolkit. Mais, à terme, Node.js ne sera plus nécessaire pour les bindings Java et PHP (et les autres langages qui seront pris en charge à l'avenir). Évidemment, pour le binding Node.js, Node.js sera toujours requis, puisque c'est la finalité de ce binding

      Avant d'utiliser Electron, je m'appuyais sur CEF (et même avant cela, pour ce qui n'était encore que les prémisses de ce qui allait devenir le toolkit Atlas, XULRunner), mais Electron est beaucoup plus facile à déployer que CEF, et plus populaire. J'aurais aussi pu utiliser les composants dédiés à l'affichage de contenus web de bibliothèques comme GTK(+)/Qt/wxWidget/…, mais le déploiement aurait aussi posé problème. À terme, Electron sera mis en œuvre de façon à ce que le développeur ne remarquera même pas que c'est ça qui est utilisé. Déjà maintenant, le développeur n'interagit pas directement avec Electron

      Quant à l'architecture client/serveur, c'est ce qu'il y a de plus simple pour faire communiquer Electron ou le serveur web, qui est basé sur Node.js, avec un logiciel Java ou PHP. Bien qu'il soit intéressant de pouvoir garder cette configuration, la communication se fera peut-être, à terme, également via d'autres canaux…

      Je n'ai pas compris si on édite les fichiers xls. Perso, e n'ai jamais approché xlst, je t'invite à expliquer un peu plus dans ta doc.

      Comme dit, c'est XSL(T), pas XLS(T); rien à voir donc avec le format Microsoft :-).

      En fait, j'aurais pu utiliser un autre moteur de template, comme ceux utilisés dans certains framework JavaScript, mais l'avantage avec XSL, c'est que c'est implémenté dans la plupart (totalité?) des navigateurs web graphique (et dans Electron), donc la transformation est réalisée coté client, en n'ayant rien à installer, tout en pouvant être réalisée coté serveur si nécessaire.

      Le principe est de créer un arbre (ce qui est facilité avec l'objet Tree du toolkit Atlas) contenant les données à afficher, et de générer le HTML à afficher dans le navigateur/Electron en appliquant une feuille de style XSL sur l'arbre en question. La structure de l'arbre est totalement libre ; on organise les données absolument comme l'on veut. Si les données sont issues d'une base de données, la structure de l'arbre reflète généralement celle de la base de données. Maintenant, bien que XSL ne soit pas très populaire, la documentation sur le sujet ne manque pas, écrites par des personnes bien plus compétentes sur le sujet que moi. Cependant, s'il y a des points précis qui ne sont pas clairs dans les fichiers XSL fournis avec les exemples, je les expliciterais bien volontiers.

      Pas clair pour moi: est-ce que le site a été écrit avec ? Y a-t-il une sorte de routeur (pour avoir de belles urls) ? Dans la démo le filtre est "statique", on doit appuyer sur entrée, est-il possible d'en avoir un dynamique ? (type select2, ajax-based)

      Le site est basé sur un CMS qui se contente de servir des pages écrites en markdown.

      Il n'y a pas de routeur. D'après ce que j'en ai compris, cette notion de routeur est surtout associée à l'architecture MVC, mais comme je n'ai pas approfondi le sujet, ma compréhension de la chose est très parcellaire. En tout cas, je n'en ai pas vu l'utilité, donc cela n'est pas implémenté, tout en n'excluant pas la possibilité d'une implémentation future, le jour ou j'en aurais compris tout les tenants et aboutissants.

      Honnêtement, j'ai fait au plus simple, mais avoir un filtre dynamique devrait déjà être possible. Cependant, je réfléchis à une solution ou le filtre ne se déclencherait pas en cours de saisie, mais un court délai après que l'utilisateur ai saisi le dernier caractère.

      Dans la démo j'ai cliqué sur Create, j'aurais bien eu un bouton retour (pas d'intégration avec le navigateur ?), j'ai mis du tps à voir Cancel, tout en bas. Dans un TodoMVC généralement on peut marquer une tâche comme faite, pas vu ici.

      Je n'ai pas trop compris l'histoire de l'intégration au navigateur. Je suis d'accord que la démo n'est pas très ergonomique, mais mes compétences en HTML et CSS ne me permettent de faire guère mieux (contributeu(rs/ses) bienvenu(e)s…). Mais attention, la démo en ligne n'est pas celle du TodoMVC. À l'époque où j'ai commençais à écrire une démo, je ne connaissais pas le projet TodoMVC. J'en ai donc écris une en m'inspirant vaguement d'un truc que j'ai trouvé sur le web. Je n'ai écrit les versions de l'application TodoMVC que plus tard, pour que les gens puissent avoir un élément de comparaison (ce qui est le but du projet TodoMVC), mais je ne voyais pas l'intérêt de la mettre en ligne, vu qu'elle fait exactement ce que font les version présentes sur le site du projet TodoMVC et dont on peut facilement voir une démonstration en ligne…

      Je vais regarder et viens donner des nouvelles dans un moment :)

      Merci déjà de ce premier retour, et je suis bien sûr preneur de tout autre à venir…

      ps: ah mais oui, le "hide descriptions" est dynamique lui ! J'aurais bien vu un filtre dynamique, de suite ça claque plus.

      J'ai spécialement mis cette case à cocher pour que justement on comprenne que la page n'est pas régénérée à chaque action. C'était plus simple à mettre en œuvre que le filtre dynamique, mais je vais réfléchir à l'implémentation de ce dernier.

      Freelance en ingénierie informatique.

  • # Modification site

    Posté par (page perso) . Évalué à 1 (+0/-0).

    Le site à été un peu modifié, surtout la homepage, pour fournir un meilleur aperçu, dés la première page, de ce en quoi consiste le projet. Il peut être nécessaire de recharger la page (CTRL-F5) pour voir les modifications…

    Freelance en ingénierie informatique.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.