Cool cool cool cool Swiip !! :)
Ca fait longtemps que j'attendais que tu nous fasses un talk ! :D
Pour ceux qui ne connaissent pas Matthieu, ce monsieur et moi, on avait fait feu-ArchetypeJS en 2007, une stack front entièrement modulaire, mais complète, essentiellement centré pour faire des SPA facilement (mais pas seulement) et de manière sympa, avec tout le nécessaire :
- du mode MVC favorisé par du convention over configuration, basé sur des composants
- proposant plusieurs langages de template (du EJS par défaut)
- de communication inter-composants via custom event
- fonctionnant au dessus de Prototypejs ou jQuery (au choix)
- avec la gestion d'un système de log plus poussé que le bête console.log (qui n'a pas d'équivalent à l'heure actuelle je crois), avec plusieurs backend
- avec la gestion de dépendances transitive réalisés côté front (et optimisable en bundle automatiquement avec un peu d'efforts via l'utilisation d'un browser headless pour trouver automatiquement les bon bundle à faire, le plus chiant était d'installer correctement jRuby).
- avec un pseudo sandboxing des évènements déclarables dans l'entête du composant (une peu comme backbone maintenant, ex :
http://backbonejs.org/#View-extend , d'ailleurs c'etait dans Archetype.Component.extend, c'était très très très différent ^_^)
- avec un système de proxy autour des méthodes des composants permettant d'ajouter des services "magiques", façon AOP, comme la conservation du "this" sur le composant (oui, pour nous c'était perturbant à l'époque venant du java), ou encore la gestion de méthodes pseudo-private, etc.
- un pseudo router à base d'évènements dont le principe était de découper le hashbang en clef/valeur sous forme de path, d'emettre un evenement par ajout/suppression de clef, ce qui permettait à plusieurs composants de s'inscrire facilement sur des modifications de l'url, tout en permettant d'avoir de jolies url.
On avait du arrêter le projet quand nos vies ne nous avaient plus laissé suffisamment de temps pour continuer, malheureusement, et les autres projets ont commencés à nous rattraper niveau fonctionnel. De plus, on a eu un seul contributeur externe, ce qui n'était pas très encourageant, mais c’était François de Metz, un des participants (sinon organisateur, pas vérifié) de ParisJS :)
Depuis, même s'il ya eu du bon en JS côté front (standardisation des modules avec AMD, et la syntaxe sympa de Backbone par exemple), il n'y a pas eu de grande révolution de ce côté, et on a du apprendre les tréfonds de JavaScript à l'époque pour faire Archetype, et du coup on est devenu plutôt bon grâce à cela :)
D'ailleurs à présent on en connait un rayon sur les bugs ésotériques des vieux navigateurs (sur la gestion du bootstrap de l'appli , la gestion de l'insertion de balise script, l'ordonnancement de l'arrivée des scripts dans l'interpreteur, autant que sur l'api console.log dont le comportement changeait pour chaque navigateur, voire chaque version, bindable ou non, multi-parametrable ou non, monkey-patchable ou non..., ou sur pourquoi utiliser des globales c'est mal, car 1 des 2 seul globales qu'on utilisait s'est faite bouffer par la sortie de Firefox 3.5...)
Bref Matthieu est très loin d'être un mauvais dans le domaine, même si pendant une longue période il n'a plus fait beaucoup de JS (mais beaucoup de Flex par contre si j'ai bon souvenir).
Bref Matthieu, très content que tu nous fasse un prez :)
A+,
Florian