Avancement

Puisqu’il faut bien faire faire quelque chose à ces objets et ces liens… Depuis hier soir, un nouveau module à été ajouté, il permettra d’émuler des systèmes de fichiers, ou arborescences de fichiers. Cela apparaît comme une application. Voici son icône :

nebfs

Voici le module tel que déclaré :

20150731 sylabe_-_developpement_bachue_-_2015-07-31_18.11.15

L’application apparaît bien dans le menu des applications :

20150731 sylabe_-_developpement_bachue_-_2015-07-31_18.12.03

Et lorsque l’on va voir cette application, on a les différents systèmes de fichiers, dits point d’entrés :

20150731 sylabe_-_developpement_bachue_-_2015-07-31_18.12.34

C’est tout pour l’instant.

Un objet réservé a été défini dans ceux de nebule : nebule/arborescence

De cet objet réservé sont liés par des liens de type f des objets qui servent de points d’entrés. Ces objets de points d’entrés contiennent de l’aléa, ils ne contiennent pas de valeurs ou de paramètres particuliers. Ils ont par contre des noms qui seront les noms des points d’entrés tels qu’on peut les voir dans la vue des arborescences (image ci-dessus). Ainsi, plusieurs points d’entrés de plusieurs entités peuvent avoir le même nom sans mélanger les contenus. Puisqu’il ne faut pas oublier que si les objets et liens ne sont pas protégés, c’est qu’ils sont publics donc visibles de tout le monde.

L’interface ne montre pas les points d’entrés des autres entités mais ça viendra.

Le travail en cours porte maintenant sur les arborescences.
On peut utiliser des liens de type f pour relier les différents dossiers d’une même arborescence, dans le contexte du point d’entré. Mais cela pose un problème. Si on crée un deuxième dossier ailleurs dans l’arborescence mais avec le même nom, alors tous les fichiers en dessous existeront dans ce deuxième dossier. Comme les objets sont liés à l’objet du dossier dupliqué, ils apparaissent quelque soit l’emplacement du dossier dans l’arborescence. Ça pose problème puisque l’on peut avoir un même sous-dossier Janvier dans des dossiers 2010, 2011, 2012, 2013, 2014, 2015, etc…

Pour contourner ce problème, chaque objet qui compose les noms des dossiers dans l’arborescence peuvent contenir le chemin complet dans l’arborescence. Chaque objet de nom dans l’arborescence est relié aux autres au dessus et en dessous par des liens de type f. Ainsi on évite les collisions de dossiers avec le même nom. Mais là encore cela risque de poser problème. Si un des objets contenant le nom d’un des sous-dossiers d’une arborescence ne correspond pas aux noms des dossiers parents… c’est la catastrophe… Il faut dans ce cas prévoir un mécanisme de correction et de traduction des cas tordus.

La solution retenue consiste, comme pour les points d’entrés des arborescences, à créer un objet intermédiaire ne contenant que de l’aléa et avec un nom. Ce nom est utilisé pour l’affichage et peut être réutilisé autant de fois que nécessaire. Les objets des fichiers dans un dossier sont liés à cet objet intermédiaire.
A mettre en pratique… la suite au prochain épisode…

Gestion des options de configuration par des objets

L’interface sylabe, comme tout programme, permet une certaine personnalisation et quelques restrictions d’usage par le biais d’options. Ces options sont pour l’instant stockés dans un fichier unique dédié aux options de nebule et potentiellement tout programme qui en a besoin, comme sylabe.

Ce fichier est a créer à côté du bootstrap. Et il restera en place pour nebule afin de forcer certaines options sans possibilité de les changer. Évidement, ce forçage des options par un fichier ne vaut que si le fichier n’est pas modifiable, au moins de façon trivial. Par contre, il n’y a pas de raison raisonnable de conserver un forçage des options de sylabe.

Il est préférable de s’orienter vers des options manipulées comme des objets. C’est à dire que chaque option de configuration sera un objet dédié avec un lien vers l’objet contenant la valeur de l’option. Cela ralenti un peu le chargement d’une option puisque ses liens doivent être vérifiés, ce qui n’est pas un mal. Mais cela va aussi permettre de générer les options sur une machine, c’est à dire sous une entité A, et de les attribuer à une autre machine, c’est à dire une entité B. Bien sûr, cette attribution et surtout cette reconnaissance d’une option se fera par rapport à la validité sociale des liens. Et dans ce genre de cas, on ne reconnaît les liens que de peu d’entités.

Ces options seront par défaut protégées. Même si on se doute de certaines (true/false), d’autres ont tout intérêt à être cachées. Elle pourront éventuellement être offusquées si on ne souhaite pas montrer l’usage de certains modules de sylabe. Et comme il peut être facile de déduire la valeur de certaines options dans un temps raisonnable, notamment par le lien de chiffrement, chaque objet contenant une valeur d’une option devra aussi contenir une partie non utilisée avec de l’aléa. Ainsi, l’objet chiffré sera lié à un objet en clair, supprimé, mais ne permettant pas de déduire la valeur de l’option.
Il est aussi possible de le faire par des liens offusqués, à voir…

Avancement

Dans le module de gestion des objets, la vue de description de l’objet a été complétée. Tous les attributs de l’objet sont affichés en commençant par les attributs correspondants à des objets à usage réservé, c’est à dire tout ce qui est reconnu par nebule pour caractériser un objet comme sa date de création. Les images sont affichées de façon réduite et les textes sont tronqués.

Avancement

Il y a quelques jours, le puppetmaster a été réveillé pour générer de nouveaux liens. De nouveaux objets de nebule sont maintenant reconnus comme des objets à usage réservé :

  • nebule/objet/entite/maitre/securite
  • nebule/objet/entite/maitre/code
  • nebule/objet/entite/maitre/annuaire
  • nebule/objet/entite/maitre/temps

Et il permettent de désigner via un lien de type f les différentes entités qui ont les rôles correspondants.

Le code de la librairie nebule en php et le bootstrap s’en servent désormais pour retrouver les entités avec ces rôles.

CF : nebule – Liens marqués entre le puppetmaster et les autres entités

Avancement

Peu de choses nouvelles concernant nebule, mais des améliorations dans l’interface sylabe. Maintenant, le menu de gauche est définit par un point d’ancrage (hook) sur lequel les modules peuvent ajouter des entrées personnalisées. Chaque module est ainsi maître des entrées qu’il génère. C’est plus facile à gérer et surtout plus facile pour gérer les options quand c’est le module concerné qui les manipule plutôt qu’un autre.

Le système de point d’ancrage a été poussé plus loin puisqu’il est maintenant aussi possible de créer des menus d’actions dans le contenu de la page en appelant simplement… l’affichage d’un point d’ancrage.

Cela donne par exemple :

20150722 sylabe_-_developpement_bachue_-_2015-07-23_00.31.21

La visualisation des objets est en train de basculer dans l’instance Display. C’est utilisé par le module des objets, mais ce le sera aussi par d’autres modules comme la messagerie. C’est l’occasion d’y ajouter une gestion de la vérification du contenu des objets affichés par rapport à leurs empreintes cryptographiques.

Un affichage type d’un objet trop grand mais que l’on autorise à afficher :

20150722 sylabe_-_developpement_bachue_-_2015-07-23_00.29.08

Et un objet qui n’est pas trop grand s’affiche avec un message pour dire que son empreinte est vérifiée :

20150722 sylabe_-_developpement_bachue_-_2015-07-23_00.41.51

Le contrôle de l’affichage ou non se fait par une option de sylabe. Par défaut, un objet qui ne peut être vérifié n’est pas affiché.

Ne reste plus qu’à traduire correctement les messages…

Avancement

Une refonte partielle de l’interface a été faite. Suite aux développements récents de l’interface et de ces modules, il est apparu qu’il fallait moins mettre en avant les objets et liens et plus les fonctionnalités des modules.

Maintenant, une bonne partie des modules sont externes. Seuls sont restés internes, et donc obligatoires, les modules entités et aide. Les autres modules sont détectés via les liens et chargés si les liens sont valides et les signataires identifiés comme autorités locales. Il faut encore améliorer la détection de collision entre modules prétendants au même nom.

Nous ne sommes plus très loin d’une remise en ligne régulière du code sur le serveur de test…

Enfin, en lien avec la refonte de l’interface, l’iconographie a été revue :

add addent addlnk addobj addtxt
idownload ihlp imenu imetrolog imodify
key lc ld le lf
lk ll lll lo ls
lstent lstobj lu lx mchr
ment mmsg msglist msgsent oent
sylabe synent synlnk synobj

Voici la nouvelle interface :

20150718 sylabe_-_15d194c0ac5da323b50e868ab62c17c0a5470283c92f3d8a8631743b5cd9f42f_-_2db5ebfbdc6db01b5972837182275c2142d68de20fe78670a87875108e616cf7_-_2015-07-18_16.52.53
Version moyenne et haute définition.

20150718 sylabe_-_15d194c0ac5da323b50e868ab62c17c0a5470283c92f3d8a8631743b5cd9f42f_-_2db5ebfbdc6db01b5972837182275c2142d68de20fe78670a87875108e616cf7_-_2015-07-18_16.53.45
Version petite définition.

20150718 sylabe_-_15d194c0ac5da323b50e868ab62c17c0a5470283c92f3d8a8631743b5cd9f42f_-_2db5ebfbdc6db01b5972837182275c2142d68de20fe78670a87875108e616cf7_-_2015-07-18_16.54.48
Version très petite définition.

Et le menu des applications, en fait des modules :

20150718 sylabe_-_15d194c0ac5da323b50e868ab62c17c0a5470283c92f3d8a8631743b5cd9f42f_-_2db5ebfbdc6db01b5972837182275c2142d68de20fe78670a87875108e616cf7_-_2015-07-18_17.17.35
Le menu des applications.

Emulation de messagerie

Le choix avait été fait de ne pas gérer la messagerie comme une application vraiment à part, mais de considérer que tout lien f est potentiellement un message. Cette façon de voir est plus fondamentale, plus propre et plus proche de la gestion de l’information. Malheureusement, elle pose quelques problèmes pour certaines fonctionnalités classiques de la messagerie telle que nous l’utilisons tous aujourd’hui. Les problèmes de fonctionnalités ne sont pas graves mais peuvent être perturbants.

Pour commencer, comment marquer un message comme lu puisque cela revient à faire un lien d’un lien, ce que ne permet pas nebule.
Nous sommes ici dans un fonctionnement attendu de la messagerie dans laquelle chaque message est important et doit donc être lu. Ce comportement est différent du message de réseau social qui n’a pas forcément d’importance et n’est pas destiné à être lu impérativement. On distingue le message destiné à la masse des gens, même si elle peut être très limitée, du message destiné spécifiquement à un individu. La notion d’importance dans l’attente de lecture du message dépend surtout du nombre de destinataires.
Il ne faut pas non plus penser que le spammer s’attend à ce que tout le monde lise ses messages. C’est du rêve mais ce genre de message est très peu lu et est donc envoyé en masse pour compenser ce manque d’importance ou d’intérêt.

Ensuite, lorsque l’on marque comme supprimé un message, c’est que l’on supprime explicitement le lien f qui fait que c’est un message. Si on souhaite annuler cette suppression, la théorie dans nebule veut que l’on recrée un lien mais avec une date plus récente. Or si la date est plus récente, cela altère l’information de la date du message. Ensuite, c’est l’entité qui à reçu le message qui génère le nouveau lien à une date plus récente, et non l’entité d’origine. On perd donc la provenance du message. Ce n’est pas acceptable dans ces conditions de permettre la restauration d’un message.

Même si il est probable que l’on reviendra plus tard sur une solution plus universelle et fondamentale, on va partir pour sylabe sur un module de messagerie s’appuyant sur un objet dédié à la messagerie. Par exemple l’objet contenant ‘sylabe/messagerie’.