<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>De geek à directeur technique &#187; Skriv</title>
	<atom:link href="http://www.geek-directeur-technique.com/category/skriv/feed" rel="self" type="application/rss+xml" />
	<link>http://www.geek-directeur-technique.com</link>
	<description>Le blog d&#039;un geek devenu directeur technique</description>
	<lastBuildDate>Mon, 20 Feb 2012 17:13:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Skriv : Droits utilisateurs</title>
		<link>http://www.geek-directeur-technique.com/2011/05/27/skriv-droits-utilisateurs</link>
		<comments>http://www.geek-directeur-technique.com/2011/05/27/skriv-droits-utilisateurs#comments</comments>
		<pubDate>Fri, 27 May 2011 15:00:55 +0000</pubDate>
		<dc:creator>Amaury</dc:creator>
				<category><![CDATA[Skriv]]></category>
		<category><![CDATA[droits utilisateurs]]></category>
		<category><![CDATA[organisation]]></category>
		<category><![CDATA[projet]]></category>

		<guid isPermaLink="false">http://www.geek-directeur-technique.com/?p=592</guid>
		<description><![CDATA[(ce billet fait partie d&#8217;un ensemble consacré au projet Skriv) Ça fait un bout de temps que je n&#8217;ai pas parlé de Skriv, mais je continue à travailler dessus (c&#8217;est une des raisons de ma faible productivité sur ce blog). J&#8217;avais écrit un article concernant l&#8217;organisation de l&#8217;information. C&#8217;était intéressant, mais j&#8217;étais parti dans une direction [...]]]></description>
			<content:encoded><![CDATA[<p>(ce billet fait partie d&#8217;un ensemble consacré au <a hreflang="fr" href="/category/Skriv">projet Skriv</a>)</p>
<p>Ça fait un bout de temps que je n&#8217;ai pas parlé de Skriv, mais je continue à travailler dessus (c&#8217;est une des raisons de ma faible productivité sur ce blog).</p>
<p>J&#8217;avais écrit un article concernant l&#8217;organisation de l&#8217;information. C&#8217;était intéressant, mais j&#8217;étais parti dans une direction bien trop complexe pour être envisageable&nbsp;; je m’empêtrais dans un système de tags tentaculaire. J&#8217;ai continué à réfléchir à tout ça, cette fois-ci en partant du besoin fonctionnel pour aller jusqu&#8217;aux droits d&#8217;accès des utilisateurs. L&#8217;air de rien il s&#8217;agit d&#8217;un point très important, qui influe directement sur la philosophie de l&#8217;outil.</p>
<h3>Organisation de l&#8217;information</h3>
<p>Pour commencer, parlons du découpage des données&nbsp;:</p>
<ul>
<li>Il existe des <em>projets</em>, auxquels les utilisateurs ont accès.</li>
<li>Les utilisateurs possèdent des <em>groupes de projets</em>, dans lesquels ils peuvent placer leurs projets. Ainsi, j&#8217;imagine que je mettrai le projet&nbsp;«IT» dans le groupe&nbsp;«Professionnel», alors qu&#8217;un de mes collègues le mettra peut-être dans son groupe&nbsp;«Informatique».</li>
<li>Les projets contiennent des <em>sous-projets</em>. Chaque sous-projet peut contenir un ensemble de listes, de fichiers, de documents écrits, etc. C&#8217;est LE moyen de regrouper des informations connexes (par exemple une spécification fonctionnelle, des maquettes graphiques, une spécification technique, une liste de tâche et une liste de bugs) au sein d&#8217;un même ensemble logique.</li>
</ul>
<p>L&#8217;idée est de permettre à chacun d&#8217;organiser les données de la manière qui lui convient le mieux. Habituellement, les logiciels de gestion de projet sont assez binaires&nbsp;: Ils servent à gérer les projets de l&#8217;entreprise, et donc les projets qu&#8217;on y crée sont visibles par les membres de l&#8217;entreprise&nbsp;; les systèmes de gestion des droits empêchent d&#8217;ailleurs souvent de créer des projets quand on n&#8217;est pas soi-même un administrateur ou un chef de projet. Pour ma part, j&#8217;ai une vision très différente des choses.<span id="more-592"></span></p>
<h3>Les buts</h3>
<p>Je veux pouvoir utiliser le même outil pour mes projets personnels et mes projets professionnels. Je veux pouvoir regrouper les projets en fonction de ce qui est le plus logique à mes yeux, sans que cela ne me soit imposé par quelqu&#8217;un d&#8217;autre, ni que mes changements ne se reflètent chez les autres.</p>
<p>Si j&#8217;ai accès à un projet, je veux pouvoir y ajouter des éléments (sous-projets, listes, documents, &#8230;) qui ne seront visibles que par moi. Par exemple, si j&#8217;ai besoin de faire des annotations personnelles sur une spécification, ou si je veux gérer une liste de tâches personnelle concernant un projet particulier, je dois pouvoir le faire. Si je le souhaite, je dois pouvoir ouvrir l&#8217;accès à ces élément, à une partie (ou la totalité) des utilisateurs ayant accès au projet lui-même.<br />
Plutôt que d&#8217;être dans une démarche classique, selon laquelle l&#8217;organisation des données dans l&#8217;outil conditionne la manière dont on va y accéder, je préfère laisser à chacun la possibilité d&#8217;adapter l&#8217;outil sans contrainte.</p>
<p>Je n&#8217;ai pas envie de me prendre la tête quand je gère les droits d&#8217;accès aux projets et sous-projets. Quand je crée un élément, je dois pouvoir choisir simplement entre 3 possibilités&nbsp;:</p>
<ol>
<li>Je suis le seul à y avoir accès.</li>
<li>Tous ceux qui avaient accès à l&#8217;élément parent bénéficient du même accès à l&#8217;élément enfant que je viens de créer.</li>
<li>Je donne un droit d&#8217;accès particulier à un utilisateur ou un groupe d&#8217;utilisateurs que j&#8217;aurai préalablement défini.</li>
</ol>
<p>Tout autre gestion plus complexe, comme par exemple avoir une liste détaillée de chaque utilisateur ayant accès à l&#8217;élément, en choisissant des droits différents pour chacun, peut se faire dans une interface d&#8217;administration plus complète. L&#8217;essentiel est que l&#8217;opération de base la plus courante se fasse en toute fluidité.</p>
<h3>Les droits</h3>
<p>J&#8217;ai donc essayé de définir les droits que l&#8217;on pourrait affecter aux utilisateurs, pour retranscrire ces contraintes.</p>
<p>Il y a 4 types d&#8217;actions possibles&nbsp;:</p>
<ul>
<li>La lecture. Cela veut dire qu&#8217;on peut voir un élément et son contenu (sauf restriction sur des sous-éléments).</li>
<li>L&#8217;ajout. Ajouter un sous-projet à un projet. Ajouter une liste ou un partage de fichiers à un sous-projet. Ajouter des items à une liste. Ajout des fichiers à un partage. Ajouter un document à un wiki. Ajouter des messages de micro-blogging sur un projet.</li>
<li>La modification. Changer le nom d&#8217;un projet, d&#8217;un sous-projet ou d&#8217;une liste. Changer le contenu d&#8217;un document wiki. Modifier le contenu d&#8217;un item de liste.</li>
<li>L&#8217;effacement. Détruire un projet ou un sous-projet, et tout son contenu. Effacer une liste et tous ses items.&nbsp; Éliminer un partage et tous les fichiers qu&#8217;il contient.</li>
</ul>
<p>On pourrait penser à une action supplémentaire, celle du déplacement. Par exemple pour déplacer un sous-projet, depuis un projet vers un autre. Ou sortir un item d&#8217;une liste pour le mettre dans une autre. Mais en fait, cela correspond à un ajout (dans la destination) et un effacement (dans la source).</p>
<p>J&#8217;en arrive à un points où je pense pouvoir tout gérer avec 4 niveaux de droits&nbsp;:</p>
<ul>
<li>Administrateur. Autorise tous les types d&#8217;action sur l&#8217;élément (lecture, ajout, modification, effacement). Autorise tous les types d&#8217;action sur les sous-éléments (sauf contre-indication).</li>
<li>Lecture-écriture. Autorise la lecture de l&#8217;élément, ainsi que la lecture, l&#8217;ajout et la modification de ses sous-éléments (sauf contre-indication).</li>
<li>Lecture seule. Autorise la lecture de l&#8217;élément et de ses sous-éléments (sauf contre-indication).</li>
<li>Pas d&#8217;accès. Sert à&nbsp;«cacher» un sous-élément, pour le rendre invisible aux yeux d&#8217;un utilisateur qui a des droits d&#8217;accès à l&#8217;élément parent.</li>
</ul>
<h3>Cas particuliers&nbsp;: création et suppression</h3>
<p>Par défaut, quand on crée un sous-élément, les droits d&#8217;accès sont les mêmes que pour l&#8217;élément parent. Il est toutefois possible de déclarer le nouvel élément comme&nbsp;«privé»&nbsp;; seul son créateur peut alors y accéder (cela ne concerne pas les projets, qui ne sont accessibles que si on y a donné explicitement accès).</p>
<p>On ne peut créer un sous-élément que si on a des droits d&#8217;administrateur ou en lecture-écriture. On ne pourra donner accès à ce sous-élément qu&#8217;aux personnes ayant un accès (administrateur, lecture-écriture ou lecture seule) à l&#8217;élément parent. Par contre, il sera possible de sur-classer un utilisateur&nbsp;: quelqu&#8217;un ayant un accès en lecture seule sur l&#8217;élément parent pourra avoir un accès en lecture-écriture, ou même en tant qu&#8217;administrateur, sur le sous-élément.</p>
<p>La suppression est bien plus délicate. Imaginons que l&#8217;administrateur d&#8217;un projet décide de l&#8217;effacer. Que deviennent les sous-projets dont pour lesquels il n&#8217;a pas les droits d&#8217;administration&nbsp;? Question identique pour les éléments placés à l&#8217;intérieur des sous-projets.<br />
On pourrait imaginer que tous les sous-éléments en question rejoignent un “projet par défaut”&nbsp; chez leurs créateurs. Mais ce n&#8217;est pas d&#8217;une folle évidence ergonomique.</p>
<h3>Exemples d&#8217;utilisation</h3>
<p>Voici quelques exemples d&#8217;utilisations concrètes que j&#8217;ai en tête.</p>
<p>Je crée un projet&nbsp;«Skriv». Je suis automatiquement administrateur du projet. Je crée des sous-projets&nbsp;«GUI» et&nbsp;«IT», chacun contenant une liste de tâches et un wiki.<br />
Je donne accès à ce projet aux autres contributeurs en lecture-écriture. L&#8217;un d&#8217;eux veut écrire des notes concernant son travail&nbsp;; mais tant qu&#8217;elles ne sont pas terminées, il ne veut pas qu&#8217;elles soient accessibles&nbsp;; il crée donc une page de wiki en la marquant comme privée.<br />
L&#8217;un des contributeurs étant chargé du design, il crée un partage de fichiers dans le sous-projet&nbsp;«GUI». Il en est automatiquement l&#8217;administrateur, et me donne l&#8217;accès en lecture-écriture. Quand les maquettes seront terminées, on y donnera accès en lecture aux autres contributeurs.</p>
<p>Ma femme crée un projet&nbsp;«Vacances» et me donne l&#8217;accès en tant qu&#8217;administrateur. Je le place dans mon groupe de projets&nbsp;«Personnel». Je crée le sous-projet&nbsp;«Été 2011», et comme ce sont des vacances en famille, je donne accès à mon frère (en lecture sur le projet, en lecture-écriture sur le sous-projet). Comme nous voulons faire une surprise à nos femmes, nous créons un wiki&nbsp;«Surprise» dans le sous-projet, dont nous sommes les seuls à avoir accès.</p>
<h3><span style="color: #800000;">Edit&nbsp;: Un cas supplémentaire</span></h3>
<p>En réfléchissant, il m&#8217;est apparu que les 4 niveaux de droits (admin, rw, ro, no) ne sont pas suffisants. Il faut ajouter un niveau supplémentaire, qui autorise la lecture de l’élément, ainsi que la lecture et l’ajout de ses sous-éléments (sauf contre-indication).</p>
<p>Le cas d&#8217;utilisation concret est une buglist. Il faut que certains utilisateurs puissent remonter des bugs, et donc créer des tickets, sans pour autant pouvoir modifier tous les tickets déjà existants.</p>
<p>Si je reformule, il y aurait donc 5 niveau&nbsp;:</p>
<ul>
<li>administrateur</li>
<li>modification (correspond au “lecture-écriture” définit plus haut)</li>
<li>ajout</li>
<li>lecture (correspond au “lecture seule” définit plus haut)</li>
<li>pas d&#8217;accès</li>
</ul>
<p>Avec une spécificité concernant la création de sous-éléments&nbsp;:</p>
<ul>
<li>pas d&#8217;accès =&gt; On ne peut évidemment pas créer de sous-élément.</li>
<li>lecture =&gt; On ne peut pas créer de sous-élément non plus.</li>
<li>ajout =&gt; <em>On n&#8217;est pas administrateur des sous-éléments que l&#8217;on crée. Les administrateurs de l&#8217;élément parent le sont automatiquement sur le sous-élément. On garde des droits en “ajout” sur le sous-élément créé (pour pouvoir commenter le sous-élément créé, par exemple).</em></li>
<li>modification =&gt; On peut créer des sous-éléments, et on en est administrateur.</li>
<li>administrateur =&gt; On est évidemment administrateur des sous-éléments que l&#8217;on crée.</li>
</ul>
<p>Ça commence à être assez complet, tout ça. Reste à voir si ça reste facilement compréhensible, je ne veux surtout pas faire une usine à gaz. Le seul cas impossible à gérer, c&#8217;est l&#8217;utilisateur qui n&#8217;a accès à une buglist qu&#8217;en lecture, mais qui devrait pouvoir commenter les tickets. Enfin si, ce serait possible, mais il faudrait lui donner explicitement les droits en “ajout” sur tous les tickets de la buglist, au fur et à mesure qu&#8217;ils sont créés. Mais je suis certain qu&#8217;il n&#8217;y a aucune nécessité à gérer ce cas-là.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geek-directeur-technique.com/2011/05/27/skriv-droits-utilisateurs/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Skriv : Organisation de l&#8217;information</title>
		<link>http://www.geek-directeur-technique.com/2011/02/16/skriv-organisation-de-linformation</link>
		<comments>http://www.geek-directeur-technique.com/2011/02/16/skriv-organisation-de-linformation#comments</comments>
		<pubDate>Wed, 16 Feb 2011 20:34:39 +0000</pubDate>
		<dc:creator>Amaury</dc:creator>
				<category><![CDATA[Skriv]]></category>
		<category><![CDATA[projets]]></category>
		<category><![CDATA[tags]]></category>

		<guid isPermaLink="false">http://www.geek-directeur-technique.com/?p=385</guid>
		<description><![CDATA[(ce billet fait partie d&#8217;un ensemble consacré au projet Skriv) Cela fait longtemps que je n&#8217;ai pas écrit d&#8217;article au sujet du projet Skriv. En ce moment, je cherche un moyen permettant de gérer les projets en autorisant 2 visions différentes&#160;: Une vision macro, pour suivre l&#8217;avancement global des projets et des sous-projets. Sans avoir le [...]]]></description>
			<content:encoded><![CDATA[<p>(ce billet fait partie d&#8217;un ensemble consacré au <a hreflang="fr" href="/category/Skriv">projet Skriv</a>)</p>
<p>Cela fait longtemps que je n&#8217;ai pas écrit d&#8217;article au sujet du projet Skriv.<br />
En ce moment, je cherche un moyen permettant de gérer les projets en autorisant 2 visions différentes&nbsp;:</p>
<ul>
<li>Une vision macro, pour suivre l&#8217;avancement global des projets et des sous-projets. Sans avoir le détail de toutes les tâches qui composent chaque sous -projet, il faut savoir quelles sont les deadlines des sous-projets, et éventuellement à quel pourcentage de complétion ils se situent.</li>
<li>Une vision micro, pour accéder à toutes les informations liées aux différents sous-projets, les tâches, la documentation, etc.</li>
</ul>
<p>La vision macro est absolument nécessaire pour prendre des décisions à moyen terme, ou simplement pour avoir une vision synthétique du travail. La vision micro est nécessaire pour tout le travail au quotidien&nbsp;: définir les priorités des tâches, accéder à la documentation, etc.</p>
<h3>Découpage des projets</h3>
<p>Je me creuse la tête depuis un moment au sujet de la meilleure manière de découper les projets. Avoir un seul niveau d&#8217;organisation n&#8217;est pas satisfaisant&nbsp;; on se retrouve à avoir une liste de tâches interminable, sans pouvoir faire de regroupements logiques.</p>
<p>J&#8217;aime bien l&#8217;idée d&#8217;offrir un deuxième niveau d&#8217;organisation. Cela semble assez naturel de pouvoir découper un projet en plusieurs sous-projets. Dans ma tête, chaque sous-projet est un ensemble logique pouvant comporter&nbsp;:</p>
<ul>
<li>une ou plusieurs listes (par exemple une liste de tâches et une buglist)</li>
<li>une collection de &laquo;&nbsp;pages&nbsp;&raquo; de wiki (spécifications du sous-projet, documentation technique, checklist, &#8230;)</li>
<li>un espace de stockage pour des pièces-jointes, elles-mêmes éventuellement réparties dans des sous-dossiers</li>
<li>une liste de messages portant sur le sous-projet</li>
</ul>
<p>Si on suit cette vision, il faut proposer une vision complète au niveau du projet, qui rassemble toutes ces informations de manière agrégée (une liste avec les tâches de tous les sous-projets, toutes les pages de wiki, toutes les pièce-jointe, et ainsi de suite).</p>
<p>Faut-il proposer une organisation plus complexe&nbsp;? Certain logiciels permettent de créer autant de niveaux de sous-sous-projets que l&#8217;on veut. Mais personnellement je trouve ça inutilement complexe&nbsp;; on s&#8217;y perd et la productivité n&#8217;y gagne rien.</p>
<h3>Informations liées aux sous-projets</h3>
<p>Avec ce découpage en sous-projets, il m&#8217;est venu naturellement une idée&nbsp;: on pourrait donner une date de début et une date de fin à chaque sous-projet. De cette manière, il serait très facile de représenter graphiquement les sous-projets sur une ligne de temps, de manière à faire une sorte de diagramme de Gantt simplifié. C&#8217;est parfait pour la vision macro dont je parlais plus haut.<br />
On aurait donc deux informations très synthétiques associées à chaque sous projet&nbsp;: ses dates de début et de fin, et son pourcentage de complétion (qui serait calculé à partir du statut des tâches faisant partie du sous-projet).</p>
<p><span id="more-385"></span>Imaginons que pour le projet &laquo;&nbsp;Mini-satellite en orbite&nbsp;&raquo;, on aurait les sous-projets&nbsp;:</p>
<ul>
<li>Construction de l&#8217;espace de lancement &#8211; 28 fév. au 4 mars &#8211; 10%</li>
<li>Étude de la fusée &#8211; 21 fév. au 11 mars &#8211; 25%</li>
<li>Montage de la fusée &#8211; 14 mars au 1 avril &#8211; 0%</li>
<li>Construction du satellite &#8211; 7 mars au 31 mars &#8211; 5%</li>
</ul>
<p>Sauf que&#8230; tout dépend de la manière dont vous gérez vos projets. Dans mon entreprise, les sous-projets décrivent souvent une nouvelle fonctionnalité&nbsp;; pour l&#8217;implémenter, on a besoin d&#8217;une spécification fonctionnelle, une spécification technique, de maquettes graphiques, de documentation technique&nbsp;; pour en faire le suivi, on a besoin d&#8217;une liste de tâches qui va nous servir à découper précisément les différentes étapes de l&#8217;implémentation, et d&#8217;une buglist qui va servir durant les tests et la recette.</p>
<p>Mais bien souvent, un sous-projet va être segmenté en plusieurs unités fonctionnelles. Parce qu&#8217;on veut développer rapidement les aspects essentiels de cette nouvelle fonctionnalité, mais que certains détails peuvent être repoussés à plus tard. On ne peut alors pas considérer le sous-projet comme étant un bloc unique sur lequel on va travailler d&#8217;une seule traite et sur lequel on ne reviendra jamais.<br />
Faut-il prévoir qu&#8217;un sous-projet puisse être découpé en plusieurs sous-unités&nbsp;? <em>Arg, non, on en reviendrait à une gestion de sous-sous-projets, que j&#8217;ai éliminé précédemment.</em></p>
<p>À cela s&#8217;ajoute une notion essentielle, celle de livraison. La plupart des projets, qu&#8217;ils soient informatiques ou non, prévoient que plusieurs sous-projet − appartenant à des projets différents − soient mis en production (ou l&#8217;équivalent) en même temps. Comme faire pour gérer ça correctement si la seule vision disponible est projet par projet (ou sous-projet par sous-projet)&nbsp;?</p>
<h3>Labels et assimilés</h3>
<p>À partir de là, j&#8217;ai commencé à réfléchir à encore une autre notion&nbsp;: On peut tout à fait avoir un élément (tâche, wiki, pièce-jointe) qui soit commun à plusieurs sous-projets, voire même à plusieurs projets. Tout n&#8217;est pas aussi segmenté qu&#8217;on le voudrait parfois. Une maquette graphique peut contenir des informations pertinentes pour plusieurs réalisation finales différentes.</p>
<p>Est-ce que la solution ne serait pas d&#8217;appliquer des labels (ou tags, si vous préférez)&nbsp;? Imaginons une tâche&nbsp;«Mettre à jour MySQL»&nbsp;; elle peut être dans le projet &laquo;&nbsp;IT&nbsp;&raquo;, sous-projet &laquo;&nbsp;Maintenance&nbsp;&raquo;, mais aussi dans le projet &laquo;&nbsp;Site Web&nbsp;&raquo;, sous-projet &laquo;&nbsp;Performances&nbsp;&raquo;. En fait, si on y réfléchit bien, la tâche doit être effectuée, et en ce sens elle a une existence propre. Qu&#8217;on veuille la voir dans les projets &laquo;&nbsp;IT/Maintenance&nbsp;&raquo; ou &laquo;&nbsp;Site Web/Performances&nbsp;&raquo; n&#8217;est qu&#8217;une question d&#8217;organisation de l&#8217;information. Suivant les personnes impactées, il faudra qu&#8217;elle soit visible dans l&#8217;un ou dans l&#8217;autre.<br />
Habituellement, on contourne ce genre de considérations en dupliquant les informations, mais je ne suis pas certain que le gain en simplicité (relative) à la création vaille la peine au regard de la plus grande complexité dans le suivi.</p>
<p>J&#8217;en arrive donc à penser que les projets et les sous-projets deviendraient des tags. Quand on navigue dans les projets et les sous-projets, on se retrouve simplement à filtrer les contenus qui sont affichés, pour ne voir que ceux qui portent le tag correspondant.<br />
Première chose importante&nbsp;: On peut appliquer autant de tag que l&#8217;on veut à n&#8217;importe quel élément.</p>
<p>Mais si on revient sur la notion de&nbsp;«livraison» dont je parlais tout à l&#8217;heure, le problème reste entier. Mais&#8230; est-ce qu&#8217;une livraison (ou un jalon, ou une deadline, ou une release, appelez ça comme vous voulez) ne serait pas là encore une sorte de filtre, qui sert à ne voir qu&#8217;un sous-ensemble des informations d&#8217;un projet&nbsp;? Bien sûr que si&nbsp;! Pour définir un jalon, il suffit de créer un label (avec une date de fin), et de l&#8217;appliquer à tous les éléments nécessaires. Ainsi, pas de modification sur le découpage projets/sous-projets, et on peut facilement retrouver tous les éléments qui portent ce label.La même logique pourrait s&#8217;appliquer pour affecter des tâches à une ou plusieurs personnes. Il suffirait de placer des tags idoines.</p>
<p>Tiens, je pense à autre chose&nbsp;: Je ne sais pas pour vous, mais il m&#8217;arrive souvent de vouloir regrouper des informations ensemble, parce que j&#8217;en ai besoin temporairement. Et je ne le fais pas, parce que cela voudrait dire que tous les autres utilisateurs verraient ces changement dans l&#8217;organisation des projets. On pourrait imaginer des tags <em>privés</em>, qui permettrait d&#8217;organiser les choses sans pour autant modifier ce que les autres peuvent voir.</p>
<p>Dernière chose qui me semble intéressante, la possibilité de créer des tags dynamiques. Cela voudrait dire qu&#8217;on pourrait créer un tag qui soit lié à un autre, mais en ajoutant des informations de filtrage supplémentaire. Par exemple, je pourrais créer un tag lié à un sous-projet donné, mais qui n&#8217;en afficherait que les entrées de buglist (filtre 1) qui me sont affectées (filtre 2).</p>
<p>Au final, quels seraient les caractéristiques d&#8217;un label&nbsp;?</p>
<ul>
<li>Sa visibilité (privé ou public). Un label privé n&#8217;est visible que par son créateur. Un label public est attaché au projet et tout le monde le voit.</li>
<li>Son projet. Ou plus exactement, l&#8217;information de projet qu&#8217;il va transmettre aux éléments auquel il sera appliqué.</li>
<li>Son sous-projet. Ou plus exactement, l&#8217;information de sous-projet qu&#8217;il va transmettre aux éléments auquel il sera appliqué.</li>
<li>Ses dates de début et de fin.</li>
<li>Son filtrage, c&#8217;est-à-dire les types d&#8217;informations visibles lorsqu&#8217;on utilise le label comme filtre d&#8217;affichage.</li>
<li>Le label auquel il est lié.</li>
<li>L&#8217;utilisateur concerné.</li>
<li>Un texte libre, pour créer des tags au sens habituel du terme.</li>
</ul>
<h3>Labels, filtres, droits utilisateurs</h3>
<p>Ce dont je viens de parler au sujets des labels et des filtres est valable d&#8217;un point de vue technique uniquement. D&#8217;un point de vue ergonomique, il faut proposer des fonctionnalités claires, pas simplement laisser les utilisateurs jongler avec leurs tags, car cela peut facilement porter à confusion.</p>
<p>Il faut quand même éclaircir la différence entre un label et un filtre. Si techniquement cela représente une seule chose, la différence se fait suivant qu&#8217;on soit en lecture ou en écriture.</p>
<p>Prenons l&#8217;exemple du projet &laquo;&nbsp;Anniversaire&nbsp;&raquo;. Il contient un sous-projet &laquo;&nbsp;Cuisine&nbsp;&raquo;. J&#8217;ajoute une tâche à ce sous-projet, lui donnant le titre &laquo;&nbsp;Préparer gâteau&nbsp;&raquo;.<br />
La tâche possède donc automatiquement le tag &laquo;&nbsp;Anniversaire/Cuisine&nbsp;&raquo;. C&#8217;est à la création de la tâche que le label a été ajouté.<br />
Maintenant imaginons que je crée un sous-projet &laquo;&nbsp;Moi/À faire&nbsp;&raquo;, que je paramètre pour (1) n&#8217;afficher que les tâches et (2) celles qui me sont affectées. Lorsque je vais voir ce sous-projet, il va m&#8217;afficher toutes mes tâches, c&#8217;est alors un filtre.</p>
<p>Bon, mais si on gère tous les aspects techniques à travers un tel système de tags, il faut se poser quelques questions concernant la gestion des droits utilisateurs.<br />
Dans tous les logiciels de gestion de projet, les buglists, et même les blogs multi-utilisateurs, il y a la possibilité de gérer&nbsp;«qui peut voir quoi» et&nbsp;«qui peut faire quoi». Il faudrait donc spécifier la relation que chaque utilisateur entretient avec les labels. Il peut être&nbsp;:</p>
<ul>
<li>Administrateur. Il peut modifier à loisir la définition du label, ainsi que tous les contenus qui portent ce label.</li>
<li>Accès en lecture. Il peut accéder au label et voir tous les contenus qui le portent.</li>
<li>Accès en écriture. Il peut accéder au label et voir tous les contenus qui le portent, mais il ne peut pas modifier la définition du label.</li>
</ul>
<p>Ainsi, l&#8217;administrateur peut décider que le sous-projet &laquo;&nbsp;Musique/Concert&nbsp;&raquo; contient une liste de tâche et un partage de fichier, mais rien d&#8217;autre (pas de wiki, pas de buglist). Une personne ayant les droits en écriture peut ajouter, modifier et effacer des tâches et des pièces-jointes&nbsp;; il ne peut pas ajouter une buglist dans ce sous-projet. Une personne ayant les droits en lecture peut lire les tâches et les pièces-jointes.<br />
Ce sont les administrateurs&nbsp; qui déterminent les droits des utilisateurs. Bref, quelqu&#8217;un qui a les droits Administrateur sur un label décide des droits des autres utilisateurs pour ce label. Pour que cela ne devienne pas trop répétitif, il faudra proposer une option à la création d&#8217;un sous-projet, pour donner les mêmes droits que sur le projet.</p>
<p>Cette gestion des droits me paraît être celle qui offre le meilleur rapport entre simplicité et souplesse. En contrepartie, il sera impossible de donner des droits du genre&nbsp;: autoriser la lecture des pages wiki mais pas leur modification, tout en autorisant la création d&#8217;entrées dans la buglist mais pas leur effacement. Est-ce vraiment un soucis&nbsp;?</p>
<h3>Tags à l&#8217;ancienne</h3>
<p>Avec tout ça, je n&#8217;ai quasiment pas parlé de l&#8217;utilisation de tags comme on a l&#8217;habitude de le faire&#8230; Pour tagguer les contenus, quoi. Ajouter une information sur certains contenus afin d&#8217;en faciliter la recherche.</p>
<p>J&#8217;avais en tête un système légèrement différent de ce qu&#8217;on trouve en temps normal. Je m&#8217;explique.<br />
La plupart du temps, les systèmes de tag sont assez simples&nbsp;: on peut assigner des labels textuels à des contenus. Et c&#8217;est tout. Il n&#8217;y a pas de contexte (le tag &laquo;&nbsp;pouet&nbsp;&raquo; a la même signification quel que soit l&#8217;endroit où il a été placé). Il n&#8217;y a pas de suggestion réelle (éventuellement une liste des tags les plus utilisés, mais toujours hors contexte). Bref, je trouve personnellement que ces systèmes ne font pas gagner beaucoup de temps. Si on veut filtrer les données en utilisant les tags, c&#8217;est un peu galère. Si on veut faire une recherche, autant utiliser une recherche full text.</p>
<p>J&#8217;imaginais donc de pouvoir associer des listes de tags &laquo;&nbsp;préférentiels&nbsp;&raquo; aux différents éléments. Prenons un exemple&nbsp;:</p>
<ul>
<li>Le projet &laquo;&nbsp;Vacances&nbsp;&raquo; possède le tag &laquo;&nbsp;prix&nbsp;&raquo;.
<ul>
<li>Le sous-projet &laquo;&nbsp;Activités&nbsp;&raquo; possède les tags &laquo;&nbsp;enfants&nbsp;&raquo; et &laquo;&nbsp;adultes&nbsp;&raquo;.
<ul>
<li>Un groupe de pages de wiki possède les tags &laquo;&nbsp;proposition&nbsp;&raquo;, &laquo;&nbsp;accepté&nbsp;&raquo; et &laquo;&nbsp;refusé&nbsp;&raquo;.</li>
<li>Une liste neutre (une liste simple, ni une liste de tâche, ni une buglist) possède les tags &laquo;&nbsp;réservé&nbsp;&raquo; et &laquo;&nbsp;à fuir&nbsp;&raquo;.</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Ainsi, il serait possible de créer une page de wiki et de lui assigner les tags &laquo;&nbsp;enfant&nbsp;&raquo; et &laquo;&nbsp;proposition&nbsp;&raquo;. Ou un élément de liste avec les tags &laquo;&nbsp;prix&nbsp;&raquo;, &laquo;&nbsp;enfants&nbsp;&raquo; et &laquo;&nbsp;réservé&nbsp;&raquo;. Ensuite, il serait possible de filtrer l&#8217;affichage pour ne faire apparaître que les éléments qui possèdent un ou plusieurs tags parmi ceux disponibles.</p>
<p>Mais&#8230; Si on peut appliquer des tags à un projet (pour que ceux-ci soient applicables aux éléments du projet, vous suivez&nbsp;?), cela veut dire qu&#8217;on doit pouvoir tagguer un tag&#8230;</p>
<h3>On va peut-être se calmer</h3>
<p>Sauf que là je commence à imaginer une espèce d&#8217;usine à gaz où tout est fait à base de tags. Les projets sont des tags, les sous-projets sont des tags, l&#8217;assignation d&#8217;une tâche à quelqu&#8217;un se fait en ajoutant à la tâche un tag représentant la personne, les deadlines sont aussi des tags, ainsi que le &laquo;&nbsp;filtrage&nbsp;&raquo;.<br />
On risque d&#8217;avoir même des tags sur plusieurs niveaux (des tags de tags). Et encore, je n&#8217;ai pas parlé de la gestion des groupes d&#8217;utilisateurs&#8230;</p>
<p>Tout ça semble bien beau d&#8217;un point de vue théorique, mais peut-être moins évident à implémenter qu&#8217;avec une base de données un peu plus relationnelle.</p>
<h3>Pour conclure</h3>
<p>Wow, cet article est quand même vachement long. J&#8217;ai mis plusieurs jours à l&#8217;écrire. Il m&#8217;a servi à éclaircir mes idées sur certaines choses, mais à force de pousser ma réflexion cela m&#8217;a amené à un point où tout s&#8217;écroule un peu. Voilà pourquoi j&#8217;ai du mal à faire avancer le projet Skriv, je cogite peut-être trop.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geek-directeur-technique.com/2011/02/16/skriv-organisation-de-linformation/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Skriv : Partage de fichiers</title>
		<link>http://www.geek-directeur-technique.com/2010/03/31/skriv-partage-de-fichiers</link>
		<comments>http://www.geek-directeur-technique.com/2010/03/31/skriv-partage-de-fichiers#comments</comments>
		<pubDate>Wed, 31 Mar 2010 23:42:00 +0000</pubDate>
		<dc:creator>Amaury</dc:creator>
				<category><![CDATA[Skriv]]></category>
		<category><![CDATA[fichiers]]></category>

		<guid isPermaLink="false">http://v2.geek-directeur-technique.com/?p=114</guid>
		<description><![CDATA[<p>(ce billet fait partie d'un ensemble consacré au <a href="/category/Skriv" hreflang="fr">projet Skriv</a>)</p> <p>Je suis en train de réfléchir à la meilleure manière de gérer le partage de fichiers dans un projet.</p> <h3>Moyens de stockage</h3> <p>Pour commencer, je veux faire en sorte que chaque projet puisse stocker ses fichiers sur un espace géré (et payé) par l'utilisateur. Cela pourrait être un serveur FTP, un serveur WebDAV ou un espace sur Amazon S3.<br />
Comme déjà dit auparavant, cela permet d'offrir des fonctionnalités complètes, sans avoir à se mettre dans une relation client/fournisseur. La plupart des entreprises ont déjà un serveur FTP ou WebDAV. Et plutôt que de faire payer pour "sous-louer" un espace sur Amazon S3, avec des paliers tarifaires en fonction de forfaits d'espace disque, autant laisser les gens s'abonner par eux-même et payer en fonction de leur utilisation.</p> <p>Toutefois, je pense finalement offrir un tout petit espace disque (5 MO, par exemple) à ceux qui veulent découvrir le service sans se prendre la tête.</p> <h3>Principe général</h3> <p>Donc voilà en gros ce que j'imagine&#160;:</p> <ol> <li>Quand on crée un projet, on spécifie les paramètres d'accès à un stockage distant de données (FTP, WebDAV ou S3).</li> <li>Sur la page de projet, on peut créer plusieurs "groupes de fichiers". Pour chaque groupe est créé un nouveau dossier sur le stockage distant.</li> <li>On peut uploader des fichiers dans un groupe. Le fichier apparaîtra dans ce groupe avec toutes ses caractéristiques (miniature si c'est une image, nom du fichier, nom du créateur, date d'ajout, taille du fichier, commentaires éventuels), et son binaire sera ajouté dans le dossier dédié sur le stockage distant.</li> </ol> <p>Je me pose une question&#160;: Faut-il se contenter d'afficher le nom du fichier tel qu'il a été uploadé&#160;? Ne vaudrait-il pas mieux proposer un champ libre, pour décrire son contenu mieux que ne le fait son nom ?<br />
Hum, je pense que si... mais cela doit rester optionnel. Si on ne remplit pas ce champ, le nom du fichier sera affiché tel quel.</p> <p>Idéalement, il faudrait pouvoir créer une sous-organisation à l'intérieur des groupes de fichiers. Cela pourrait prendre la forme simple de sous-dossiers. Mais cela pourrait aussi être des tags (je préfère le terme “label”) que l'on affecterait aux fichiers. On pourrait ainsi trier par label, par date ou par nom.</p> <p>Par contre, il n'y a rien de plus pénible que de devoir systématiquement taper les noms de labels au clavier. Même avec un système de complétion, c'est chiant.<br />
Je pense donc qu'il faudrait, pour chaque groupe de fichiers, pouvoir créer des labels à l'avance. Ainsi, au moment d'ajouter un fichier, il n'y aurait qu'à cocher le ou les labels à lui affecter (et éventuellement la possibilité d'en ajouter à ce moment-là). Pour l'affichage des fichiers, cela simplifierait aussi les choses&#160;: il suffirait là encore de cocher le ou les labels qui nous intéressent pour voir la liste des fichiers qui y correspondent.</p>]]></description>
			<content:encoded><![CDATA[<p>(ce billet fait partie d&#8217;un ensemble consacré au <a href="/category/Skriv" hreflang="fr">projet Skriv</a>)</p>
<p>Je suis en train de réfléchir à la meilleure manière de gérer le partage de fichiers dans un projet.</p>
<h3>Moyens de stockage</h3>
<p>Pour commencer, je veux faire en sorte que chaque projet puisse stocker ses fichiers sur un espace géré (et payé) par l&#8217;utilisateur. Cela pourrait être un serveur FTP, un serveur WebDAV ou un espace sur Amazon S3.<br />
Comme déjà dit auparavant, cela permet d&#8217;offrir des fonctionnalités complètes, sans avoir à se mettre dans une relation client/fournisseur. La plupart des entreprises ont déjà un serveur FTP ou WebDAV. Et plutôt que de faire payer pour &laquo;&nbsp;sous-louer&nbsp;&raquo; un espace sur Amazon S3, avec des paliers tarifaires en fonction de forfaits d&#8217;espace disque, autant laisser les gens s&#8217;abonner par eux-même et payer en fonction de leur utilisation.</p>
<p>Toutefois, je pense finalement offrir un tout petit espace disque (5 MO, par exemple) à ceux qui veulent découvrir le service sans se prendre la tête.</p>
<h3>Principe général</h3>
<p>Donc voilà en gros ce que j&#8217;imagine&nbsp;:</p>
<ol>
<li>Quand on crée un projet, on spécifie les paramètres d&#8217;accès à un stockage distant de données (FTP, WebDAV ou S3).</li>
<li>Sur la page de projet, on peut créer plusieurs &laquo;&nbsp;groupes de fichiers&nbsp;&raquo;. Pour chaque groupe est créé un nouveau dossier sur le stockage distant.</li>
<li>On peut uploader des fichiers dans un groupe. Le fichier apparaîtra dans ce groupe avec toutes ses caractéristiques (miniature si c&#8217;est une image, nom du fichier, nom du créateur, date d&#8217;ajout, taille du fichier, commentaires éventuels), et son binaire sera ajouté dans le dossier dédié sur le stockage distant.</li>
</ol>
<p>Je me pose une question&nbsp;: Faut-il se contenter d&#8217;afficher le nom du fichier tel qu&#8217;il a été uploadé&nbsp;? Ne vaudrait-il pas mieux proposer un champ libre, pour décrire son contenu mieux que ne le fait son nom&nbsp;?<br />
Hum, je pense que si&#8230; mais cela doit rester optionnel. Si on ne remplit pas ce champ, le nom du fichier sera affiché tel quel.</p>
<p>Idéalement, il faudrait pouvoir créer une sous-organisation à l&#8217;intérieur des groupes de fichiers. Cela pourrait prendre la forme simple de sous-dossiers. Mais cela pourrait aussi être des tags (je préfère le terme “label”) que l&#8217;on affecterait aux fichiers. On pourrait ainsi trier par label, par date ou par nom.</p>
<p>Par contre, il n&#8217;y a rien de plus pénible que de devoir systématiquement taper les noms de labels au clavier. Même avec un système de complétion, c&#8217;est chiant.<br />
Je pense donc qu&#8217;il faudrait, pour chaque groupe de fichiers, pouvoir créer des labels à l&#8217;avance. Ainsi, au moment d&#8217;ajouter un fichier, il n&#8217;y aurait qu&#8217;à cocher le ou les labels à lui affecter (et éventuellement la possibilité d&#8217;en ajouter à ce moment-là). Pour l&#8217;affichage des fichiers, cela simplifierait aussi les choses&nbsp;: il suffirait là encore de cocher le ou les labels qui nous intéressent pour voir la liste des fichiers qui y correspondent.</p>
<p><span id="more-114"></span></p>
<h3>Version des fichiers</h3>
<p>Je me demande s&#8217;il est vraiment utile de prévoir une gestion des versions des fichiers.  En y réfléchissant rapidement, je ne pense pas avoir jamais eu besoin de ce genre de fonctionnalité. Sûrement parce que l&#8217;usage du partage de fichiers dans mon entreprise est spécial&nbsp;: On y stocke uniquement les documents &laquo;&nbsp;stables&nbsp;&raquo; ou <em>historiques</em>&nbsp;; ceux qui sont en cours de modification sont édités dans un wiki (où l&#8217;historique est par contre très utile).</p>
<p>Mais je peux imaginer que dans certains cas, pour certaines personnes ou entreprises, ce soit absolument nécessaire. Dans ce cas-là, l&#8217;ergonomie de <a href="http://basecamphq.com/demos/files" hreflang="en">Basecamp</a> me paraît pas mal, autant s&#8217;en inspirer.</p>
<h3>Micro-blogging et upload en vrac</h3>
<p>Il y a deux cas un peu spéciaux à mes yeux&nbsp;: Lorsqu&#8217;on joint un fichier avec un message de micro-blogging, et quand on veut uploader rapidement un fichier, sans trop se préoccuper de là où il va être stocké.</p>
<p>Je parlerai plus longuement du micro-blogging dans un autre post. Mais le fait est qu&#8217;on doit pouvoir joindre un ou plusieurs fichiers avec chaque micro-message. Que se passera-t-il dans ce cas&nbsp;?<br />
Première possibilité&nbsp;: On doit choisir le groupe de fichiers qui va l&#8217;accueillir. Ça a le mérite d&#8217;être clair, mais pas forcément très ergonomique.<br />
Deuxième possibilité&nbsp;: Le fichier va dans un espace mystérieux (appelons-le&nbsp;«le warp») qui est en dehors des groupes de fichiers définis dans le projet.</p>
<p>Le cas de l&#8217;upload rapide est très similaire. En fait, j&#8217;imagine qu&#8217;on voudra pouvoir ajouter des fichiers à un projet à partir d&#8217;interfaces simplifiées. Cela pourrait être une application sur téléphone portable, ou une extension dans son navigateur web. L&#8217;idée est vraiment de se dire&nbsp;«Tiens, il faudrait que je regarde ça&nbsp;; je l&#8217;ajoute au projet et je le regarderai plus tard».<br />
Je pense que là encore le fichier partira dans&nbsp;«le warp».</p>
<p>Alors c&#8217;est quoi, ce Warp&nbsp;? Une espèce de groupe de fichiers par défaut, qui contient tout ce qui n&#8217;est pas catégorisé. Quand il est vide, on ne sait même pas qu&#8217;il existe. Quand il y a des fichiers dedans, ils sont listés tout en bas de la page de projet, avec la possibilité de les déplacer vers un autre groupe de fichiers pour les classer proprement.</p>
<h3>Modification directe des fichiers</h3>
<p>Le fait de passer par un stockage distant présente un certain inconvénient. Il est possible d&#8217;y accéder sans passer par Skriv. N&#8217;importe qui pourrait accéder directement au serveur FTP, ou monter l&#8217;accès au WebDAV directement sur son bureau, et modifier les fichiers.</p>
<p>J&#8217;ai essayé un moment de réfléchir à une solution qui autorise cet usage et qui en fasse quelque chose d&#8217;utile. Mais au final je ne pense pas qu&#8217;on puisse s&#8217;en sortir correctement. Le risque est trop grand de rendre un fichier indisponible pour Skriv. Donc on va oublier cette idée.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geek-directeur-technique.com/2010/03/31/skriv-partage-de-fichiers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skriv : Les listes</title>
		<link>http://www.geek-directeur-technique.com/2010/03/23/skriv-les-listes</link>
		<comments>http://www.geek-directeur-technique.com/2010/03/23/skriv-les-listes#comments</comments>
		<pubDate>Tue, 23 Mar 2010 22:00:00 +0000</pubDate>
		<dc:creator>Amaury</dc:creator>
				<category><![CDATA[Skriv]]></category>
		<category><![CDATA[buglist]]></category>
		<category><![CDATA[checklist]]></category>
		<category><![CDATA[liste]]></category>
		<category><![CDATA[todo-list]]></category>

		<guid isPermaLink="false">http://v2.geek-directeur-technique.com/?p=113</guid>
		<description><![CDATA[(ce billet fait partie d&#8217;un ensemble consacré au projet Skriv) Comme vu précédemment, l&#8217;une des fonctionnalités de base de Skriv sera la possibilité d&#8217;y ajouter des listes. J&#8217;imagine globalement 3 types de listes (les éléments en italique sont optionnels)&#160;: minimales&#160;: La liste a juste un titre. Chaque entrée de liste ne contient qu&#8217;un titre et [...]]]></description>
			<content:encoded><![CDATA[<p>(ce billet fait partie d&#8217;un ensemble consacré au <a href="/category/Skriv" hreflang="fr">projet Skriv</a>)</p>
<p>Comme vu précédemment, l&#8217;une des fonctionnalités de base de Skriv sera la possibilité d&#8217;y ajouter des listes.</p>
<p>J&#8217;imagine globalement 3 types de listes (les éléments en italique sont optionnels)&nbsp;:</p>
<ul>
<li><strong>minimales</strong>&nbsp;: La liste a juste un titre. Chaque entrée de liste ne contient qu&#8217;un titre et une <em>description</em>. Utile pour prendre des notes, ou pour faire une checklist.</li>
<li><strong>simples</strong>&nbsp;: La liste a un titre, une <em>date de début</em> et une <em>date d&#8217;échéance</em>. Chaque entrée de liste contient un titre, un état (à faire / fait) et une <em>description</em>. Utile pour lister rapidement les tâches d&#8217;un sous-projet.</li>
<li><strong>complètes</strong>&nbsp;: La liste a un titre, une <em>date de début</em> et une <em>date d&#8217;échéance</em>. Chaque entrée de liste contient un titre, un état (à faire / fait), une <em>description</em>, une <em>importance</em> (basse, moyenne, haute, critique), un <em>responsable</em>, une <em>date d&#8217;échéance</em>, un <em>état d&#8217;avancement</em> (en pourcentage). Utiles pour faire une vraie todo-list ou une buglist.</li>
</ul>
<p>Quelques fonctionnalités sont générales à tous les types de listes&nbsp;:</p>
<ul>
<li>Les entrées de liste peuvent être déplacés les unes par rapport aux autres par drag and drop. Idéalement (en fonction de la complexité technique) une entrée de liste pourra être déplacée d&#8217;une liste à une autre par drag and drop&nbsp;; elle s&#8217;adaptera alors aux caractéristiques de la liste qui la réceptionnera.</li>
<li>On enregistre la date de création et le nom de l&#8217;utilisateur qui a créé l&#8217;entrée de liste. Ces informations seront disponibles (par exemple dans une infobulle).</li>
<li>Les descriptions associées aux entrées de liste utilisent une syntaxe Wiki.</li>
<li>Il est possible d&#8217;ajouter des commentaires aux entrées de liste. Le commentaires utilisent une syntaxe Wiki.</li>
<li>Il est possible d&#8217;ajouter des pièces-jointes aux entrée de liste et aux commentaires. Les pièces-jointes peuvent être des fichiers déjà présents sur le partage, des fichiers que l&#8217;on uploade à ce moment-là, des emails, des URLs.</li>
<li>Les entrées de liste avec un état (à faire/fait) ont une case à cocher devant leur titre. Quand on clique sur la case à cocher, le titre est barré, et l&#8217;entrée est déplacée en fin de liste. En décochant la case, le titre n&#8217;est plus barré, et l&#8217;entrée est déplacée à la fin des tâches &laquo;&nbsp;à faire&nbsp;&raquo; (au-dessus des tâches &laquo;&nbsp;faites&nbsp;&raquo;).</li>
<li>Les entrées de liste ayant un responsable possèdent une fonctionnalité de&nbsp;«harcèlement», qui sert à envoyer un message au responsable.</li>
</ul>
<h4>Ma vision</h4>
<p>La plupart des outils de gestion de projet proposent une liste de tâches&nbsp;; certains y ajoutent une buglist en plus. Les logiciels orientés &laquo;&nbsp;diagramme de Gantt&nbsp;&raquo; découpent les projets en sous-projets, qui sont eux-mêmes constitués de tâches.</p>
<p>Dans l&#8217;outil que j&#8217;utilise actuellement dans mon entreprise, nous avons aussi une todo-list et une buglist séparées. La todo-list est linéaire, elle contient une suite de tâches dont on peu définir un certain nombre de paramètres (responsable, avancement, criticité, urgence, deadline, &#8230;). Malheureusement, le concept de “sous-projet” manque, ce qui oblige souvent à créer des tâches dont la description contient une liste de sous-tâches.</p>
<p>Pour Skriv, j&#8217;imagine que l&#8217;on créera plusieurs listes pour créer autant de sous-projets. Pourquoi alors ne pas directement appeler ça des&nbsp;«sous-projets»&nbsp;? Parce que ça me semble peu flexible. Dans certains cas, on voudra gérer plusieurs listes, sans les associer à une notion de sous-projet.<br />
Je veux que ce soit l&#8217;outil qui s&#8217;adapte à notre vision, et non l&#8217;inverse. Si on veut signifier des choses différentes, il suffira d&#8217;utiliser l&#8217;outil de manière différente. C&#8217;est quand même mieux que d&#8217;être obligé à faire tenir nos propres concepts à l&#8217;intérieur de ceux de l&#8217;outil.</p>
<p>Qu&#8217;en pensez-vous&nbsp;?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geek-directeur-technique.com/2010/03/23/skriv-les-listes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skriv : terminologie</title>
		<link>http://www.geek-directeur-technique.com/2010/03/18/skriv-terminologie</link>
		<comments>http://www.geek-directeur-technique.com/2010/03/18/skriv-terminologie#comments</comments>
		<pubDate>Thu, 18 Mar 2010 08:15:00 +0000</pubDate>
		<dc:creator>Amaury</dc:creator>
				<category><![CDATA[Skriv]]></category>

		<guid isPermaLink="false">http://v2.geek-directeur-technique.com/?p=112</guid>
		<description><![CDATA[(ce billet fait partie d&#8217;un ensemble consacré au projet Skriv) Je sollicite maintenant l&#8217;aide des lecteurs de ce blog. Comme vous le savez, je travaille sur Skriv, un outil aux multiples facettes&#160;: gestion de projets, gestion de documentation, prise de notes, bookmarks, wiki, calendrier, micro-blogging, &#8230; Je bute actuellement sur un truc tout bête&#160;: Comment [...]]]></description>
			<content:encoded><![CDATA[<p>(ce billet fait partie d&#8217;un ensemble consacré au <a href="/category/Skriv" hreflang="fr">projet Skriv</a>)</p>
<p>Je sollicite maintenant l&#8217;aide des lecteurs de ce blog. Comme vous le savez, je travaille sur Skriv, un outil aux multiples facettes&nbsp;: gestion de projets, gestion de documentation, prise de notes, bookmarks, wiki, calendrier, micro-blogging, &#8230;</p>
<p>Je bute actuellement sur un truc tout bête&nbsp;: <strong>Comment appeler les choses&nbsp;?</strong><br />
La solution la plus simple serait d&#8217;utiliser les termes habituellement utilisés par ce type de logiciel. On aurait ainsi des projets, des listes de tâches, des contacts, des (micro-)messages, des documents et ainsi de suite.</p>
<p>Mais je pense qu&#8217;on devrait pouvoir trouver une terminologie plus adaptée. Je vois plusieurs raisons à cela&nbsp;:</p>
<ol>
<li>Des termes liés au cadre professionnel seront parfait pour une utilisation professionnelle. Par contre, pour une utilisation personnelle ou &laquo;&nbsp;alternative&nbsp;&raquo; (dans un cadre familial ou associatif, par exemple), c&#8217;est un peu trop formel à mon goût.</li>
<li>L&#8217;utilisation d&#8217;analogies facilite la prise en main. Ce n&#8217;est pas un hasard si les interfaces graphiques utilisent des termes comme &laquo;&nbsp;bureau&nbsp;&raquo;, &laquo;&nbsp;dossier&nbsp;&raquo; ou &laquo;&nbsp;document&nbsp;&raquo;&nbsp;; cela permet aux nouveaux utilisateurs de comprendre rapidement ces concepts en faisant le parallèle avec des notions bien connues.</li>
<li>Les noms des fonctionnalités ne doivent pas être <em>obligatoirement</em> descriptifs. On a l&#8217;habitude d&#8217;écrire des&nbsp;«tweets» (et non pas des micro-messages), par exemple.</li>
</ol>
<p>L&#8217;idée serait de créer de nouveaux automatismes, compréhensibles immédiatement, originaux tout en restant logiques. Avez-vous des suggestions&nbsp;? J&#8217;avoue avoir du mal à trouver de l&#8217;inspiration.</p>
<ul>
<li>Le logiciel <a href="/post/2009/02/10/Backpack">Backpack</a> gère des&nbsp;«pages». Cet outil reste une grande source d&#8217;inspiration pour moi. Mais j&#8217;ai peur que cette terminologie n&#8217;aide pas à faire la distinction entre les projets et les pages de wiki qu&#8217;ils contiennent.</li>
<li>On peut imaginer de faire un rapprochement avec des éléments physiques. Un projet deviendrait un&nbsp;«casier», un micro-message serait un&nbsp;«mémo», le wiki serait un&nbsp;«bloc-notes»&#8230; Mais ce n&#8217;est pas terrible, hein.</li>
<li>On pourrait aussi utiliser des noms abstraits. J&#8217;ai développé un outil de micro-blogging, utilisé en interne dans mon entreprise&nbsp;; les messages sont des&nbsp;«blips» (pas super-original comme nom, mais j&#8217;aime bien). Mais j&#8217;ai du mal à trouver des noms corrects pour symboliser les projets.</li>
</ul>
<p>Toute aide est la bienvenue&nbsp;!  <img src='http://www.geek-directeur-technique.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <br />
Merci d&#8217;avance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geek-directeur-technique.com/2010/03/18/skriv-terminologie/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Skriv : Fonctionnalités</title>
		<link>http://www.geek-directeur-technique.com/2010/02/04/skriv-fonctionnalites</link>
		<comments>http://www.geek-directeur-technique.com/2010/02/04/skriv-fonctionnalites#comments</comments>
		<pubDate>Thu, 04 Feb 2010 20:50:00 +0000</pubDate>
		<dc:creator>Amaury</dc:creator>
				<category><![CDATA[Skriv]]></category>
		<category><![CDATA[fonctionnalités]]></category>
		<category><![CDATA[logiciel]]></category>

		<guid isPermaLink="false">http://v2.geek-directeur-technique.com/?p=111</guid>
		<description><![CDATA[<p>(ce billet fait partie d'un ensemble consacré au <a href="/category/Skriv" hreflang="fr">projet Skriv</a>)</p> <p>Alors, j'ai commencé par discuter de <a href="/post/2010/01/27/Skriv-Identification-et-prix">l'accès au service et de son prix</a>. Maintenant il serait bon de s'attacher au cœur du problème&#160;: à quoi va-t-il servir exactement, quelles vont être ses fonctionnalités&#160;?</p> <p>Je voudrais définir un outil qui puisse servir aussi bien pour gérer des projets professionnels que personnels. Je dois avouer que la plupart de mes projets personnels ressemblent furieusement à des projets informatiques, mais ce n'est pas une règle absolue.<br />
Comme je l'ai dit en commentaire du précédent billet, la vision que j'ai de Skriv est celle d'un outil de travail collaboratif plus que d'un outil de gestion de projet. Je ne souhaite pas faire un logiciel qui servira uniquement aux “décideurs” pour suivre le travail de leurs employés&#160;; je veux faire le méga-tableau-de-bord qui servira tous les jours (et plusieurs fois par jour !) à l'ensemble de mes collaborateurs pour organiser leur travail, pour communiquer sur tous les aspects de leur travail.</p> <h4>Fonctions de base</h4> <p>On peut reprendre les 4 grands types de fonctionnalités habituelles&#160;:</p> <ul> <li>Un affichage “tableau de bord” qui affiche l'activité récente sur un projet  ou sur tous les projets auxquels l'utilisateur a accès.</li> <li>Les listes. Il faut pouvoir créer autant de listes que nécessaires, avec la possibilité de les adapter aux besoins (buglist, todolist, checklist).</li> <li>Les pages de documentation textuelle. Appelons ça un "wiki", même si j'hésite entre l'utilisation d'une syntaxe de type wiki et l'utilisation d'un éditeur HTML WYSIWYG. Il faut pouvoir lier une page de wiki à une tâche.</li> <li>Le partage de fichiers. Chaque projet a bien souvent besoin de fichiers binaires, qu'il s'agisse de feuilles de calcul, d'images ou autres. Il faut pouvoir lier un fichier à une tâche.</li> </ul> <h4>Fonctions supplémentaires</h4> <p>Ce qu'on peut y ajouter&#160;:</p> <ul> <li>Des “vues” calendaires, mais je place ça plutôt dans la partie ergonomie/affichage. Cela reste important, surtout si on se sert de ces vues pour éditer les tâches (ce qui revient plus ou moins à avoir un diagramme de Gantt).</li> <li>Des rappels par email ou SMS, que ce soit pour nous rappeler des tâches (todolist/buglist de projet) ou définis personnellement.</li> <li>La connexion à un compte IMAP. Il y a toujours des informations importantes qui sont échangées par email (même si <a href="/post/2009/03/01/Sus-aux-emails">ce n'est pas une bonne pratique</a>). On pourrait dédier un dossier IMAP à chaque projet, et y accéder via l'interface. On pourrait trouver un moyen pour créer des tâches à partir d'emails, et extraire les pièce-jointes des emails pour les ajouter au partage de fichiers.</li> <li>Un système de micro-blogging. Même si j'ai déjà fait part de <a href="/post/2009/11/15/Communication-et-productivite-synonymes-ou-antonymes">mon scepticisme vis-à-vis de ce genre d'outil</a>, il y a sûrement moyen de créer un canal de communication supplémentaire. Les micro-messages seraient affichés sur le “tableau de bord” au milieu des indications d'évolution du projet.</li> </ul> <p>Concernant la «communication»&#160;:</p> <ul> <li>On pourrait imaginer que le logiciel pourrait envoyer des emails avec un résumé quotidien ou hebdomadaire des évolutions d'un ou plusieurs projets qu'on aurait décidé de "suivre".</li> <li>Il faudrait proposer des flux RSS permettant aux utilisateurs de suivre leurs projets dans un outil externe. Un flux qui reprenne l'activité de tous les projets, un flux pour l'activité des projets “suivis”, et un flux par projet.</li> <li>Il faudrait aussi proposer un export au format ICS (iCalendar), pour permettre de suivre les tâches et les projets dans un outil externe comme iCal, Sunbird ou Google Calendar.</li> </ul>]]></description>
			<content:encoded><![CDATA[<p>(ce billet fait partie d&#8217;un ensemble consacré au <a href="/category/Skriv" hreflang="fr">projet Skriv</a>)</p>
<p>Alors, j&#8217;ai commencé par discuter de <a href="/post/2010/01/27/Skriv-Identification-et-prix">l&#8217;accès au service et de son prix</a>. Maintenant il serait bon de s&#8217;attacher au cœur du problème&nbsp;: à quoi va-t-il servir exactement, quelles vont être ses fonctionnalités&nbsp;?</p>
<p>Je voudrais définir un outil qui puisse servir aussi bien pour gérer des projets professionnels que personnels. Je dois avouer que la plupart de mes projets personnels ressemblent furieusement à des projets informatiques, mais ce n&#8217;est pas une règle absolue.<br />
Comme je l&#8217;ai dit en commentaire du précédent billet, la vision que j&#8217;ai de Skriv est celle d&#8217;un outil de travail collaboratif plus que d&#8217;un outil de gestion de projet. Je ne souhaite pas faire un logiciel qui servira uniquement aux “décideurs” pour suivre le travail de leurs employés&nbsp;; je veux faire le méga-tableau-de-bord qui servira tous les jours (et plusieurs fois par jour&nbsp;!) à l&#8217;ensemble de mes collaborateurs pour organiser leur travail, pour communiquer sur tous les aspects de leur travail.</p>
<h4>Fonctions de base</h4>
<p>On peut reprendre les 4 grands types de fonctionnalités habituelles&nbsp;:</p>
<ul>
<li>Un affichage “tableau de bord” qui affiche l&#8217;activité récente sur un projet  ou sur tous les projets auxquels l&#8217;utilisateur a accès.</li>
<li>Les listes. Il faut pouvoir créer autant de listes que nécessaires, avec la possibilité de les adapter aux besoins (buglist, todolist, checklist).</li>
<li>Les pages de documentation textuelle. Appelons ça un &laquo;&nbsp;wiki&nbsp;&raquo;, même si j&#8217;hésite entre l&#8217;utilisation d&#8217;une syntaxe de type wiki et l&#8217;utilisation d&#8217;un éditeur HTML WYSIWYG. Il faut pouvoir lier une page de wiki à une tâche.</li>
<li>Le partage de fichiers. Chaque projet a bien souvent besoin de fichiers binaires, qu&#8217;il s&#8217;agisse de feuilles de calcul, d&#8217;images ou autres. Il faut pouvoir lier un fichier à une tâche.</li>
</ul>
<h4>Fonctions supplémentaires</h4>
<p>Ce qu&#8217;on peut y ajouter&nbsp;:</p>
<ul>
<li>Des “vues” calendaires, mais je place ça plutôt dans la partie ergonomie/affichage. Cela reste important, surtout si on se sert de ces vues pour éditer les tâches (ce qui revient plus ou moins à avoir un diagramme de Gantt).</li>
<li>Des rappels par email ou SMS, que ce soit pour nous rappeler des tâches (todolist/buglist de projet) ou définis personnellement.</li>
<li>La connexion à un compte IMAP. Il y a toujours des informations importantes qui sont échangées par email (même si <a href="/post/2009/03/01/Sus-aux-emails">ce n&#8217;est pas une bonne pratique</a>). On pourrait dédier un dossier IMAP à chaque projet, et y accéder via l&#8217;interface. On pourrait trouver un moyen pour créer des tâches à partir d&#8217;emails, et extraire les pièce-jointes des emails pour les ajouter au partage de fichiers.</li>
<li>Un système de micro-blogging. Même si j&#8217;ai déjà fait part de <a href="/post/2009/11/15/Communication-et-productivite-synonymes-ou-antonymes">mon scepticisme vis-à-vis de ce genre d&#8217;outil</a>, il y a sûrement moyen de créer un canal de communication supplémentaire. Les micro-messages seraient affichés sur le “tableau de bord” au milieu des indications d&#8217;évolution du projet.</li>
</ul>
<p>Concernant la&nbsp;«communication»&nbsp;:</p>
<ul>
<li>On pourrait imaginer que le logiciel pourrait envoyer des emails avec un résumé quotidien ou hebdomadaire des évolutions d&#8217;un ou plusieurs projets qu&#8217;on aurait décidé de &laquo;&nbsp;suivre&nbsp;&raquo;.</li>
<li>Il faudrait proposer des flux RSS permettant aux utilisateurs de suivre leurs projets dans un outil externe. Un flux qui reprenne l&#8217;activité de tous les projets, un flux pour l&#8217;activité des projets “suivis”, et un flux par projet.</li>
<li>Il faudrait aussi proposer un export au format ICS (iCalendar), pour permettre de suivre les tâches et les projets dans un outil externe comme iCal, Sunbird ou Google Calendar.</li>
</ul>
<p><span id="more-111"></span></p>
<h4>Fonctions à intégrer&nbsp;?</h4>
<p>J&#8217;hésite encore sur certaines fonctionnalités&nbsp;:</p>
<ul>
<li>Gestion des compte-rendus d&#8217;activité. Je sais que c&#8217;est vraiment nécessaire pour certaines entreprises, celles qui factures leurs clients en fonction du temps passé sur les projets. Et, de manière générale, il est toujours bon de savoir combien aura coûté un projet. Mais j&#8217;ai un peur peur de complexifier l&#8217;ensemble du logiciel pour une fonctionnalité qui n&#8217;est pas utile à tout le monde.</li>
<li>Un forum de discussion propre à un projet peut parfois être très utile, surtout pour les équipes qui sont éclatées géographiquement. Mais je me dis que si le système de micro-blogging est bien fait, et qu&#8217;il autorise les vrais fils de discussion, il n&#8217;y aura pas besoin de faire un forum séparé du reste.</li>
<li>Une édition collaborative simultanée en temps réel des pages de wiki. Un outil comme <a href="http://etherpad.com/" hreflang="en">EtherPad</a> permet de travailler à plusieurs sur le même document, en même temps. Mais c&#8217;est quand même un niveau de complexité bien supérieur, pour un usage qui reste encore à démontrer, je pense.</li>
<li>Permettre de créer des dessins directement dans l&#8217;interface, par exemple en utilisant un outil comme <a href="http://flockdraw.com/" hreflang="en">FlockDraw</a>. Un dessins vaut souvent mieux qu&#8217;un long discours. Alors c&#8217;est souvent intéressant d&#8217;ajouter des diagrammes explicatifs dans les fichiers d&#8217;un projet. Habituellement, il faut utiliser un logiciel de dessin, enregistrer l&#8217;image puis l&#8217;uploader sur le projet. Si on pouvait directement dessiner ”online”, ce serait plus pratique, non&nbsp;?</li>
</ul>
<h4>Fonctions à ne pas intégrer</h4>
<p>Ce que Skriv ne sera jamais&nbsp;:</p>
<ul>
<li>Un carnet d&#8217;adresse.</li>
<li>Un calendrier complet pour gérer ses rendez-vous.</li>
<li>Un <a href="http://fr.wikipedia.org/wiki/Gestion_de_la_relation_client" hreflang="fr">CRM</a>.</li>
<li>Un outil de gestion de code source, d&#8217;édition de code, de profiling, de déploiement à distance, &#8230;</li>
<li>Un serveur d&#8217;<a href="/post/2009/03/18/Tests-unitaires-et-integration-continue" hreflang="fr">intégration continue</a>.</li>
<li>Un outil de facturation ou un <a href="http://fr.wikipedia.org/wiki/Progiciel_de_gestion_int%C3%A9gr%C3%A9" hreflang="fr">ERP</a>.</li>
</ul>
<p>Avez-vous des idées de fonctionnalités qui vous semblent nécessaires, en plus de celles-ci&nbsp;?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geek-directeur-technique.com/2010/02/04/skriv-fonctionnalites/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skriv : Identification et prix</title>
		<link>http://www.geek-directeur-technique.com/2010/01/27/skriv-identification-et-prix</link>
		<comments>http://www.geek-directeur-technique.com/2010/01/27/skriv-identification-et-prix#comments</comments>
		<pubDate>Wed, 27 Jan 2010 15:42:00 +0000</pubDate>
		<dc:creator>Amaury</dc:creator>
				<category><![CDATA[Skriv]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[prix]]></category>

		<guid isPermaLink="false">http://v2.geek-directeur-technique.com/?p=110</guid>
		<description><![CDATA[<p>(ce billet fait partie d'un ensemble consacré au <a href="/category/Skriv" hreflang="fr">projet Skriv</a>)</p> <p>J'ai rassemblé sur ce billet deux sujets différents et au final pas très importants − par rapport aux fonctionnalités ou à l'ergonomie, par exemple − mais dont je voulais parler quand même. Comme ça on pourra ensuite se concentrer sur le plus important.</p> <h4>Création de compte et identification</h4> <p>Il faut évidemment permettre la création de compte directement sur le site. Mais ce serait une bonne idée d'autoriser l'identification par des procédés d'authentification centralisés. Le premier qui me vie<a href="http://fr.wikipedia.org/wiki/OAuth" hreflang="fr"></a>nt à l'esprit est <a href="http://fr.wikipedia.org/wiki/OpenID" hreflang="fr">OpenID</a>, qui est un protocole standard prévu exactement pour cela. On peut y ajouter le <a href="http://code.google.com/apis/accounts/docs/OpenID.html" hreflang="en">Google Federated Login</a> (basé sur OpenID), <a href="http://openid.yahoo.com/" hreflang="en">Yahoo! OpenID</a>, Windows Live ID (basé sur OpenID lui aussi), l'identification centralisée de <a href="http://apiwiki.twitter.com/Sign-in-with-Twitter" hreflang="en">Twitter</a> (utilisant OAuth), ou encore <a href="http://wiki.developers.facebook.com/index.php/Connect/Authentication_and_Authorization" hreflang="en">Facebook Connect</a>.</p> <p>Ces systèmes permettent de créer un compte quasi-instantanément. Il suffit de cliquer sur le bouton "Google", on arrive sur une page chez Google qui nous demande si on veut continuer (pour peu qu'on soit déjà identifié chez Google), on clique sur "Oui", et hop ça y est. C'est assez séduisant.</p> <p>Ensuite, il faut voir la complexité d'implémentation de chaque protocole. Google, Yahoo! et Windows Live ne supportent que l'OpenID version 2. Ça a l'air idiot, mais les bibliothèques de connexion OpenID ne sont pas si nombreuses en PHP. Il en existe <a href="http://roosenmaallen.com/2008/03/20/simpleopenid-for-php/" hreflang="en">une très simple</a>, qui fonctionne très bien, mais uniquement pour OpenID 1. Il en existe une autre, très complète mais lourdingue à mettre en place, qui est censée être pleinement compatible avec OpenID 2 (mais qui ne semble quand même pas fonctionner avec Google ni Yahoo!).<br />
Pour Google, ce n'est pas un problème&#160;: Le Google Federated Login est très bien documenté, et j'ai trouvé une librairie qui s'y connecte directement, sans assurer de compatibilité OpenID, et ça fonctionne très bien.</p> <p>J'hésite beaucoup pour Facebook. Vu le nombre de personnes ayant un compte Facebook, ça semble intéressant. Mais Facebook Connect est quand même assez galère à mettre en œuvre. Il faut créer une application, et les utilisateurs doivent accepter que cette application accède à leur compte. Et il faut mettre en place du cross-site scripting, pour que la partie Javascript de l'identification puisse accéder aux deux sites sans perdre de cookie. Bref, c'est casse-bonbon.<br />
Mais il reste un espoir&#160;: Facebook s'est rallié au protocole OpenID. Pour l'instant, il n'est pas possible d'utiliser Facebook comme serveur OpenID, mais cela pourrait arriver à l'avenir.</p> <p>Concernant Windows Live... Bah si ça fonctionne, c'est tant mieux. Si ça ne marche pas, je ne vais pas pleurer, je n'ai pas l'impression que ce soit un besoin si important que cela.</p> <p>Pour résumer, la priorité est pour moi d'offrir l'identification par OpenID 1.0, Google, et si possible Twitter. Bref, ceux qui peuvent être mis en place facilement, et pour lesquels il existe des librairies faciles à utiliser. Si c'est pour déployer des usines à gaz et perdre du temps qui serait utile au développement des vraies fonctionnalités, autant laisser tomber.</p> <h4>Coûts et prix</h4> <p>Comme je l'ai déjà dis auparavant, je suis attaché au fait de ne pas faire payer l'accès au service. Je suis toujours éberlué de voir des outils faire payer pour des choses qui n'ont aucun coût réel, comme l'encryption SSL, le nombre d'utilisateurs autorisés, le nombre de projets gérés, le nombre de pages, ...</p>]]></description>
			<content:encoded><![CDATA[<p>(ce billet fait partie d&#8217;un ensemble consacré au <a href="/category/Skriv" hreflang="fr">projet Skriv</a>)</p>
<p>J&#8217;ai rassemblé sur ce billet deux sujets différents et au final pas très importants − par rapport aux fonctionnalités ou à l&#8217;ergonomie, par exemple − mais dont je voulais parler quand même. Comme ça on pourra ensuite se concentrer sur le plus important.</p>
<h4>Création de compte et identification</h4>
<p>Il faut évidemment permettre la création de compte directement sur le site. Mais ce serait une bonne idée d&#8217;autoriser l&#8217;identification par des procédés d&#8217;authentification centralisés. Le premier qui me vie<a href="http://fr.wikipedia.org/wiki/OAuth" hreflang="fr"></a>nt à l&#8217;esprit est <a href="http://fr.wikipedia.org/wiki/OpenID" hreflang="fr">OpenID</a>, qui est un protocole standard prévu exactement pour cela. On peut y ajouter le <a href="http://code.google.com/apis/accounts/docs/OpenID.html" hreflang="en">Google Federated Login</a> (basé sur OpenID), <a href="http://openid.yahoo.com/" hreflang="en">Yahoo! OpenID</a>, Windows Live ID (basé sur OpenID lui aussi), l&#8217;identification centralisée de <a href="http://apiwiki.twitter.com/Sign-in-with-Twitter" hreflang="en">Twitter</a> (utilisant OAuth), ou encore <a href="http://wiki.developers.facebook.com/index.php/Connect/Authentication_and_Authorization" hreflang="en">Facebook Connect</a>.</p>
<p>Ces systèmes permettent de créer un compte quasi-instantanément. Il suffit de cliquer sur le bouton &laquo;&nbsp;Google&nbsp;&raquo;, on arrive sur une page chez Google qui nous demande si on veut continuer (pour peu qu&#8217;on soit déjà identifié chez Google), on clique sur &laquo;&nbsp;Oui&nbsp;&raquo;, et hop ça y est. C&#8217;est assez séduisant.</p>
<p>Ensuite, il faut voir la complexité d&#8217;implémentation de chaque protocole. Google, Yahoo! et Windows Live ne supportent que l&#8217;OpenID version 2. Ça a l&#8217;air idiot, mais les bibliothèques de connexion OpenID ne sont pas si nombreuses en PHP. Il en existe <a href="http://roosenmaallen.com/2008/03/20/simpleopenid-for-php/" hreflang="en">une très simple</a>, qui fonctionne très bien, mais uniquement pour OpenID 1. Il en existe une autre, très complète mais lourdingue à mettre en place, qui est censée être pleinement compatible avec OpenID 2 (mais qui ne semble quand même pas fonctionner avec Google ni Yahoo!).<br />
Pour Google, ce n&#8217;est pas un problème&nbsp;: Le Google Federated Login est très bien documenté, et j&#8217;ai trouvé une librairie qui s&#8217;y connecte directement, sans assurer de compatibilité OpenID, et ça fonctionne très bien.</p>
<p>J&#8217;hésite beaucoup pour Facebook. Vu le nombre de personnes ayant un compte Facebook, ça semble intéressant. Mais Facebook Connect est quand même assez galère à mettre en œuvre. Il faut créer une application, et les utilisateurs doivent accepter que cette application accède à leur compte. Et il faut mettre en place du cross-site scripting, pour que la partie Javascript de l&#8217;identification puisse accéder aux deux sites sans perdre de cookie. Bref, c&#8217;est casse-bonbon.<br />
Mais il reste un espoir&nbsp;: Facebook s&#8217;est rallié au protocole OpenID. Pour l&#8217;instant, il n&#8217;est pas possible d&#8217;utiliser Facebook comme serveur OpenID, mais cela pourrait arriver à l&#8217;avenir.</p>
<p>Concernant Windows Live&#8230; Bah si ça fonctionne, c&#8217;est tant mieux. Si ça ne marche pas, je ne vais pas pleurer, je n&#8217;ai pas l&#8217;impression que ce soit un besoin si important que cela.</p>
<p>Pour résumer, la priorité est pour moi d&#8217;offrir l&#8217;identification par OpenID 1.0, Google, et si possible Twitter. Bref, ceux qui peuvent être mis en place facilement, et pour lesquels il existe des librairies faciles à utiliser. Si c&#8217;est pour déployer des usines à gaz et perdre du temps qui serait utile au développement des vraies fonctionnalités, autant laisser tomber.</p>
<h4>Coûts et prix</h4>
<p>Comme je l&#8217;ai déjà dis auparavant, je suis attaché au fait de ne pas faire payer l&#8217;accès au service. Je suis toujours éberlué de voir des outils faire payer pour des choses qui n&#8217;ont aucun coût réel, comme l&#8217;encryption SSL, le nombre d&#8217;utilisateurs autorisés, le nombre de projets gérés, le nombre de pages, &#8230;</p>
<p><span id="more-110"></span></p>
<p>Évidemment, avoir un serveur qui tourne et qui héberge le service a un coût. Mais on va simplifier les choses à ce niveau. J&#8217;ai déjà un serveur qui fait tourner un certain nombre de sites. De la même manière, toutes les données textuelles sont stockées en base de données&nbsp;; elles prennent de la place sur disque. Mais là aussi, on peut se dire que c&#8217;est assez négligeable.</p>
<p>Par contre, il y a des fonctionnalités qui peuvent avoir un coût direct en fonction de leur utilisation. Et dans ce cas, je préfère laisser aux utilisateur le contrôle de leurs dépenses. J&#8217;ai pour le moment 2 cas précis en tête&nbsp;:</p>
<ul>
<li>Le stockage de fichiers. Il y aura sûrement la possibilité d&#8217;associer des fichiers aux projets gérés dans Skriv. Et ça peut vite représenter des centaines de méga-octets, voire des giga-octets. Plutôt que de prévoir une gestion de l&#8217;espace disque sur le(s) serveur(s), et de facturer cet espace (à quel prix&nbsp;?), il me semble plus simple de laisser chacun se créer un compte sur <a href="http://s3.amazonaws.com/" hreflang="en">Amazon S3</a>. Ainsi, chaque utilisateur paiera directement à Amazon en fonction de la taille des données stockées et de la quantité transférée.</li>
<li>L&#8217;envoi de SMS. Je n&#8217;ai pas encore bien en tête la fonctionnalité qui irait derrière, mais on peut imaginer un &laquo;&nbsp;reminder&nbsp;&raquo; qui fonctionne aussi bien par email que par SMS. L&#8217;envoi de SMS a un coût directement lié au nombre de SMS envoyés. Là encore, les utilisateurs qui comptent utiliser cette fonction pourraient s&#8217;abonner à un service comme <a href="http://www.smsmode.com/" hreflang="fr">SMSMode</a> ou <a href="http://www.clickatel.com/" hreflang="en">Clickatel</a>, puis enregistrer leurs paramètres.</li>
</ul>
<p>Au sujet d&#8217;Amazon Web Services, on pourrait imaginer y stocker la base de données, et laisser ainsi chaque utilisateur payer en fonction de la quantité de données stockées (comme pour les fichiers stockés sur S3). Mais non seulement cela obligerait <em>tous</em> les utilisateurs à devoir se créer un compte sur Amazon − et le configurer correctement −, mais en plus cela ralentira l&#8217;ensemble du fonctionnement du service (quoi qu&#8217;on en dise, rien n&#8217;est plus rapide qu&#8217;une base de données qui tourne en local).</p>
<p>Pouvez-vous imaginer d&#8217;autres cas&nbsp;? Quels peuvent être les coûts qui se cachent dans un web-logiciel de ce genre, et comment pouvons-nous les contourner intelligemment&nbsp;?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geek-directeur-technique.com/2010/01/27/skriv-identification-et-prix/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Lancement du projet Skriv</title>
		<link>http://www.geek-directeur-technique.com/2010/01/23/lancement-du-projet-skriv</link>
		<comments>http://www.geek-directeur-technique.com/2010/01/23/lancement-du-projet-skriv#comments</comments>
		<pubDate>Sat, 23 Jan 2010 21:45:00 +0000</pubDate>
		<dc:creator>Amaury</dc:creator>
				<category><![CDATA[Skriv]]></category>
		<category><![CDATA[buglist]]></category>
		<category><![CDATA[entretien]]></category>
		<category><![CDATA[gestion de projet]]></category>
		<category><![CDATA[logiciel]]></category>
		<category><![CDATA[outil]]></category>
		<category><![CDATA[projets]]></category>

		<guid isPermaLink="false">http://v2.geek-directeur-technique.com/?p=109</guid>
		<description><![CDATA[J&#8217;en parlais récemment dans le post concernant l&#8217;avenir de ce blog&#160;: Je réfléchis à l&#8217;idée de développer un outil de gestion de projet ouvert à tous. Quasiment depuis que je travaille, j&#8217;ai développé des outils pour suivre les projets ou traiter les bugs. Comme j&#8217;ai souvent bossé dans des entreprises de petite taille, pour ne [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;en parlais récemment dans le post concernant l&#8217;avenir de ce blog&nbsp;: Je réfléchis à l&#8217;idée de développer un outil de gestion de projet ouvert à tous.</p>
<p>Quasiment depuis que je travaille, j&#8217;ai développé des outils pour suivre les projets ou traiter les bugs. Comme j&#8217;ai souvent bossé dans des entreprises de petite taille, pour ne pas dire des start-ups, ces outils comblaient des manques évidents et étaient adoptés rapidement.</p>
<ul>
<li>Il y a maintenant un paquet d&#8217;années, j&#8217;avais fait un gestionnaire de buglist. Doté d&#8217;une interface web, il était écrit en C et stockait ses données dans un fichier XML. Technologiquement, ce n&#8217;était pas une très bonne idée, mais c&#8217;était l&#8217;occasion de tester des librairies XML et CGI que j&#8217;avais écrites en C. Au niveau des fonctionnalités, je ne me souviens plus trop. Je crois que c&#8217;était assez simple, avec pour chaque bug le niveau de criticité, une description, et le projet affecté.</li>
<li>J&#8217;avais par la suite repris le même genre d&#8217;outil, mais écrit en PHP/MySQL. Pus facile à faire évoluer, je n&#8217;ai pas souvenir qu&#8217;on l&#8217;ait utilisé à son plein potentiel.</li>
<li>Dans mon entreprise actuelle, j&#8217;ai dès le début mis en place des outils open-source, les plus important étant <a href="/post/2009/02/20/Flyspray">Flyspray</a> pour la buglist et MediaWiki pour le wiki. Depuis, j&#8217;ai développé des extensions MediaWiki qui nous servent à gérer les projets. Ainsi, chaque projet a une page dédiée sur laquelle apparaissent&nbsp;: la liste des bugs du projet, une liste de tâches, des pages wiki liées au projet, et des fichiers en &laquo;&nbsp;pièce-jointe&nbsp;&raquo;.</li>
</ul>
<p>Cette extension est clairement inspirée par <a href="/post/2009/02/10/Backpack">Backpack</a>. J&#8217;aime vraiment ce logiciel. Par rapport à d&#8217;autres outils plus orientés &laquo;&nbsp;projet&nbsp;&raquo;, comme <a href="/post/2009/02/19/Basecamp">Basecamp</a> par exemple (pour reprendre un autre logiciel développé par 37signals), j&#8217;apprécie le fait que toutes les informations soient regroupées sur une seule page.<br />
Habituellement, les logiciels de gestion de projets offrent plusieurs vues différentes, chacune pour un type d&#8217;information. Il y a un onglet pour les tâches, un onglet pour le calendrier, un onglet pour les bugs (si l&#8217;outil les gère), un onglet pour les pages de wiki (si c&#8217;est disponible), un onglet pour les fichiers, et ainsi de suite.<br />
Pour ma part, je préfère avoir la vue la plus &laquo;&nbsp;intégrée&nbsp;&raquo; possible. Cela implique de penser l&#8217;interface en conséquence, ce qui peut s&#8217;avérer plus délicat qu&#8217;il n&#8217;y paraît.</p>
<p>Je cherche donc maintenant à définir un outil que je pourrais utiliser aussi bien pour mes besoins en entreprise, que pour gérer mes projets personnels. Je vais donc m&#8217;intéresser à chaque aspect d&#8217;un tel logiciel dans une série de billets sur le blog. Je ferais appel aux avis des lecteurs du blog, en espérant réussir à dégager des principes clairs de fonctionnement. J&#8217;espère aussi trouver le temps de développer ce logiciel, pour que tout cela ne reste pas théorique (d&#8217;un autre côté, si un autre outil est développé à partir de spécifications dérivées de mes idées, je n&#8217;y verrais aucun problème, bien au contraire).</p>
<p>Ah, au fait, pourquoi appeler ce projet&nbsp;«Skriv»&nbsp;? C&#8217;est un nom que j&#8217;affectionne, que j&#8217;ai donné par le passé à plusieurs logiciels que j&#8217;ai développé. Le plus important était une interface web qui intégrait un webmail, un gestionnaire de bookmarks, un bloc-notes, un carnet d&#8217;adresses, une gestion de compte bancaire. Je l&#8217;utilisais tous les jours pour centraliser ma vie numérique. De nos jours, c&#8217;est assez commun&nbsp;; mais à l&#8217;époque où je l&#8217;ai développé (en 2002), c&#8217;était assez novateur.<br />
Pour le nom lui-même, il signifie &laquo;&nbsp;écrire&nbsp;&raquo; dans plusieurs langues comme le breton et le suédois. Ça va bien dans l&#8217;idée d&#8217;un outil qui sert principalement à communiquer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geek-directeur-technique.com/2010/01/23/lancement-du-projet-skriv/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

