Le repaire du Daimaô

It's like a mystic cave. But in the world wide web.

Daimao Framework

« Dans son essence, aucun problème n’est vraiment nouveau »

Un de mes credo de vie est la prise de conscience et l’acceptation de ses limites. Je suis un être humain, avec toutes les limites que cela implique. Je dois donc prendre pleinement conscience de toutes ces limites. Car en les connaissant je pourrais identifier des moyens de les pallier.

La vie va me mettre face à beaucoup de problèmes. Mon temps est limité. Je réfléchis lentement. Ma mémoire n’est pas infaillible. Je suis seul et j’ai beaucoup de problèmes à régler. Alors j’ai tendance à me précipiter pour résoudre les problèmes le plus vite possible pour passer au problème suivant. Hélas en conséquence je perds du temps sur le long terme parce que les solutions utilisées ne sont pas idéales.

Je vis longtemps, les journées s’enchaînent sans que je ne puis les compter. Pourtant c’est comme si je renaissais chaque jour. Je fais face à des problèmes que j’ai plus ou moins déjà résolus par le passé. Et auxquels je referais sûrement face dans le futur.

Certes, à chaque nouvelle rencontre je les résous plus vite parce que ma mémoire m’aide à les comprendre et à créer une solution ; mais le vrai problème reste : je résous des problèmes que j’ai plus ou moins déjà résolus. Je perds mon temps.

Si j’arrivais à résoudre les choses une bonne fois pour toutes, alors je n’aurais plus à trouver de solution. Mais même si les problèmes sont semblables, aucun problème n’est exactement similaire à un autre. Alors que faire ?

La réponse est simple ; il ne faut pas que je résolve les problèmes, mais leur essence. Il faut que j’affine ma capacité d’abstraction pour extraire l’essence des problèmes. Que je développe des solutions abstraites pouvant s’adapter aux spécificités de tout problème apparenté, des solutions que je n’aurais qu’à lier avec les spécificités des problèmes particuliers. Ainsi, quand je serais face à un « nouveau » problème, je n’aurais qu’à brandir ma solution abstraite et faire l’inverse de ce qui a mené à la création de celle-ci : extraire les spécificités de ce nouveau problème et les lier à ma solution.


 

Quelle est la différence entre une personne et un film ? Pour un être humain, la question est étrange tant ces deux types de choses diffèrent ; elles ne sont pas comparables, et la réponse associée à la question est donc complexe et difficile à imaginer. Mais pour un ordinateur, la réponse est plus simple : il n’y a vraiment pas grand chose qui différencie un film d’une personne. En effet, pour un ordinateur, les deux choses ont un nom, une description, une date de « naissance », des liens avec d’autres choses (d’un type différent ou du même type), des images et vidéos associées, les gens en parlent, les critiquent, les classent, etc. Bref, pour un ordinateur, toutes les choses sont quasiment identiques. Alors que pour un programmeur humain, toutes les choses sont différentes.

Le Daimao Framework est un kit PHP/Python fondé sur cette différence de perception entre le programmeur humain et le programme non-humain. L’idée est de créer un seul et unique « entonnoir » informatique pour gérer toutes les choses que les utilisateurs humains utilisent, et faire abstraction maximale des différences. En se reposant sur l’abstraction et la logique généralisée, il permet notamment de déployer rapidement la gestion d’un type de choses à travers une base de données. À l’origine, je l’ai développé pour gérer mon blog d’adolescent permettant d’interagir avec l’écosystème « jeux-vidéo » de manière centralisée (partie descriptive : jeux, genres, studios de développement, systèmes de jeu | partie interactive : classement préférentiel, liste d’attente de jeux, historique des jeux joués, critiques). Ensuite je l’ai fait évoluer pour être suffisamment abstrait et pouvoir l’utiliser dans tout projet informatique, peu importe le thème de fond de ces projets.

 

L’idée générale du Daimao Framework est de développer la logique de telle façon à ne jamais avoir à refaire dans un second projet une chose que l’on a déjà faite dans un premier projet. Aussi abstraite ou minime puisse-t-être cette chose. Ainsi, quand je commence un nouveau projet, je dois, dans l’idéal, n’avoir à réaliser que les spécificités de ce projet que je n’ai jamais rencontrées dans un précédent projet. Tout le reste doit être déjà préparé, prêt à l’usage.

 

Il s’agit donc de penser la conception de manière abstraite. Il s’agit de « purifier » le code au maximum, le réduire à son essence la plus générale. Puis une fois, cette « pureté » maximale atteinte, il s’agit d’ajouter une nouvelle couche qui va spécialiser le fonctionnement de la première. Cette seconde couche doit tout de même être la plus pure possible. Et on répète le procédé jusqu’à ce qu’il n’y ait plus de généralité possible. Ainsi, dans le Daimao Framework, tout type de chose partage à la base le même tronc commun. En conséquence, quand on commence un tout nouveau projet, la grande majorité des traitements pour un nouveau type de chose sont déjà conçus (un nouveau né ne réinvente pas le monde quand il naît. Il se l’approprie).

Le code étant adaptatif, la plupart des spécificités d’un type sont également traitées de manière abstraite. Mais il est tout a fait possible d’étendre ou de surclasser un comportement de base.

 

La classe d’origine est appelée CommonEntry. Grâce à une utilisation optimale de rétroaction de la spécialisation, elle gère à elle seule 90 % des traitements en moyenne (ce qui comprend toute la partie purement technique/informatique). La rétroaction de spécialisation caractérise l’influence des paramètres d’une couche supérieure sur le comportement d’une couche inférieure. En d’autres termes, les couches de bases sont conçues pour s’adapter aux particularités de leur futur « métier ».

À partir de cette classe il est donc possible de créer des classes filles permettant de gérer les spécificités purement métier. Néanmoins il est tout a fait possible de faire une seconde couche d’abstraction entre la CommonEntry et le type concret que vous allez utiliser. C’est déjà le cas de tout type de lien entre deux types de choses : ils dérivent tous du CommonLink, qui lui même dérive de la CommonEntry. Le CommonLink gère donc toutes les spécificités communes que peuvent avoir les liaisons entre les choses.

 

Cette façon de concevoir le développement de projets informatique requiert de la discipline et de l’expérience. Mais elle est extrêmement puissante sur le long terme.

Contrairement à l’architecture classique du monde informatique (divisant et articulant le code par rapport aux divers métiers du domaine : design, traitement, stockage), l’architecture fonctionnelle du Daimaô Framework est uniquement basée sur les choses que le système va traiter. Le fonctionnement du Daimaô Framework en fait donc un système idéal pour des projets variés entièrement gérés par une seule personne indépendante, aux multiples casquettes.

 

Page du projet sur Launchpad.

Pas de commentaires

Vous pouvez laissez un commentaire grâce au formulaire ci-dessous :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *