Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Actualités


Index du Forum » Actualités » Symbolibre 0.2 : sources, nouvelles applications, et début de documentation
Lephenixnoir Hors ligne Administrateur Points: 19186 Défis: 142 Message

Symbolibre 0.2 : sources, nouvelles applications, et début de documentation

Posté le 06/12/2020 23:26

Je suis super excité d'annoncer aujourd'hui une update importante de Symbolibre, avec les sources sous licence libre GPLv3 (github.com/symbolibre), plein de nouveautés sur les applications, et un nouveau site web avec de la documentation (symbolibre.org). Ça reste une release alpha, mais les progrès sont considérables.


Pour replacer rapidement le contexte : le but de Symbolibre est de concevoir une calculatrice graphique à assembler et installer à la main, tournant entièrement sur des logiciels libres et avec un système logiciel moderne. C'est un projet Do-It-Yourself qui veut vous inviter à découvrir quelques concepts d'électronique, de systèmes d'exploitation, ou d'informatique en général à travers un objet courant du lycée.

On a déjà eu l'occasion de parler du projet (sur TI-Planet comme sur Planète Casio) quand on l'a commencé il y a deux ans comme projet de Master. Après la fin de l'année on n'en a plus discuté publiquement, parce qu'on n'a avancé que doucement (avec principalement deux contributeurs, Nicolas — qui n'a pas encore de compte ici mais ça finira bien par arriver — et moi). On a fini les demandes pour pouvoir publier les sources en Septembre cette année, et voici donc notre première release officielle du logiciel.

Pas mal de choses ont changé depuis, et on a plusieurs articles à publier sur notre site pour raconter le processus de conception, de la structure des applications en applets QML au système mathématique en passant par l'interface utilisateur. Je publierai sans doute d'autre choses ici... mais je ne veux pas inonder, donc avec modération.

Vous pouvez déjà lire l'article de publication sur notre site web. (Il y a même un flux Atom - lien direct.)


Interface utilisateur unifiée

Cette release comporte trois applications qu'on avait déjà pu présenter : l'interprète de calculs, un traceur de fonctions, et un petit IDE pour programmer (pour l'instant) en Python.

Le gros changement dans cette release, en plus de l'ajout de pas mal de fonctionnalités de base dans ces applications, c'est que les outils internes et les interfaces graphiques ont été unifiées (les applications étaient développées quasi-indépendamment pendant le projet de Master).

Sur l'interface utilisateur, on a beaucoup remanié les applications pour intégrer une « barre de fonctions » en bas, dont on peut activer les fonctions avec 5 touches F1...F5. C'est clairement inspiré de Casio.


À l'origine on espérait garder un clavier le plus direct possible avec des labels les plus clairs possibles, mais les actions disponibles dans chaque application étaient trop variées et aucun schéma de nommage des touches ne permettait de les décrire de façon convaincante — on terminait avec des menus un peu partout, et donc des pressions de touches en plus.

Les touches de fonctions F1...F5 sont essentiellement des touches « à label variable », ce qui donne de la liberté pour assigner les fonctions de chaque application. Mais ce n'est pas sans défaut, parce qu'on a vite fait de mélanger plein de choses dans ce concept très large, et il faut explicitement ajouter de la structure pour que ça reste intuitif.

On a pas mal d'idées pour rendre cette interface progressivement plus intuitive, et on compte bien implémenter tout ça dans les prochaines versions.


Systèmes internes : gestion des applications, mathématiques

On a aussi tranché plusieurs questions architecturales délicates. Une d'entre elles concerne le format des applications, avec plusieurs options entre des exécutables indépendants et un seul programme monolithique. Nos applications sont écrites avec le langage QML du framework Qt et leur chargement n'est pas immédiat (ce qui avantage le monolithique en performance), mais on veut aussi supporter des applications externes (ce qui nécessite de pouvoir travailler avec des exécutables indépendants).

On a décidé d'implémenter nos applications comme des applets QML ; essentiellement elles sont installées séparément mais chargées dans le même processus. Des applications externes écrites comme des applets QML peuvent profiter de la bibliothèque Symbolibre, mais d'autres exécutables Qt, SDL ou autres seront aussi supportés (ce qui sera intégré dans l'image OS de base n'est pas encore décidé, mais c'est le plan).

Une autre question délicate concerne le système mathématique. On avait assez vite décidé d'utiliser Giac, mais on n'était pas certains de vouloir l'exposer de façon brute, et on a envisagé d'avoir un langage intermédiaire. On a fini par trancher pour exposer Giac directement, parce que les deux options nécessitent d'utiliser Giac comme une boîte blanche, et l'étape intermédiaire avait trop de complexité ajoutée. Je pense qu'on aura l'occasion d'en reparler !


Traduction des applications

On a intégré le système de traduction au projet, et tout est traduit en français et en anglais.


Voilà de ce côté-là c'est tout.


Catalogues de saisie mathématique et Python

On a commencé à intégrer des catalogues de fonctions pour faciliter la saisie. Je ne vous présente pas le concept (y'a rien de nouveau ici), mais on s'attache à le faire soigneusement parce qu'une fonction nommée de façon peu intuitive et sans description n'est jamais facile à utiliser.


La classification des fonctions est arborescente même si idéalement on voudrait éviter d'imbriquer les niveaux là où ce n'est pas intuitif. Pour chaque entrée, on a une description traduite et quelques exemples ; l'équivalent de ce que donne l'add-in HELP sur Casio (soit plus que le catalogue intégré, qui ne donne que les noms, quasiment tous obscurs).

Il y a actuellement deux catalogues de ce type : un pour la saisie des expressions mathématiques, et un pour les fichiers Python dans l'éditeur de code.



Tester sur PC

Vous pouvez tester les applications sur un PC en les compilant depuis le dépôt, il y a des instructions dans le README. On a récemment migré vers CMake au lieu de l'ancien QMake, ce qui a beaucoup simplifié le procédé. Il y a un clavier intégré (en plus des touches de votre clavier physique, qui marchent tout aussi bien).


Pour que ce soit plus facile à tester pour vous, on souhaite compiler une version web du logiciel à la façon de l'émulateur Numworks. C'est loin d'être évident, notamment avec Giac et Qt Quick, mais je promets de tester !


Concernant le montage matériel de la calculatrice

Pour tout ce qui est matériel, on est restés avec le prototype qu'on a construit en Master (ci-dessous). Nicolas et moi n'étions pas les soudeurs de l'équipe, donc je reprends progressivement les informations (et le coup de main au fer à souder) pour concevoir un deuxième prototype.


Le défaut majeur du premier prototype était dans le montage, avec pas mal de fils encore volants dans le boîtier, et des contacts pas assez francs au niveau de l'écran. L'objectif pour le second est de tout router sur le PCB en connectant les composants avec des pin headers, ce qui donne un seul « format » à souder (du THT normalement accessible au plus grand nombre), peut-être évitable avec des pin headers sans soudure, et un minimum de risque de mauvais contacts.

On a aussi commandé des écrans plus grands, puisqu'on nous avait fait remarquer (à juste titre) que l'écran original était vraiment petit. L'écran n'effleurera probablement jamais le boîtier d'une façon super design à cause de subtilités de montage, mais ça devrait être un peu plus stylé !


Nouveau site web et documentation

Enfin, on a refait notre site web symbolibre.org ; le nouveau système ressemble au Wordpress qui était avant, à ceci près que si vous étiez abonné·e au flux RSS vous avez certainement re-reçu vos notifications avec le changement.

Quelque chose de vraiment nouveau est la documentation qu'on a commencé à pousser ; rien de transcendant encore, mais des bonnes bases pour le futur du projet.

Il y a notamment des notes sur la façon dont on génère des images OS Raspbian pour le Pi Zero, ce qui permettra à terme de créer des images OS personnalisées avec les paquets de votre choix. (Comme le Pi Zero n'a pas de réseau, le plus direct est de générer les images sur le PC puis de les installer ensuite.)


Conclusion et liens

Même si tout s'est produit un peu dans l'arrière-boutique, cette publication contient de l'ordre de 400 commits sur 18 mois, avec une bonne dose d'expérimentations sur le matériel et beaucoup de questions de conception, qu'on est très enthousiastes à l'idée de vous partager.

• Vous pouvez lire et tester nos applications sur le dépôt Github github.com/symbolibre.
• Vous pouvez lire nos articles et la documentation sur notre site web symbolibre.org.
• Vous pouvez être notifiés des prochains articles en vous abonnant au flux Atom (celui-ci est en français) avec votre client préféré.

Ce projet a été très bien accueilli par la communauté précédemment, et j'espère vous rendre une partie de cet intérêt avec cette release. Merci à tous ! o/


Hackcell Hors ligne Membre Points: 1371 Défis: 11 Message

Citer : Posté le 07/12/2020 09:44 | #


ho, contente de voir que le projet continue d'avancer petit à petit~
Lephenixnoir Hors ligne Administrateur Points: 19186 Défis: 142 Message

Citer : Posté le 07/12/2020 13:28 | #


Merci. Pour éviter le risque « à la LibreCalc » que ce projet se termine un jour sans laisser de traces solides, je pense que notre priorité doit être de fournir et documenter la composition matérielle, le procédé de montage, d'installation et de mise en place, pour avoir quelque chose de reproductible rapidement.

Bien sûr on n'a pas l'intention de s'arrêter tout de suite, mais même pour diffuser le projet c'est mieux si ça marche rapidement.
Ne0tux Hors ligne Membre d'honneur Points: 3454 Défis: 265 Message

Citer : Posté le 07/12/2020 14:40 | #


C'est ajouté à mon agrégateur RSS favoris !

Merci pour ces nouvelles, c'est très encourageant et vraiment un plaisir de les lire.

Est-ce que le fait de pouvoir tester sur PC a un rapport avec l’icône symbolibre qui s'est invitée au concours de rentrée 2020 ? S'il est déjà possible d'émuler du Python façon symbolibre en compilant le projet sur PC, je comprends bien l'idée d'une version web, sans effort pour l'utilisateur.

Concernant Giac, quel était l'enjeu de ne pas l'exposer ? Si vous avez cherché à le faire, c'est qu'il y avait une raison, peut être simple, mais elle m'échappe ; je croyais que cette partie était déjà compilée.
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Lephenixnoir Hors ligne Administrateur Points: 19186 Défis: 142 Message

Citer : Posté le 07/12/2020 14:54 | #


Ah c'est super alors, c'est vraiment sympa d'écrire ces articles mais encore mieux quand ça vous plaît.

Est-ce que le fait de pouvoir tester sur PC a un rapport avec l’icône symbolibre qui s'est invitée au concours de rentrée 2020 ? S'il est déjà possible d'émuler du Python façon symbolibre en compilant le projet sur PC, je comprends bien l'idée d'une version web, sans effort pour l'utilisateur.

En fait non ! Je n'ai rien à voir avec la guilde Symbolibre du concours de rentrée, de ce que j'ai compris quelqu'un s'en est déclaré à l'improviste, et Critor l'a gracieusement ajouté. C'est sûr que ça pourrait être sympa d'avoir l'émulateur Symbolibre dans les plateformes du prochain concours de rentrée... mais avoir Python en web (surtout avec les nombreux modules standard qu'on se targue de supporter) serait sans doute encore plus difficile que Giac et Qt. À nuancer donc, peut-être qu'on pourrait fournir MicroPython.

Concernant Giac, quel était l'enjeu de ne pas l'exposer ? Si vous avez cherché à le faire, c'est qu'il y avait une raison, peut être simple, mais elle m'échappe ; je croyais que cette partie était déjà compilée.

En fait... il y avait plusieurs questions. D'abord une histoire de variables symboliques : dans Giac quand tu tapes x+1 ça donne l'expression symbolique x+1 si la variable n'est pas définie (et la valeur de x à laquelle on ajoute 1 si la variable était définie, puisqu'en général on substitue avant d'afficher le résultat). Il est assez facile de confondre ces expressions avec des fonctions, et on voulait avoir au moins la possibilité de les désactiver (ie de refuser « x+1 » si la variable n'est pas déjà définie) dans un mode « simple » pour ne pas perdre des lycéens dans ces méandres de Giac.

Ensuite il y avait des questions d'extensions. On aimerait par exemple pour écrire dans un script Python une fonction float → float (du genre une fonction inverse_u() qui étant donné x calcule le premier indice n d'une certaine suite (u_n) tel que le terme u_n satisfait une propriété quantifiée par x), et ensuite la tracer dans le graphe ou calculer avec dans l'interpréteur de calculs. Par exemple écrire inverse_u(1.5)².

Et puis d'autres questions, par exemple sur comment on affiche les résultats, qui nous reviennent sous la forme d'objets abstraits Giac, sous leur forme naturelle (pretty-printing), que l'on implémente nous-même. Le fait aussi que pour faire l'affichage pretty-printé pendant l'édition, on veut parser en partie les formules, et on ne peut pas vraiment utiliser le parser Giac pour ça (il ne peut pas parser des formules incomplètes et n'a pas de hooks) donc ça nous oblige à recoder et maintenir quelque chose qui est déjà d'une certaine façon dans Giac.

Toutes ces questions sont un peu difficiles parce que Giac est un gros programme avec relativement peu de documentation, et donc pour faire les choses via Giac il faut passer pas mal de temps à comprendre son comportement (par exemple : quelles sont les formes normales renvoyées par la fonction d'évaluation ?). La question de mettre une interface (qui était surtout mon idée à l'origine) c'était pour voir si on pouvait traiter Giac un peu comme une boîte pour éviter cette complexité. Mais ça ne marchait pas vraiment, donc on a fini par trancher pour prendre le temps de comprendre Giac, soumettre des patchs s'il y a des choses qui nous manquent, et éviter le langage intermédiaire qui apporte son propre lot de problèmes pas faciles à gérer.

Ce n'est que la moitié que j'ai retenue de l'histoire et Nicolas pourrait apporter d'autres détails, mais ça te donne une idée des enjeux.
Hackcell Hors ligne Membre Points: 1371 Défis: 11 Message

Citer : Posté le 07/12/2020 14:59 | #


Lephenixnoir a écrit :

En fait non ! Je n'ai rien à voir avec la guilde Symbolibre du concours de rentrée, de ce que j'ai compris quelqu'un s'en est déclaré à l'improviste, et Critor l'a gracieusement ajouté.


C'etait moi~ ♥
Redeyes Hors ligne Membre Points: 573 Défis: 7 Message

Citer : Posté le 13/12/2020 16:08 | #


Le projet avance si bien!
J'avoue avoir un peu de mal à m'y retrouver parmi toutes ces news (les nombreux tests sut Ti-Planet, les infos du site officiel...), mais ça témoigne tellement de l'ampleur du projet! Bravo Lephenixnoir et toute l'équipe!!
~SHINE!! Like the Red Glow in your eyes...
Lephenixnoir Hors ligne Administrateur Points: 19186 Défis: 142 Message

Citer : Posté le 16/12/2020 18:29 | #


Merci ! Il n'y pas tellement de news que ça en fait, mais on y travaille. On vous en dira plus dans les prochaines semaines, ce qui devrait aider à garder le fil.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
Pour coloriser votre code, cliquez ici.
Sinon cliquez sur le bouton ci-dessous.
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 47 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd