chris21.roux
2013-09-26 20:48:44 UTC
Le projet "J'ai l'inux" vise ? proposer une distribution Linux capable de filter les contenus notamment pornographiques, pour une utilisation ? l'?cole.
Pour filtrer les contenus, il est n?cessaire d'intervenir ? l'int?rieur du syst?me pour intercepter les contenus ? filtrer (on ne peut pas intervenir au niveau des trames r?seau car ? ce niveau les contenus ne sont pas interp?tables).
J'ai pens? ? utiliser des machines virtuelles pour d?l?guer ? chaque machine virtuelle une portion sp?cifique du syst?me ? assurer.
Cette id?e est n?e d'un poisson d'avril (April's fool joke) qui annon?ait le projet Canterbury, visant ? r?unir le meilleur de 5 distributions Linux dans une nouvelle distribution. En tant que chr?tien, je suis tr?s sensible aux poissons d'avril qui ont pour objectif de se moquer des chr?tiens. J'ai donc choisi ces 5 distributions et j'ai fait un prototype de test 64 bits:
- Archlinux pour l'interface homme-machine et la virtualisation
- Gentoo pour la compilation
- Grml pour les entr?es-sorties
- Open-Suse pour les applications
- Debian pour les applications 32 bits et la mod?lisation
L'id?e sous-jacente ? ce projet, c'est un module noyau ? d?velopper qui permettra de router les appels syst?me vers chaque distribution en fonction du type d'appel syst?me et du r?le de chaque distribution dans le syst?me.
Le pattern MVCA (Mod?le= donn?es, Vue=ihm, Controleur=noyau, Action=application) est utilis? entre Archlinux, Grml et OpenSuse.
Le filtrage de contenu s'effectue entre les applications et les vues gr?ce au module noyau qui intercepte les donn?es ? filtrer et les dirige vers un filtreur hors noyau. Le filtreur applique des outils sur les donn?es pour d?cider si elles seront autoris?es ou non.
Pour d?velopper le filtreur, un nouveau langage, Pmal, est ? cr?er. On a besoin d'un nouveau langage qui doit ?tre capable de faire ?voluer ses programmes sans avoir ? les interrompre. Ce langage sera bas? sur du typage fort, pour assurer la s?curit? du syst?me. J'ai imagin? un langage de glue pour faire ?a.
Il s'agit d'un langage qui fait un usage important de la r?flexivit?: il connait ses constituants et peut agir dessus.
Il est bas? sur le principe des conteneurs l?gers: les classes composantes sont assembl?es par inversion de controle. Chaque composante ne connait pas avec quel composant il sera reli? dans les conteneurs l?gers.
Exemple: un objet A est reli? ? un objet de type D sur lequel il invoque une m?thode b pour imprimer. A ne sait pas de quelle classe est l'objet de typez D. De D, 2 classes h?ritent: B et C, pour 2 imprimantes diff?rentes. Chaque classe B et C poss?de un objet M?thode impl?mentant la m?thode b. Cet objet M?thode porte des attributs "tags" qui le d?crivent.
Par exemple B a un tag "600dpi" et C a un tag "300dpi".
Lorsque A demande a ex?cuter b, b est intercept? par le conteneur l?ger qui va filter les candidats possibles en fonction des tags. Finalement, le conteneur l?ger choisira B pour optimiser la qualit? d'impression, sans que A se soit jamais dout? de rien.
On pourra aussi avoir un objet proxy qui intercepte les requ?tes b et les envoie de mani?re asynchrone.
Ou encore, un compteur d'appels de m?thode incr?mental pour d?tecter les boucles infinies et les r?soudre en analysant le code invoqu? et en proposant une approximation si elles tendent vers une limite.
Par exemple on pourra r?soudre le paradoxe de Z?non:
Achille et la tortue font une course : Achille va 2 fois plus vite que la tortue. Chaque fois que Achille parcours la distance qui le s?pare de la tortue, celle-ci parcours la moiti? de cette distance. Ainsi une nouvelle distance plus petite les s?pare...
La r?cursion est infinie. Si on compte les appels r?cursifs avec une interruption par exemple au bout de 10 it?rations, en analysant le code on peut d?duire que la limite tend vers 0 et retourner cette r?ponse comme approximation et mettre fin ? la boucle. Si il n'y a pas de limite on interrompra aussi la boucle pour ?viter un engorgement syst?me.
Avec le niveau d'abstraction o? une m?thode est un objet on pour attacher cette m?thode ? un seul objet sans l'attacher ? tous les objets de sa classe, ? des fins de tests. Une fois test?e, cette m?thode pourra ?tre g?n?ralis?e ? toute la classe. A ce moment, la m?thode sera intercept?e par un proxy, puis mise en place, puis activ?e en d?bloquant le proxy, permettant ainsi une ?volution du code et des classes du programme sans interruption.
De plus, bien que fortement typ?, ce langage pourra ?tre ex?cut? par du javascript, du fait de son niveau d'abstraction : les objets, les classes, les attributs et les m?thodes sont tous des objets manipulables.
Actuellement, je dispose d'un prototype faisant fonctionner les 5 distributions ensemble. J'ai presque termin? le compilateur pour les m?thodes du langage en Java 1.5.
Il faut d?velopper l'ensemble du langage Pmal, le module du noyau pour router les appels syst?me et aussi un gestionnaire de paquets pour l'ensemble du syst?me avec les 5 distributions.
Il s'agit d'un travail ?norme, mais le proverbe dit: "La foi d?place des montagnes".
Contactez-moi si vous d?sirez participer: chris21.roux at free.fr subject "J'ai l'inux".
Pour filtrer les contenus, il est n?cessaire d'intervenir ? l'int?rieur du syst?me pour intercepter les contenus ? filtrer (on ne peut pas intervenir au niveau des trames r?seau car ? ce niveau les contenus ne sont pas interp?tables).
J'ai pens? ? utiliser des machines virtuelles pour d?l?guer ? chaque machine virtuelle une portion sp?cifique du syst?me ? assurer.
Cette id?e est n?e d'un poisson d'avril (April's fool joke) qui annon?ait le projet Canterbury, visant ? r?unir le meilleur de 5 distributions Linux dans une nouvelle distribution. En tant que chr?tien, je suis tr?s sensible aux poissons d'avril qui ont pour objectif de se moquer des chr?tiens. J'ai donc choisi ces 5 distributions et j'ai fait un prototype de test 64 bits:
- Archlinux pour l'interface homme-machine et la virtualisation
- Gentoo pour la compilation
- Grml pour les entr?es-sorties
- Open-Suse pour les applications
- Debian pour les applications 32 bits et la mod?lisation
L'id?e sous-jacente ? ce projet, c'est un module noyau ? d?velopper qui permettra de router les appels syst?me vers chaque distribution en fonction du type d'appel syst?me et du r?le de chaque distribution dans le syst?me.
Le pattern MVCA (Mod?le= donn?es, Vue=ihm, Controleur=noyau, Action=application) est utilis? entre Archlinux, Grml et OpenSuse.
Le filtrage de contenu s'effectue entre les applications et les vues gr?ce au module noyau qui intercepte les donn?es ? filtrer et les dirige vers un filtreur hors noyau. Le filtreur applique des outils sur les donn?es pour d?cider si elles seront autoris?es ou non.
Pour d?velopper le filtreur, un nouveau langage, Pmal, est ? cr?er. On a besoin d'un nouveau langage qui doit ?tre capable de faire ?voluer ses programmes sans avoir ? les interrompre. Ce langage sera bas? sur du typage fort, pour assurer la s?curit? du syst?me. J'ai imagin? un langage de glue pour faire ?a.
Il s'agit d'un langage qui fait un usage important de la r?flexivit?: il connait ses constituants et peut agir dessus.
Il est bas? sur le principe des conteneurs l?gers: les classes composantes sont assembl?es par inversion de controle. Chaque composante ne connait pas avec quel composant il sera reli? dans les conteneurs l?gers.
Exemple: un objet A est reli? ? un objet de type D sur lequel il invoque une m?thode b pour imprimer. A ne sait pas de quelle classe est l'objet de typez D. De D, 2 classes h?ritent: B et C, pour 2 imprimantes diff?rentes. Chaque classe B et C poss?de un objet M?thode impl?mentant la m?thode b. Cet objet M?thode porte des attributs "tags" qui le d?crivent.
Par exemple B a un tag "600dpi" et C a un tag "300dpi".
Lorsque A demande a ex?cuter b, b est intercept? par le conteneur l?ger qui va filter les candidats possibles en fonction des tags. Finalement, le conteneur l?ger choisira B pour optimiser la qualit? d'impression, sans que A se soit jamais dout? de rien.
On pourra aussi avoir un objet proxy qui intercepte les requ?tes b et les envoie de mani?re asynchrone.
Ou encore, un compteur d'appels de m?thode incr?mental pour d?tecter les boucles infinies et les r?soudre en analysant le code invoqu? et en proposant une approximation si elles tendent vers une limite.
Par exemple on pourra r?soudre le paradoxe de Z?non:
Achille et la tortue font une course : Achille va 2 fois plus vite que la tortue. Chaque fois que Achille parcours la distance qui le s?pare de la tortue, celle-ci parcours la moiti? de cette distance. Ainsi une nouvelle distance plus petite les s?pare...
La r?cursion est infinie. Si on compte les appels r?cursifs avec une interruption par exemple au bout de 10 it?rations, en analysant le code on peut d?duire que la limite tend vers 0 et retourner cette r?ponse comme approximation et mettre fin ? la boucle. Si il n'y a pas de limite on interrompra aussi la boucle pour ?viter un engorgement syst?me.
Avec le niveau d'abstraction o? une m?thode est un objet on pour attacher cette m?thode ? un seul objet sans l'attacher ? tous les objets de sa classe, ? des fins de tests. Une fois test?e, cette m?thode pourra ?tre g?n?ralis?e ? toute la classe. A ce moment, la m?thode sera intercept?e par un proxy, puis mise en place, puis activ?e en d?bloquant le proxy, permettant ainsi une ?volution du code et des classes du programme sans interruption.
De plus, bien que fortement typ?, ce langage pourra ?tre ex?cut? par du javascript, du fait de son niveau d'abstraction : les objets, les classes, les attributs et les m?thodes sont tous des objets manipulables.
Actuellement, je dispose d'un prototype faisant fonctionner les 5 distributions ensemble. J'ai presque termin? le compilateur pour les m?thodes du langage en Java 1.5.
Il faut d?velopper l'ensemble du langage Pmal, le module du noyau pour router les appels syst?me et aussi un gestionnaire de paquets pour l'ensemble du syst?me avec les 5 distributions.
Il s'agit d'un travail ?norme, mais le proverbe dit: "La foi d?place des montagnes".
Contactez-moi si vous d?sirez participer: chris21.roux at free.fr subject "J'ai l'inux".