17 février 2007

À quand l'hébergement par les internautes ?

Vu chez Transnets : «Web 3.0: une autre branche pour l’arbre des possibles»

Voici un extrait de l'idée :
Web 1.0: Les contenus sont produits et hébergés par des entreprises.

Web 2.0: Les contenus sont produits par les internautes et hébergés par des entreprises.

Web 3.0: Les contenus sont produits et hébergés par les internautes.
(Cela signifie ne plus héberger son mail sur Gmail, ses photos sur Flickr, etc… Les données sont reçues, stockées et accessibles sur une machine administrée par et physiquement chez l’interna
ute.)

Oooh, comme je suis d'accord :-) C'est ça, internet. La mise en réseau, à la fois des machines et des geeks (l'internet du début), des gens normaux (le web, puis le web 2.0), mais également des machines chez les gens (le peer-to-peer enfin valorisé par un côté réellement applicatif).


J'irai plus loin : Échangeons des données cryptées par P2P, et distribuons les traitements.

12 février 2007

Typographie française sur le web

En travaillant sur Unicode, je découvre la typographie sur le web.

Certes, je faisais jusqu’ici mon possible pour utiliser les guillemets chevrons [«…»] bien français au lieu des guillemets anglophones ["], j’usais de capitales accentuées, même dans le cas de majuscules (voir ici: Majuscule et capitale, minuscule et bas de casse), et je rajoutais au mieux de belles espaces insécables avant les signes de ponctuation double comme [:], [;], [?] et [!], mais… en restant dans le jeu de caractères ISO-8859-1 (ou « ISO-Latin-1 ») j’avais au final tout faux.

Les liens suivants m’ont ouvert les yeux :
Tout d’abord, les signes de ponctuation [;], [?] et [!] ne doivent pas être précédés d’une espace insécable, mais d’une… fine.

Ah.

Et comment fait-on une fine en HTML ? M’enfin, en changeant la taille de la police de l’espace insécable, c’est bien connu !
Tous à bord !
Doit s’écrire :
Tous à bord<span style="font-size: 30%;">&nbsp;</span>!
Autant dire que ça commence bien.

Ensuite, l’apostrophe. Moi qui croyais benoîtement que la courbure imposée lors de la frappe par Microsoft Word était de l’ordre du superflu, eh bien non, l’apostrophe française s’écrit bien [’] (Unicode &#8217;), et non ['] (ASCII &#39;).

Et le tiret cadratin, alors ? Oh, un simple &#8212; (—). Rappelons en effet que le &#151; du Windows CP-1252 n’est pas Unicode, et ne fonctionne comme l’indique sa table de codage, que sous Windows.

Le tiret demi-cadratin est lui donné par &#8211; (–).

Les points de suspension ? &#8230; (…).

Et heureusement que je suis sur Mac : tous ces caractères, en plus des majuscules accentuées, sont facilement accessibles au clavier. À part la fine insécable, bien sûr.

Me voilà donc à revoir toutes mes pages web francophones et à estimer le temps de recomposition de leurs textes.

Mais soudain j’échoue pour mon infortune sur une page de typographie, datée de 2004, qui s’intitule « Les ligatures ».

Page où l’on se remémore qu’on doit d’user du « œ » &#339; pour bien parler d’un œuf (Unicode) et non d’un oeuf (pour s’en tenir à ISO-8859-1) ; quant au «æ» de Lætitia, il se trouve, lui, dans ISO-8859-1.

Mais page, où l’on se fait également et aimablement rappeler, que « f i » doit être ligaturé. Ainsi que « f l ». « f f i ». « f f l ». Etc. !

« f f » : « ff », &#64256;
« f i » : « fi », &#64257;
« f l » : « fl », &#64258;
« f f i » : « ffi », &#64259;
« f f l » : « ffl », &#64260;
« c t » : « … », &#…; Introuvable ?
« s t » : « st », &#64262;

On parlera donc de « signification » et d’« efficacité », et non de "signification" ou d'"efficacité" (quelle horreur ! une apostrophe droite mariée avec d’angliches guillemets ; on ne sait plus qui est qui – sans parler de l’absence de ligature).

Comparez en sélectionnant des parties de mots : dans les premiers cas, les lettres ligaturées forment bien un unique caractère.

Et c’est là qu’on atteint la limite de l’exercice : ces mots aux lettres joliment ligaturées ne peuvent plus être trouvés dans la page par une bête recherche dans son navigateur ! On ne sait non plus ce qui advient de l’indexation du texte.

Faut-il patcher Firefox ? Google ? Aïe, aïe !

11 février 2007

Hellotipi : plateforme de sites familiaux

Le site Hellotipi : http://www.hellotipi.com/
Blog du créateur, mrBoo : http://www.mrboo.fr/

Hellotipi se présente comme une plateforme de création de sites de famille.
Chaque site de famille contient :
  • Un blog communautaire (chacun peut y donner des nouvelles et faire des commentaires)
  • Des albums de photos (stockage illimité)
  • Un arbre généalogique simplifié (à venir)
  • Un annuaire des membres de la famille
  • Un agenda partagé (pour planifier des événements familiaux)
Wikis, calendriers, plateforme mutualisée… On a tous les mêmes bonnes idées :-)
mrBoo parle même d'utiliser OpenID : « Votre identité numérique »

03 février 2007

Internationalisation de logiciel

Chez Finis Africae, un article sur la difficulté à utiliser les bons codes de langues (pour PalmOS, bon…) lorsqu'on veut internationaliser un logiciel : http://www.finis-africae.net/article.php?id=861

30 janvier 2007

Où en sont les Fûts ?

C'est l'hiver.

Standby sur les Fûts pour 3 mois.
Personnellement, je prends mes marques sur une nouvelle mission, qui me retrouve basé à Montauban.
Les autres sont un petit peu tous sous l'eau. Ils réagiront sur ce blog si ce n'est pas vrai :-)

Les projets de statuts sont d'après moi dans leur état définitif, mais… mais… mais qu'est-ce qui bloque, alors ?
Les fiches d'adhésion sont au même point.

Les développements de la plateforme PHP/Java sont interrompus jusqu'à fin mars.

Des prototypages et des essais de CMS et de wikis PHP pour les associations qu'on avait contactées en 2006 sont en cours. Si, si, c'est en cours. Je sais, ça ressemble à un gros serpent de mer, cette histoire. Même pas foutus d'installer Joomla! ou Drupal chez Free ! Il faut dire qu'avec ces solutions on est loin de la plateforme de services transverses, donc forcément, la motivation n'est pas la même... Mais ça avance. Les installations de produits en tests se succèdent sur la plateforme technique.

Les réunions mensuelles continuent, avec un staff qui se réduit finalement à 4 habitués : Benoît, Christophe, Pierre et moi. Les discussions, ainsi que sur la mailing-list, se concentrent actuellement sur des sujets techniques.

La dernière réunion a eu lieu jeudi dernier 18 janvier. Au programme, le « DVD du prestataire ». 2 Go de logiciels vaillamment récoltés par Benoît, gratuits et / ou open source, pour le métier de la partie « technique » de l'association. Ça sert aussi à ça, les Fûts :-)

C'est l'hiver, donc.

On est déjà fin janvier.

Ça ne nous empêche pas de vous souhaiter, et de nous souhaiter par la même occasion :-) que cette année soit la meilleure du monde :-)

01 décembre 2006

Lancement du groupe «Les Fûts - jobs »

« Les Fûts » est une association d'informaticiens bordelais visant à promouvoir les NTIC auprès des associations à but non lucratif.

« Les Fûts - Jobs » est un groupe Google qui découle de la deuxième activité de l'association : offrir un point de rencontre, d'échange et d'entraide pour les informaticiens bordelais.

Il ne s'agit pas de recopier les annonces du net (sauf si l'annonce en question est vraiment intéressante) mais de tisser un réseau d'informations.

Ce groupe s'adresse donc à ceux qui cherchent un (nouveau) job, et pour les indépendants, une mission, en faisant circuler leur CV auprès des membres et de faire fonctionner le «réseautage». Il s'adresse également à ceux qui offrent un job ou une mission.

Dans ce cadre, «Les Fûts - Jobs» permettra de passer les annonces découlant du recueil des besoins des associations membres.

Pour mémoire, rappelons l'existence du premier groupe Google de l'association «Les Fûts».

30 novembre 2006

Première rencontre avec l'association du CDD du pays des rives de Garonne

Première rencontre ce soir avec une nouvelle association pour cerner leurs besoins et voir comment l'assoce Les Fûts peut les aider.

Après un résumé de nos activités "un pour tous, tous pour un" (l'association Les Fûts au service de toutes les autres, un point de rencontre des architectes au sein de l'association Les Fûts), nous entrons dans le vif du sujet.

Le contexte : le conseil de développement
Les communes sont regroupées dans une communauté de communes, les CDC.
La CDC permet de regrouper des moyens partagés au service des communes.
Les CDC sont regroupées dans un pays (notion non administrative), rien à voir avec la France.
Le pays qui nous intéresse est celui des rives de Garonne.
Ce pays a un conseil syndical (CS) comprenant des élus pour 5 ans et un conseil de développement (CDD) comprenant des personnes de la société civile pour 10 ans.
Le CDD du pays des rives de Garonne regroupe une quarantaine de personnes (des personnes volontaires à candidature et portant des projets, souvent des présidents d'association).
Le CDD, d'après la loi Voynet, a pour objectif d'élaborer une charte pour les 10 années à venir.

Cette charte couvre plusieurs thèmes tels que :

  • développement économique,
  • loisirs,
  • aménagement et protection de l'environnement

Les besoins
Le besoin principal est la mise en oeuvre des moyens de travailler à l'élaboration de cette charte et de faire son suivi.
Cela passe par la mise à disposition d'informations à 3 niveaux :

  • au sein du Conseil De Développement en premier lieu,
  • au Conseil Syndical,
  • au public pour la charte

Les moyens attendus ont pour rôle de faciliter le travail collaboratif et la diffusion de l'information.

  • Niveau 1 : travail collaboratif des membres du CDD
    - Documents : création de documents, diffusion restreinte, corrections, validations.
    - Calendrier partagé : organisation des réunions deux fois par mois
    - Discussion et échange : blog et liste de diffusion pour les actualités du groupe, forum pour les sujets structurés (les thèmes de la charte)
  • Niveau 2 : communication vers le conseil syndical
    Mise à disposition des états d'avancement : diffusion restreinte aux membres du CS et du CDD en lecture uniquement.
    Retour possible du CS via une adresse mail.
  • Niveau 3 : communication vers la société civile
    Diffusion publique de la charte en lecture uniquement.
    L'idée est que les écrits restent alors que les membres du CDD et les élus sont présents pour une durée déterminée.

Conclusion
Les besoins exprimés sont homogènes avec ceux des autres associations : gestion documentaire, diffusion, travail collaboratif, site informatif.

Pour finir : le lien indispensable sur nos activités avec la plaquette des Fûts

29 novembre 2006

Deuxième soirée de présentation de l'association

Voilà, la deuxième soirée de présentation de l'association a bien eu lieu, malgré quelques désistements de dernière minute. Nous avons regretté particulièrement l'absence de notre président David, contraint par des obligations familiales peu réjouissantes, pour lequel nous avons eu une pensée.

Quoi qu'il en soit le grand événement de la soirée aura été l'adhésion à notre groupe de la première association. En effet j'ai eu le plaisir d'accueillir «PTG Bodyboard - Only Free Bodyboarding» (www.ptgbodyboard.com), toute jeune association représentée par JP, son frangin et Yann. Ces derniers ont manifesté un vif intérêt pour notre projet et sont prêts à servir de cobayes, de beta-testeurs (et non l'inverse ;-) ), prêts également à donner de leur personnes pour notre noble cause... Bon j'en fais peut-être un peu trop là, à froid, mais dans le contexte après un verre de Guiness, c'était quand même l'esprit... :-)

Les sujets abordés au cours de la soirée ont étés les suivants :
  • Présentation des membres fondateurs à savoir :
  • David Andrianavalontsalama : Président (non je n'ai pas ripé sur le clavier ;-) )
  • Christophe Brugne : Secrétaire adjoint
  • votre serviteur Pierre Kypréos : Secrétaire
  • Présentation de la domiciliation postale (ça je suis plus sûr de l'avoir évoqué hier, mais là voilà tout de même) :
    • Association Les Fûts
      1, avenue des Champs
      33600 Pessac
  • Appel à candidature pour un poste de trésorier. Celui-ci est resté vacant, même si il a abouti à raffiner le profil de la personne recherché : nous cherchons donc un comptable ou toute personne ayant un tant soit peut d'expérience en comptabilité et souhaitant s'investir dans l'association.
  • Discussion de la banque choisie :
    • CMSO (Crédit Mutuel Sud Ouest) de Pessac l'Alouette, que David a déjà contacté.
    • Le Crédit Agricole pour son site dédié aux associations
  • Annonce du très prochain dépôt des statuts à la préfecture, après intégration des remarques de Laurent Samuel, qui a eu la gentillesse de nous donner de son temps.
  • Présentation de la plaquette à destination des associations.
  • La réponse à la fameuse question «pourquoi Les Fûts» (il fallait être là ;-) )
  • Évocation des moyens de communication mis à disposition par «Les Fûts» :
  • Évocation de la toute prochaine fiche d'adhésion qui sera disponible en ligne sur le site. Avec, alors, la possibilité de recevoir des cotisations à l'ordre de «Association Les Fûts»
  • Présentation de la liste (non exhaustive) des avantages pour un informaticien à être membre :
  • la participation à des repas et des soirées
  • l'appartenance à un réseau d'échange, de veille
  • l'accès au forum privé fontguinews : super avantage ! non ? ;-)
  • l'accès à un carnet d'adresses de clients
  • la participation à des présentations techniques
  • l'accès aux ressources partagées par les membres : livres achetés, livres PDF achetés, versions d'évaluation de logiciels, sharewares achetés en nombre...
  • l'accès à la plateforme technique de tests
  • leur visibilité dans le blog et le site les Fûts (quand il sera créé...)
Note : les activités suivantes sont plus ou moins publiques :
  • l'accès aux réunions mensuelles
  • les bouffes à midi
  • l'accès en lecture/écriture à la mailing-list
  • l'accès en lecture au blog
  • l'accès en lecture au site web
  • Récapitulatif des cas concrets que nous avons a en liste d'attente :
    • Demande d'assistance pour des sites web :
- PTG Bodyboard (excellentissime association membre précédemment citée)
- Graine d'école (petite enfance)
- Le Jardin Sauvage (spectacles pour la petite enfance)
- AICPP33 (petite enfance)
- AIPAC (insertion chômeurs)
- Association de rugby de JBouroumeau
    • Demandes d'assistance à MOA
  • Annonce d'une présentation à plusieurs associations en janvier 2007. A noter que la proposition d'un samedi matin a été accueillie plutôt fraîchement par nos nouveau membres. A méditer...
  • Discussions plus techniques autour des CMS (Joomla!) et des Wiki en vue du soutien à PTG Bodyboard.

Voilà pour la présentation de l'association «Les Fûts».

A suivi un repas dans un restau japonais, le Yamato pour ne pas le citer, au cours duquel ont été abordés les sujets suivant :
  • Les restaurants japonais avec JP qui nous conseille le Moshi Moshi à Bordeaux (8 place Fernand Lafargue)
  • Les restaurant traditionnels :
    • La Cape à Cenon (1 étoile)
    • Un restaurant de fruits de mer sur le port d'Andernos mais dont j'ai oublié le nom (HELP JP!!!)
    • La Forge à Léognant qu'un autre Jean-Phillippe m'avait fait connaître il y a quelques temps et qui est toujours d'un excellent rapport qualité/prix.
    • et d'autres dont, j'espère, nous retrouverons bientôt les adresses sur ce forum.
  • L'accord mets/plat avec un grave somme toute honnête. Le Grave rouge a en effet la particularité de s'accorder aussi bien sur une viande que sur un poisson.
  • Les premières expériences des nos convives concernant... les sushi, sashimi et autre maki.
  • Divers ragots en tout genre sur lesquels je resterai discret ;-)
  • Le tout pour finir sur un vrai saké servi chaud (à l'étonnement de Christophe).
En un mot, ce «Fûts» une excellente soirée.

Je tiens à remercier ceux qui sont venus et à dire «à la prochaine» à ceux qui n'ont pu venir.

17 novembre 2006

If You Can't Test It…

On connaissait « If You Can’t Test It, Don’t Code It », qui enlève du boulot à tous ceux qui ne sauraient pas ou n'auraient pas les moyens de:
  • trouver l'environnement de tests pertinent (ça peut être un problème de budget, de hardware, d'impossibilité d'atteindre une charge demandée…),
  • écrire le test – automatisable – du bout de code qu'il sont censés développer (eh ben non, ce n'est pas toujours aussi évident qu'on le dit, figurez-vous),
  • trouver le temps de lancer le test (mouarf).
Maintenant, inaugurons « If You Can’t Test It, Don’t Specify It », qui va enlever du boulot parmi les MOAs à celles qui n'ont pas envie de s'enfoncer dans des spécifications contradictoires ou lacunaires, spécifications qui ne seront de toute façon jamais testées en conformité : elles sont du genre à changer un peu avant que la recette ne commence.

Cette maxime « If You Can't… Just Don't » est bêtement une conséquence de la méthode Test-Driven pour les spécifications, et ma foi c'est une très bonne conséquence.

D'ailleurs ça donne une idée par contraposition : et si la MOE décidait de refuser un cahier des charges qui ne contient pas à la base une batterie automatisée de tests de haut niveau ? Je ne dis pas que la MOA devrait spécifier ces tests, hein, je dis qu'elle devrait les écrire.
C'est un gage de succès pour la réussite de l'action de la MOA, alors pourquoi ne serait-ce pas un élément contractuel pour la MOE ? Après tout, tout le monde souhaite que le projet aboutisse, non ?

15 novembre 2006

Vox : pourquoi une nouvelle plateforme ?

Vox.com, un nouveau service de SixApart (Typepad, MovableType, LiveJournal…) a été lancé. Et on grassèye en félicitations.

C'est merveilleux, tout ce beau monde échange ses articles grâce aux flux RSS. On parle tous dans tous les sens dans la grande salle des pas perdus qu'est le web, mais la magie des cornets acoustiques directionnels que sont les abonnements RSS vous donnent assurance et confiance dans votre façon d'agréger l'information. Techniquement, c'est le tiers monde, mais du moment que vous avez l'impression d'être au centre, on continue comme ça.

Or la nouveauté de Vox, c'est simplement d'être une interface simplifiée.

L'architecture reste désespérement centralisée (centralisée certes par SixApart, mais centralisée).

Un seul cas d'utilisation parmi ceux qui de ce que j'ai vu manquent : si j'ai déjà un blog chez Typepad, pourquoi d'un seul clic ne puis-je créer un compte correspondant chez Vox ? Je ne parle pas d'importer mes articles depuis Typepad, je parle de brancher l'interface Vox directement sur mes données Typepad. Vox ne devrait être qu'une interface, pas une plateforme complète. Je devrais pouvoir utiliser indifféremment Vox ou Typepad selon mes humeurs et mes préférences. J'aurais plus ou moins de fonctionnalités selon le système, mais mes articles devraient pouvoir être communs. De toute façon mes lecteurs me lisent à travers RSS, n'est-ce-pas…

« Aaah oui, vois-tu ce qui compte ce n'est pas que tes articles soient en réalité tous au même endroit ou que tu puisses avoir une unité de rédaction. Ce qui compte c'est que le lecteur puisse les agréger au même endroit. » Voilà le tiers monde.
Et il existe même des applications qui me permettent d'envoyer des articles de façon unifiée sur différents blogs. À chaque fois la solution est applicative. Les protocoles et formats d'échanges sont HTTP et RSS, point. Ou, devrais-je dire, point-à-point.

Je ne comprends pas que les applicatifs du web aient pu prendre à ce point le pas sur les architectes de l'internet. C'était vraiment si compliqué de faire évoluer NNTP et de l'adapter aux blogs ?

14 novembre 2006

Inversion de Contrôle

J'ai été l'objet d'un sondage par téléphone : le gars appelait d'un pays de l'Union Européenne, et posait des questions sur ma perception de certaines marques chaussures de sport. C'est déjà suffisant comme argument de saynète surréaliste. Des chaussures de sport à moi, non mais franchement où va-t-on…

Là où c'était vraiment drôle c'est que je me voyais demander si je trouvais que [telle marque] était très, pas du tout, voire plus ou moins présente dans les spots de pub.
Moi : « — Vous savez, je regarde surtout les avis sur internet, par conséquent je ne sais pas si je suis bien dans votre cible…
Eul' gars : — En fait notre questionnaire porte sur la publicité en général, qu'elle passe à la télé, à la radio, ou sur internet. Pour nous c'est pareil.
Moi : — Euh… Écoutez, je suis désolé mais je n'ai pas la télévision, et je ne connais pas les publicités dont vous me parlez. Ce que je sais d'après internet des marques que vous citez, ce sont des avis de blogueurs, pas des arguments de départements marketing.
Eul' gars : — Vous nous conseillez de faire plutôt de la publicité sur internet, c'est ça ?
Moi : — C'est-à-dire que… je vous dis juste que ce n'est pas la publicité que vous essayez de faire sur vos propres produits que je vais chercher… Je préfère lire des avis d'utilisateurs. »
Ne m'envoyez pas de pub, c'est moi qui viendrai la chercher.

Le Design Pattern IoC dans toute sa splendeur.

13 novembre 2006

Projet de statuts

Après moultes consultations, voici le projet de statuts final de l'association Les Fûts: Statuts PDF. Il devrait être déposé cette semaine, donc si parmi la rare mais exigeante audience de ce blog il se trouve quelqu'un qui aurait un avis très critique sur un point qu'on n'aurait pas vu, vite ! un commentaire.

Merci.

Soirée du 19/10

Sur les blogs, soit tu es réactif dans les 24 heures, soit tu es out.

Voici donc le compte-rendu out de la soirée d'architectes Les Fûts d'il y a 4 semaines au Yorkshireman — c'était le jeudi 19 octobre.

Nous étions là, nous avons discuté, nous avons bu, puis nous avons dit que l'association était une bonne idée. Toujours cette fameuse polysémie de «Fût», terme à la fois d'architecture — la partie de la colonne qui repose sur la base et qui soutient le chapiteau puis l'édifice —, d'agriculture — la partie du tronc de l'arbre avant les frondaisons —, et d'invitation à la beuverie qui, souvent, seule aide à accoucher de difficiles consensus.

De gauche à droite : Geoffroy Alazard, Benoît Laffitte, Pierre Kypréos, Christophe Brugne, Thierry Mazzotti.

La plaquette qu'on voit à côté des bières sur les tables est celle-ci après mise à jour: Plaquette PDF.

Après cette réunion, le Google Group public Association Les Fûts a été créé, pour échanger en toute ouverture sur les besoins des associations.

Nous avons également un forum privé, pour les échanges sur la partie administrative, les sponsors (… un jour viendra) et les engueulades (… un jour viendra aussi).

À titre personnel et technique, sur la deuxième partie de soirée Benoît m'a convaincu de me mettre à Ruby on Rails, ce que j'ai fait et qui a été très porteur, merci bien.

Java est open-source

Voir l'article de Tim Bray et ses commentaires sur le passage de Java en open-source. Le lien vers l'article correspondant chez Sun (sun.com/opensource/java) ne semble pas encore fonctionner.
Ça fait au moins 2 ans qu'on attend ça. C'est le dénouement de 2 saisons de feuilleton politico-technique.

Le choix de la license ? Bah, GPL2, pourquoi ? La même que Torvalds a choisie pour Linux (par opposition notable avec la GPL3).

06 novembre 2006

Google Apps

Lu sur 01net :
Déjà disponible outre-Altantique, Google Apps cible les PME et les universités. Il possède les inconvénients des services en mode ASP (Application Service Provider). Il suffit que la connexion de votre société soit hors service pour que vous n'ayez plus accès aux e-mails stockés dans votre compte de messagerie, conservés sur les serveurs de Google, et non pas sur votre ordinateur.
Aaah, Google...
Le charme désuet de la couche applicative sans réplication...

31 octobre 2006

Wikis : Socialtext & SharePoint => SocialPoint

Vu sur le blog de Ross Mayfield : SocialPoint: Best-of-Breed Wiki on Sharepoint.

J'avais assisté à une présentation de Microsoft SharePoint Portal Server à la CCI de Bordeaux. Tout n'était pas noir, mais Microsoft continuait de présenter sa solution intégrée comme étant le Graal indépassable, cette fois-ci dans le domaine du travail collaboratif. C'était d'autant plus agaçant que leur approche était clairement «orientée outil», et non pas «orientée méthode» [de travail].

La collaboration avec SharePoint de plateformes comme Socialtext, bien qu'il s'agisse certainement d'intégrations avant tout techniques, pourrait amener des utilisateurs de Socialtext à faire profiter de leurs pratiques, par porosité, certains groupes d'utilisateurs de SharePoint.

27 octobre 2006

Je ne comprends pas Netvibes

Je suis en train de visionner le screencast de MacosX86 sur Netvibes (30'00", 68 Mo, format QuickTime, trouvé via Alternatives numériques, par ici).

C'est une vidéo qui présente Netvibes aux débutants, mais elle va jusqu'à parler du Netvibes Ecosystem.

Ce qui frappe chez Netvibes, c'est l'abondance de drag&drop, et la volonté d'intégrer tous les services possibles du web 2.0 : reader RSS, signets, calendriers, mais aussi vidéos et autres. Et là j'avoue que je ne pige pas.
Pourquoi tout redévelopper en Ajax, alors que l'OS de l'utilisateur sait déjà, ou devrait déjà savoir, faire interopérer tous ces petits bouts d'applications ? Pourquoi utiliser un lecteur dans un plugin, encapsulé dans du scripting, encapsulé dans un navigateur, encapsulé dans l'OS ? En l'occurrence, de la vidéo dans Flash dans Ajax dans Firefox dans MacOS X. Il y a un concept qui m'échappe certainement.

Pourquoi ne pas directement proposer par exemple une application XUL qui s'exécute dans Firefox ?
On n'aurait peut-être pas le même niveau d'APIs, je ne sais pas – je ne connais pas XUL.
Mais il me semble qu'à l'ère de l'Injection de Dépendances et autres Inversions de Contrôle, on ne devrait plus réaliser de telles pièces montées qui empilent autant de technos les unes au-dessus des autres.
On devrait pouvoir s'en sortir par des callbacks sur l'OS ou a minima sur le navigateur.
Ça me semblerait logique, disons.

Je sais bien que les ActiveX de Microsoft ou les applets de Sun ne valent pas mieux que le bon vieil Ajax mis au goût du jour par Google, notamment au niveau performances – pour des choses simples –, et surtout base installée.
Mais au lieu de penser HTML + Javascript + machine puissante, ne pourrait-on pas penser Firefox ?

Netvibes me fait l'effet d'une bête maquette de ce que devrait raisonnablement être l'Internet grand public.

23 octobre 2006

Travailler sans les transactions

Le modèle technique fait qu'il n'y a pas de transactions...

C'est facile à gérer dans le cas des mises à jour, puisqu'il s'agit simplement de poser des verrous applicatifs ou des verrous métier. Rappelons à cette occasion qu'un verrou applicatif ou métier bien posé est une garantie de la cohérence des données, tandis que tous les verrous techniques du monde auront toujours a un moment donné un ou plusieurs angles morts, et là, bien malin qui saura dépatouiller le MPD de la mort, en répondant à la fois aux exigences des fonctionnels qui veulent pouvoir modifier la base de prod' en cas de pépin (si, si) et aux nouvelles contraintes techniques des architectes (si, si).
Par ailleurs dans le modèle la cohérence des données est également assurée par leur versioning : deux parachutes valent mieux qu'un.

Pour les mises à jour des données métier, donc, pas de problème. Pour certaines modifications des données techniques non versionnées (incrémenter une date de mise à jour...), ça passe aussi. Mais que se passe-t-il en cas de destruction des données techniques ? Je ne sais pas, moi, la destruction de la session applicative, par exemple.
Si une session est en train d'être détruite, il faut interdire toute lecture et toute modification sur les objets en base attachés à cette session. Ah, zut, on n'a pas les transactions. Et à ce niveau on n'est plus versionnés...
Bon, dans ce cas particulier, la solution est simple : on s'en sort en préparant un champ de date de dernier accès à la session et en posant un verrou par une requête classique UPDATE WHERE, comme dans le cas applicatif.

Mais voici la conclusion : travailler sans les transactions impose dans certains cas de raffiner son modèle de données (ici en rajoutant un champ, s'il n'était pas prévu au départ), afin de pouvoir poser des verrous par des requêtes simples, seules garanties d'ACIDité.

Une contrainte qui offre en contrepartie à la fois une garantie absolue [ici, la cohérence des données] et une plus grande solidité du modèle, ça ne vous rappelle rien ? Eh oui, les tests.
Pour pouvoir simplement écrire certains tests, il faut parfois revoir, à l'avantage, le modèle.

Dépassons les choses simples

Un article de Jakob Nielsen sur la productivité accrue ou amoindrie par un intranet : Productivity and Screen Size.

Deux citations choisies :
With more choices, it takes more time to make a decision.
Et :
Skilled performance almost never happens on the Web, because users constantly encounter new pages; that is, they spend most of their time pondering options and trying to understand the content that's being presented. This is why most websites should lay off the fancy drag-and-drop features and focus on the simplest possible interaction techniques that are common to all sites.
C'est le débat entre MacOS (le vrai MacOS des débuts, hein, pas son petit frère surdoué hyperactif et insupportable qu'est MacOS X) et, hrem... Windows. Entre les interfaces de Blogger (Google) et Vox (SixApart). Entre NetVibes et le reste du monde. Mais aussi entre la ligne de commande et le clickodrome. Certaines lignes de commandes sont mieux pensées que certains intranets, eh oui.

Je verrais un autre argument : dans la bureautique traditionnelle, les fichiers sont stockés sur le disque dur. Ce n'est pas le plus conceptuellement satisfaisant, mais la délimitation est claire. Si tant est que j'aie confiance dans mon système d'exploitation (et si non, "get a Macintosh"), tous mes fichiers sont à un endroit déterminé, je peux les retrouver en explorant le système. «Faire un backup» veut encore dire quelque chose ; ça s'adresse aux couches basses, pas à l'applicatif.

Avec le web 2.0 (Google, les blogs, les applications hébergées...) j'ai des documents un peu partout. Oh, d'accord, je parle de « documents », d'« information», et non plus de bêtes «fichiers». N'empêche que j'en ai partout, et que ce qui me sauve, ce n'est pas ma capacité à explorer, c'est ma capacité à faire des copies dans tous les coins. Ma capacité à rajouter de la «sémantique». Sauf que cette sémantique est rien moins que primaire. Et s'applique à des objets fort répandus, donc fort simples.

On passe le temps à trouver de nouvelles façons de faire des choses élémentaires, et à s'approprier des systèmes incomplets.

Moi ça me fait penser dans les années 90 aux copains qui étaient heureux sur PC de découvrir le milliard d'applications disponibles, pourtant le plus souvent nazes et incompatibles entre elles.
Pendant ce temps nous on était sur Mac, avec peu d'applications, mais des bonnes. Des applications interopérables, drag&droppables, avec des guidelines homogènes, et même quelques AppleEvents. J'ai bien dit : quelques.

Eh bien il semblerait que le Web 2.0 tienne du modèle PC. Un bordel couvré avec de bons détails et une bonne dose de tape-à-l'œil mais qui présente un ensemble au final peu fonctionnel et surtout non homogène.
Oh, pardon, il y a les... flux RSS. Dommage qu'il n'y ait aucune sémantique valable dans ces flux, hein ?

19 octobre 2006

L'identité numérique

Chez Tendances.IT : Qu'est-ce que l'identité numérique ? Il cite évidemment Verisign, Microsoft, Google (Google Account)...
« Les outils de gestion de l'identité numérique sont en pleine maturation, et ce domaine est jugé comme stratégique par les grands éditeurs. »
Chez Bertrand Duperrin : Des outils pour gérer votre e-dentité, et Les réseaux sociaux dans l'Internet 2.

Chez Les Fûts : ... et si l'identité n'était pas une donnée, mais un flux ?

16 octobre 2006

Rencontre avec blueKiwi

Au Forum Aquitain de l'Économie Numérique jeudi dernier à la CCI de Bordeaux, j'ai rencontré Bertrand Duperrin, blogueur émérite (blog perso, blog pro), à qui j'ai demandé de me présenter de vive voix blueKiwi, le produit de la boîte dont il est éponyme, qui s'est récemment taillé un beau succès de démarrage chez Dassault Systèmes.

blueKiwi est une plateforme de blogs d'entreprise, avec des fonctionnalités bien vues, mettant davantage l'accent sur l'apport managerial que sur les prouesses techniques.

Bertrand Duperrin quant à lui est un fou du blogging, qui connaît beaucoup beaucoup de choses.

Un déjeuner et un début d'après-midi ma foi passionnants.

Une petite histoire de Usenet

Parallèlement à la révolution des comportements qu'apportent les blogs, il est à mon sens bon de se rappeler ce qu'a apporté et continue d'apporter Usenet. Car il y a du bon et même du très bon dans ce réseau.

Pour cela, je vous convie à vous pencher sur Une petite histoire de Usenet, un billet à la fois informatif et décalé sur le sujet.

Rappelons que Usenet date de 1980, NNTP de 1986, et le web des années 1990 seulement. À mon sens, les flux RSS comme le « tout-collaboratif mais néanmoins propriétaire » du web 2.0 passent à côté d'un aspect de libre partage, qui est au cœur de Usenet.

Je vous livre quelques citations de l'article, pour vous faire une idée du ton général :

« Cette "Histoire De Usenet" explore ces aspects du point de vue de la théorie psychanalytique des groupes. »

« La transmission de paquets passant de nœuds en nœuds ayant la même autorité sans système central (...) »

« (...) la mise à disposition, pour tous, d'un travail d'un des membres du groupe afin d'améliorer le fonctionnement du groupe tout entier. »

« La structure ouverte de Usenet va garantir son succès. »

« Chaque administrateur est maître chez soi, et fait ce qu'il veut. »

« Mais [la toute puissance] est limitée à leur site. Les administrateurs règnent (...) sur un royaume qui ne comporte qu'un seul sujet : eux-mêmes. »

« Sur Usenet, les pseudonymes sont mal vus, et chaque contributeur se doit d'avoir une adresse e-mail valide. »

« La fantasmatique sous-jacente est assez explicite : elle est anale – il faut garder le groupe propre (...) »

« Le troll est ainsi à Usenet ce que le masochisme est au fonctionnement psychique : un gardien de vie. »

« Au flaming, les membres du groupe réagissent parfois par un flooding. »


Bonne lecture.

11 octobre 2006

Le syndrome du PowerPoint

Comment, ça ne vous dit rien ? C'est le syndrome du PowerPoint, chez Temps Réels.

Ils pointent également vers un document intitulé « Comment devenir beau, riche et intelligent grâce à Word, Excel et Powerpoint », ce qui peut toujours servir.

09 octobre 2006

Réplication entre centraux

Rappel d'une vieille idée (un peu à la base du truc, hein) : ça serait bien si n'importe qui pouvait installer un moteur « Les Fûts », que ce soit sur un gros serveur avec QoS, sur un LAN coupé du net, voire sur un portable, et que ces moteurs répliquent leurs données entre eux, à la manière de NNTP. J'ai bien dit « à la manière » ;-) On aurait des protocoles standard pour les échanges, et le b*rdel fonctionnerait aussi bien comme NNTP que comme un SCM... Le rêve.

À ce que j'ai compris, XWiki a aussi une vision qui parle de réplication, avec XWiki Concerto, pour lequel ils viennent d'obtenir une aide de l'ANR (Agence Nationale de la Recherche).

Pour les Fûts, l'idée est de considérer que les données, versionnées, faut-il une nouvelle fois le rappeler, sont des résultats de traitements, et que les traitements sont ce que font les centraux quand ils exécutent les commandes postées par les caches applicatifs.

Le central assure :
  • l'absence de conflits entre les traitements (puisque c'est lui qui les ordonnance)
  • la cohérence des données
  • l'indexation des données
  • le versioning des données
Il dispose :
  • d'un référentiel temporel
  • d'un référentiel des versions de données (« révisions »)
Il peut être découplé de tout espace de stockage. Son boulot est surtout d'assurer la gestion des informations sur les données, pas forcément des données elles-mêmes. En revanche, il archive pas mal de trucs, en particulier toutes les commandes.

Quand deux centraux s'échangent des informations, on ne fait transiter que les commandes (« tout est message », rappelez-vous), pas les données. Ça n'aurait aucun sens de répliquer les données, car on est incapable d'assurer la cohérence d'une donnée isolée.

Les données sont en quelque sorte des validations par les centraux des commandes. Les commandes sont donc estampillées « non validées, locales à tel cache applicatif », ou « validées, provenant de tel central ». Les données sont estampillées « non validées, locales à tel cache applicatif », ou « validées, provenant du central auquel est rattaché le cache applicatif »

Même si elle ne concerne que les commandes, la réplication entre centraux doit s'appuyer sur des identifiants « universels », qui permettront de référencer dans tous les centraux les mêmes objets :
  • identifiants d'articles (c'est le champ Message-ID dans NNTP)
  • identifiants d'utilisateurs (c'est la base visible de la base du projet !)
  • dates
  • URLs, e-mails, adresses IP...
  • types d'actions élémentaires
  • autres identifiants, externes (exemple : ISBN...)

Aquitaine : Forum de l'Économie Numérique le 12/10

Ce jeudi 12 octobre se tient à Bordeaux le Forum aquitain de l'Économie Numérique. Il y aura du France Telecom, du Capgemini, du Microsoft, mais aussi du Google entre autres.

Via Bertrand Duperrin et Miss Tics.

05 octobre 2006

Amazon's S3 — et EC2

L'initiative Simple Storage Server (S3) d'Amazon semble être une excellente solution pour monter sans s'embêter avec des locaux et du matériel, une baie virtuelle de stockage de données.

Par ici, un développeur en parle : Replacing my home backup server with Amazon's S3.

Le tarif mensuel : $0.15/GB pour le stockage, et $0.20/GB pour le transfert. Largement dans les moyens des Fûts.

Amazon lance aussi son Elastic Compute Cloud (EC2), pour du CPU virtuel.

Rencontre avec XWiki (2)

P'tite photo sur le blog de Luis Arias : David Andriana @ XWiki.

04 octobre 2006

OpenAjax Alliance White Paper

Un White Paper sur Ajax chez l'OpenAjax Alliance (Google mais pas Yahoo!, Mozilla mais pas Microsoft...) : OpenAjax Alliance White Paper. Le PDF fait 23 pages, en anglais et avec de jolis schémas.

Humour de développeur

Je vous recommande : How to Shoot Yourself in the Foot in Any Programming Language.

03 octobre 2006

Forum Architectes (SOA) le 19/10

C'est ballot, le jeudi 19/10 il y a un forum Architectes à Paris, centré sur SOA.
Inscription sur le site de Microsoft France.

Il faudra rentrer tôt pour la soirée Les Fûts à Talence :-)

02 octobre 2006

Rencontre avec XWiki

De passage à Paris en fin de semaine, j'ai pu rencontrer Ludovic Dubost et Luis Arias, de XWiki.

XWiki est un wiki en Java, avec un coeur open-source, une équipe française et une communauté importante. Lire Why Is XWiki Different. Les clients peuvent demander à intégrer une surcouche spécifique à leur besoin au-dessus de XWiki. Un exemple, Chronopolys :
CHRONOPOLYS® est solution hébergée au service des collectivités locales et territoriales. CHRONOPOLYS® sert à organiser ou simplifier la gestion des projets de la collectivité, c'est-à-dire les échanges entre ses agents internes et externes : la coordination, le partage d'information, la planification, etc.
Chronopolys s'appuie sur XWiki.

J'avais regardé le produit de loin au début du dev des Fûts. C'était intéressant de discuter avec son fondateur.
On a échangé nos points de vue, notamment sur la réplication de wikis, et sur l'utilité ou non de la transversalité. Intéressant.

26 septembre 2006

Un forum en Ajax

Un forum 3 zones en Ajax :
http://www.jackslocum.com/forum2/

L'annonce par le développeur, dans un classiquement ignoble phpBB :
http://www.jackslocum.com/forum/viewtopic.php?t=72

Dans le forum Ajax, on notera la liste scrollable définitivement user-friendly, sauf qu'il a gardé la... pagination ! du forum HTML. Impressionnant de bêtise. J'espère qu'il peut faire sauter ça.

21 septembre 2006

Soirée les Fûts : 19/10

Une soirée entre architectes qui aiment la bière...
  • Qui : ouvert à tous.
  • Quoi : du buzz 2.0, de la binouze et de la détente.
  • Quand : dans un mois, jeudi soir 19 octobre 2006.
  • Où : sur Bordeaux, mais on ne sait pas encore où précisément. Contactez-moi pour dire si vous venez. Selon le nombre de participants et les avis, on choisira le lieu.

12 septembre 2006

Spread : CMS open-source

Citation :
Spread est un outil de gestion de contenu ergonomique
  • Il se concentre sur les besoins essentiels des associations ou PME.
  • Il utilise AJAX pour simplifier les insertions de contenus multimédias.
  • Il applique au Web les principes des applications classiques : palettes d'outils, drag & drop...
  • Il est Open Source
  • Il est basé sur le framework Ruby on Rails et la bibliothèque Ajax Prototype.
Eh oui, le fameux Ruby on Rails...

C'est fou le temps qu'on a à perdre et les jolies choses qu'on peut faire avec ces technos de djeunz.

« Netvibes 2.0 »

Un article chez Fred Cavazza, qui généralise un aspect de la vision qui sous-tend la plateforme associative des Fûts : Netvibes 2.0 ?

Oui, oui, je sais, Netvibes a levé 12 M€ récemment...

Reconfiguration de réseau

Franchement, en 2006, il y a encore des gens qui paramètrent des adresses IP en dur dans leur environnement ? Comme par exemple l'adresse IP d'un serveur Subversion ?

Mais c'est dingue ! Et comment font ces gens quand la cartographie du réseau évolue ?

Non ! Ils se font à la main les relocations des 20 projets sur chaque poste ?

Ah, oui.

Bien sûr...

Fichier hosts, qu'on te dit.

08 septembre 2006

Priorités techniques (versionnage des données)

On a eu un débat sur les priorités dans le développement :-P

Une question forte était notamment de savoir s'il n'aurait pas été plus judicieux de faire de suite un amorçage avec une petite IHM sexy, au lieu de régler la question du versionnage des données.

J'avoue que je n'ai pas de réponse à cette question, j'ai vraiment hésité à implémenter le versionnage des données dès la v0.2 (implémentation du forum).

Ce que je peux dire, c'est que pour le développement du forum, le versionnage des données offrait d'emblée les points suivants :
  • les contextes de navigation, notamment dans les résultats de recherche (les résultats d'une recherche lancée à un instant <t> restent inchangés même si de nouvelles données sont arrivées à <t+1>, <t+2>... <t+n> : le rafraîchissement de la recherche est à la discrétion de l'utilisateur, pas du système)
  • le suivi des commandes pour les traitements asynchrones (si une commande à <n+2> ne passe pas, on peut revenir à l'état <n> ou <n+1>, selon l'intégrité demandée : passage de commandes par lots, etc.).
    À vrai dire, dès qu'on fait du traitement asynchrone, je ne vois pas comment s'en sortir sans versionnage.
Et bien sûr, sur le long terme, le versionnage des données offrira :
  • des sauvegardes métier faciles et cohérentes
  • une possibilité de gérer la concurrence entre des modifications multi-sites
Bien sûr, les utilisateurs lambda n'ont que faire de ces subtilités. Le versionnage est surtout un confort pour les administrateurs fonctionnels, car pour chaque version étiquetée, le système leur garantit la cohérence des données.

Cependant ce versionnage est tellement galère à implémenter from scratch, que je n'arrive même pas à imaginer la somme monstrueuse d'efforts qu'il faut déployer pour garantir une migration souple des données d'un système sans versionnage, vers un système avec versionnage. À moins bien sûr d'arrêter les serveurs pour verrouiller les données, mais c'est pas du jeu ;-)

C'est une autre façon de voir les choses : y avait-il un moyen acceptable de faire autrement que d'implémenter ce merdier dès le début ?
La question ainsi posée, ma réponse serait proche du « non »...


Dans le même genre, il y a d'autres « priorités techniques discutables » :
  • Unicode
  • internationalisation (1)
  • gestion des timezones
  • gestion répartie des identités
  • centralisation de la publication des messages
  • sessions multi-sites (un peu de SSO)
  • ...?
Cela, alors que le Back&Reload n'est pas encore géré...

Le débat reste ouvert, ainsi que les commentaires :-)


(1) Pour mémoire, sur l'internationalisation, voir le post de Tristant Nitot :
Localization and Internationalization: what some of us have learnt

05 septembre 2006

Ben tiens : rev link vers blog associatif

Juste le temps de retrouver mes pénates de développeur fou, pénates qui consistent entre autres à relever certains blogs, et je m'aperçois que LSM cite le projet... C'est par ici. LSM y recense les caractéristiques de ce que serait un bon outil web pour les associations.
LSM, Laurent Samuel, tient entre autres un blog intitulé «Créer et animer une association Loi 1901», que j'ai déjà cité.

01 août 2006

OpenID (Verisign)

Et le gagnant est... OpenID, visiblement une initiative de Verisign. C'est une solution gratuite et réellement distribuée ("anybody can be an OpenID server") pour la problématique du Single Sign-On sur le web.

Vite ! une implémentation gratuite, qu'on puisse tester.

31 juillet 2006

Lafraise.com : Success Story

1er mars 2004 :
Voir : en bas de la page d'archives http://www.lafraise.com/blog/2004/03/index.php


19 juillet 2006 :
(...) je viens de signer la vente de Lafraise, à Spreadshirt et qu'une page va bientôt se tourner, dans ma courte vie.
Voir : l'article intitulé «Ma retraite à 35 ans», au milieu de la page d'archives http://www.lafraise.com/blog/2006/07/index.php


Lafraise.com. Voir les détails magnifiques de la création de la boîte en plongeant dans ledit blog. Après 3 ans d'activité commerciale web personnalisée -- eh oui, c'est ça la technologie au service des gens -- Patrice arrivait à 80 kEUR de CA mensuel, et finalement revend.

Cette histoire est exemplaire, magnifique. Bien, bien, avant les 80 kEUR de CA, c'était tout simplement un exemple, THE exemple, de comment on pouvait comprendre internet. La revente de ces derniers jours clôt le chapitre de façon pragmatique.

27 juillet 2006

Achats IRL vs. achats online

L'autre jour j'achète une imprimante(*).
Je prends la voiture, je vais chez Surcouf, j'achète, je repars.
Au moment de déballer l'engin, pour une sombre histoire de détails sur les caractéristiques, je regarde sur surcouf.fr. J'y vois la bête 70 EUR moins chère qu'en ville. Mazette me dis-je.
Je reprends la voiture, je vais me faire rembourser, puis je me fais livrer par le net.

Quelques jours plus tard j'achète un disque dur(**).
Donc là j'ai bien compris le truc, je regarde d'abord sur le net, et je vais au magasin pour comparer. L'appareil y est à 10 EUR moins cher que sur le net, mazette.

Çà alors !


(*) Brother HL-5250DN, laser N&B, réseau, compatible MacOS / MacOS X / Win XP, silencieuse, stable, 20ppm recto-verso, imprimante que je vous recommande du reste.
(**) Non, je ne prévois pas mes achats à l'avance, quelle idée.

25 juillet 2006

Blogger : publication différée

C'est quoi ce bug ? On ne peut pas faire proprement de publication différée sous Blogger ?
Si je prépare des notes le 23/07, ce n'est pas pour les voir apparaître comme datées du 23 alors que je les publie le 25 !

23 juillet 2006

Quand une plateforme blog tombe en panne: le cas TypePad

Via pointblog : Panne mondiale pour TypePad ?

En deux mots, les blogs TypePad étaient accessibles en lecture, mais les auteurs ne pouvaient pas poster de nouveaux messages. C'était le 12 juillet, et ça a duré moins d'une journée.

C'est exactement ce qui se passe quand la consultation des messages se fait depuis un cache applicatif réparti mais avec une publication de messages centralisée. C'est le choix suivi pour le lancement des Fûts. Ce n'est pas le cas d'un système NNTP comme Usenet par exemple.

Tout ça pour dire qu'intégrer toute la logique NNTP au phénomène des blogs, serait une bonne grosse révolution. Redondance, fiabilité, pérennité.

Sans parler du cross-blogging dans les commentaires, qui est une sous-partie de ce qu'apporte NNTP, et qui pour le coup est dans les principes initiaux des Fûts. Mais c'est applicatif. La révolution devrait porter sur l'infrastructure, pas seulement sur l'applicatif.
Et qu'on ne me parle pas de RSS ! cette espèce de tam-tam XML, où «chacun» est responsable de faire la réplication des informations. RSS est applicatif. Ce n'est pas du transport, il faut arrêter cette confusion.

Un peu de distribution PHP/Java

On teste la publication d'un message sur un forum des Fûts, avec des appels synchrones uniquement, en mode DEBUG et en mono-thread.
Les appels distants pour la publication d'un message sont les suivants :
  1. PHP notifie Java que des commandes sont à traiter
  2. Java récupère auprès de PHP les commandes à traiter (en lot)
  3. Java réserve auprès de PHP une nouvelle version des données («locked rev»)
  4. Java sollicite PHP pour chaque message posté : prise en compte des données dans la rev applicative, calcul des threads
  5. Java relâche la rev auprès de PHP
  6. Java indique à PHP que les commandes sont traitées (une par une. Petit bug)
Total pour un message : un appel distant de PHP vers Java, 5 appels distants dans l'autre sens.

En cible, 1./2. forke.
Pour les tests, 1./2. est synchrone.

Voici les temps de réponse :
  1. PHP/PC ---(local)---> Java/PC
    moyenne 1356 ms, écart-type 64 ms (5 %)
  2. PHP/PC ---(LAN)---> Java/minimac
    moyenne 6988 ms, écart-type 2828 ms (36 %)
  3. PHP/free.fr ---(internet)---> Freebox ---(LAN)---> Java/PC
    moyenne 3266 ms, écart-type 1191 ms (36 %)
  4. PHP/free.fr ---(internet)---> Freebox ---(LAN)---> Java/minimac
    moyenne 7778 ms, écart-type 3672 ms (47 %)
Axes d'améliorations :
  • Mettre une vraie machine en frontal SOA DMZisé. Le «minimac» PPC patine quand on veut lui faire faire du J2EE.
  • Penser à un serveur hébergé.
Urgence :
  • Aucune. Depuis quand 10 secondes pour poster un message sont-elles un délai rédhibitoire sur le web ? ;-)

21 juillet 2006

Tests de mini-scénarios web

Pour le développement, il y a une catégorie de tests qui se déroulent sur des scénarios, c'est-à-dire des enchaînements de pages. On procède ainsi :
  1. on décrit la suite de pages du site web à tester. Soit en donnant explicitement les URLs, soit en indiquant quel clic simuler, soit en indiquant quel formulaire soumettre.
  2. pour chaque page, on donne la série de tests à passer sur le HTML : validité du HTML, contenus attendus, contenus interdits...
  3. pour chaque page, on donne la série de tests à passer sur l'état de la base : le test le plus simple étant de contrôler le nombre de lignes dans certaines tables.
Note : c'est assez différent de la «fermeture Hyper Texte», qui valide que tous les liens à l'intérieur d'un site sont cohérents, mais qui concerne davantage un site statique qu'un site dynamique.

Voici les écrans qui résument les résultats des tests sur scénarios.

Tout d'abord l'écran global, qui montrait dans sa première version les résultats de validation HTML, et qui montre maintenant en sus les résultats de validation DB :


La colonne «v.» donne le nombre total de tests pour chaque page, HTML et DB confondus.
En rouge, le nombre de tests qui ne passent pas.

Puis l'écran qui résume l'évolution de la base au fil du scénario :


En lignes les tables, en colonnes les étapes du scénario (les actions SUBMIT sont indiquées), et à l'intérieur du tableau les nombres de lignes dans chaque table. Quand le test ne passe pas (en rouge), on indique le nombre de lignes attendu et le nombre réel.

16 juillet 2006

Les joies de l'intégration

Une servlet avec du joli code Java qui marchait bien sur de l'Intel Core Duo, ne fonctionne plus après déploiement sur un Mac mini PowerPC G4.

Je n'arrive plus à lui dire de lire plusieurs octets à la fois en HTTP :
final InputStream is = socket.getInputStream();
// Ne fonctionne pas sur le Mac mini :
// final int byteCount = is.read(bytes, 0, 4096);
// --> SocketException: Illegal Argument
final int b = is.read(); // Pour le Mac Mini.

Résultat de ce changement : perfs -11%


Ah, et incidemment, toujours sur des tests en LAN, le déploiement de la servlet sur le PowerPC G4 rend l'ensemble 2,6 fois plus lent qu'avec le déploiement sur le Core Duo.
  • PC : Core Duo 2,8 GHz / 2 Go, Windows XP, JDK Sun 1.4.2_11, Tomcat4
  • Mac : G4 1,25 GHz / 512 Mo, NetBSD 3.0, JDK Blackdown 1.3.1, Tomcat4

12 juillet 2006

Associations et Web Agencies

Je vois en ce moment des associations se faire démarcher de façon assez agressive par des Web Agencies françaises, qui leur proposent de monter des sites web rapidement, facilement, et économiquement.

À l'adresse de ces agences, je pense que le secteur de marché est bon ;-)

Cela dit, au vu des sites de ces boîtes, ce qu'elles proposent relève davantage du CMS que de l'outil collaboratif.

Où est la plus-value ?

1. Dans la qualité ?
Les associations s'en fichent un peu.

2. Dans le prix ?
Leur prix est standard : 3000 ~ 3500 EUR pour un site institutionnel d'une dizaine de pages.
L'approche commerciale agressive est de proposer un «partenariat». En gros : donne-moi ton fichier client et je te fais une méga-ristourne.

Je ne mettrai pas de lien vers les sites de ces agences. Ce n'est pas pour éviter de leur faire de la pub, mais par respect des contacts associatifs qui m'en ont parlé.

J'ai quand même le droit de mettre un lien, celui de Médiacité, qui a la bonne approche à mon avis : «Notre vocation est de répondre aux besoins de communication publique et de promotion territoriale».

Ils ne font pas partie des agences qui démarchent, donc je peux en parler :-)

Pourquoi est-ce la bonne approche ? Parce qu'en étant spécialisé dans la promotion territoriale, le financement peut être mixte. Et ça, c'est très clairement un élément différenciateur :-) Cela dit pour des petits sites, je ne sais pas si le modèle reste bon. Ah, on me fait signe que oui. Alors oui.

Techniquement, d'après ce que j'en ai vu, eux aussi font du CMS.

Plateformes de blog : Gandi

Je viens de créer un blog chez Gandi, vu que j'y gère le domaine halfj.com.

L'URL : http://blog.halfj.com/.

Ma première impression est plutôt mitigée.

"Il y a du potentiel" (façon 2.0 de dire que l'interface est compliquée).

09 juillet 2006

Outil de diaporama

Une des demandes du Jardin Sauvage (tiens, ça me fait penser qu'il faudrait publier un compte-rendu de la réunion, un jour) était de pouvoir mettre en ligne des diaporamas. Avec fond sonore s'il vous plaît.

J'ai trouvé Lightbox JS V2.0, ça a l'air assez fort.
C'est du pur JavaScript, uniquement côté client, non intrusif pour le reste du code HTML de la page.
Voir des exemples d'utilisation sur le blog de parapente Le rêve d'Icare.

Qu'en pensez-vous ?

Connaissez-vous d'autres produits pour faire des diaporamas ?


Quant à la lecture des MP3, le Dewplayer s'impose, à mon avis.

Perfs de la couche présentation

Avant de passer aux appels distribués PHP/Java, voici quelques mesures de temps de traitements applicatifs PHP sur le forum en l'état.
Ces mesures font apparaître les temps hallucinants dus à la couche de présentation.

Pour rappel, aujourd'hui :

1. Le traitement applicatif PHP remplit des DataBeans, c'est-à-dire des objets qui n'ont que des méthodes getXxx() et setXxx().

2. Le relais est ensuite passé à la couche de présentation, qui sérialise les DataBeans en XML par la méthode «toXml()». Pour de sordides raisons de limitations de PHP, on normalise le résultat en UTF-8 propre, avant d'appliquer la XSLT qui a servi au maquettage XHTML. On renormalise ça en UTF-8 propre, puis on formate le XHTML en HTML 4.01 «optimisé». Cela fait 5 passes où l'on utilise XML.

Ce sont ces passes qui prennent du temps.


Les mesures ont été faites en une heure, sur des écrans de consultation en mode debug, avec le jeu de données «dataset-005» (ça, c'est pour les intimes).
On a testé l'affichage d'une liste de 3 forums, l'affichage d'une liste de 38 messages dans un forum, en tri par date puis en tri par enfilade, l'affichage d'un message, avec une liste sous-jacente en tri par date puis en tri par enfilade.



1. Liste de 3 forums

XML du DataBean sérialisé : 13 Ko
HTML : 14 Ko
Temps total : 612 ms
Couche applicative : 226 ms (37%)
Couche de présentation : 374 ms (61%)

2. Liste de 38 messages, tri par date

XML du DataBean sérialisé : 29 Ko
HTML : 70 Ko
Temps total : 1400 ms
Couche applicative : 341 ms (24%)
Couche de présentation : 1042 ms (74%)

3. Liste de 38 messages, tri par thread

XML du DataBean sérialisé : 29 Ko
HTML : 59 Ko (il y a moins de lignes de séparation dans la table qu'en tri par date)
Temps total : 1275 ms
Couche applicative : 335 ms (26%)
Couche de présentation : 925 ms (73%)

4. Un message, avec liste sous-jacente triée par date

XML du DataBean sérialisé : 18 Ko
HTML : 23 Ko
Temps total : 924 ms
Couche applicative : 307 ms (33%)
Couche de présentation : 605 ms (65%)

5. Un message, avec liste sous-jacente triée par enfilade

XML du DataBean sérialisé : 18 Ko
HTML : 23 Ko
Temps total : 943 ms
Couche applicative : 340 ms (36%)
Couche de présentation : 587 ms (62%)

6. Répartitions moyennes détaillées :
  • Couche applicative : 31%
  • Couche de présentation : 67%
    • Sérialisation du DataBean en XML : 2%
    • Transformation XSLT : 29%
    • Formatage du HTML : 22%
    • Temps total des deux renormalisations en UTF-8 : 14%




Les pistes d'optimisations sont les suivantes, :

1. Ne plus s'appuyer sur XML pour la couche de présentation.

C'est-à-dire construire directement le HTML en PHP en une passe, au lieu d'utiliser XML sur 5 passes. C'est fou comme c'est plus rapide le PHP, si, si. On devrait gagner entre 50% et 60%.

Néanmoins il faut garder la skin XSLT, est passer des UAT avec, car c'est la seule qu'on ait aujourd'hui qui soit corrélée à un maquettage hors serveur.

2. Faire la mise en page davantage en CSS plutôt qu'en HTML.

On gagnera évidemment d'autant plus de temps que le HTML sortant sera proche d'un bête dump du DataBean.

2.1. Passer à des entités numériques (&#233;) plutôt que codes (&eacute;) quand on y gagne. Sur «é» (&eacute;), on gagne 2 octets.

Le fait de ne transférer que des octets sur 7 bits n'est pas négociable. Donc autant gagner sur la taille des entités.

3. Afficher plusieurs messages par page.

S'il faut une seconde en dev (2 sec. en prod) pour afficher un message, ça va faire cher de la discussion.
Il faut impérativement permettre de lire les messages par lots.




Quand seront faites ces optimisations :

4. Pas avant l'automne.

Les optimisations 1 et 2 ne sont même pas critiques pour les premiers utilisateurs. On a des temps de réponse de l'ordre de 1,5 sec. sur poste de développement, donc de 3 sec. en production. Je parie que ça passe.

Pour l'optimisation 3, là, c'est sûr, ça va se voir. Cela dit, arrivons d'abord au béta-test.

08 juillet 2006

Navigation structurelle

Je ne parle pas là de la localisation dite «chemin de fer» de type «a -> b -> c» en haut des pages qui indique à quel niveau de l'arborescence du site on se trouve.

Je veux parler des facilités de navigation au sein d'un site ou d'un sous-site offertes par certains navigateurs.

Dès qu'on navigue dans une liste, on doit avoir des liens «Premier élement», «Élément précédent», «Élément suivant», «Dernier élément», et «Retour à la liste».

Les liens <a> correspondants doivent avoir un attributs«rel», respectivement à "first", "prev", "next", "last", et "up".

Et la partie <head> de la page doit contenir des <link> avec les mêmes attributs. Cela permet à iCab, Opera ou Mozilla, d'afficher ces liens de façon uniforme, dans leur «Site Navigation Toolbar» (Mozilla), encore appelée «Navigation bar» (Opera).

L'article de Jajob Nielsen sur iCab sur le sujet : http://www.useit.com/papers/icab.html

Je me demande : qui utilise ces liens pour surfer sur le net ?

Pour un intranet, ça a davantage de sens à mon avis. What do you think?

03 juillet 2006

Passage facile à Eclipse 3.2

Eclipse 3.2 : 120 Mo en téléchargement.
Copier/coller du plugin pour Subversion depuis la 3.1.2, et redémarrage sans aucun problème.

C'est beau, la technique.

29 juin 2006

Sessions et contextes de navigation (2)

Mais non, ce n'est pas compliqué.

La session, c'est l'endroit où l'utilisateur fait ses actions.
Elle sert à logger les actions qui ont lieu dans une « unité de connexion », c'est-à-dire entre le moment où l'utilisateur se connecte -- il peut même s'identifier, on ne lui en voudra pas --, et le moment où il se déconnecte -- avec un beau timeout si besoin.
La session permet de rapprocher des actions entre elles, en disant en gros qu'elles sont l'œuvre du même utilisateur.

Les sessions inactives sont effacées au bout de, euh... d'un certain temps.

Le contexte de... données ? de page ? Ce sont des données mises dans un cache temporaire, au sein de la session.
Ce sont des données qui ne bougent pas au sein d'une « unité de consultation ».
Par exemple, lorsque l'utilisateur rapatrie une liste de messages, soit en se connectant une première fois, soit en cliquant sur « Rafraîchir », soit en effectuant une recherche, cela crée un contexte au sein de la session. L'utilisateur peut naviguer dans la liste, y lire des messages, la liste reste immuable. En particulier, elle n'est pas impactée par l'arrivée éventuelle de nouveaux messages dans le système. Il faut pour qu'il y ait un tel changement, un rafraîchissement explicite.

Pour ne pas dupliquer les données, ces contextes s'appuient sur des données « versionnées ».

Et pour ne pas faire exploser la base applicative, les contextes de données sont effacés au bout de, euh... disons que quand ça explose c'est trop tard.

Le contexte de... navigation ? de page ? Ce sont des informations de type contexte, qu'on accepte de véhiculer de page en page, pour éviter d'avoir à stocker trop d'informations en base.
Ce contexte suit une « unité de navigation ».
C'est typiquement un type de tri, qui peut être changé à l'affichage, même s'il impacte la navigation, sans avoir à recharger la liste.

Les contextes de navigation sont propagés de page en page, à condition de ne pas s'être vautré dans le code HTML.

Seule la session peut être suivie par un cookie. Et encore, ça coince dans le cas où deux sites sont sur le même serveur.
Le cookie sert donc davantage à la session multi-serveurs.
Hrem... Vaste sujet.


Ainsi, avec les contextes de données on peut faire du multi-écran et naviguer dans deux listes de résultats de recherches différentes, et avec les contextes de navigation on peut naviguer de façons différentes dans une même liste.

C'est super simple, non.

26 juin 2006

Onduleur

Installation de prises parafoudres pour les postes de travail, et d'un onduleur pour le serveur.

Modèle : MGE, UPS SYSTEMS, Protection Center 500. Acheté à la Fnac.

25 juin 2006

Entreprise > Association > Startup

Comment dire... Entre Paul Graham qui explique dans ses articles comment et pourquoi créer sa startup avec le minimum vital, Jean-Hubert qui détaille avec humour et pédagogie les étapes de la création d'une SARL en France en 2006 -- on fera avec profit également un tour chez Jean-Luc Watine, «Entrepreneurs: Créer et choisir son statut» --, et Laurent Samuel, qui vient de sortir une chronique intitulée L'association 1901 au service d'un projet d'entreprise» sur Envie d'entreprendre (mais si, rappelez-vous, l'infatigable Olivier Marone !)... il y a comme des super prémices, là.

C'est fou comme tout s'enchaîne parfaitement.
Il n'y a qu'à relier les points.

Et sinon, le blog de Laurent Samuel, «Créer et animer une association Loi 1901», me semble tout à fait bien, en ce qui concerne les associations.

22 juin 2006

Report annoncé

Diantre, comme le temps passe. Déjà fin juin et pas de béta publique ?

Entre les réunions avec les associations, le développement, l'écriture des statuts, et d'autres choses qui n'ont rien à voir avec les Fûts mais qui ont bousillé le planning, ça n'avance pas comme prévu.

Donc cette semaine j'ai annoncé à deux associations intéressées que la sortie publique de la plateforme Les Fûts était reportée à la rentrée de septembre.

Bugzilla

En termes de bug tracking, Bugzilla est installé sur le PC pour «évaluation». Entendre : on va clairement utiliser le produit, mais on ne le migrera que plus tard sous NetBSD.

Petite remarque, ça commence à faire beaucoup d'outils indispensables qui sont installés ou auprès desquels on est inscrits, mais qui ne sont pas reliés les uns aux autres ! Basecamp, Blogger, forums NNTP, Google Groups, mails, halfj, CruiseControl, Bugzilla, dbdoc, codegendoc, Antdoc...

À part ça, l'installation sous Windows d'une appli web écrite en Perl est encore et toujours un poème. Un poème sale et douloureux, mais un poème.

20 juin 2006

Consultations multi-serveurs

Un utilisateur peut faire suivre sa session d'un serveur à l'autre.

Quand il y a des modifications métier, pas de problème, les impacts sont redistribués par le back-end vers les différents serveurs applicatifs.

Mais que se passe-t-il quand il y a des modifications applicatives ? Par exemple l'utilisateur a lu tels messages d'un forum sur tel serveur, ils apparaissent donc comme «lus». Il navigue jusqu'à un autre serveur, qui, pas de bol, donne accès au même forum. Les mêmes messages y apparaissent donc comme «non lus». Et c'est bien le principe : les tâches de consultation se font en local sur les serveurs applicatifs, sans allers-retours vers le back-end. Les deux serveurs sont donc désynchronisés.

Pour permettre de récupérer au cas par cas la cohérence entre les états applicatifs des différents serveurs front-end, il y aura un bouton «Synchronize», qui demandera au back-end de mettre à niveau tous les états applicatifs de l'utilisateur.

Versions des objets métier

Gérer les contextes de navigation, c'est bien. On permet ainsi à l'utilisateur de changer ses modalités d'affichage d'une fenêtre à l'autre. Mais que se passe-t-il quand les données elles-mêmes changent pendant ce temps ?

On voit qu'il faut que chaque contexte de navigation pointe explicitement vers un «jeu de données figé», une baseline, afin de rester cohérent quand on navigue au sein des pages.

Par ailleurs, que se passe-t-il quand les données sont en maintenance ? Par exemple, de nouveaux messages ont été postés, et le back-end effectue en tâche de fond le calcul de tous les threads. Il a besoin pour cela de réserver la totalité des messages, car potentiellement tous les threads vont être modifiés.

On peut utiliser des verrous, que ce soit des verrous applicatifs ou des verrous techniques (les fameuses «transactions». Mouarf). Mais cette solution a le léger inconvénient d'interdire toute autre modification des données pendant la maintenance. Cet inconvénient est léger en effet, car le fait le back-end sert entre autres à ordonnancer les tâches de modification.

Cependant, les verrous ne permettent pas de gérer correctement les contextes de navigation. En effet, quand le verrou est relâché, les données courantes ont été modifiées. Le contexte de navigation est alors invalide.

Et donc... on en revient aux versions, aux baselines.

Les versions correspondent à des «états cohérents» des données. Cette cohérence est assurée par le back-end. Il n'y a jamais de versions concurrentes, jamais de merge.

C'est toujours le back-end qui incrémente les versions, jamais directement l'utilisateur. L'utilisateur ne fait que poster ses demandes d'actions, et c'est le back-end qui en fait la résolution.

19 juin 2006

Foot

Voici une vidéo qui rappelle que le foot lui aussi peut être poilant.

(via le Standblog)

Sessions et contextes de navigation

Tout d'abord, les sessions doivent être multi-serveurs.

Bonjour la contrainte technique !

Toute la gestion des sessions doit pouvoir se faire en callback, par l'intermédiaire de services Web. Les timeouts sont multi-serveurs, les authentifications-zet-identifications sont multi-serveurs, les purges sont multi-serveurs.
On en arrive au final à implémenter la gestion des sessions à la mimine.

Chaque serveur front-end a son identifiant public de session (un hash sur 32 caractères, passé en paramètre HTTP «?session=» dans les URLs, avec un jour l'utilisation de cookies), mais des «rapprochements» se font depuis le serveur centralisé back-end.


Ensuite, on implémente les contextes de navigation.

En deux mots, il s'agit de permettre le multi-fenêtrage, ou plus simplement de repérer si l'utilisateur fait du multi-fenêtrage. Il y a en particulier un impact sur les paginations de listes.

Ainsi, si l'utilisateur affiche une liste paginée de messages dans la fenêtre #1, navigue un peu dedans, charge la même liste dans la fenêtre #2, y fait «Refresh» pour récupérer les nouveaux messages, puis revient à la fenêtre #1, s'il reprend sa navigation dans la fenêtre #1 on doit au moins lui dire «Désolé, le contexte a changé, la liste a été rafraîchie» et on le repositionne d'office en première page.

Pour certaines listes, on permet au contraire les deux navigations simultanées, en gérant les deux listes. Par exemple, lorsque les fenêtres #1 et #2 affichent des résultats de recherches : il ne faut pas que la fenêtre #1 soit rafraîchie avec les données de la fenêtre #2. L'intérêt de l'utilisateur était peut-être, justement, de comparer les deux listes de résultats.

Accessoirement, le Back&Reload sera géré avec une notion proche du contexte de navigation. Il devrait simplement y avoir en sus un timeout en clair dans les identifiants publics de formulaires.

Les identifiants publics des contextes de navigation sont des hash de 32 caractères, passés en paramètre HTTP «?context=» dans les URLs.
Note : impossible d'utiliser les cookies pour cette notion, puisqu'elle dépend de la page affichée, et non de la session.

15 juin 2006

Présentation à Graine d'école (suite)

Graine d'école est une association de parents sur Pessac, qui propose une approche participative dans l'animation d'un jardin d'enfants (enfants de 2 à 5 ans, lundi, mardi, jeudi et vendredi) et d'un centre de loisirs (à partir de 3 ans, mercredi et vacances scolaires).

Adresse : 12 avenue de Bardanac, La Paillière, Pessac
Téléphone : 05 56 84 99 69
E-mail : grainedecole@wanadoo.fr
Site web : ben, justement...
[Edit du 25/07 : grainedecole.fr est en ligne]

Leur besoin web est d'avoir une visibilité, d'afficher les informations institutionnelles, de permettre de télécharger des documents, et d'afficher le calendrier des événements.

La réunion a été sympa, riche, et constructive.

La présentation des Fûts a évoqué :
  • l'organisation des Fûts, le prix
  • la maintenance technique par les Fûts, les serveurs
  • le choix de l'hébergement frontal (et éventuellement du nom de domaine) par l'association
  • la gestion de contenu par l'association
  • les fonctionnalités de blog, forum, et wiki
On a commencé par une discussion assez technique, qui a donné lieu à l'expression d'un scepticisme, légitime, sur les points suivants :
  • vu l'ampleur de la tâche, quelle est la capacité des Fûts à réaliser
    quelque chose pour fin juin ?
  • pourquoi tout redévelopper en PHP/Java, alors qu'il existe déjà des produits tout faits, comme Joomla!, qui répondent à 95% des besoins d'une association ?
  • qui, en pratique, a besoin que ses sites associatifs soient reliés par une infrastructure commune en back-office ?
Bon, là c'est le positionnement-même des Fûts.


Ensuite, l'association a parlé d'un besoin prégnant et urgent, à savoir être référencée, être « trouvable » sur internet. On a décidé que l'association ferait les choses suivantes d'ici fin juin :
  • choisir une URL (en .free.fr, en perso.wanadoo.fr, en .com, peu importe)
  • publier une page HTML minimaliste (il y a déjà une petite plaquette de l'association, au format Publisher)
  • acheter des Google AdWords sur les deux mois d'été pour être visible sur Google
Par rapport à internet, l'association utilise déjà :
  • les Google Groups (forums / listes de diffusion) pour échanger par petits groupes
  • l'e-mail direct, pour communiquer des documents, des infos
Mais tous les membres n'ont pas internet.
Actuellement l'assocation elle-même est connectée à internet via une connexion Wanadoo 56K.

On est partis ensuite sur ce qui pourrait être mis en oeuvre dans un site dédié à l'association. Je pensais qu'il y aurait deux ou trois pages institutionnelles, et un calendrier, mais en fait...

On est arrivés à ceci :
  • Page d'accueil, présentation
  • Mettre le journal de l'association en téléchargement (PDF, très bien)
  • Deux sous-sites : le jardin d'enfants, et le centre de loisirs
  • Afficher les tarifs, et ce pour chaque sous-site (noter que du PDF en téléchargement suffirait)
  • Afficher des photos, et ce pour chaque sous-site
  • Donner un planning-type, et ce pour chaque sous-site
  • Permettre de demander une inscription, et ce pour chaque sous-site
  • Permettre de demander une réservation pour les vacances
  • Annuaire privatif, groupes de diffusion
  • Trombinoscope ? Complet ? Public ? De l'équipe ? Des membres ? Des enfants ? (question du droit à l'image)
  • Calendrier : vacances scolaires, périodes de réservations pour les vacances, programme d'activités, événements de la vie de l'association, tâches participatives
  • Besoin que l'association puisse valider des réservations, etc. avant affichage
  • Pouvoir envoyer un e-mail en lieu et place d'une participation à un forum, pouvoir être notifié par e-mail de tel type d'événement
  • Vie associative : statuts, règlement intérieur, CA, débats
  • Fêtes

Comme on le voit, on est loin du bête blog + forum + 2 pages de wiki. La structure du site n'est pas énormissime, mais elle existe, et il faut prévoir des formulaires plus élaborés que ce qui était prévu à l'origine.

12 juin 2006

Présentation à Graine d'école

Jeudi 15, présentation des Fûts à l'intention de l'association Graine d'école.

Milestone sur Basecamp.

La Mêlée Numérique

Une association dans le Sud-Ouest qui se mêle de NTIC :
http://www.meleenumerique.com/

Trouvé via DebitCredit.fr

Specs

Voici le lien pour les specs de base concernant la plateforme Les Fûts : http://halfj.free.fr/resources/spec/lesfuts/

Le lien permanent est sur la sandbox halfj-site v1.4...

Pour imprimer, ily a bien la version RTF, mais elle doit être un peu buggée. Je corrigerai ça plus tard, quand j'aurai le temps, et accessoirement quand j'aurai Word !

11 juin 2006

Encodages

Sal*peries d'encodages.

Quand on fait proprement de l'UTF-8, tous les navigateurs, de Cyberdog sous MacOS 7.6.1 à Firefox sous Windows XP, en passant par Safari sous MacOS X et Netscape 4.5 sous MacOS 8.6, tous les navigateurs, l'affichent proprement. Pour être plus juste, disons que le latin étendu passe à peu près. On peut par exemple écrire « à cœur ouvert », et non « à coeur ouvert », ou je ne sais quel «cÅŋur ouvert»

Mais... comment faire de l'UTF-8 propre ? me direz-vous. N'entend-on pas souvent dire que c'est difficile ? À s'arracher les cheveux ? Sal*peries d'encodages, p*urritures d'accents, diacritiques de mes *, vous voyez le genre.

Eh bien voyez-vous, c'est drôle comme tout devient simple quand :
  • les données sont réparties sur un système de fichiers Linux et une base de données 8bit MySQL 3,
  • les navigateurs sont Firefox, Netscape 4, Netscape 7, Opera, IE 4.01, IE 4.5, IE 5.2, IE 6, Mozilla, Cyberdog, Amaya, iCab, Safari, OmniWeb, Camino, et Cyberdog
  • les systèmes d'exploitation sont Windows XP, MacOS 7.6.1, MacOS 8.6, MacOS « Classic » 9.1, et MacOS X
  • certains navigateurs veulent voir arriver des octets masqués à 0x7F, c'est-à-dire qu'ils comprennent bien les entités HTML ou XML comme «&#331;», mais pas des octets arbitraires comme « Åŋ »
  • le langage de programmation est PHP 4, où les String sont en 8bit
  • sur un autre serveur le langage est Java, où les String sont obligatoirement en Unicode
  • il y a des appels distribués dans l'architecture (re-masquage à 0x7F, etc.)
  • les feuilles XSLT qui doivent cracher de l'UTF-8 sont écrites en ISO-8859-1
  • on développe à la fois sous Windows et MacOS, dont les encodages sont incompatibles (Windows CP1252 et MacOS Roman), et les sources sont en ISO-8859-1
  • la gestion de conf se fait avec Subversion sous NetBSD
Comme on le devine, cette simplicité est la conséquence heureuse du choix courageux de limiter les exigences techniques, et, osons le dire, d'un certain ostracisme.

En effet, il a été décidé de ne pas tester l'application avec Konqueror.

08 juin 2006

Bouffe : Les Fûts

La prochaine bouffe des Fûts, partie architecture, se tiendra à Pessac lundi 12 juin.

Ordre du jour :
  • Est-il encore pertinent d'espérer des spécifications après une semaine de retard ?
  • À quoi servent des timezones dans une application franco-bordelaise ?
  • Faut-il vraiment un annuaire LDAP pour gérer 10 utilisateurs ?
  • La politique de stockage des données est-elle cohérente ?
  • L'absence de procédure de backup est-elle réellement une source de
    « bon stress » ?
  • Comment se fait-il que certains de nos concurrents payants qui ont démarré un an plus tôt que nous avec plusieurs millions de dollars et une dizaine de gourous de Ruby on Rails à plein temps, aient déjà vu leurs startups mourir ? Alors que nous ne sommes ni payants, ni riches, ni on Rails ?...
  • Est-on sûr que la prise en compte des timezones dans notre application soit un bon facteur de différenciation par rapport à ces startups ?

07 juin 2006

Rédaction de documentation

C'est ballot, je devais écrire une première mouture des specs des Fûts pour la semaine dernière, et... rien.

C'est que, croyant bien faire, j'ai bloqué les phases de rédaction, qu'il s'agisse de documentation, de spécifications, de manuels d'utilisateurs, de manuels de développement... le jeudi.

Eh oui, chaque jeudi, ni plus, ni moins, est une journée entièrement bloquée pour la rédaction, ou plus exactement la mise au propre de notes éparses. Vu la nécessité d'avoir des docs, et en même temps la priorité accordée aux développements, ce Time-boxing hebdomadaire me semble adéquat.

Manque de bol, ce premier jeudi était le 1er juin, et ça faisait à peu près 4 mois qu'il était prévu chômé.

Elle est bien partie, cette documentation.

Productivité

Au programme de réalisation ces temps-ci : un module de forum.

Je m'inspire évidemment du développement que j'avais fait en 2001, Fontguinews.

L'architecture pour les Fûts est à peu près claire dans ma tête : un vague cache applicatif chez free, et un serveur J2EE centralisé avec un protocole très proche de NNTP dans l'esprit.

Pour Fontguinews, c'était parti sur du 100% PHP chez free, puis les Web Services de distribution avaient vu le jour un an après, toujours en PHP. Cette solution était pratique pour partager rapidement des forums entre applis (voir le forum de Mobiles Sans Gêne, qui fait des accès distribués sur Fontguinews. L'aéro-club de Bordeaux s'en était servi également), mais peu satisfaisante en termes d'arthitecture.
Je m'étais dit que pour refaire un système de forums, je penserais de suite à la distribution. Je dois avoir dans un coin des schémas de ce système qui datent de 2003.

Donc, distribution. Donc, découplage. Donc, communication asynchrone.
Et donc aujourd'hui... la partie applicative peut être maquettée à 90% en ne s'intéressant qu'aux fonctionnalités de consultation des messages. Tout ce qui concerne la publication des messages sera déportée sur le serveur J2EE. Les 10% manquants sont la gestion par l'applicatif des erreurs de publication.

Pour le maquettage de la consultation, évidemment, la transformation des données de présentation en XHTML se fait par XSLT, et les cas à valider sont décrits en XML.
On verra par la suite pour une solution PHP, si, vraiment, les perfs sont si mauvaises que ça.

Les principes étant mis en place, et ma machine de développement étant très rapide, je n'aurais qu'un mot de constat : productivité.

J'avais déjà été efficace pour fontguinews, mais là je dois être dopé.

Est-ce la sieste récupératrice obligatoire de l'après-midi ? (il fait chaud, en juin)

Sont-ce les symphonies de Beethoven ? (c'est pourtant simple : en phases de maquettage ou de prototypage, Beethoven flamboyant, et en phase de débuggage, Chopin mélancolique. Je ne comprends pas pourquoi cette pure pratique n'est pas davantage répandue. M'enfin ! Quant au style de musique pour les phases de codage, eh eh, suspense).

Je me demande si tout cela ira aussi vite pour la suite.

05 juin 2006

Le nom « Les Fûts »

FÛT [fy] n.m. (lat. fustis, bâton).
1
. Partie du tronc d'un arbre dépourvue de rameaux.
2
. Corps d'une colonne, entre la base et le chapiteau.
3. Tonneau.
4. Monture servant de support. Fût en bois d'un fusil. Fût d'un candélabre, d'un rabot.
5
. Caisse (d'un tambour).


Et donc, voici l'explication a posteriori du choix de ce nom :

Il fallait un terme rattaché à l'architecture (c'est le cas de la définition 2.) ; on était également partis sur des métaphores sylvestres, le foisonnement d'arbres en forêt évoquant la multiplicité des gens qu'on trouve en associations. Et le projet se charge bien de donner un socle aux sites web associatifs, pas de s'y substituer. Donc ne parler que du tronc (1.), sans toucher aux frondaisons, ça collait.
Et puis, ben, on est de Bordeaux, ne l'oublions pas (3.).


Ah, et il faut dire qu'on avait une autre idée, mais elle était déjà prise.

Maintenant, hein, comme on dit le débat reste ouvert :-)

02 juin 2006

Projet associatif

Pour démarrer, « Les Fûts » est une organisation à but non lucratif, qui s'occupe de mettre à disposition auprès d'associations françaises de type loi 1901, un site web.

Chaque association concernée peut demander l'ouverture d'un site web à son nom, site web qui sera géré d'un point de vue technique (mise en place des serveurs, etc.) par les Fûts, et qui sera alimenté et maintenu en termes de contenu par l'association elle-même.
C'est l'association elle-même qui édite ses articles, met en forme ses pages, rajoute ses photos, organise des discussions, etc.
Les Fûts ne s'occupent que de la partie technique.

Les sites associatifs seront dans un premier temps constitués de briques de base très populaires actuellement : blogs, forums, wikis... L'ambition des Fûts est de faciliter l'accès aux technologies répandues de l'internet grand public, à des petites associations qui n'ont pas forcément le temps ni le budget d'investir directement dans ce domaine.

Pourquoi penser à un statut associatif pour les Fûts ?

Le projet a pour ambition de donner un accès minimal à internet, à des petites associations. Le projet est donc délibérément à but non lucratif, pour pouvoir être totalement centré sur la philosophie du service.

Deuxièmement, la solution technique choisie est une mutualisation des moyens techniques pour héberger les sites associatifs. Cette mutualisation se traduit par une certaine homogénéité des sites. Il faut donc que les associations puissent exprimer leurs préférences, et décider ensemble des orientations.

La forme associative semble être un bon candidat.