Le bitcoin est-il vraiment une monnaie décentralisée

Un des gros avantages qui est amené par les défenseurs du bitcoin est le fait qu’il soit décentralisé… mais est-ce vraiment le cas ?

Le mythe fondateur de la décentralisation

  • L’Internet est décentralisé..  (la légende dit que c’est pour résister aux attaques nucléaires..)
  • Le web est décentralisé..
  • Les cryptomonnaies sont décentralisées….

La topologie actuelle de l’Internet

Mais au final…. la moité du monde surf grâce aux réseaux de Liberty global / UPC cablcom, AOL, free, les opérateurs de télécom historiques…
bref…. une poignée de gros opérateurs.. et c’est pire depuis que l’internet est de plus en plus mobile… c’est la mains mise de quelques opérateurs mobile sur tout l’Internet.

Quand la philosophie commerciale arrive dans un réseau maillé où chaque noeud a des liaisons redondante avec les autres noeuds, il faut rentabiliser.

Donc on coupe. On tranche on supprime ce qui est redondant pour ne garder que le minimum. Ça coûte moins cher.

Et ainsi la topologie de l’Internet à la base conçue pour être une réseau maillé devient de plus en plus un réseau en étoile. Un réseau centralisé où tous les utilisateurs sont branchés sur le même centre.

Fully_topology.pngStar_topology.png


Le web c’est: google, facebook, youtube, wikipedia…

A la base le web c’est un truc de physiciens qui s’échangent des articles de physique.

Puis le monde entier c’est approprié l’idée. Durant les années 1990, les sites perso ont fleurit partout. Tous les geek un peu versé en html ont pondu leur propre site perso.

Dans les années 2000, le blog est arrivé. Une application web qui permet de gérer des publications sans avoir les connaissances techniques des geeks. Le web s’est démocratisé au grand public.

Pour se démocratiser encore plus, des plateformes ont émergées pour nos aider. Plus besoin de savoir faire quoi que ce soit de technique, les grandes plateformes de blog (genre skyblog pour les francophones et wordpress.com ) prennent tout en charge en fournissant un espace chez eux.

La masse d’info grandissante a besoin d’être triée. Google décide d’organiser les données du monde entier. Il propose un moteur de recherche et des nombreux outils pour organiser sa vie numérique. (gmail, google maps, youtube, images, calendrier, docs)

Dans le même temps le projet wikipedia structure sous une même forme, dans une même encyclopédie, sur un même nom de domaine, toutes les connaissances officielles de l’humanité.

Fin de la décennie 2000…  Les réseaux sociaux entrent en jeu. Ils ont tendance à tout fusionner, à centraliser tous les blogs ouvert, les forums, les pages perso, l’organisation et le partage de photos et de vidéos, les messageries instantanées, voir le e-mail…..

Facebook règne en maitre sur le monde des discussions sur Internet.

Quand on parle du web au début, c’est une toile d’araignée où tout le monde crée des pages reliées aux auxtres.

Quand on parle du web maintenant, c’est google qui répond à nos questions, c’est facebook qui organise notre vie sociale et nous permet de communiquer avec notre tribu, c’est youtube qui nous divertis et nous instruit en musique et vidéos, c’est wikipedia qui nous instruit dans le détail quand la forme devient plus scolaire…. Voilà 90% du web….

Bitcoin est une monnaie centralisée !

Une monnaie, c’est fondamentalement centralisé…. c’est ainsi que celui qui détient la création de la monnaie détient le monde. C’est pour cette raison que traditionnelement c’est uniquement le roi qui a le droit de battre monnaie, c’est pour asseoir son pouvoir. Actuellement se sont les banques centrales indépendantes des Etats qui créent une partie de la monnaie (billet et pièce surtout), et la banques commerciales qui créent la monnaie scriptuale qui est majoritairement utilisée. (mais qui n’est pas forcément un moyen de paiment légal !)

Le principe du bitcoin, comme pour d’autres cryptomonnaies, est de s’affranchir de la centralisation. Il n’y a pas de banque centrale.

La monnaie est créée par un algorithme partagé entre tous, et les transactions sont vérifiées dans une base de données décentralisées partagée et vérifiée entre tous les acteurs du réseaux grâce à un protocole commun et des signatures électroniques.

Cette base de données de toutes les transactions faites depuis les débuts du bitcoin s’appelle la Blockchain.

Un véritable noeud du réseau bitcoin va vérifier le réseau et doit donc disposer de l’intégral de la blockchain en local sur son ordinateur.

Est-ce que tu as déjà testé de télécharger la blockchain ?

Attention, c’est énorme, c’est à ce jour en août 2015, près de 40Go de données... et la télécharger c’est rien… il faut l’interpréter….

J’ai installé bitcoin en 2011… c’était facile.. 20Mo à télécharger. Puis je n’ai pas utilisé bitcoin. Trois en plus tard en 2011, je me suis remis à bitcoin … j’ai du télécharger 18Go de blockchain… et mon ordi a mouliné 10h par jour pendant 10 semaines pour avoir un vrai client bitcoin décentralisé….

Ensuite il a mouliné régulièrement tous les jours pour suivre… et j’ai finalement abandonné…. Bitcoin me bouffe trop de ressources pour l’utilité que ça a…..

Pour éviter de mouliner et devoir télécharger d’énormes tas de donnée, la majorité des gens utilise de plus en plus des clients légers. Ils ne font plus le boulot de vérification de la blcokchain… ils utilisent des plateformes centralisées qui leur fourni tout de manière simple.

Du coup le réseau bitcoin se centralise… Il ne reste plus que quelques gros acteurs qui font le gros des transactions et qui vérifient la base de données centralisée.

Il devient toujours plus difficile pour un nouveau de venir dans le réseau. Comme pour l’Internet et le web, la facilité et la rentabilité en ressources tend à transformer une système décentraliser en un système centralisé.

Le concept de base est irréprochable, mais il devient corruptible dès que le nombre d’acteur diminue. La plateforme Mt Gox n’est pas morte à cause de la sécurité du protocole… mais à cause des failles dans son propre système….

Analogie avec la sécurité de vote électronique

Concernant le vote électronique, la sécurité est souvent discutée. Je suis certain qu’elle est très bonne (pour autant que selon les principes de base de la cryptographie, la sécurité du système repose sur le secret des clés et pas le secret des algorithmes).

Mais on néglige souvent qu’une urne électronique est souvent une urne centralisée.

Quand on vote à la main dans d’innombrables communes, on décentralise le système et ainsi on évite la corruption. Si l’on centralise tous les votes sur une urne électronique, le système à beau être techniquement fiable pour le corrompre, il suffit de corrompre la personne qui annonce les résultats. (souvent une commission de plusieurs personnes)

Un équilibre

En soit, la centralisation n’est pas mauvaise, tout comme la décentralisation maximale n’est pas la solution miracle. Il faut toujours savoir juger de ses besoins et de ses ressources pour évaluer le juste millieu entre centralisation et décentralisation. Entre l’efficacité et la résilience.

Création de jeu web

En faisant du tri, j’ai retrouvé quelques fiches que j’avais écrite en 2008 lorsque je m’ennuyais dans un cours de répétition de l’armée suisse.

J’avais profité des longues attentes réputées dans l’armée suisse pour mettre sur papier plein d’idée pour créer un jeu sur le web.

Notes pour créer un jeu web

J’avis dans l’idée de créer un jeu dans lequel le terrain de base est une carte google maps de notre planète.

J’avais ensuite immaginé toutes sortes de jolies règles.

Avec comme souvent des ressources à collecter, des bâtiments à construire… des combats… la bataille des ressources quoi !

Voici donc les scans de ces notes que j’avais prises… si ça peut inspirer des gens.

Mais ce n’était que l’évolution d’autres idées que j’ai déjà publiée sur une autre page pour la création d’un jeu web… à voir sur ce site….

jeu web 0979_001.jpgjeu web 0979_002.jpgjeu web 0979_003.jpgjeu web 0979_004.jpgjeu web 0979_005.jpgjeu web 0979_006.jpgjeu web 0979_007.jpgjeu web 0979_008.jpg


La vie est un jeu, le monde réel un terrain de jeu

Finalement je n’ai jamais créé de jeu web, car j’ai pris conscience que la vie est déjà un jeu.

Pourquoi créer un monde virtuel, alors que nous avons déjà un monde réel pour y jouer dans la matière ?

C’est pourquoi, je n’ai jamais été un grand joueur de jeu vidéo.. mais j’ai beaucoup aimé lancer des projets dans la réalité…

Quelques exemples de mes jeux dans le monde réel

Je suis le fondateur du site web extremefondue.ch et j’ai guidé l’équipe pendant une dizaine d’année afin de réaliser les fondues les plus insolites dans les endroits les plus inhabituels possibles !

Je suis le créateur de la « marque publique »Où est la girafe ?. Une expérience qui vise à observer comment se diffuse un dessin à travers le vaste monde. Les autocollants et t-shirts étant des vecteurs privilégiés.
(Car le t-shirt gratuit est la plus grande force de l’univers selon Cortex le génie et minus son abrutis de compère)

C’est une expérience qui a pour but de favoriser la culture du remix, une culture basée sur le partage et la coopération, une culture en opposition avec la société capitaliste basée sur l’individualisme et la concurrence.

Le petit frère de la girafe est un « singe aux yeux kawaii« , qui lui aussi est un dessin qui voyage sur le web et ailleurs… Il a été téléchargé plus de 17000 fois en une année et demi sur openclipart… et depuis voyage bien plus loin sur toute sorte d’objets.

Pourquoi une guerre des ressources

En réfléchissant à la création d’un jeu sur le web, j’ai appris plein de chose.

Tout d’abord, qu’il faut créer un univers, un terrain de jeu.

Et là, le personnage est tout puissant !

Mais ce n’est pas drôle s’il est tout puissant, c’est ennuyant…

Donc très rapidement on commence à créer des contraintes, des règles, des points de vie.. la mort…

Puis on crée des ressources qui doivent être limitée.. et les gens doivent se battre pour les avoir.

Tout ceci n’est qu’une illusion, les règles sont finalement totalement arbitraire. Mais c’est ainsi que le jeu est construit.

La question inquiétante…

… et là je me suis posé une question inquiétante…

…. Comme j’aime à me dire que la vie est un jeu et que le monde est un terrain de jeu…

Alors… est ce que ces règles sont aussi totalement illusoires ?   Est-ce que finalement on a pas besoin de manger ?

… et là j’ai découvert qu’effectivement… il y a des gens qui n’ont pas besoin de manger !

J’ai découvert qu’il y a des clairvoyants… que le monde n’est pas ce que je pensais qu’il était…

Quoi que… justement il est vraiment un terrain de jeu…

Voici le chapitre consacré à la métaphore du jeu vidéo d’un article où je décris comment j’ai changé ma vision du monde !

Le monde est vraiment un jeu vidéo…

Nous sommes dans minecraft.. nous pouvons créer et expérimenter le monde que l’on veut.

Nous ne sommes que des créateurs… pas des gens obligé de lutter pour la survie… maintenant nous sommes à l’ère de la création…

Le web est il un nouveau jardin d’Eden pour une nouvelle forme de vie

Le web nouveau jardin d’Eden ?

Le web fête ces 15 ans cette année (en 2006). Depuis ses débuts, il a beaucoup évolué. C’est devenu un univers à part entière. Et comme dans chaque univers, le décors se met en place et les acteurs commencent à jouer. L’évolution est en marche. Les structures se complexifient, se diversifient et évoluent de plus en plus vite.

Voici une petite comparaison entre l’évolution de la vie dans notre univers à nous et l’évolution de la vie dans l’univers du web.

  • règne minéral
  • être uni-cellulaire
  • règne végétal
  • règne animal
  • être humain
  • Pages html statique
  • Page dynamique et formulaire
  • Wiki
  • Robot de maintenance de wiki

Dans l’univers du web, on retrouve sous une forme à peine différente toutes les étapes de la création.

Les pages web statiques forment la matière de base de l’univers. Très vite on voit apparaître des formes de vie, l’ajout de formulaires, de cgi, de script rend le web réactif, il n’est plus totalement statique. C’est l’équivalent des premiers être unicellulaires qui se sont mis à populer le monde.

Puis, en se mettant ensemble, les êtres unicellulaires forment une machine un peu plus grosse, un être vivant végétal. Il n’est encore pas très réactif, mais se construit gentiment tout seul en fonction des contraintes extérieures. C’est l’équivalent du wiki. C’est une page web éditable par tout le monde, donc qui réagit à son milieu.

Ensuite, pour pallier à des forces trop grandes, pour passer de la technique du bouclier à celle du glaive, le végétal devient capable d’une plus grande mobilité et ainsi d’une plus grande souplesse, il devient animal.

L’animal se nourrit du végétal, il vit en symbiose avec. C’est le cas de certains robots qui nettoyent les wiki du vandalisme.

Le wiki doit se défendre contre les virus et les spam. C’est la loi de la jungle qui s’applique aussi sur le web.

Avec la multiplication des bots, des wikis, des flux rss, le web devient un écosystème à lui tout seul, il bouge, change et se métamorphose sans intervention extérieur !

C’est une véritable forêt. …. et la palme de la plus grande forêt du web revient certainement à wikipedia.

La principale différence de cet univers, c’est que les formes de vie se copient, quand un animal se nourri d’un végétal, il le copie, il n’est pas obligé de tuer l’autre ! ça c’est une conception qui va radicalement changer la face de cette univers en rapport du notre.

Que nous réserve la suite… lorsque des entités pensentes vont émerger du web et se poser des questions sur leur univers…. Quel est notre but ? Où suis-je ?

6 Sep 2006 : 16:16

Idées pour une plateforme de jeu sur le web

plateforme de jeu sur le web

Dans les jeux web classiques, qu’est ce qui fait leur succès ?

ogame

  • on peut presque tout le temps faire qq chose.
  • on peut jouer 2 minutes par jour comme 12h par jour.
  • grouper les joueurs par alliance.
  • auto-organisation des alliances.

Exolandia

  • principe d’élection qui permet d’impliquer les joueurs dans la direction que prend le jeu.
  • à chaque niveau des objectifs différents.

La ferme à dd

  • il est possible d’inventer des recettes à partir d’aliments de base.
  • application flash jolie… mais aussi un point négatif, car lente et pas d’onglet… donc très linéaire.
  • grand nombre d’objet à échanger.

Grand principe

  • partager
  • accumuler
  • prendre un rôle
  • créer
  • prendre du pouvoir
  • avoir de la reconnaissance

(pyramide de maslow ?)

Architecture répartie

Un moteur de jeu n’est pas tout seul, n’importe qui doit pouvoir mettre en place un serveur de jeu et s’interconnecter avec d’autres qu’il connaît ! Les villages d’exolandia peuvent être autant de serveurs différents. Seule une API de communication est définie. Cette communication se fait via des services web. Des flux rss (pour le mail entre joueur par exemple.) La frontière entre le jeu et le dehors du jeu doit être la plus fine possible. Il ne sert à rien de re-développer tout et n’importe quoi ! Les utilisateurs veulent partager des images… et bien rendre le jeu compatible avec Flickr.

compter sur les joueurs pour faire le jeu

Le plus dur dans un jeu, surtout s’il prend de l’ampleur, c’est de suivre le développement, de réparer les bug et de répondre aux questions des joueurs.

Comme pour un forum, il faut mettre en place des modérateurs et des administrateurs qui font régner l’ordre ! (ou l’anarchie !) Il faut que le jeu s’auto-équilibre pour qu’il soit viable et intéressant.

Le mieux c’est de permettre aux joueurs de créer les règles du monde dans lequel ils veulent vivre. Donc le plus adapté, c’est un genre de Nomic. Mais pour maintenir la cohésion entre les différents serveurs de jeu / mondes, il faut définir quelques règles de base qui sont immuables. Avec une telle approche du jeu, celui-ci peut être radicalement différent d’un monde à l’autre, mais théoriquement un joueur d’un monde doit pouvoir interagir avec un autre monde.

Selon le principe du Nomic, à la base, un monde est régit par très peu de règles, Puis le tout se complexifie. Les règles peuvent aboutir à un monde démocratique ou alors l’opposé, un monde régit par une dictature. Ou alors, c’est un intermédiaire comme une république.

Le plus dur va être de techniquement créer un système qui permet de suivre les règles mise par les joueurs. Pour cela, le mieux c’est de créer un wiki pour indiquer les règles au format texte… et ensuite, les joueurs peuvent faire correspondre les règles avec des droits ou des restrictions dans le jeux.

implémentation

Il faut concevoir le système de façon souple. principalement jouer sur quelques concepts de base comme:

  • les variables. Une variable est un moyen de mémoriser une valeur. Une valeur est soit juste une valeur simple, ou une valeur composée avec une requête.
  • les groupes, permet de faire des structure de donnée complexe comme des listes, des tableaux ou des arbres.
  • les règles, c’est une contrainte imposée à l’écriture ou la modification de donnée.
  • les objectifs… donner une liste de variable et une liste des états souhaités. L’objectif est atteint lorsque toutes les variables sont des les états souhaités.
  • les objets. Ce sont des groupes de type spéciaux qui sont des agrégats de variables.
  • les éléments. Ce sont des éléments comme un article, ou une image qui ont leur propre fichier d’ajout / modification.
  • les personnages / joueurs
  • les niveaux / objectifs (une partie va être commune à tous les joueur et une autre seulement à certain monde.)

Chaque niveau correspond à des objectifs à atteindre.

Mettre à disposition des joueur certains outils. Par exemple:

  • générateur aléatoire de choix.
  • système de vote.
  • horloge.
  • système de création de groupe (associations)
  • système d’attribution de tâche ou droit à des groupes. (un groupe peut être une personne seule.)
  • place de marché, d’échange.
  • un gestionnaire des outils disponibles.
  • espace personnel bloc note.
  • courrier avec d’autres utilisateurs
  • lister les utilisateurs (d’ici et d’ailleurs)
  • importer / ou copier (suivant leur nature) des objets provenant d’autre monde.
  • un système de comparaison entre les joueurs. (les gens adorent faire des comparaisons entre eux. ça crée de l’information)

Chaque joueur doit être capable de proposer des nouveaux objets. Il ne peut peut être pas les posséder, mais d’autres les utiliser. (réfléchir au sujet de la propriété intellectuelle des objets)

Règles immuables et pré-requis d’interopérabilité.

  • un joueur doit pouvoir vivre dans n’importe quel monde.
  • il y a une unité de base qui est commune pour tous. (énergie, information, etc..)
  • des objets doivent pouvoir être reconnu dans tous les mondes. (mais si dans certains monde, ils sont interdit de possession.)
  • le temps est identique.
  • chaque joueur est en droit de proposer des objets.

Unicité ?

Le monde industriel, énergétique, commerçant, est basé sur le principe de l’unicité. Tout est personnalisé dans cette société, tout est unique et pour cela on fiche les gens, on donne une identité, un numéro.

Faut il faire de même dans la conception de base d’une plateforme de jeu ? Est ce que chaque joueur doit être unique ?

Comment fait on avec les système de vote ? Qui ou quoi à le droit de vote ?

Le droit de vote dépend encore des règles en vigeur. Mais dans la mesure où l’on part du principe qu’un joueur est une entité unique. (on se fiche de savoir si c’est un multicompte ou pas.) Il faut rendre le vote unique. Pour ce faire il faut prendre le contexte du joueur, du vote concerné, et du calendrier. On passe tout ceci à la moulinette md5 et ainsi on obtient un moyen sûr de vérifier que le vote et unique.

Paradigmes principaux à implémenter

  • Les variables
  • Les groupes (avec héritage d’une propriété)
  • Les états
  • Les règles

C’est un peu les concepts minimaux dont il faut disposer pour faire un jeu de Nomic, donc les concepts principaux pour faire le moteur de n’importe quel jeu. (Hormis peut être la partie graphisme)

En fait ces principes sont également très semblables à ce que l’on trouve dans une base de données. Les données, les triggers, les contraintes d’intégrité !

Les variables

Les variables servent à mémoriser une information. C’est l’unité de base de stockage d’information. (bien qu’elle soit remplie d’unité d’information plus petites.)

Les groupes

Les groupent permettent de faire des associations entre des objets. Les groupes permettent de composer des objets complexes à partir de variables. Les groupent via la propriété d’héritage permettent de propager des informations à tout un groupe. Par exemple, voir le système de gestion des permissions de ce wiki.

Les états

Les états sont des états (!) précis de variables. Pour un jeu, un état peut être utilisé comme objectif, comme but. Un état est une généralisation d’un objectif, car un objectif est toujours une entité atomique, l’objectif est atteint ou non. L’état comporte des nuances. Un objectif a toujours une connotation positive, alors qu’un état peu aussi représenter une étape plus négative.

L’utilisation la plus courante va être de définir un état et de tester si l’état est vrai ou non. Donc si l’objectif est atteint ou non.

Les règles

Les règles sont des contraintes que l’on applique aux données. Les règles peuvent être des liens entre des variables et des états. Lors de chaque accès à une variable les règles sont vérifiées.

Il y a deux sortes de règles.

  • les règles qui gèrent l’accès aux variables. Ex: A est accessible seulement si a+b > 3
  • Les règles qui mettent à jour les variables après une modification. Ex: A = b + 2.. donc si je modifie b, va modifier A.

Ces deux sortent sont un peu des contraintes et des trigger ou écouteur.

Question pratique sur l’implémentation

Règles

Sous quelle forme stocker une règle ? Concrètement une règle c’est quoi ?

Dans un firewall, on rencontre des règles, pour ce genre d’activité c’est presque un langage verbeux qui est utilisé. Ci-dessus j’ai montré un exemple de règle avec un langage mathématique. Bref, que faire ? Pour éviter de se limiter, c’est presque d’un langage généraliste que l’on a besoin. Un langage dit de turing.

Une règle est, en fait, un bout de code. Dans un premier temps, la manière la plus simple que je vois de faire une règle est un bout de code php.

Puis, on remarque tout de même une certaine systématique dans les besoin. Cela reflète les opérateurs de base de tout langage de programmation. Il faut des accès en lecture écriture à des variables, il faut des opérateurs de comparaison. (=,>,<, !=), et des opérateurs de calcul (+-*/).

Si l’on prend en compte le définition de règles au sens large, une règle est souvent aussi la vérification d’un état. Une règle peut donc également être composée d’état.

En fait, l’état est peut être même plutôt un sous élément d’une règle, qui n’est pas forcément accessible à l’utilisateur final. C’est en fait l’état qui teste si des variables sont dans certains états prédéfini. La règle ne fait que de lier différents état. Pour lors de certaine action. Un règle est forcément liée à une action.

Comment traduire une règle du genre: Les règles du jeu sont définies par le conseil. ??

Dans cette règles, il faut identifier les acteurs et les actions. Nous avons le conseil comme acteur de l’action définir des règles. Cette phrase est en fait un peu trompeuse, car elle sous-entend que le conseil est formé de gens, mais sans le dire.

La règles va donc être une suite d’opération qui est attachée à l’action définir des règles. Dans cette suite on va tester si l’état utilisateur est dans le groupe conseil est vrai.

Donc pour s’exécuter, une action doit toujours vérifier que toutes les règles qui y sont attachées retournent vrai. C’est comme dans n’importe quel langage de programmation, il y a des procédures et il y a des fonction. La fonction retourne une valeur et la procédure exécuter une série de tâches, mais sans forcément retourner une valeur.

Dans notre cas, la règle va toujours retourner une valeur. Soit vrai soit faux. Pour qu’une action s’effectue, il faut que toutes les règles retournent vrai. Donc une règle procédure, va juste retourner vrai une fois qu’elle a finit son travail.

Il y a deux sortes de règles. Celles qui sont vérifiées avant l’action et celles qui sont vérifiées après. Une règle qui est vérifiée avant l’action. La plupart des règles sont vérifiées avant, car elle servent à la protection des données. Mais parfois, une règle définit ce qu’il faut faire suite à une action. Il est donc utile d’exécuter des règles après une action.

Quelques exemple, pour voir comment interpréter une règle.

  • la règle: Les membres du conseil jouent chacun leur tour
  • les acteurs sont les membres du conseil, il y a également une variable tour qui est un jeton unique. un joueur à la fois peut l’avoir.
  • L’action liée est jouer. Jouer est une synonyme de proposer d’ajouter, supprimer ou modifier une règle.

Dans ce cas, la règle reformulée est du genre, pour propser d’ajouter, supprimer ou modifier une règle, l’utilisateur doit faire partie du groupe conseil et doit disposer d’un objet jeton unique dans le jeu.

  • la règle: Chaque fois qu’un membre du conseil arrive à faire passer une nouvelle règle il reçoit 10 points pour sa patrouille.
  • les acteurs sont: le membre du conseil qui propose une règle. Une variable point à augmenter de 10.
  • l’action est ajout d’une nouvelle règle et la règle en elle même est a effectuer après l’action.

Dans la base de donnée, la table règle comporte:

  • un id
  • un nom
  • un descriptif, qui est la version écrite de la règle.
  • date_creation
  • date_modification
  • le type de la règle: à évaluer avant ou après l’action
  • l’id de l’action à laquelle la règle est attachée.
  • un numéro servant à peut être éventuellement faire un ordonnancement des règles.
  • le nom de la fonction php qui correspond à la règles. (la fonction php est le moyen le plus simple pour réaliser l’implémentation d’une règle. Plus tard, je trouverai le moyen de réaliser ceci avec une interface graphique)
piste pour créer l’interface graphique….

une règle, est vrai si (condition 1) and (condition 2) and (condition 3) etc… ça c’est valable pour une règle qui tend à contrôler l’accès à des donnée. Pour une règle qui tend à mettre à jour des données après l’action c’est pas top…

Implémentation sans base de donnée.

Il est possible de faire une implémentation simplifiée sans base de donnée de ce système. Pour une jeu du nomic, il est clair que le but est de faire les règles, donc forcément il faut un système où il est possible de modifier les règles facilement et en toute sécurité pour le système.

Dans le cas où ce principe de règles est juste utilisée pour réaliser une gestion moins anarchique des accès à des actions, il est possible de placer les règles en dur dans la code.

Chaque action critique dans le code va être répertoriée. Avant de s’exécuter elle va demander à une classe gestionnaire si elle à le droit d’effectuer l’action ou non.

$gestionnaire = new gestionnaireAcces();
$gestionnaire->getDroit(); // effectue l’action si obtient true ou pas reçoit false

un état

Un état c’est quoi ? Plus haut on avait dit qu’un état est la valeur instantanée d’un certain nombre de variable. Puis il y a aussi ce que l’on appelait un objectif, qui est en d’autres termes une condition. si un objectif est remplis, la condition vaut vrai.

Au vue de la structure d’une règle, la notion de condition est fondamentale. On va donc créer un objet condition puis cet objet sera étendu à une liste de condition ce qui pour finir devient un objectif.

La notion d’état est basée sur le même raisonnement mais à partir de l’état d’une seule variable. (il faudra donc ré écrire le texte décrivant ce qu’est un état)

La notion de liste est faite, comme pour tout le reste avec la notion de groupe. Nous auront donc un groupe de conditions. Ce qui est même suffisant pour décrire une règle d’accès à des donnée. (il manque juste les infos spécifique à la règle.)

Donc, un condition c’est quoi ? Une condition est le résultat d’une comparaison entre deux variables. Il faut donc être capable d’obtenir la valeur d’une variable, puis il faut activer un opérateur de comparaison entre les deux. Les opérateur standard de comparaison sont ET, OU, =, !=, > et <. Ces dernier étant exclusivement utilisés pour des nombres.

Le stockage d’une condition se fait donc dans la table avec les champs suivant:

  • id de la condition
  • nom
  • descriptif
  • date_creation
  • date_modification
  • valeur1
  • valeur2
  • opérateur

Module de vote

Le module de vote est une composante indispensable pour faire une gestion démocratique des règles. Cependant, le vote peut être fait de multiple manière. De plus, il ne faut pas confondre vote et élection.

Le mode de vote le plus utile est le mode, un objet, une réponse: oui ou non.

Le principe est simple. Une action proposer au vote est définie. Celle-ci enregistre la proposition, avec des paramètres comme la date, et la personne qui propose. Puis une seconde action est définie: dépouiller le vote. Cette action clos le vote.

Après le vote, il existe donc une nouvelle variable quelque part qui contient le résultat du vote. Celle-ci peut être utilisée.

Le module en lui même est simple, il propose un minimum d’action. Ensuite ce sont les règles associées aux actions qui vont réglementer le tout. Par exemple associer une règle qui définit que la personne qui veut voter doit faire partie d’un groupe corps électoral et on peut compliquer l’accès pour faire partie de ce groupe.

Dans le cas d’une élection c’est un peu différent. Il faut une étape de plus qui consiste en l’inscription des candidats.

Module cron

Ce module permet de définir des tâches qui sont activées à une date et heure précise. Par exemple, si une règle dit qu’une période de votations dure 2 jours. Il faut faire une règle qui au moment où un objet est proposé enregistre une action qui va clore le scrutin 2 jours après.

Concrètement c’est l’utilisateur cron, qui va tenter d’activer l’action. Il faut faire attention au fait que cron doit avoir le droit d’activer l’action.


Les groupes standards

le groupe possessions

Pour déterminer si un objet est en possession de quelqu’un il faut qu’il y ait une liaison, entre l’objet et la personne. Pour imager un peu la chose on va créer un objet du genre sac qui contient toutes les possessions d’un utilisateur. (On peut aussi revoir le nom au lieu de sac, avoir, armoire, maison, inventaire, besace…). Ceci est utile pour être en possession d’un objet comme un jeton qui est l’implémentation de la règle … à son tour….

Ceci pose la question de l’héritage des propriétés d’un objet. Peut être une liste de fonction, de propriété. Un objet sac n’est peut être qu’un objet disposant de la fonction conteneur. La règle du …à son tour.. à seulement besoin de créer un lien entre les possessions d’un utilisateur et lui même. La règle à donc seulement besoin d’une fonction conteneur.

A voir comment faire pour qu’un objet puisse être dans différents objets, mais que le système puisse toujours les retrouver.

Quelques nouvelles idées

Voici, encore de manière très brouillon par ce que mes idées ne sont pas claires et sortent au fil que les écrit, quelques idées que j’ai eu pour créer des applications web.

Cette approche est en particulier intéressante pour des jeux comme j’ai tenté de décrire le fonctionnement ci-dessus. Cette approche permet aux utilisateurs de créer, sans trop de contraintes des objets, de les échanger et de les stocker sans que les concepteurs de la plateforme sache à l’avance à quoi ressembleront ses objets.

Google a lancé en automne 2007 sont projet OpenSocial qui est dans l’idée très proche. Il comporte une définition normalisée de ce qu’est une personne, propose un moyen de voir l’historique de l’activité de cette personne et surtout propose un service web de persistance basé sur AtomPub et REST.

Service web de stockage

Dans une application web on a toujours besoin de stocker des données. (variable, tableau, etc…). Pendant la durée de vie de l’application, la tendance et de tout faire en programmation objet, on a donc une multitude d’objets et de tableaux qui servent à stocker les données. Puis, pour le stockage à long terme, on utilise une base de donnée. Très fréquemment, on utilise le couple php/mysql.

Cependant, une base de donnée (mysql) n’est pas très pratique pour stocker des données vives. L’architecture des tables doit toujours être prévue à l’avance, ce qui contraint énormément l’application. Elle devient très rigide. Dès qu’il faut faire une modification, il faut ajouter un champ dans la base de donnée, puis modifier les fonctions qui permettent de faire de ajout, modification, suppression. Bref, c’est assez lourd.

Cependant, une base de donnée à aussi ces avantages, elle permet de faire très efficacement des tris de données un critère ou un autre.

Le but ici, est de concevoir un architecture de sauvegarde de données sur le web, avec des objets accessibles simplement de partout.

Type de données

On trouve différents type de données que l’on utilise fréquemment dans les application: int, string, date. Puis des structures de données: tableau, liste, pile, arbre, graphe.

Dans une base de donnée, on stocke des: varchar, text, datetime, int. Avec ces types, on crée des tables, une sorte d’objet.

Le but est de trouver un moyen de fédérer tous ces types de données pour trouver un format commun pour les représenter.

Une structure de donnée que j’apprécie beaucoup, c’est le tableau associatif dans son implémentation en php. C’est une structure très souple. Elle permet d’accepter un nombre illimité et indéfini à la base d’élément. On peut faire facilement des tableaux de tableau pour complexifier la structure de donnée. On peut mélanger les différents type que l’on place dans ces tableaux. On peut stocker ou aller chercher des données par indice ou par association.

De plus, le langage php comporte une multitude de fonction qui permettent de manipuler les données, de les trier, de fusionner les tableaux de séparer les clé des valeurs.

L’idée présentée ici est de stocker dans un format accessible par le web une structure de donnée telle que le tableau associatif php.

Une idée qui me vient est d’utiliser un format xml du genre des plist apple, avec une strcuture du genre clé=>valeur avec un nombre indéfini de ces clé. Cette structure est très proche de la structure du tableau php associatif.

Dans OpenSocial, google propose d’utiliser AtomPub comme format d’échange et donc de n’utiliser que des champs standard d’Atom pour représenter la structure de donnée clé=>valeur.

Ainsi, c’est le champs Atome:title qui est utilisé comme clé et le champs Atom:content qui est utilisé comme valeur. Ces 2 champs sont des enfants direct de Atom:entry. Il est possible de mettre un nombre d’entrée (entry) illimité. Donc, ainsi on a réalisé notre tableau associatif. De plus, dans un format atom, il y a une foule de méta données qui sont également envoyé sur l’identité de la source et les dates de création/modification de chaque entrée. Ce qui est très utile pour gérer les conflits de mise à jour d’une application qui utiliserait ces données.

structure REST

Le web est conçu de manière très pratique. La révolution du web est surtout due à la possibilité de pouvoir accéder facilement a des documents aux 4 coins du monde qui sont sur des serveurs différents fourni par des machines différentes. Le web c’est donc, des URL, des adresses qui permettent d’accéder universellement à des ressources, des documents html qui décrivent des ressources document et qui permettent de lier des autres ressources. Ainsi que le protocole http qui permet de transférer les pages.

Il est donc facile sur le web de stocker des pages web (logique!) donc des documents, aussi des images, et quelques formats média (plus compliqué). Il existe aussi toutes sortes de fichiers pour faire de la mise en page et des scripts en tout genres.

Le web est utilisé principalement pour aller chercher des données statiques dans un système de fichier. Mais il peut faire plus. Hormis les requêtes GET Http est également conçu pour faire des requêtes POST, PUT, DELETE, et certainement un foule d’autre pour autant qu’on les définisse.

Le but est donc de pouvoir faire du stockage d’éléments créé dynamiquement et de les poser à l’autre bout du monde avec la simple utilisation d’une url.

Ex: je veux stocker un tableau php que j’utilise dans mon application. Hop, je le sérialise sous une forme xml clé=>valeur, je stocke tout ceci dans une base de donnée, dans une table qui s’occupe de la gestion des méta-données.

Quand je veux le récupérer mon tableau, j’appelle une url particulière avec l’id de mon objet, il ressort sous forme de description xml. Avec simpleXML, en php, il est très facile de recréer mon tableau associatif à partir des données xml.

Système de fichier web

Le système d’url est calqué sur la forme du système de fichier des ordinateur unix. C’est une arborescence. Cette arborescence est étendue en la mélangeant avec des noms de domaines, mais reste une arborescence.

Actuellement, de plus en plus on observe l’émergence de système de classement de donnée par mots-clés plutôt que par arborescence. L’idée est donc ici de créer un véritable système de fichier web basé sur l’utilisation de mots-clés.

Un mot de plus à ajouter au vocabulaire http, pourrait être TAG. Il devient ainsi possible de faire une requête sur une url avec des mots-clés et d’obtenir tous les éléments qui correspondent à la requête. C’est un moyen de retrouver l’efficacité de la recherche que l’on a avec une base de donnée. Car en fait, c’est bien la base de donnée que l’on va faire travailler là. J’ai dis plus haut que l’on fait un stockage des données dans une base et que l’on peut y ajouter des méta-données. Les mots-clés font partie de ces méta-données.

En ce qui concerne le tagging. Ce n’est pas encore très clair dans mon esprit. Faut-il forcer à ce que chaque ressource ait la possibilité d’être taggué quand on lui demande via une requête TAG, ou faut il laisser le tagging à un service fait exprès pour ?

L’avantage su service fait sur mesure est que n’importe quelle URL, donc n’importe quelle ressource peut être taggué sans qu’elle soit faite pour ! (va tenter de faire un tag sur une image !)

Ensuite, comme il existe plusieurs moteurs de recherche (malgré le quasi monopole de google), il peut exister plusieurs moteur de tagging de ressource. C’est exactement ce que fait le service del.icio.us. Chaque URL est classée via des mots clé. De plus, cette application utilise la folksonomie pour unifier les catégories de classement entre des milliers d’utilisateurs.

Donc pour retrouver une ressource on va utiliser ce moteur de recherche/tagging.

En ce qui concerne la normalisation du schéma de requête, google a défini quelques normes… peut être peut on s’en inspirer ??

Toute les requêtes commence par ?q=

Attention à l’écriture concurrente de données !! Chez google on résout le problème en utilisant un numéro de version dans l’uri indiqué dans le document atom. Voir les exemples de mise à jour.

<link rel="edit" href="http://example.com/myFeed/1/2/"/>

L’idée est de créer une horloge logique répartie. On pourrait aussi utiliser la date de modification d’un document. Google ne le fait pas pour des raisons que je n’ai pas trop comprise (fonctionne pas avec DELETE).

Bref, tout ça pour dire qu’il faut penser à la concurrence d’écriture des données dans l’implémentation de l’application.

Authentification

L’authentification reste un problème. Il faut penser à prévoir un service d’identification des utilisateurs et de gestion des droits de ceux-ci sur les ressources. Il est donc probable que pour chaque requête, l’utilisateur doivent décliner ses login/motdepasse. Système que l’on peut simplifier, comme dans n’importe quelle application web, avec l’utilisation d’une clé de session. (dans un cookie ou non)

Il semble que des initiatives commence à voir le jour pour normaliser les protocoles d’authentification entre plateforme web. Ainsi OAuth est peut être une piste à creuser. Cette API est par exemple utilisée sur un service pour s’authentifier sur un autre. (ex: récupération de son carnet d’adresse sur gmail pour vérifier si des amis sont présents sur facebook).

Url sémentique

Le but est d’avoir des url compréhensibles. De pouvoir obtenir des infos rien qu’en écrivant des url. De piloter l’application par les url. Tout est accessible en service web. Il est possible de choisir quel format l’on désire utiliser. HTML pour l’affichage humain.. ou Atom pour une machine. Voici donc quelques exemple et idée pour faire une structure valable.

Obtenir un élément

  • http://extremefondue.ch/document/123
  • http://extremefondue.ch/image/123
  • http://extremefondue.ch/objet/123
  • http://extremefondue.ch/utilisateur/123
  • http://extremefondue.ch/evenement/123
  • http://extremefondue.ch/article/123
  • http://extremefondue.ch/news/123
  • http://extremefondue.ch/blog/123

Ajouter un élément (différentes possibilités… choisir la meilleure)

  • http://extremefondue.ch/add/document/
  • http://extremefondue.ch/document/action:add
  • http://extremefondue.ch/document/add
  • http://extremefondue.ch/index.php?page=document&add ….. c’est réellement la structure
  • http://extremefondue.ch/document/?add … le mieux est de séparer la ressource des actions effectuée sur celle-ci.

Modifier un élément (différentes possibilités… choisir la meilleure)

  • http://extremefondue.ch/update/document/123
  • http://extremefondue.ch/document/123/action:update
  • http://extremefondue.ch/document/123/update
  • http://extremefondue.ch/index.php?page=document&add&id=123 ….. c’est réellement la structure
  • http://extremefondue.ch/document/123/?update

.. idem pour delete..

Tagguer un élément (différentes possibilités… choisir la meilleure)

  • http://extremefondue.ch/tag/document/123/toto,vache
  • http://extremefondue.ch/document/123/action:tag/toto,vache
  • http://extremefondue.ch/document/123/tag/toto,vache
  • http://extremefondue.ch/index.php?page=document&action=tag&id=123&tag=toto,vache ….. c’est réellement la structure
  • http://extremefondue.ch/document/123/&tag=toto,vache

Rechercher un élément (différentes possibilités… choisir la meilleure)

  • http://extremefondue.ch/search/document/vache,toto
  • http://extremefondue.ch/document/action:search/toto,vache
  • http://extremefondue.ch/document/search/toto,vache
  • http://extremefondue.ch/index.php?page=document&action=search&tag=toto,vache ….. c’est réellement la structure
  • http://extremefondue.ch/index.php?page=searche&element=document&tag=toto,vache ….. c’est réellement la structure
  • http://extremefondue.ch/document/tag/toto,vache …ici à nouveau on désigne une ressource par l’intermédiaire d’une recherche

Dans ce cas, il faut choisir si l’on veut une liste de ressources ou directement les ressources elles-même !!! On peut donc faire 2 requêtes différentes.

  • http://extremefondue.ch/document/tag/toto,vache … retourne toute les ressources qui correspondent
  • http://extremefondue.ch/document/taglist/toto,vache .. retourne la liste des ressources qui correspondent

Il est aussi possible de représenter cette recherche en séparant les mots-clés par des /

  • http://extremefondue.ch/document/tag/toto/vache … retourne toute les ressources qui correspondent
  • http://extremefondue.ch/document/taglist/toto/vache/dromadaire qui ne manque pas d’air/ .. retourne la liste des ressources qui correspondent

La solution est donc bel et bien de séparer la désignation de la ressource grâce à une url propre, et l’action que l’on veut faire sur la ressource. Une pure application REST fonctionne par le protocole HTTP. Les actions ne sont pas dans l’url. Les actions sont directement dans la requête http. Ici, pour des raisons de commodité des outils utilisés, on fourni les actions par le mécanisme des paramètres.

URL humaines..

Dans le cas décrit ci-dessus, une ressource est localisée à une url, puis elle est un type d’élément et possède un id. Ce qui identifie très bien et de manière unique toutes les ressources. Cependant, ce n’est pas très pratique pour un humain de se souvenir de l’adresse ou plutôt de différentier l’article 23 et le 27…… un nom est plus humain.

Dans cette structure, tous les éléments ont des métadonnées obligatoire qui sont le nom, la date de création et la date de modification. Il est donc possible de combiner ces informations pour faire une adresse humaine.

Ainsi, une adresse de base suffisante pour désigner une ressource peut être complétée pour indiquer à un humain de quoi il n’agit et proposer une extension de fichier qui peut être utile pour certaine applications.

  • http://extremefondue.ch/document/123
  • http://extremefondue.ch/document/123/balade dans la nature.html

Vue que ce qui est dérrière l’id n’as pas d’importance, on peut y mettre n’importe quoi et être certain que les accents et espace ne gênes pas ! Mais comme ça peut être déroutant… il est possible de faire une version sans espaces.

  • http://extremefondue.ch/document/123/balade-dans-la-nature.html

Communication entre machines

Ensuite, il est possible à des humains d’avoir des ressources. Cependant, pour des machines c’est plus compliqué. L’HTML n’est pas un format facile à comprendre. il faut prévoir plusieurs vues possibles de la même ressources.

Nous avons donc:

  • la vue html qui est la vue standard
  • la vue Atom qui est celle compréhensible par les agrégateurs de flux et plus généralement par les machines.
  • la vue JSON qui est directement interprétable par une application javascript.
  • des formats spécifiques à la ressource tel que vcard, vcalendar,

Ces différente vue sont obtenues en passant en paramètre l’option &output=atom … par exemple.

AtomPub

Hormis la machinerie web pour manipuler des ressources, il est possible de définir un protocole externe pour que des machines puisses manipuler des ressources. Il est ainsi possible de faire des logiciels de bureau et des services web pour manipuler des données.

De nombreux essais sur des plateforme de blog on fait évoluer l’idée pour arriver jusqu’au protocole AtomPub.

voir l’idée avec AtomAPI

Utiliser Atom comme format, et faire un vrai services REST avec les requêtes HTTP GET, POST, PUT, DELETE pour manipuler les ressources. Voilà en gros l’idée.

Ensuite, il faut voir comment implémenter la machinerie, et voir s’il est possible faire cohabiter des interfaces web et un services atompub sur les mêmes url !

En mélangeant encore un peu d’ajax, le tout devient très intéressant.

Jquery supporte les requêtes ajax HTTP put et delete, mais pas dans tous les navigateurs (lesquels?)

Authentification

Il peut être utile de pouvoir restreindre l’accès à certaines ressources. Donc il faut un moyen d’authentifier des utilisateurs. Comment faire avec des ressources accessible via AtomPub ?

Voici un article à ce propos:

http://www.xml.com/pub/a/2003/12/17/dive.html

L’idée est d’utiliser un système d’authentification décrit ici: http://www.oasis-open.org/committees/wss/documents/WSS-Username-02-0223-merged.pdf

…… après de nombreuses réflexion est de nombreux remaniement… voir l’étude concrète de la création d’une application presque REST.. smile clin

7 Mar 2008 : 18:09

Comment faire un schéma heuristique sur le web

Schéma heuristique sur le web

Je cherche toujours le moyen de prendre de notes avec un ordinateur.. j’ai encore rien de très pratique. (mais ça commence avec ce système de wiki) Souvent je prends des notes à la main sous forme de schéma heuristique.

Le but est donc de pouvoir refaire quelque chose de semblable avec un ordinateur. Et mieux encore dans une page web!

J’ai la possibilité de faire des bloc pour représenter un diagramme, mais je n’ai encore rien trouvé pour faire un trait de liaison entre les différents bloc. L’HTML n’est pas fait pour ça.

Le mieux est de s’orienter du côté du SVG, c’est un format ouvert. Compris par les navigateurs web (les vrais navigateurs), et vectoriel. Tout ce que l’on demande.

Le but est de pouvoir insérer des schémas heuristiques directement dans la page, dans un document wiki. En attendant de pouvoir vraiment réaliser ceci. Voici déjà quelques pistes à propos des applications de bureau dans le domaine des schémas heuristiques et aussi de la prise de note.

Le meilleur choix que j’ai trouvé est un projet open source et multi-plateforme c’est freemind. Comme il est possible de le voir directement en exemple dans sa documentation, il existe même une applet java qui permet d’afficher les schémas dans une page web.

Le logiciel est également capable d’exporter ses créations dans divers formats, dont l’html, le pdf et surtout le svg. La création du svg est fait avec la bibliothèque Batik de dessin de graph 2d.

aussi http://www.deepamehta.de/docs/download.html permet de faire des graphes.

Il est donc intéressant d’étudier ce fonctionnement pour générer aussi à ma façon un contenu svg pour en mode wiki. Pour ça il faudrait une syntaxe wiki de création de diagramme?

Dans le même genre de réflexion il existe également des logiciels de prise de note. Par exemple, Voodoopad permet de prendre des note et d’ajouter directement un petit dessin fait directement dans une pop up à la main. C’est une bonne idée !

plein d’infos sur des outils pour prendre des notes et gérer de l’info… sur ce blog http://www.opossum.ca/guitef/archives/001347.html

Graphe

J’ai découvert ce magnifique programme qu’est graphviz. C’est un programme qui permet d’afficher les graphes fait dans le format de graphe dot fait par at&t. Graphviz peut également exporter ces document dans de multiple format bitmap ou non. Dans les plus utiles pour moi, png, pdf et svg !

Omnigraffle est capable de lire les documents dot !

C’est une syntaxe assez facile a écrire.. et il semble qu’il existe de multiples programmes qui permettent de convertir ce format dans un autre. Et dans le tas notamment des programme qui peuvent exporter du contenu web! Là on approche du but !

Pour l’instant voici un exemple avec DokuWiki

Il existe aussi une bibliothèque qui est sensée convertir le graphe au format .dot en png ou svg ou pdf pour l’afficher dans une page web. http://www.graphviz.org/webdot/

Omnigraffle -> dot

L’édition graphique d’un schéma c’est quand même plus simple et plus intuitif, cependant, je n’ai trouvé aucun outils de dessin qui soit capable de faire de l’exportation en .dot . Les outils qui font ce genre d’exportation sont souvent des outils qui traitent des donnés et qui les présentent en graphe, mais rarement des outils de dessin de graphe !!

Donc je cherche a utiliser l’excellent omni graffle pour faire des schéma simple au format dot.

Omnigraffle est un logiciel de dessin vectoriel, donc il stock beaucoup d’information sur l’apparence du dessin. Moi j’aimerai juste obtenir des informations de liaison entre objet et les chaîne de caractère qui sont associées.

En décortiquant le format de fichier .graffle on trouve quelques infos. Tout d’abord. Nous avons la chance que le format de fichier est un document xml ! au format .plist d’apple ! Ce qui facilite grandement la compréhension !

Observons le schéma d’un cercle qui est relié par une flèche à un rectangle. Tout d’abord, nous avons:

<key>GraphicsList</key>

qui a pour contenu un tableau des objets qui sont dans le dessin.

Chaque objet est dans une balise <dict> qui elle même contient les infos de l’objet et son id:

<key>ID</key>
<integer>2</integer>

Puis, une flèche, qui est un objet de liaison comporte une tête et une queue.

<key>Head</key>
<dict>
  <key>ID</key>
  <integer>1</integer>
</dict>
<key>Tail</key>
<dict>
  <key>ID</key>
  <integer>2</integer>
</dict>

Cette flèche comporte en elle les informations qui permettent de savoir à quels objets elle est reliée. Ainsi que le sens. Donc, nous avons théoriquement toutes les informations nécessaires pour créer un fichier .dot.

Il faut encore récupérer les chaînes de caractère qui sont en l’occurrence en rtf.

<key>Text</key>
<dict>
   <key>Text</key>
   <string>
      {rtf1macansicpg10000cocoartf824cocoasubrtf410
      {fonttblf0fswissfcharset77 Helvetica;}
      {colortbl;red255green255blue255;}
      pardtx560tx1120tx1680tx2240tx2800tx3360tx3920tx4480tx5040tx5600tx6160tx6720qcpardirnaturalf0fs24 cf0 salade bleue}
   </string>
</dict>

Il faudra voir le comportement du rtf, pour l’instant, ce n’est pas très concluant.. un fichier entièrement fait en texte n’est pas bien interprété par omnigraffle… et dans l’autre sens.. le codage rtf n’est pas terrible comme chaîne de caractère pour le format dot… donc là il va probablement falloir faire une petite conversion de format pour le texte.

Dans sa globalité ce projet n’as pas l’air complètement irréaliste. Donc à suivre…

13 Dec 2006 : 15:21

Généalogies des navigateurs web

Généalogie des navigateurs web

Cette page est un bloc note pour stocker des informations relative à l’historique des navigateurs web.

Le navigateurs web est vraiment le logiciel incontournable actuellement. Tout ce fait de plus en plus sur le web. Cependant, peu de personne savent vraiment ce qu’est un navigateur web, (sans même entrer dans le côté technique.). En effet, énormément de personne confondent déjà le web et internet.

Pour beaucoup de gens, internet, c’est la petite icone bleue en forme de e, alors quand on leur explique que le web n’est qu’un des nombreux service d’internet, il ne comprennent pas forcément !

Pour utiliser ce service qu’est le web, il faut un navigateur web. Actuellement (en 2006), les navigateurs les plus courants sont Internet Explorer, FireFox, Safari,opera.

Mais il en existe beaucoup d’autres, et il en a existé beaucoup d’autres. Leur histoire est complexe, les enjeux sont énormes, et souvent le grand publique ne sais rien. J’ai donc commencé à faire quelques recherches pour tenter de faire un arbre généalogique des navigateurs web.

Quelques dates:

  • 1990 Tim Berners-Lee lance le 1er navigateur Web appelé World Wide Web qui tourne sur NeXT
  • mars 1993 Lancement de Lynx
  • 1993 Mosaic (navigateur mode texte) tourne sur X-Windows, Unix et Mac
  • décembre 1994 Netscape crée Mozilla qui servira de base au navigateur Netscape 1.0
  • août 1995 Internet Explorer est inclus dans Windows 95
  • septembre 1995 Netscape Navigator 2.0
  • 1996 Internet Explorer 2.0
  • 1996 Première version d’Opera
  • août 1996 Netscape Navigator 3.0
  • août 1996 Internet Explorer 3.0
  • juin 1997 Netscape Navigator 4.0
  • mars 1999 Netscape Navigator 4.5
  • mars 1999 Internet Explorer 5
  • septembre 1999 Netscape Navigator 4.7
  • novembre 2000 Netscape Navigator 6
  • juin 2002 Mozilla 1.0
  • novembre 2006 Internet Explorer 7.0
  • 1983 Editeur SGML Grif (appelé plus tard Thot) GRenoble Interactive Formatter
  • 1990 WorldWideWeb
  • 1992 Erwise, ViolaWWW, pc: Midas, Mac: Samba
  • 1993 NCSA Mosaic (université de l’Illinois) et Lynx. => image(Mosaic 0.10) ; formulaires interactifs (Mosaic 2.0pre5)., Arena de HP
  • 1994 Netscape Navigator 1.0. Cello, IBM WebExplorer, Cyberdog (date pas fiable), Spyglass Mosaic on April 5th (début du travail), Navipress (aussi éditeur)
  • 1995 Microsoft Internet Explorer 1.0 et 2.0. => formatage tabulaire (Netscape Navigator 1.1b1), documents multi-cadres (Netscape Navigator 2.0b1), Java, JavaScript (Netscape Navigator 2.0b3). HotJava, OminWeb (pour next), w3m (texte)
  • 1996 Netscape Navigator 2.0 et 3.0 ; Internet Explorer 3.0 ; Opera
  • 1997 Netscape Navigator 4.0 ; Internet Explorer 4.0. Amaya 1
  • 1998 Netscape Navigator 4.5 ; projet Mozilla. => AOL rachète netscape qui a perdu la guerre !
  • 1999 Internet Explorer 5.0. Grail (mort?)
  • 2000 Netscape 6.0, K-Meleon, OmniWeb (pour osx)
  • 2001 Internet Explorer 6.0. Elinks (texte), Off By One
  • 2002 Mozilla 1.0. Netscape 7.0, Phoenix (en développement)
  • 2003 Safari, Phoenix devient FireBird
  • 2004 Netscape 7.2 (basé sur mozilla 1.7),Mozilla Firefox 1.0 (9 nov 2004 (anciennement phoenix et firebird), mais développement depuis 2002 par david Hyatt !)
  • 2005 Netscape 8.0 (basé sur firefox 1.0), sleipnir
  • 2006 Mozilla Firefox 1.5. et 2. Opéra 9 et IE7 (grande année)

Liens d’héritage

  • NCSA Mosaic => (c’est juste les màªme gens, mais pas le code) Netscape Navigator => Netscape Communicator (avec module composer et mail) => Mozilla Gecko(pas encore sorti il est déjà la base de netscape 6)
  • Mozilla => Netscape 6 (onglets et bloc popup)
  • Mozilla 1.7.12(Gecko) => K-Meleon (utilise une GUI windows et pas XUL.. pour àªtre plus léger !)
  • Mozilla => Beonex ??? (win et osx)
  • Mozilla => Chimera => Camino
  • Mozilla => Galeon => Epiphany (pour gnome)
  • Mozilla => Skipstone
  • Mozilla => Salamander (fin dec 2003)
  • Mozilla => Phoenix => Mozilla Firebird => Mozilla Firefox => Flock
  • Mozilla => SeaMonkey (été 2005 suite de mozilla mais plus par la fondation)
  • Firefox => MadFox (2005 et déjà abandonnée. Le but était d’ajouter des fonctionnalité de IE à firefox !)
  • Firefox 1.0 => Netscape 8.0
  • Grift/Thot (editeur sgml) => Symposia (editeur html) => Amaya
  • Arachne (navigateur pour DOS)
  • Dillo (ne supporte pas javascript. source de 400ko !)
  • HotJava
  • NCSA Mosaic => Spyglass Mosaic (un accord existait pour avoir le code, mais il n’a pas été utilisé !)
  • Spyglass Mosaic => Microsoft Internet Explorer
  • Microsoft Internet Explorer => MyIE (MyIE2) => Maxthon (mais peux aussi utiliser Gecko !)
  • Microsoft Internet Explorer => Avant browser (surcouche IE)
  • IE => kioware
  • GUI Avant Browser + moteur Gecko => Orca Browser
  • Konqueror (khtml) => Safari (webCore) => omniWeb (depuis février 2003)
  • konqueror => Abrowse …. pour AtheOS ? Syllable
  • Safari (webkit) => Shiira
  • Safari (webkit) => Sunrise browser (webcore et le moteur et webkit le moteur + des API)
  • Safari (webkit) => TrailBlazer (2004)
  • Safari (webkit) => KidsBrowser
  • Safari (webkit) => BumperCar
  • Safari (webCore) => Atlantis
  • icab
  • Comppuserve
  • Ie5 mac (tasman)
  • Gecko=> AOL mac

linux

  • SkipStone
  • Konqueror
  • Galeon
  • Epiphany

En 2002: En tout, 115 navigateurs différents, sous plusieurs versions (Evolt).

(OmniWeb est l’inventeur du blocage de popup)

NCSA = National Center for Supercomputing Applications

  • Line Mode Browser un client pour les terminaux fonctionnant en mode ligne (développé au CERN) ;
  • Cello un client pour les PC sous Windows (développé à Cornell Law School);
  • Chimera un client pour l’environnement X-Window, utilisant les Athena’s Widgets ;
  • tkWWW un client pour l’environnement X-Window utilisant la boîte à outils tk.

Nom des principaux moteurs

  • mozilla => Gecko
  • safari => khtml/webcore
  • IEmac => tasman
  • IE => trident
  • Opera => Elektra puis presto

Superbe comparaison sur wikipédia en

Voici l’arbre généalogique des navigateurs web en pdf.

Aperçu du rendu de différents navigateurs web début 2007

Voici un aperçu du rendu de différents navigateur web que j’ai réalisé avec les mêmes pages de référence.

Tout d’abord le site du groupe scout marfaux. Qui est une page moderne faite avec différents style css subtiles, qui peuvent être une difficulté pour les navigateurs anciens ou pas très futés. Il y a du positionnement fixe, de la transparence avec le style opacity, des arrondis de bordure. Ce sont les principales différences sur lesquelles les navigateurs ont des comportement différents.

La seconde page est le page wikipedia qui concerne les navigateur web. C’est une page qui est sensé s’affiche de manière correcte pour une majorité de navigateur.

Dans les navigateurs actuels, il existe des familles de navigateurs qui utilisent le même moteur. Et parfois des navigateur totalement indépendant avec leur propre moteur de rendu.

Sans trop entrer dans les détails subtils d’héritage et affiliation, Les grandes familles sont:

  • Gecko de Mozilla
  • Trident (windows) et Tasman (mac) de Microsoft
  • WebKit d’Apple
  • Presto moteur d’Opera

J’ai réalisé ces captures d’écran sur un mac osx 10.4.9 avec des navigateurs web qui fonctionnent sur cette plateforme. Ce ne sont pas forcément les versions les plus récentes. Mais au moins ils fonctionnent.

Les moteurs indépendants

Amaya

C’est le navigateur officiel du w3c, ce n’est pas vraiment un navigateur utilisable, c’est plutôt un outils expérimental pour tester diffèrentes nouvelles spécifications. Ce navigateur est également un éditeur de page HTML. Ce qui correspond à la philosophie originelle du WorldWideWeb de Tim Berners Lee. Le web est accessible en lecture et écriture. Cette philosophie, n’a jamais vraiment démarrée et le web est plutôt devenu une vitrine de document non éditable. Mais ces dernières années, la philosophie lecture/écriture est revenue avec l’avènement du wiki ! L’internaute devient un acteur. Mais avec le wiki, ce n’est plus le navigateur qui permet l’édition de page, c’est plutôt le document web lui même qui devient une application pour s’auto-éditer.

En effet, le web originel fait de documents statiques devient de plus en plus une plateforme applicative.

Capture d’écran de Amaya 9.2.2 2007_04_12_11_13_amaya_9_2_2_marfaux.png 2007_04_12_11_34_amaya_9_2_2_wikipedia.png


Opera

Opera est un navigateur multiplateforme. Son moteur s’appelle presto. Ce moteur est surtout présent dans des applications embarquées comme certains téléphones portables ou la nintendo DS et la wii. Il est également utilisé par Adobe dans la creative suite.

Capture d’écran de opera 8.54 2007_04_12_11_37_opera_8_54_marfaux.png 2007_04_12_11_37_opera_8_54_wikipedia.png


iCab

iCab est un navigateur web qui est développé pour mac depuis 1999. Il est issu d’un navigateur fonctionnant sous Atari. C’est actuellement le seul navigateur qui est développé pour les macs sur processeur 68k.

Capture d’écran de iCab 3.0.2 2007_04_12_11_42_icab_3_0_2_marfaux.png 2007_04_12_11_43_icab_3_0_2_wikipedia.png


Internet Explorer

Internet explorer pour mac est sorti en début 2000. (pour Mac OSX) C’est le premier navigateur web a implémenter presque complètement css1. (Même si actuellement, ce navigateur parait ne pas bien supporter les css) Le moteur Tasman est utilisé pour cette version d’Internet explorer mac. Donc, ce navigateur n’a rien en commun avec la version d’internet Explorer pour windows qui lui utilise le moteur trident.

Capture d’écran de IE 5.2 pour mac avec le moteur Tasman 2007_04_12_11_44_internet_explorer_5_2_mac_marfaux.png 2007_04_12_11_45_internet_explorer_5_2_mac_wikipedia.png


Gecko

En 1998, sur la fin de la guerre des navigateurs web, la société Netscape à l’agonie, ouvre le code source de son navigateur à la communauté. Le Projet mozilla est créé, il reprendre le travail sur Gecko pour l’améliorer. A l’aide de toute une communauté de développeur, ce moteur devient en quelques années un des plus performant, et il équipe actuellement toute une famille de navigateur web.

Netscape

Netscape est le navigateur phare de la période de grande expansion des débuts du web. (c’est compréhensible ce que je dis ?? en gros.. 1994 1998) Nestcape est le grand perdant de la guerre des navigateurs. Guerre perdue à cause des pratiques commerciales de microsoft pour imposer IE, mais aussi un peu à cause du manque de volonté de la part des dirigeants de netscape de vouloir implémenter des standards comme css.

Toujours est il que Gecko et toute la famille de navigateurs basés dessus doivent tout à Netscape, et paradoxalement le Netscape actuel doit tout à Mozilla et Gecko, vu qu’il utilise maintenant le moteur développé par la communauté. Toutefois, la part de marché est devenue anecdotique, en regarde des autres navigateurs utilisant Gecko.

Capture d’écran de Netscape 7.2 Gecko/20030208 2007_04_12_11_50_Nestscape_7_2_Gecko_20030208_marfaux.png 2007_04_12_11_51_Nestscape_7_2_Gecko_20030208_wikipedia.png


Mozilla

Mozilla est donc plus ou moins le Netscape de 1998 renommé et rendu opensource. Cependant, depuis, il a fait du chemin. Le moteur s’est beaucoup amélioré. Mais le principe de l’application reste le même: un gros tout en un qui fait navigateur web, client e-mail, irc, aim et web composer.

Capture d’écran de Mozilla 1.7.13 Gecko/20060414 2007_04_12_11_52_Mozilla_1_7_13_Gecko_20060414_marfaux.png 2007_04_12_11_56_Mozilla_1_7_13_Gecko_20060414_wikipedia.png


SeaMonkey

SeaMonkey n’est qu’un renommage de Mozilla. (SeaMonkey 1.0 = Mozilla 1.8). En 2005, la fondation mozilla à annoncé qu’elle avait l’intention de cesser le développement de Mozilla et de se concentrer sur Firefox et Thunderbird qui sont équivalents au tout en un Mozilla, mais dans des applications séparées.

Une communauté de développeur ne voulant pas abandonner Mozilla s’est mobilisée pour reprendre la direction du projet sous le nom de SeaMonkey. La version 1.0 est sortie début 2006.

Capture d’écran de Seamonkey 1.5a Gecko/20060822 2007_04_12_11_54_seamonkey_1_5a_Gecko_20060822_marfaux.png 2007_04_12_11_55_seamonkey_1_5a_Gecko_20060822_wikipedia.png


Firebird

Dès le printemps 2002, un projet expérimental tend à simplifier Mozilla et séparant ses différentes composantes. Le projet ne garde que la partie navigateur web et devient le navigateur web Phoenix. Le 14 avril 2003, pour des raisons de droit des marques, Phoenix change de nom et devient Firebird. En fait, le nom est plus précisément Mozilla Firebird pour faire la distinction avec FirbirdSQL qui est un gestionnaire de base de donnée. Finalement suite à un manque de visibilité à cause de ce problème de nom, le 9 février 2004 Mozilla Firebird devient officiellement Mozilla Firefox.

On peut donc actuellement considérer que ce navigateur est une vieille version de Firefox.

Capture d’écran de Firebird 1.4a Gecko/20030728 2007_04_12_13_43_Firebird_marfaux.png 2007_04_12_13_44_firebird_wikipedia.png


Firefox

Firefox est l’illustre descendant de du projet Phoenix/Firebird, lui même descendant de Mozilla et donc de Netscape… (voir ci-dessus pour les détails) Firefox est actuellement le navigateur en vogue. Actuellement (avril 2007), sa part de marché se situe entre 20% et 30% suivant les statistiques.

Firefox est devenu le produit phare de la fondation Mozilla et c’est également un des logiciels Open Source les plus connu. La grande force de ce navigateur par rapport à d’autres est la possibilité de créer des extensions, ce qui permet de combler tous les besoins des utilisateurs dans le domaine de la navigation web.

Capture d’écran de Firefox 2.0.0.3 Gecko/20070309 2007_04_12_13_47_firefox_2_Gecko_20070309_marfaux.png 2007_04_12_13_48_firefox_2_Gecko_20070309_wikipedia.png


Camino

Camino, à l’instar de Firefox est un projet qui tend simplifier Mozilla pour ne garder que la partie navigteur web de l’application. Comme son demi-frère Firefox, camino a changé de nom, au début, il s’appelait chimera. Camino est vraiment le demi-frère de Firefox, c’est même son grand demi-frère ! En effet, chimera comme FireFox a été conçu par David Hyatt (entre autre). David est un développeur très prolixe, en février 2002, il participe à la création de chimera/camino, puis au printemps il participe au début du projet phoenix/firebird/firefox, et en été, il s’en va chez Apple développer Safari !

Camino est donc le demi-frère de Firefox, ils utilisent tous deux le moteur Gecko. Cependant, Camino est exclusivement conçu pour mac avec les API coca. Il s’intègre donc mieux au mac que firefox. (avantage qui tend à s’effacer avec les progrès fulgurant de Firefox)

Capture d’écran de Camino 1.01 Gecko/20060427 2007_04_12_13_50_camino_1_01_Gecko_20060427_marfaux.png 2007_04_12_13_51_camino_1_01_Gecko_20060427_wikipedia.png


Flock

Flock est un navigateur web qui est issu de firefox. Le but est d’intégrer directement des fonctionnalités dites web 2.0. C’est à dire que flock intègre des outils pour gérer des blogs, que les favoris sont directement importés d’un compte del.icio.us … etc..

Capture d’écran de Flock 0.7.6 Gecko/20060929 2007_04_12_13_54_flock_0_7_6_Gecko_20060929_marfaux.png 2007_04_12_13_54_flock_0_7_6_Gecko_20060929_wikipedia.png


Webkit/webcore

Le webkit est carrément encore un demi-frère de FireFox ou camino. C’est également un création dans laquelle David Hyatt a participé…. et participe toujours ! Mais en même temps, le webkit.. ou plutôt le webcore est plutôt un cousin, car il n’est pas du tout basé sur Gecko et l’héritage Netscape/Mozilla. Le webcore est une création basée sur khtml, le moteur de rendu de du navigateur Konqueror qui lui fait partie du projet KDE d’interface utilisateur graphique pour linux.

Le webcore est le moteur de rendu html-css. Le webkit est un framework qui inclu le webCore et javascriptCore. Le webkit permet à toutes les applications sur mac d’utiliser facilement des technologies web.

C’est Apple qui est à l’origine de projet du webcore/webkit. C’est durant l’été 2002 que David Hyatt à rejoint apple pour développer la base du nouveau navigateur web devant équiper tous les macs. (à l’époque Internet explorer était le navigateur phare aussi sur les mac ! … même si chimera et omniweb commençais à apporter une lueur d’espoir, le monde était bien sombre sous la coupe de microsoft)

Le 7 janvier 2003, Apple annonce Safari et le Webcore/webkit, le même jour la communauté a été informée des modifications faites dans khtml pour obtenir le webcore.

Le webcore est actuellement un des meilleurs moteur de rendu html. Il équipe aussi toute une famille de navigateurs et d’application sur les macs et ailleurs. Le webcore est aussi à la base du navigateur S60 de nokia qui équipe des téléphones mobiles, ainsi que de l’environnement de développement d’application Appollo d’adobe.

Le webcore a aussi permit d’améliorer son parent direct: khtml, et donc aussi la navigation web avec konqueror. (Même si la collaboration ne s’est pas toujours fait sans heurts)

Safari

Safari est sorti en janvier 2003, c’est le navigateur maison d’apple. (mais il ne faut pas oublier la communauté qui est aussi impliquée dans le projet webkit) C’est un navigateur qui est destiné aux macs et qui a permis à Apple de ne plus distribuer Internet explorer sur les macs ! C’est actuellement un des meilleurs navigateurs existant. Il est également capable de lire nativement du pdf.

Capture d’écran de safari 2.0.4 AppleWebKit/419.3 2007_04_12_13_58_safari_2_04419_3_marfaux.png 2007_04_12_13_59_safari_2_04419_3_marfaux.png


OmniWeb

OmniWeb est un navigateur méconnu, mais qui a déjà une longue histoire. La première version est apparue en 1995 sur NeXTStep, puis a été porté sur Mac OSX en 2000. Jusqu’à l’arrivée de safari, omniweb était un des navigateurs phare sur mac (surtout pour les gens ne voulant pas IE).

En février 2003, juste après la sortie de Safari, OmniGroup a décidé d’abandonner son moteur html propriétaire et d’adopter le WebCore comme moteur. OmniWeb est le premier navigateur à intégrer une fonction anti-popup !

Capture d’écran de OmniWeb 5.1.3 AppleWebKit/125.4 2007_04_12_14_01_omniweb_563_66125_4marfaux.png 2007_04_12_14_02_omniweb_563_66125_4wikipedia.png


Shiira

Shiira est un navigateur web qui est à Safari ce que Flock est à Firefox ! Ce qui signifie que Shiira est un navigateur très semblable à safari, mais qui dispose de plein de petites fonctions supplémentaires comme le glissé-déposé pour réorganiser les onglets.

Shiira est développé depuis 2005 par des japonnais.

Capture d’écran de shiira 2 AppleWebKit/419 2007_04_12_14_04_shiira419marfaux.png 2007_04_12_14_05_shiira419wikipedia.png


Sunrise Browser

Sunrise browser est un navigateur basé sur le webkit. Il permet de voir que depuis l’avènement du webkit, il n’est plus très difficile de concevoir un navigateur web pour mac!

Sunrise Browser dispose de fonctions spéciales pour régler l’opacité et la taille des fenêtres.

Capture de sunrise breoser AppleWebKit/ 2007_04_12_14_06_sunrise_browser_marfaux.png 2007_04_12_14_07_sunrise_browser_wikipedia.png


Webkit (presque Safari 3)

Le webkit est continuellement en développement, mais il sort une nouvelle version de safari tous les 2 ans ! Donc pour bénéficier d’une version de safari avec un moteur web des plus récent et performant, il suffit de télécharger la dernière version du webkit.

Il est donc possible de changer tous les jours sa version de safari. (en fait, safari ne change pas, c’est juste le webkit à l’intérieur qui change)

Depuis février 2007 cette version du webkit est stabilisée en vue de l’intégrer tout prochainement à la nouvelle mouture de Mac OS 10.5 qui sortir d’ici peu.

Ce nouveau webkit apporte principalement le support natif de SVG ainsi que la personnalisation des boutons et formulaires via du css et une foule d’améliorations dans le support de feuille de style, css2 et css3. (les bordures arrondie, des images comme bordure de boites, l’affichage de texte multi-colonne)

C’est certainement le moteur html le plus abouti. Il est tout a fait conforme au standard w3c (avec de nombreuses fonctionnalités css2 et css3), passe le test acid2, dispose d’objets provenant du WHATWG comme l’objet canevas, il est capable de lire nativement du pdf et du svg, de plus, il est très rapide !

Capture d’écran de Safari 2 AppleWebKit/522 2007_04_12_14_09_webkit_522_marfaux.png 2007_04_12_14_10_webkit_533_wikipedia.png


Internet Explorer

Cette comparaison ne serait pas complète si j’oubliais de montrer le navigateur qui malheureusement (propos pas du tout objectif smile langue bleue) détient encore la première place dans le classement des parts de marché. (en mars 2007: IE6 42% et IE7 24% selon les statistiques de ce site) Il s’agit d’internet Explorer 6 pour windows. (Il ne fonctionne que sur windows)

J’ai donc du rien que pour l’opération dégotter un pc avec windows pour faire une capture d’écran des mêmes pages de tests sur IE6.

A première vue, il n’y a pas une grande différence me direz vous. En fait, la capture d’écran c’est bien mais pas top ! ça permet de voir certaines choses, mais pas tout. Ici on peut quand même voir que la petite étiquette noire collée en haut à droite du site marfaux est vraiment noire sur IE6 et non transparente comme elle le devrait.

Mais une capture d’écran fixe ne permet pas de voir, qu’IE6 ne supporte par le positionnement fixe relatif à la fenêtre. En effet, si l’on descend dans la page avec l’ascenseur, sur tous les navigateurs ci-dessus (même IE5 mac) l’étiquette reste fixe en haut de la fenêtre et donc visible tout le temps.

Avec IE6, ce site utilise une bidouille (un hack en anglais) pour transformer le positionnement fixe en positionnement absolu. Ce qui a pour effet de juste placer l’étiquette en haut de la page, mais si l’ascenseur descend, l’étiquette n’est plus visible.

Ce qui arrive fréquemment c’est que vu la part de marché d’internet explorer, la plupart des développeurs web (dont je fais partie) renoncent à utiliser (en tous cas à grande échelle) certaines fonctionnalités comme le positionnement fixe et la transparence des images (png et css). (et encore d’autres fonctionnalités)

Ce raisonnement est tout à fait malheureux, car les utilisateurs d’internet explorer ne se rendent ainsi pas compte des grandes lacunes de leur navigateur. Mais ceci est en train de changer. Le succès de Firefox à obligé Microsoft à reformer l’équipe de développement d’internet Explorer qui avait été dissoute en 2001 ! (on remaqure bien ici l’intérêt de microsoft pour le web)

Microsoft a donc ainsi sorti sa riposte à Firefox sous forme d’un nouveau navigateur web: Internet Explorer 7. Il corrige les quelques bugs importants décrit ci-dessus. Avec les mises à jour automatiques, IE7 a considérablement réduit la part de marché d’IE6 (~20%-25%). Cette opération a pour effet d’inverser la donne dans les parts de marché de navigateur web supportant la transparence et le positionnement fixe.

Il n’y a plus que ~42% (peut varier entre 20% et 60% suivants les sites !) des gens qui surfent avec un IE6 et donc ne voient pas la transparence, le positionnement fixe et bien d’autres choses. Au vue de cette statistique, et suivant les sites, il est possible pour les développeurs de se risquer à utiliser les fonctionnalités si longtemps délaissées.

Personnellement, j’espère que beaucoup de développeurs s’y risqueront et que l’effet boule de neige va faire son oeuvre. Finalement le reste du parc d’IE6 installé va paraitre encore plus obsolète (dans certain cas IE7 aussi même s’il vient de sortir !) et que la migration vers firefox (ou d’autres excellents navigateurs) se fera encore plus.

Capture d’écran de Internet Explorer 6: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) 2007_04_13_08_56_IE6_marfaux.png 2007_04_13_08_57_IE6_wikipedia.png

Nombre d’employés dans les entreprises du web

Nombre d’employés dans les entreprises du web

On a souvent l’habitude de penser que les entreprises connues ont beaucoup d’employés. Mais dans le domaine du web, ce n’est pas toujours vrai…

Qu’en est il vraiment ?

Fondation Mozilla

La fondation a pour but de faire la promotion d’un web ouvert et innovant.

En ce sens, elle développe des outils et des technologies. Le principal outils est le navigateur web firefox qui est utilisé par plus de 350 millions d’utilisateurs.

La fondation Mozilla emploie dans le monde 200 personnes. Dont 150 travaillent à 100% et 50 sont des sous-traitants.

Comme Mozilla gère de nombreux projets open source, il y a aussi des dizaines de milliers d’utilisateurs qui contibuent aussi au développement des logiciels de Mozilla. Il semble que les contributeurs externe développent environ le tiers du code source.

Source: MCI

Facebook

En novembre 2007, Facebook est passé de 300 à 700 employés. C’est le moment du début de la popularité de facebook (surtout en europe).

En 2009, on compte 350 millions d’utilisateurs facebook et plus de 900 employés.

Twitter

En février 2009, avait 6 millions de comptes utilisateurs et seulement 29 employés, selon neteco.com

Durant l’année 2009, le nombre d’utilisateurs a doublé, le nombre d’employés a aussi doublé. D’après une phrase de Jack Dorsey, le créateur de twitter, il y avait en septembre 2009, 74 employés.

Last.fm

D’après la page de l’équipe qui travaille chez last.fm, on peut compter 61 employés.

Sur la page about il est dit qu’au début, en 2001, les 4 fondateurs dormaient dans des tentes sur le toit du batiments Maintenant tout l’étage est occupé et depuis 2007, last.fm fait partie du groupe CBS, les fondateurs de lastfm disent donc avec humour qu’il y a 6000 personnes de plus dans l’équipe ! 😉

MySpace

En juin, 2009, MySpace annoncait des licenciements massifs pour se restructurer afin de contrer la perte de popularité du réseau social face à facebook.

C’est donc environ 500 employés qui ont été licenciés. Rien n’est clair, mais il semble qu’il devrait rester environ 1000 employés chez MySpace. Pour un total de 130 millions d’utilisateurs en juin 2009.

Voir aussi les mêmes chiffres sur money.cnn.com

Google

Google est devenu gigantesque, le nombre d’employés a donc beaucoup augmenté. Google communique directement à ce propos dans les FAQ.

Au 22 janvier 2009, on comptait 20 222 employés à plein temps chez Google dans le monde entier.

Google avait 20 123 employés au 30 septembre 2008. Au 31 décembre 2007, Google comptait 16805 employés et  au 21 décembre 2004, Google comptait 3021 employés.

Wikipedia

35 personnes.

sources: wikimedia foundation

web et informatique du futur

Web du futur

Petite réflexion sur ce qui peut nous attendre dans le web du futur. Quel sont les tendances, et surtout quelles sont nos envies !

Histoire de l’informatique

Le web étant tout de même un outil informatique, il n’est pas utile d’avoir un bref aperçu de l’historique.

Pour rappel, l’informatique est donc la « science » du traitement automatique de l’information. Donc tout notre propos ici va être en rapport avec le traitement de l’information.

Mastodontes

Dans les première heure de l’informatique, un ordinateur était principalement une machine à calculer. Par exemple, si l’on devait faire un calcul statistique, on préparait le calcul, on le convertissait en langage compréhensible pour une machine, puis on demandait à l’ordinateur de faire le calcul et enfin on récupérait le résultat pour l’analyser. Le tout prenait plusieurs jours. L’interactivité était quasi nulle.

Le terminal

Puis, les ordinateurs sont devenus plus courants, il y avait un ordinateur par université ou par grande entreprise. Pour optimiser le partage de l’ordinateur auquel on avait accès, on a inventé le terminal.
Le terminal est une bête console qui permet d’envoyer des commande textuelle à l’ordinateur au travers d’un réseau informatique.

C’est le début des réseaux informatique. On a donc commencé à inventer quelques service en réseau. Comme la messagerie. Il est ainsi devenu possible de laisser un message pour un autre utilisateur du même ordinateur.

Puis on a commencé à interconnecter les ordinateurs entre eux. C’est ainsi que la messagerie s’est développée, il est devenu possible de laisser un message à un utilisateur d’un autre ordinateur, c’est ainsi que l’on a utilisé le caractère @, maintenant très connu, pour délimiter le nom de l’utilisateur et le nom de l’ordinateur sur lequel trouver l’utilisateur.

La micro-informatique

Le coût de fabrication des ordinateurs étant de plus en plus faible, vers la fin des années 1970, on a vu apparaître des ordinateurs plus petits, destinés a une seule personne, des micro-ordinateurs.

Souvent on trouvait ces ordinateurs en kit à fabriquer par des passionnés. A l’époque, il fallait savoir bricoler et programmer pour utiliser un ordinateur. On disait qu’à l’avenir, tout le monde allait apprendre à programmer.

C’est à cette époque que se sont créés les géants de l’informatique comme Apple et Microsoft.

Apple à démocratisé l’ordinateur en créant un ordinateur complet et simple a utiliser. Plus de kit à bricoler et des programmes déjà tout faits. Personne n’a besoin de savoir programmer pour utiliser un ordinateur.

Microsoft de son côté a aussi repris l’idée qu’un ordinateur peut être utilisé par tout le monde si on fourni déjà le logiciel qui va avec. C’est ainsi que Bill Gates a eu les gens de chez IBM en leur fournissant un système d’exploitation pour la nouvelle machine d’IBM. Le Personnal Computer: PC. Les gens de l’époque, chez IBM, n’ont pas réalisé que le logiciel allait prendre plus d’importance que le matériel.

C’est ainsi que l’on ouvre l’ère de l’informatique chez monsieur et madame tout le monde. L’ordinateur permet de faire de nombreuses chose que l’on ne pensait pas auparavant. C’est à cette époque qu’une véritable révolution apparaît dans l’informatique.

Les typographes ont vu leur profession être bouleversée et disparaître avec l’arrivée du Mac pour faire de la mise en page. Le traitement de texte informatisé s’est généralisé pour tous les textes, de la simple lettre au roman.

Le retour du réseau

Dans les années 1970, le réseau informatique était indispensable pour que les utilisateurs puissent se partager le même ordinateur. Dans les années 1980 l’ordinateur devient personnel. Plus besoin de réseau puisque chacun peut avoir son ordinateur.
Dans les années 1990, le réseau fait son retour sur les ordinateurs personnels, afin de de pouvoir échanger les créations numériques plus facilement.

Les systèmes d’exploitation datant des années 1980 sont gentiment refait à la fin des années 1990 pour reprendre les concepts multi-utilisateurs et réseau qui existaient dans les années 1970.

Dans les années 2000, c’est la généralisation de l’utilisation d’internet et surtout du web. Les sites web fleurissent un peu partout et les gens s’envoie des e-mails pour tout et n’importe quoi. Le spam est devenu un gros problème.

Les applications web

Au début de l’informatique, on programmait l’ordinateur pour faire l’opération dont on avait besoin, dans les années 1970, on partageait les programmes d’un même ordinateur pour faire principalement du calcul, dans les années 1980, on nous fourni un ordinateur personnel avec un système d’exploitation graphique intuitif. On installe facilement des applications qui permettent de créer des documents.

Dans les années 1990, on échange de plus en plus des documents numériques pour en composer des nouveaux, dans les années 2000 on commence à transformer le web, capable uniquement d’afficher des documents, en web capable d’être une application, de traiter et stocker lui même les données. C’est la révolution web2.0.

Histoire du web

Le web n’est pas internet

Le web et internet sont souvent la même chose pour bon nombre de personnes. Pourtant ce n’est pas pareil. Le web est un service utilisant internet.

Quand on pense web, on pense site web. Un site web est à l’internet ce qu’une maison est à une route. L’internet est la route qui permet d’accéder à la maison et de la visiter.

L’internet existait déjà des années avant le web. Le web a été LE service tellement apprécié qu’il en a popularisé l’internet.

Genèse du web chez les physiciens

Le web est un service qui a été développé au tout début des années 1990, au CERN, pour les besoins des physiciens qui voulaient échanger facilement des documents. (Des articles de physique)

Tim Berners Lee, en charge du projet à donc conçu une architecture répondant à la demande des physiciens.

Le web est tout d’abord un format de document, le HTML, mais aussi un protocole d’échange le HTTP qui est dérivé de SMTP, le protocole que l’on utilise pour envoyer des e-mail.

Là, rien de très révolutionnaire, des formats de document il en existe des centaines et des protocoles d’échange aussi.

La grande invention du web est certainement la manière d’obtenir une ressource. C’est l’URL. Chaque ressources est accessible par une adresse unique. Il est ainsi possible de créer des liens et de naviguer de page en pages.

Ce qui a changé la donne, dans la diffusion des technologies web, c’est leur ouverture. Le fait que n’importe qui puisse utiliser les formats et protocoles. Ceci combiné à une simplicité de mise en place. Le succès est vite arrivé.

Url de plus ancienne page web (mais plus accessible): http://nxoc01.cern.ch/hypertext/WWW/TheProject.html
La plus ancienne page web encore accessible: http://www.w3.org/History/19921103-hypertext/hypertext/WWW/Link.html

Croissance et amélioration et stagnation

Le web conçu pour des besoins assez précis d’affichage d’article de physique est maintenant utilisé à toutes les sauces. Au fil des années on a amélioré le format HTML pour lui faire comprendre, les tableaux, les images, etc.. De plus on a séparé ce qui est purement de l’information du type des données (paragraphe, titre, etc…), de ce qui est de l’information purement affichage des données (bordure noire, texte bleu, etc..).

Ainsi, actuellement on utilise le format xhtml pour indiquer la structure des données, (x indique que l’html est maintenant de la famille des formats xml. Ce qui le rend plus strict et cohérent.) et le format css pour décrire l’affichage de ces données.

Avec toutes ces améliorations dans les formats, il faut des programmes toujours plus complexes pour interpréter ces formats toujours plus complexes. Ce programme est un navigateur web.

Le navigateur web est un élément indispensable de toute l’architecture web. Le navigateur a été l’objet, vers la fin des années 1990 de ce que l’on a appelé la guerre des navigateurs.

Microsoft très en retard sur la nouvelle vague du surf sur le web a tenté de rattraper son retard en imposant son navigateur en utilisant de sa position de monopole. Bilan: en 2001, c’est gagné pour Microsoft, Internet explorer a tué son principal rival Netscape; Internet Explorer a le monopole et microsoft dissout l’équipe de développement d’Internet Explorer !

Le phoenix renaît de ses cendres

Dès le moment où Internet Explorer devient le seul navigateur du marché et qu’en plus le développement de celui-ci est abandonné. Le web n’évolue plus. De nombreuses fonctionnalités décrites dans les spécifications des versions de xhtml et css ne sont jamais mises en places.

Heureusement pour le web, au moment de mourir, terrassé par l’adversaire, Netscape ouvre et distribue le code source de son navigateur web. En quelques années, tout se réorganise en un projet open source gérer par la fondation Mozilla auquel contribuent tous les gens intéressés.

Un jour voit arrivé le bien nommé Phoenix, enfin un navigateur qui tente de reprendre l’innovation du web là où on l’avait laissé. Après quelques temps, Phoenix devient Firebird, et puis ensuite Firefox, nom qui est actuellement beaucoup plus connu.

En quelques années donc, la fondation Mozilla a réussi à recréer un navigateur capable de rivaliser avec celui en place, et même de le dépasser largement. Mais pas seulement, la fondation a aussi relancé l’innovation dans le web en incitant d’autres grands acteurs à créer leur navigateurs web respectueux des standards. La diversité est là tout en assurant un fonctionnement correct et identique sur tous les navigateurs web.

C’est ainsi que le web est à nouveau en plein développement. L’initiative de Mozilla a eu pour effet que microsoft à reformé son équipe de développement d’internet explorer pour ne pas rester à la traîne.

Convergence web et informatique

La reprise de l’innovation dans le monde du web à conduit à dépasser le modèle originel du web: le web des documents, pour l’étendre au web des applications, ce que l’on appelle souvent le web 2.0.

Ainsi, avec le web 2.0, le web devient donc une nouvelle plateforme applicative. Les applications de bureau traditionnelles sont de plus en plus migrées vers le web.

Le navigateur web prend de plus en plus d’importance, il devient l’unique application nécessaire sur le système d’exploitation d’un ordinateur.

Le web est donc en train de conquérir le domaine des applications de bureau. (Est ce pour protéger windows et son écosystème que que microsoft à tout fait pour torpiller le web?)

Les applications web sont donc en train de remettre en cause tout un modèle d’habitude de fonctionnement de l’informatique.

Remise en cause de la métaphore interface homme-machine traditionnelle

Cela fait une vingtaine d’années que l’on utilise les mêmes métaphores pour faire l’interface entre l’homme et la machine, mais existe d’autres pistes ?

Interface homme-machine

Ce que l’on entend par interface homme-machine c’est le moyen que l’on utilise pour que l’humain puisse communiquer avec un outil comme un ordinateur.

L’humain est un des rares animaux à utiliser des outils. Jusqu’à l’arrivée des humains, l’évolution a plutôt adapté les espèces pour qu’elles soient dotées des fonctions dont elles ont besoin. Avec l’humain, c’est une rupture dans ce modèle: l’humain utilise des outils et il fait évoluer ses outils plutôt que lui même. Ce qui est beaucoup plus rapide.

Utiliser un marteau ou un couteau est une révolution en terme de l’évolution, mais c’est facile pour une humain actuel. Utiliser un fer à repasser est déjà plus, complexe, il faut une planche, il faut de l’eau, de l’électricité et il y a un savoir faire pour ne pas endommager les habits. Utiliser un ordinateur, c’est complexe, il y a une infinité de possibilités. Un humain seul ne peut pas connaître le fonctionnement exact et complet d’un ordinateur. On va donc créer une couche d’abstraction qui permet à cet humain de se servir de l’outil ordinateur.

Beaucoup de moyens ont existé pour communiquer avec des ordinateurs. A une époque le standard était la carte perforée en entrée et l’imprimante en sortie. Puis on a eu le terminal avec des lignes de commande, et ensuite l’interface graphique.

L’arrivée de l’interface graphique a été une révolution. Elle a permis de démocratiser l’utilisation d’un ordinateur en proposant une métaphore simple pour utiliser un outil complexe.

Pour ce faire, on a adapté l’ordinateur aux habitudes des gens et non le contraire. Ainsi on limite la formation des gens pour utiliser l’outil.

C’est alors que l’on a choisi la métaphore du bureau. Votre ordinateur est comme votre bureau. Votre disque dur est comme un tiroir dans lequel on range des dossiers. Dans les dossiers on place des fichiers.

Pour utiliser un fichier, on l’ouvre avec une application. Tout ces concepts sont représentés graphiquement à l’aide de fenêtres (munie d’ascenseur) et d’icônes.

Au fil des années, tout un vocabulaire été détourné pour devenir un terme informatique. Avez vous déjà vu un ascenseur horizontal sur une fenêtre ailleurs que sur un ordinateur ?

La métaphore utilisée à la base pour simplifier la manipulation de donnée en donnant des noms connus à des concepts informatiques est en train de se compliquer. On va plus loin que la métaphore avec les termes informatiques et finalement le terme ne veut plus rien dire dans le monde réel.

Mais les utilisateurs d’ordinateur se sont habitués, ils ne s’étonnent pas que depuis que les souris communiquent avec des dents bleues ont doivent leur changer les piles. (souris sans fil bluetooth)

Les utilisateurs d’ordinateur ne doivent pas voir beaucoup dehors à force de toujours coller plein de fichiers sur leurs fenêtres!

La métaphore a ses limites. A l’origine elle était une aide en faisant un lien avec le monde réel plus connu des utilisateurs. Mais actuellement c’est l’inverse, les jeunes apprennent qu’une icône est une peinture religieuse après avoir associé ce nom avec les pictogrammes qui sont partout sur leurs écrans.

Actuellement, pour les jeunes, fichier et dossier sont essentiellement des termes d’informatique avant d’être des bouts de papier ou de carton. Signe du temps, les beaux bureaux en bois comportent de moins en moins de tiroirs, il se limitent même bien souvent à une simple planche sur laquelle on va poser son ordinateur !

Le monde réel s’est adapté, la métaphore du bureau a transformé les habitudes de travail au point de se rendre elle même incohérente.

Si dans le monde réel on n’utilise plus de fichier et de dossier, pourquoi est ce qu’on le fait toujours sur nos ordinateurs ?

Organisation des données

Un ordinateur n’est qu’un outil de gestion d’information. L’information est quelque chose de peu palpable, de flou, de mouvant, de polymorphe. Pour la traiter de manière unique et identique sous toutes ses formes on a tenté de la formatter, de l’organiser. On a créer le fichier.

Ce paquet d’information n’est tout d’abord représenté que par un nom dans les interface-homme machine à ligne de commande. Puis au nom, on a ajouté une petite image (une icône) que l’on peut glisser et déposer sur un bureau d’une interface homme-machine graphique.

Devant la croissance du nombre de fichier on a tenté de les organiser. Des barbus dans les années 1960 ont imaginé un système de fichier à arborescence.

Il est devenu possible de créer des fichiers avec le même nom tant qu’ils ne sont pas dans le même niveau de l’arbre de fichier. Avec une arborescence de fichiers et de dossiers on a inventé le chemin d’accès. Ce même chemin d’accès qui avec l’arrivée du web est devenu un complément de l’URL, de l’adresse unique permettant de désigner une ressource.

Tous les systèmes d’exploitation courants utilisent des systèmes de fichiers arborescents pour classer des fichiers. C’est le moyen le plus courant que l’on trouve pour organiser et classer des données. Mais est ce le meilleur ?

Non, ce n’est pas le meilleur. Une arborescence a des limites. Un fichier ne peut pas être à plusieurs endroits de l’arbre en même temps. Par exemple, si je veux faire un dossier de photos contenant toute les photos du petit dernier de la famille, et en même temps un dossier des photos du dernier Noël en famille. Que faire des photos du petit dernier de la famille lors de la fête de Noël ?

Je trie selon un critère ou selon l’autre ? Je duplique le fichier ?

Cette question est souvent résolue par les informaticiens en proposant une nouvelle application qui est un gestionnaire de photos. (iPhoto, picasa, etc..) Ce gestionnaire est capable de créer des albums à partir de sa photothèque de base. On crée des vues différentes des mêmes données.

C’est un emplâtre sur une solution boiteuse. On préfère fournir une nouvelle application avec de nouvelles règles d’utilisation plutôt que de remettre en cause les habitudes.

Pourtant la solution existe, elle est simple et efficace, c’est la généralisation du principe de l’arbre, en informatique on dit que c’est un graphe et sur le web on présente des tags et concrètement ce sont des groupes.

Les tags

Le système de catégorisation par tags est a été popularisé surtout par le service de galerie de photos en ligne: Flickr.

Ce n’est pas étonnant d’avoir vu émerger ce principe sur un service de photos en ligne. En effet, ce système est bien adapté aux photos.

Si l’on reprend notre exemple précédent des albums photos, on peut le résoudre en taguant les photos du petit dernier avec son prénom, et les photos de noël avec un tag du genre Noel2009. Pour les photos faisant partie des deux ensembles, on leur attribue les deux tags.

La même ressource peut se retrouver simultanément dans plusieurs groupes. Ici c’est bien le terme de ressource qui est utilisé et non plus le terme de fichier. C’est pourtant aussi un paquet d’information. Le terme de ressource est celui qui est utilisé dans la terminologie du web. C’est le R de URL. C’est la ressource qui est pointée par ce système d’adresse.

Si l’on admet que la métaphore du bureau a vécu. Il est donc plus juste d’utiliser le terme de ressource pour désigner ce paquet d’information que l’on veut organiser.

Un système de catégorisation par tag permet de résoudre certains problèmes comme le fait de pouvoir mettre une ressource dans plusieurs groupes en même temps. Mais il en pause aussi d’autres. Vu que l’on peut associer autant de tags que l’on veut à une ressource, le nombre de tag est très souvent plus élevé que le nombre de niveau de dossier que l’on créerait pour faire un équivalent avec une arborescence.

Petit rappel important, le graphe étant la généralisation de l’arbre, il est toujours possible de représenter une arborescence à l’aide d’un système de tag. L’inverse n’est pas vrai.

Moteur de recherche

Dans la pratique, on propose rarement une vue par dossier et sous dossier pour naviguer dans un système de tags. On privilégie souvent le nuage de mot. Dans le nuage, la taille des tags est proportionnelle au nombre d’utilisation de celui-ci. On peut aussi dire qu’il représente la taille du groupe de ressource qu’il forme.

Le nuage de mot est utile pour avoir un aperçu global du contenu que l’on a à disposition. Mais pour retrouver concrètement une ressource on privilégie le moteur de recherche.

Le moteur de recherche est une ligne de commande dans laquelle on indique le type de ressource que l’on veut ainsi que les tags qui permettent de déterminer le sous ensemble que l’on recherche.

Ainsi, par cette fonction de moteur de recherche c’est le grand retour de la ligne de commande qui se profile. Mais au fil du temps elle s’est améliorée. La ligne de commande est devenue plus intelligente. Un des meilleurs exemple est probablement google. Il est possible d’utiliser le champ texte de requête pour non seulement faire une requête, mais aussi pour demander à google de faire un calcul, de convertir des unités, d’afficher le cours de la bourse ou de convertir des monnaies au change actuel.

La ligne de commande moderne connaît de plus en plus la syntaxe du language humain. Une fois de plus, on voit que la métaphore du bureau n’est plus utile si l’on peut parler directement avec son ordinateur !

Mais on en est pas encore exactement au point de pouvoir philosopher avec sa machine. En l’état actuelle des choses, la ligne de commande la plus répandue est certainement la barre d’adresse de son navigateur web. Elle permet de faire toutes les requêtes que l’on veut si l’application web qu’elle pointe est bien conçue.

De plus, quand cette barre d’adresse est celle de Firefox 3, c’est encore mieux. En effet, cette barre porte le nom de awesome bar. Ce qui indique que ce n’est pas un bête champ de texte. Non, cette barre est une ligne de commande intelligente. Elle est capable de compléter une adresse déjà connue à partir de quelques bribes de mots.

Ainsi, si je connais un service web dont l’adresse est bien conçue, il m’est presque possible de converser avec lui dans un language proche du language humain.

Voici un exemple concret avec l’ajout d’un document:
L’URL suivante doit être utilisée pour ajouter un document: http://example.com/document/?new

Dans la awesome bar, il me suffit de taper: new document example et l’adresse ci-dessus m’est proposée. La seule limitation est le fait que l’adresse doit déjà avoir été utilisée pour être proposée.

Voici un autre exemple qui montre comment demander un document avec des tags. Ma demande est la suivante:

document example réflexion web

La awesome bar me propose l’adresse: http://example.com/document/réflexion/web/  qui me permet de lister les tous les documents sur example.com qui correspondent à l’union des groupes réflexion et web.

Comme on le voit dans cette exemple, il est possible d’utiliser le même mécanisme d’adresse web pour obtenir une ressource classée avec des tags qu’une ressource placée dans une arborescence. L’unique différence se situe dans le fait que les tags peuvent être mis dans une ordre quelconque alors que pour une arborescence l’ordre à son importance.

On remarque donc ici, que la forme des URL proposées pour piloter les applications web a une grande importance. Si l’url n’est pas bien formée il peut être impossible de l’utiliser avec une barre d’adresse intelligente.

La fondation Mozilla est donc déjà en avance dans le domaine de la ligne de commande moderne. Et ce n’est pas fini, dans les laboratoires de Mozilla on trouve l’extension Ubiquity qui est une interface par ligne de commande dont le but est d’être le plus proche possible du language humain.

L’interface homme machine du futur

Après ces quelques exemples de futurologie déjà bien ancré dans le présent, (les exemples ci-dessus sont des exemples bien réels qui sont utilisés quotidiennement) le but est maintenant de tenter d’imaginer l’interface utilisateur du futur.

On a déjà dit que la métaphore du bureau est totalement dépassée. Donc que vais-je voir sur mon écran d’ordinateur si il n’y a plus de bureau, de dossier et de fichier ?

Comme nous l’avons vu ci-dessus, l’interface utilisateur du futur comportera certainement une ligne de commande intelligente capable de comprendre de requête proche du language humain. La notion de fichier sera remplacée par la notion de ressource. Une ressource peut être une image, un document, une personne, un lieu, etc…

Pour utiliser une ressource, il n’y aura pas besoin de disposer d’une application. La notion actuelle d’ouvrir un fichier avec une application va disparaître. A l’avenir il faudra juste demander d’éditer la ressource. La ressource porte en elle même toute la machinerie qui permet l’éditer. Ainsi, plus de problème de mise à jour des applications ou de compatibilité des formats. La ressource est auto-gérable au travers du navigateur web.

Les mondes du web et de l’informatique vont totalement fusionner. L’ordinateur ne sera qu’un terminal d’accès à des ressources web.

Les ressources crées ne seront plus cantonnées au disque dur de son propre ordinateur, elle seront directement posée sur le web. Physiquement, elle seront sur un serveur web quelque part, le mieux étant directement sur le serveur web de sa maison. Cette approche permet d’avoir des ressources qui sont disponibles pour soi évidemment, mais également pour tout ceux qui ont le droit d’y accéder. Il devient ainsi beaucoup plus facile de partager des ressources vu qu’elle sont en permanence en ligne.

Seul bémol, la connexion réseau est alors indispensable pour tout ordinateur! Cependant, on peut assouplir cette dépendance en utilisant un mode déconnecté qui permet le travail en local sur son ordinateur, et qui ensuite synchronise les ressources locales et distantes dès qu’une connexion réseau est retrouvée.

Et mon bureau alors qu’est ce qu’il devient ?

Cette question devrait plutôt être posée sous la forme suivante: Quel est mon point de départ quand j’allume mon ordinateur ?

Dans l’interface graphique de la métaphore du bureau, le point de départ est le bureau, une surface sur laquelle on peut déposer ce que l’on utilise souvent, une surface qui peut être personnalisée. Le fond d’écran est un bon exemple pour montrer que c’est une surface que les gens aiment personnaliser.

Dans les dernières évolutions des interfaces utilisateurs graphiques, la métaphore du bureau a tout de même beaucoup perdu en importance. C’est surtout depuis que l’on a réintroduit les systèmes d’exploitation multi-utilisateurs. Le but était de disposer à nouveau de fonctionnalités réseau de bas niveau. On a donc ressorti et modernisé les anciens systèmes d’avant la métaphore du bureau (unix).

Ces systèmes étaient tous basés sur la notion de point de départ propre à chaque utilisateur. On l’appelle souvent le dossier home. La maison. En remettant au gout du jour ces systèmes, on a également induit une modification dans la manière de concevoir le point de départ de l’utilisation d’un ordinateur.

Dans un système comme MacOSX, il y a clairement une rupture par rapport au passé. Il y a un changement profond du paradigme de fonctionnement: le bureau n’est plus qu’un dossier posé dans le point de départ. Ce n’est plus la base sur lequel on trouve le disque dur!

MacOSX introduit également une autre nouveauté. Le Dock. Cette barre est un espace à disposition de l’utilisateur pour mettre des raccourcis vers des documents ou des applications qu’il utilise fréquemment. Il vole un peu le rôle que jouais le bureau.

L’interface du futur va donc certainement être centrée sur l’utilisateur. L’utilisateur débute son activité sur son ordinateur dans sa maison, dans son point de départ. Ce lieu, est un lieu que chaque utilisateur peut personnaliser à souhait. C’est également le lieu où il est notifié de nombreuses sources d’information et de l’activité de ses amis. On retrouve cette idée dans l’interface utilisateur du XO et surtout sur les réseaux sociaux tel que facebook.

L’idée que l’on trouve dans cette nouvelle interface utilisateur est donc que le point de départ comporte également une sort de Dock dans lequel on peut placer des raccourcis sur des ressources que l’on veut garder à proximité.

Pour le reste des ressources, l’idée d’une interface utilisateur telle que celle du projet Aurora est probablement une piste importante.
Aurora utilise une classification de ressource par groupe et permet de concrètement voir les groupes et les intersections entre les groupes. L’interface graphique d’Aurora présente une foule de ressources diverses et variées qui sont une multitude d’icônes flottantes.

La dimension temporelle est importante dans l’interface d’Aurora. Les ressources récentes sont en avant plan, et moins une ressource est utilisée, plus elle s’enfonce dans le lointain jusqu’à disparaître. Si l’on veut retrouver un ancien document, il est possible d’utiliser le zoom pour remonter dans le temps et retrouver la ressource désirée.

Messagerie

Dans ce nouveau modèle d’interface utilisateur, la messagerie e-mail n’existe plus. Le e-mail est un système conçu au tout début de l’ère des réseaux et n’est pas adapté à une utilisation moderne.

Mais alors comment allons nous communiquer ?
Un message n’est finalement rien d’autre qu’un document. Il suffit donc de produire le document voulu sur son espace web. Puis de restreindre l’accès au destinataire uniquement (et à soi). Et enfin, il faut notifier le destinataire de la présence d’un document à son attention.

La notification peut se faire via un flux atom par lequel un le destinataire reçoit les notifications de notre propre activité.

Pour communiquer, actuellement, on voit beaucoup de gens qui utilisent une application de traitement de texte pour composer un document. (souvent word) Puis se document est enregistré sous la forme d’un fichier dans un dossier sur son disque dur. Ensuite, il faut composer un e-mail avec une application de messagerie et ce e-mail se résume souvent à une phrase du genre: voir la pièce jointe en annexe. Pièce jointe qu’il ne faut pas oublier d’ajouter !
L’application de messagerie va donc permettre à l’expéditeur de choisir le fichier préparé précédemment dans le bon dossier sur son disque dur et de l’ajouter au message e-mail. Puis, enfin, l’envoi se fait.

C’est compliqué non ?

Dans notre nouvelle interface web, il suffit de demander à son ordinateur de créer un nouveau document. Puis, une fois celui-ci terminé, il faut le taguer avec le mot-clé qui est prévu pour les documents faisant partie du flux de notification de son destinataire. Cette phrase barbare signifie que si je veux envoyer un message à toto, je vais taguer mon document avec un tag du genre pourToto.

Et si j’ai fait une erreur, ce n’est pas grave, vu que le document est sur le web, il me suffit de modifier mon document et Toto va toujours télécharger la version à jour du document.

Domaines de recherche et services contextuels

Lorsque nous avons abordé la question du moteur de recherche, nous avons omis de parler des domaines de recherche. Qu’est ce que l’on entend par là ?

Le domaine de recherche est en quelque sorte le lieu dans lequel on cherche. En effet, il y a plusieurs types de recherche. On peut rechercher:

  • Dans ses propres documents (spotlight)
  • Dans les documents que l’on a déjà visité. (awesome bar, del.icio.us)
  • Sur le web complet. (ce que fait google)

Il y a donc plusieurs lieux de recherche qu’il faut préciser.

A cela, s’ajoutent les services contextuels.

Une fois l’informatique et le web totalement fusionné, il est possible de concevoir que n’importe quel appareil communiquant puisse être accessible depuis n’importe quel terminal web.

Si l’on intègre des moyens de communication dans tous les appareils, il devient ainsi possible de trouver, par exemple, une machine à café dont l’interface de commande est un service web.

Grâce à ma ligne de commande, je peux demander: nouveau café sucre, et la machine à café la plus proche de moi va me faire un café et ajouter du sucre.

Avec cet exemple, on remarque que le web peut devenir une interface homme machine universelle. Tout appareil peut être commandé avec la même ligne de commande.

Il ne suffit plus que de connaître le service et les options qu’il propose. C’est là qu’intervient la notion de service contextuel. Un service contextuel est un service qui se propose spontanément à l’utilisateur, car il sait qu’il est dans voisinage proche.

Si l’on reprend l’exemple de la machine à café, il ne m’est pas très utile de me préparer un café sur une machine à l’autre bout du monde. Par contre, étant à mon bureau, j’aimerai bien me préparer un café sur la machine de la cuisine.

Donc sur mon point de départ, en plus de mes ressources favories, et mes notification diverses, je dispose également d’un aperçu de services locaux qui sont disponibles.

Je pourrais ainsi découvrir que sur mon réseau local, j’ai une machine à café, mais également une télévision, la commande des lumières, la commande du chauffage, et les informations de la station météo locale.

Ce genre de service est déjà disponible. Par exemple, dans le navigateur web Safari, dans les bookmarks il y a l’onglet Bonjour qui indique les services se signalant sur le réseau local via le protocole Bonjour. (zeroconf)