Small Wiki
Small Wiki est un Wiki écrit en Smalltalk, développé à l'Université de Berne.
Voir
[ici]
Un des particularités de cette implémentation est qu'elle est totalement objet : les pages, la structure des pages, les liens, les patrons de pages sont des objets sur lesquels il est possible d'effectuer des actions. Small Wiki utilise massivement le Pattern Composite?. C'est le premier Wiki Engine Objet?.
Du fait de sa conception objet, Small Wiki pourrait être une bonne implémentation pour un Semantic Wiki.
Présentation de Small Wiki :
http://wiki.eranova.si/esug/DOWNLOAD/Slides/SmallWikiEsug2003.pdf
Small Wiki utilise maintenant uniquement CSS pour les feuilles de styles et dispose d'un éditeur de feuilles de style intégrés. Voir la démo sur :
http://kilana.unibe.ch:9090/Designs
La version 1.0 est imminente. Elle peut être récupérée sur le store public de Cincom :
http://www.cincomsmalltalk.com/CincomSmalltalkWiki/PostgreSQL+Access+Page
Blah Blah
Serge, peux-tu nous présenter ici l'approche de Small Wiki ? La présentation sur le site de Small Wiki est plutôt sommaire... J'ai cru comprendre qu'il fonctionne à partir de la notion abstraite de "structure", cette notion pouvant matérialiser une page ou une ressource ou un ensemble composé d'une page et d'une ou plusieurs ressources. Et ensuite ? Qu'est-ce que cela permet ? Dans un wiki classique Tout Le Monde Peut Ecrire ; est-ce que Small Wiki permet les possibilités suivantes : Tout Le Monde Peut Décrire (Wiki sémantique), Tout Le Monde Peut Maquetter? (un wiki où chaque page peut être maquettée par l'utilisateur final), Tout Le Monde Peut Développer (un wiki où les utilisateurs peuvent participer à la programmation du wiki en temps réel, selon l'idée chère à Clément Pillias).
-- Charles Nepote
Charles pour voir Small Wiki, viens à la Squeak Party du 22 novembre ;-) -- Serge Stinckwich
Description de Small Wiki
Comme je me suis pas mal intéressé à Small Wiki, je vais faire un petit compte-rendu de mes notes. --Simon Denier
1) Premières impressions
Small Wiki se veut un wiki avec une forte conception modulaire, ce qui devrait faciliter son extension (en théorie et dans les limites +/- prévues bien sûr). Smalltalk, de son côté, est un langage syntaxiquement et conceptuellement simple mais généraliste - ce qui veut dire qu'il peut tout faire, et d'une façon assez élégante, mais au prix d'une certaine complexité (par rapport à php qui est plus spécialisé). De plus la conception modulaire implique de "nombreuses" abstractions, ce qui ne rend pas la prise en main de Small Wiki évidente.
Pour info, j'ai compris l'architecture globale de Wiki Ni en un week-end (grâce à sa simplicité et à sa conception il faut dire) et je peux déjà le modifier - pour Small Wiki, ça fait un certain temps que je m'y intéresse et je ne me sens pas prêt à y toucher.
Mon "opinion perso" maintenant : comme Serge, je pense que Small Wiki, par sa modularité et son niveau d'abstraction, peut faire une bonne base pour intégrer diverses approches du wiki sémantique, et ce dans un moteur robuste. Par contre l'isolation du monde Smalltalk et la complexité globale du framework peuvent freiner le prototypage (un comble pour Smalltalk) : je ne sais pas jusqu'à quel point par exemple il est possible d'utiliser l'existant (par exemple, rdf, topic map, et autres techno/concepts du web sémantique)
Un "détail technique" à souligner : les pages d'un wiki sont des objets résidant dans l'image (la mémoire). Il y a un mécanisme de snapshot qui permet de sauvegarder régulièrement les pages (c'est-à-dire l'image) par exemple sur le disque, ou encore dans des fichiers, ou enfin dans une BD. Il faut voir l'impact que ce a de ne pas passer par une BD (en terme de perf, mais aussi de collaboration avec les appli existantes)
2) Questions Tout Le Monde?
Pour le fun, quelques réflexions à propos des questions de Charles Nepote ci-dessus.
- Tout Le Monde Peut Maquetter? : on en est pas là, mais Small Wiki propose un mécanisme de Template, assez complexe à appréhender, mais sûrement très puissant. En gros chaque page est générée section par section, chaque section étant générée par un Template dédié.
- Tout Le Monde Peut Décrire : hum rien de prévu même si possible en théorie. Pro : la structure objet peut permettre de s'abtraire de la page Wiki pour voir d'autres structures sémantiques. La structure des pages est décrite par une grammaire : un choix robuste et riche. Cependant c'est moins souple pour faire du prototypage...
- Tout Le Monde Peut Développer : intéressant, la technologie n'en est pas loin je pense. Un Squeak plugin avec interface pour faire du développement "live" + techno inspirée de Squeak Map? pour la mise à jour ? (désolé pour le jargon). Après, voir la remarque de Armand Stroh sur Tout Le Monde Peut Maquetter?. Squeak est censé avoir une prise en main rapide pour les débutants, mais quand même...
3) Description de la structure
- Comme noté par Charles, la Structure est l'élément de base dans le wiki. Elle correspond
- soit à une Page
- soit à un Folder , c'est-à-dire une Page spéciale qui contient d'autres Structures (mimant un dossier)
- soit à une Ressource , type ressource multimédia...
Le motif Folder/Page mime le chemin d'accès dans l'URL. Le wiki se présente comme un réseau de Structures liées entre elles. Une structure peut disposer d'autres propriétés, en particulier la feuille de style associée mais aussi les Template chargés du rendu.
Chaque Page dispose d'un "document", qui est une description abstraite de la structure HTML et du contenu de la page (par un arbre d'objets) - chaque élément HTML est décrit par sa classe.
Un point intéressant : quand vous créez une structure (en créant un lien), Small Wiki vous permet ensuite de choisir le type de la Structure en fonction de celles qu'il connaît (par exemple : Page, Folder, Ressource).
Outre les Structures, il y a les Actions qui traitent les requêtes utilisateurs et les Templates qui décrivent chacun une section de la page (par exemple le titre, le contenu, la barre de navigation...). La génération d'une page dépend des interactions entre une Action et des Templates (voir ci-dessous). Une action !Template Edit? permet par ailleurs de gérer l'apparition et l'ordre des Templates (donc des sections) ainsi que leur configuration.
4) Description du comportement de base (réponse à une requête)
- Transformation de la requête serveur en objet.
- La requête est passée de structure en structure depuis la racine du site suivant le chemin demandée.
- En bout de course, l'action demandée est instanciée avec la structure en paramètre.
- L'action vérifie les permissions et exécute le cas échéant les callbacks (changements d'état cas échéant).
Lancement du processus de rendu de la page (itération sur Header puis Body) :
- récupération des Templates de la structure
- génération de la section de la page par chaque Template
- en particulier, génération du contenu de la page par !Template Body Content?, qui appelle Action pour le rendu particulier à l'action
- Le rendu d'une Action sur une Structure est fait par un Visitor qui parcourt le document de la structure (pour en faire un rendu html ou en syntaxe Wiki, par exemple)
- C'est aussi à ce moment que sont instanciés les callbacks qui traiteront les actions de l'utilisateur sur la page.
Un point peu commun (je pense) dans les moteurs wiki, c'est cette capacité à varier la structuration du document html en mixant les Template - et le fait d'utiliser un visiteur pour parcourir le document (ce qui permetrait d'en faire une sous-sélection par exemple)
Dernière modification le vendredi 19 novembre 2004 22:15:15



