Porneia delights

[Les captures d'écran utilisées dans cet article ont été réalisées par sebsauvage. Les sections "Aux petits oignons" et "Ajoutez un lien tout simplement" du présent article sont respectivement une traduction littérale de la section "In-source configuration" et une libre adaptation de la section "Sharing a link" originellement écrite en anglais par sebsauvage et disponible sur le site du projet. Le tout restant soumis aux termes de la licence Creative Commons Attribution - Non Commercial 3.0 Unported (CC BY-NC 3.0), la traduction et l'adaptation y compris]

— Lorsqu'un internaute butine sur la toile, il lui arrive relativement souvent de vouloir conserver certaines URLs, qui d'une discussion animée sur un forum, qui d'un article intéressant, qui d'un lien sur megaupload, qui encore d'une image amusante. Les navigateurs intrègrent dans leurs grandes majorités une fonction de marque-page qui nous permet de retrouver aisément ces fameux liens. Certains ont poussé l'idée en développant le concept de Marque-page social (Social bookmarking) qui consiste à enregistrer et organiser ses marque-pages non plus au sein du navigateur mais en ligne via un service gratuit — généralement. Bien que le terme de Social bookmarking ne soit apparu qu'en 2003 sous l'impulsion de del.ico.us, Scout Project nous présentait dans son rapport numéro 18 volume 6 un des premiers sites du genre sortie alors en 1996 : itList. Déjà à cette époque itList disposait de différentes fonctions dont la principale était de partager publiquement certains de ses marque-pages — sinon tous — en envoyant un simple email et de permettre aux autres internautes de les commenter ou de les noter. Il était possible dès lors de faire des recherches dans tous les marque-pages publics, de voir les mieux notés et les plus commentés — de façon général ou par catégorie — et d'autres choses encore (non reddit n'a rien inventé).

Ces services d'antan, aujourd'hui disparus, ont fait des petits bien connus tel que delicious, pinboard ou même diigo ; la liste n'étant pas exhaustive. Si nous souhaitons partager et organiser nos liens nous avons donc le choix parmi un nombre conséquent de services en ligne centralisés, fermés et/ou privateurs... avec tous les problèmes que cela entraîne. Certains sont lourds et lents à charger. D'autres sont buggés. Vous ne savez pas nécessairement comment lesdits services utilisent ce qui est finalement un résumé de vos promenades httpèsque, ce qui n'est pas pour réjouir les plus paranoïaques d'entre nous — il paraîtrait même, Tamper Data à l'appui, que l'un d'entre eux par le truchement de son addon pour Firefox suit à la trace tous les liens que vous visitez (oui même ceux que vous n'ajoutez pas à votre compte de gestion de marque-pages en ligne... Le data mining n'a pas de limite). De plus que ferez-vous quand Disney, ayant remarqué que l'un des utilisateurs partage des liens de Mickey ayant des conduites sexuelles avec Minnie prohibées par l'État du Texas, fera fermer sans préavis le service en question, détruisant par la même les précieux liens récoltés au fur et à mesure de vos mois ou années de recherche et privant subséquemment vos amis de vos découvertes hebdomadaires ? Je veux dire à part pleurer à chaudes larmes et à grand bruit tout en appuyant frénétiquement sur le bouton rouge feu de HOIC ?

C'est là qu'intervient Shaarli.

« Eh ! Bonjour les filles ! » – « Bonjour Shaarliiiii ! »

[Shaarli logo] Libre et sauvage ¦ Shaarli est une application en PHP (5.1 minimum) partagée sous la licence zlib/libpng OSI et développée par Bosley sebsauvage qui le décrit lui-même comme le clone personnel, minimaliste, super-rapide, sans base de donnée de delicious. Autrement dit c'est une alternative libre et ouverte aux services suscités, simple d'utilisation, très légère, facilement déployable et qui ne manquera pas de ravir les convaincus de l'auto-hébergement. Le projet Shaarli a été ouvert en septembre 2011 et est actuellement en version beta — il est cependant parfaitement stable et robuste.

Une alternative sérieuse ¦ La principale fonction de Shaarli est bien sûr de sauvegarder des marque-pages tant public que privé. Vous avez la possibilité de les parcourir par pages ou de les filtrer par tags. Chaque marque-page à son lien permanent et son QR-Code qui renvoient vers son titre et sa description complète (sans limite de taille). Vous pouvez les diffuser par RSS et Atom ; le support du protocole PubSubHubbub est aussi présent. L'importation et l'exportation sont bien sûr prévues. Shaarli dispose d'un nuage de tags mais aussi d'un mur d'images (des miniatures étant automatiquement générées pour différents services tel que imgur, imageshack, flickr, youtube, etc). De plus, très récemment, sebsauvage a ajouté ce qu'il nomme un Shaarli daily, n'étant rien d'autre qu'une présentation des liens du jour reprenant l'architecture d'un journal papier. Vous pouvez voir le rendu de tout cela sur le shaarli personnel du développeur qui partage un peu moins de 10,000 liens — le tout restant parfaitement fluide.

Quelques détails techniques ¦ Shaarli se veut être une application qui respecte le principe KISS. Aussi son architecture est des plus simples. Principalement nous avons un index.php contenant le code, un répertoire data/ contenant les fichiers de l'utilisateur, un répertoire inc/ contenant des extras (CSS, javascript, etc.), un répertoire images/ et un répertoire tpl/ qui vous permet de customiser l'apparence de votre shaarli . Ce dernier point est permis grâce à l'utilisation de RainTPL, le fameux moteur de template. Tous les marque-pages ainsi que leurs commentaires et tags sont stockés au sein d'un fichier qui, selon les estimations du développeur, ne prend que 150Kb de place pour 1315 liens ; le choix d'utiliser un fichier unique permet ainsi de mettre en place un système de sauvegarde des plus basiques. Grâce à ces éléments, Shaarli est extrêment léger.

Des mesures de sécurité ¦ En ce qui concerne la sécurité, il se protége des attaques de type brute force en banissant au quatrième échec de login l'adresse IP du présumé attaquant pour une durée de 30 minutes grâce à trois fonctions : ban_loginFailed, ban_loginOk et ban_canLogin ; mais notez qu'il peut toujours parcourir les marque-pages. Remarquez d'ailleurs que le fichier data/log.txt contient toutes les activités liées aux tentatives de connexions. Shaarli a aussi une protection contre le XSRF (le détournement d'un cookie de session). Un fichier .htaccess est présent pour protéger les données de l'utilisateur (le dossier data/). La base de donnée des liens est un tableau sérialisé, compressé avec deflate, encodée en base64 et sauvegarder à l'état de commentaire dans un fichier PHP ; cela offrant une protection supplémentaire au cas où le serveur ne supporterait pas les .htaccess. Enfin par rapport au mot de passe, il est hashé tout d'abord ; sebsauvage de plus utilise un salt. Il est stocké ensuite sous cette forme dans un fichier PHP au sein du dossier data/ lui-même étant protégé par son .htaccess donc.

De la question de l'installation ¦ Elle se résoud en trois courtes minutes, c'est de celles que l'on écarte. Il vous suffit de récupérer l'archive — shaarli.zip (ce lien pointe toujours vers la dernière version à jour) (miroir de la version 0.0.38beta (zip, 348ko)) — et de la décompresser dans un dossier sur votre serveur web (attention tout va se décompresser dans le répertoire courant, veuillez à bien exécuter l'opération dans un dossier vierge) ; ou bien, selon, envoyer le dossier en question via FTP /SFTP sur votre espace distant. Dirigez-vous enfin vers l'adresse où vous avez installé votre shaarli :

[Première connection à
     Shaarli]

Une fois les champs remplis à votre convenance, il vous demande de vous connecter. Vous pourrez alors ajouter votre premier lien en cliquant simplement sur "Add link". D'ailleurs, à propos de la langue, Shaarli n'est pour le moment officiellement disponible qu'en anglais, même si la gestion des traductions ne sauraient tarder. Cependant M-o-o-n-FR, un enthousiaste de la communauté, a mis à notre disposition le dossier tpl/ traduit par ses soins en français. Pour en profiter il vous suffit simplement de remplacer le contenu de votre dossier tpl/ par celui de l'archive. Enfin, si c'est encore trop long pour vous et/ou que vous êtes un peu feignant, VoidAndAny nous a écrit un petit script en bash pour automatiser tout cela (à adapter selon vos besoins).

Mettre à jour son shaarli ¦ La mise à jour de Shaarli est relativement simple. Typiquement il suffit de récupérer l'archive de la dernière version et d'écraser le contenu de votre shaarli avec la nouvelle version. Cependant prenez garde à deux choses. Pensez à préserver votre dossier data/ qui contient entre autres choses importantes tous vos marques-pages. De plus pour ceux qui ont changé leur thème, conservez absolument votre dossier tpl/ ainsi que vos CSS du dossier inc/ au risque de perdre vos arrangements. Le projet Shaarli ne dispose pas encore de dépôt officiel git/svn/whatever (mais sebsauvage va bientôt craquer sous la pression des utilisateurs, ne vous en faîtes pas). En attendant Alda met à disposition les sources de Shaarli sur son propre dépôt pour nous permettre de mettre à jour plus simplement. MàJ du 13 février 2012 14:31 UTC : une version un peu modifiée pour le Planet Libre dispose de son dépôt sur un github maintenu par theClimber.

Du côté de la distribution ¦ Il sera aussi bientôt possible de faire l'installation et les mises à jour de Shaarli au travers des gestionnaires de paquets de vos différentes distributions. Probablement sous Ubuntu tout d'abord, Emilien Klein s'occupant de la page sur Launchpad. Celui-ci cherche d'ailleurs en ce moment même un sponsor debian (actuellement en discussion) afin de soumettre le paquet debian qu'il a construit. De son côté, Pascal Bellard a rédiger une recette pour le cooker de SliTaz. pkgsrc n'est pas en reste grâce aux efforts de Frédéric Fauberteau qui l'a intégré dans la branche CURRENT de pkgsrc-wip. Enfin, un projet de construction d'un paquet pour fedora a aussi vu le jour à l'initiative de Frédéric Thouin mais semble malheureusement stagner pour le moment. MàJ du 12 février 2012 20:11 UTC : Robin Hahling répare un oubli en commentaire en précisant qu'il a créé et maintient un paquet pour Archlinux ; merci à lui.

Ajoutez un lien, tout simplement ¦ Il existe une méthode plus simple que d'aller sur votre shaarli à chaque fois que vous souhaitez y ajouter des liens. Dans le menu, cliquez sur "Tools" puis faîtes glisser le bouton "Shaare link" dans votre barre de marque-pages (compatible avec Firefox, Opera, Chrome et Safari) :

[Faîtes glisser le bouton
     Shaare link]

Lorsque vous êtes sur une page qui vous intéresse et que vous souhaitez la diffuser avec votre shaarli, cliquez alors simplement sur le bouton "Shaare link" :

[Cliquez sur Shaare link]

Il ne vous reste plus qu'à remplir les différents champs :

[Les champs lors de
     l'ajout]

Les champs "URL" et "Title" se remplissent automatiquement afin de vous faciliter la tâche. De plus, le champ "Tags" supporte l'auto-complétion (requiert PHP 5.2).

Des cas d'exception pour free.fr et 1and1 ¦ En parlant d'auto-complétion. Si vous êtes hebergé chez free.fr vous ne pourrez pas en bénéficier car les serveurs n'ont que PHP 5.1 à disposition. Toujours pour les pages persos, pour faire fonctionner Shaarli il va vous falloir renommer le fichier index.php en index.php5 ou alors, alternativement, créez à la main à la racine de votre dossier contenant votre shaarli un fichier .htaccess contenant :

php 1
SetEnv PHP_VER 5

De plus, toujours pour free.fr mais aussi en ce qui concerne le prestataire de service 1and1 et dans le cas où vous utiliseriez le "Add link" de la page principale, vous devrez remplir vous-même le champ pour "Title" étant donné qu'ils ont désactivés la possibilité de télécharger un fichier via HTTP (il n'y a par contre aucun problème si vous utilisez le bouton "Shaare link" depuis votre barre personnelle). À cause de cet état de fait, vous ne pourrez non plus bénéficier des miniatures de certains services (comme imgur par exemple) — Shaarli ne pouvant télécharger les images pour les réduire...

De l'utilité « des choses pour ce qu'elles sont et non pour ce qu'elles paraissent » ¦ Cette citation reprise à Benjamin Bayart me permet d'introduire quelques indices que nous fournit sebsauvage pour tirer le plus grand parti de son outils. Tout d'abord comme un pastebin (privé et/ou public) dans lequel vous pouvez coller du texte à volonté. Pour cela ajouter simplement un lien en laissant le champ "URL" vide ; ce qui aura pour effet de faire pointer l'entrée sur elle-même. Vous pouvez de la même manière envisager aussi d'utiliser Shaarli comme un twitter ou un identi.ca. En poussant le raisonnement plus loin, Shaarli peut même être appréhender comme un moteur de blog réduit à sa fonction la plus élémentaire. D'un autre côté, Shaarli peut être un remplaçant dynamique aux fameux billets "En vrac" ; ou permet plus simplement de garder des traces des veilles professionnelles quotidiennes. Ou, comme le fait sebsauvage lui-même, remplir toutes ces fonctions à la fois... Certains utilisateurs en commentaires du projet ont même expliqués qu'ils utilisaient Shaarli au sein d'un réseau local d'entreprise afin que les employés puissent partager entre eux des informations, des conseils et des liens utiles, mais aussi des mèmes ou des privates jokes ; épargnant ainsi les boîtes mails déjà bien remplies.

Aux petits oignons ¦ En ce qui concerne les possibilités de configuration, elles sont multiples. Tout se déroule dans data/options.php (le fichier n'existe pas, vous devez le créer) et s'organise de cette manière :

<?php
$GLOBALS['config']['LINKS_PER_PAGE'] = 30;
$GLOBALS['config']['HIDE_TIMESTAMPS'] = true;
$GLOBALS['config']['ENABLE_THUMBNAILS'] = false;
?>

Les paramètres (que vous retrouverez sur la section idoine du projet) sont les suivants — paramètres (valeur par défaut) :

Avoir son propre thème ¦ Comme déjà évoqué, Shaarli utilise le moteur de gabarit pour PHP RainTPL. Il serait fastidieux de rentrer dans les détails de la modification du thème par défaut. Aucune connaissance en PHP n'est requise ; il vous faudra par contre des notions, même simple, en HTML+CSS. Vous n'aurez à modifier que les fichiers présents dans tpl/ ainsi que le CSS dans inc/ (user.css étant là pour ça). Dans tpl/ les fichiers sont découpés selon leur fonction dans les pages (page.footer.html, page.header.html, tagcloud.html, etc.) Pour les plus néophytes d'entre nous, faîtes simplement attention à ne pas toucher aux contenus entre accolades, ceux-ci faisant explicitement appel au code contenu dans index.php. Pour finir voici d'ailleurs quelques réalisations d'utilisateurs de Shaarli : share.aldarone.fr, lamecarlate.net/links, marienfressinaud.fr/shaarli, sensini42.free.fr/shaarli (ou même encore le nôtre). MàJ du 13 février 2012 17:39 UTC : il y a aussi celui-ci : anadrark.com/links.

Quelques observations et autres remarques

« Commit early, commit often! » ¦ Vous l'aurez compris je l'espère au travers de cet article que Shaarli, en restant simple d'utilisation, permet de remplir une multitude de fonction. Sebsauvage a su construire autour de lui de par ses commits réguliers et son écoute attentive une communauté sympathique et enthousiaste. Vous pouvez retrouver par ailleurs les discussions et les demandes d'aide des différents utilisateurs et contributeurs ; et si vous souhaitez participer à la conversation pour demander ou de l'aide en cas de problème ou une fonction particulière veillez avant tout s'il vous plaît à ce que les premiers n'ont pas déjà été résolus en lisant attentivement la FAQ et que les secondes n'aient pas déjà été soumises en parcourant la liste des idées et corrections.

Un fichier pour les gouverner tous ¦ Un des premiers questionnements récurrents a porté sur la partie technique de Shaarli, notamment sur le fait qu'il n'utilise pas de base de donnée tel que SQLite, sur son orientation « un seul fichier » et sur les conséquences en terme de rapidité. Sur l'espace de discussion, sebsauvage y répond lui-même :

J'aurais pu utiliser SQLite (que j'aime beaucoup), c'est vrai. Je le passerai peut-être à SQLite. C'est juste que je me méfie : certains hébergeurs ne le supportent pas, ou n'ont que SQLite2. Et puis je voulais tester un peu les limites de cette approche sous forme de fichier. Mais bon même avec 7200 liens, ça tourne assez bien (le fichier fait 1,1 Mo, et vue sa taille il est déjà dans le cache disque de l'OS : autrement dit, ça ne doit même pas provoquer d'I/O disque à la consultation, juste du CPU).

De la question du multi-utilisateur ¦ Dans un autre ordre d'idée, une des requêtes que l'on retrouve assez souvent est la création d'un environnement multi-utilisateurs pour Shaarli. Le shaarli du Porneia delights est utilisé par plusieurs personnes. Nous utilisons tous le même compte pour ajouter nos liens ; ce qui convient parfaitement à notre fonctionnement et notre philosophie car nous ne ressentons pas le besoin de nous individualiser pour publier (sauf en ce qui concerne les articles). Mais c'est loin d'être la norme bien évidemment — je pense notamment à cette personne évoquée plus haut qui parlait de l'utilisation d'un shaarli au sein d'une entreprise ; dans ce contexte, le multi-utilisateur prend du sens. Sachez que cette question sera peut-être envisagée par sebsauvage mais nécessite évidemment un travail certain.

Des alternatives à l'alternative ¦ Il existe bien sûr d'autres outils pour partager les liens. De manière non-exhaustive on peut penser à linx, SemanticScuttle, Online-Bookmarks (abandonné ?) mais aussi à Links.

Retour vers le shaarli ¦ Comparé aux différents services centralisés présentés en introduction, Shaarli a comme nous l'avons vu des avantages non négligeables. Certains d'entre vous regretterons peut-être l'absence de fonctions commme la possibilité pour les visiteurs de commenter les liens ou de leur attribuer un "up" ou un "down" (à la manière de reddit). De plus, aucune structure n'est encore effectivement présente pour qu'un shaarli discute avec un autre shaarli ; l'idée de permettre aux différents utilisateurs d'un shaarli d'importer un lien depuis un autre shaarli, par l'intermédiaire de ce que l'on pourrait nommer un via, a été soumise et sebsauvage ne manqera certainement pas de l'intégrer. Mais ce à quoi je pense va plus loin que cela : en tant qu'utilisateurs de Shaarli nous nous sommes amusés, comme d'autres sûrement, à chercher les shaarli qui peuplent le web (Où est Shaarli ?). Il y en a un certain nombre déjà. Je suis donc presque quotidiennement plusieurs shaarli via mon agrégateur de flux ou en les visitant à la main. Ne serait-ce pas sympathique de pouvoir suivre les shaarlis que l'on aime (ou même tous par défaut ?) directement depuis notre shaarli personnel (qui reste toujours plus ou moins ouvert dans un onglet en coin) — en les interconnectant grâce à PubSubHubbub peut-être ? Nous aurions ainsi une sorte de Front page of teh Shaarli. Mieux encore, imaginons qu'il soit possible de faire une recherche de liens sur tous les shaarlis disponibles sur la toile, ou sur ceux qui souhaitent que l'on puisse faire des recherches sur leur shaarli tout du moins ? Pouvoir noter et commenter les liens des autres depuis notre shaarli personnel ? Oui je parle bien d'un reddit en plus simple et surtout décentralisé. Je vous avoue sans détour que je n'ai pas la moindre idée des possibilités effectives de réalisation de telles idées sans rendre Shaarli totalement obsèse, mais il est possible que d'autres que moi ont dû les avoir et envisage peut-être des solutions pour les ajouter. Peut-être proposer l'intégration d'un système de plugin ? Mais dans ce cas, le projet s'écarterait du « tout en un fichier ». Cela aurait cependant l'avantage de garder le Shaarli de base aussi fin que possible tout en laissant aux utilisateurs la possibilité de développer leurs propres modules qui ne viendrait pas interférer et alourdir le fichier central. Mais peut-être que d'une certaine manière ces idées vont à l'encontre de l'esprit du projet.

ShaarCLI Project ¦ Dans un tout autre ordre d'idée, une fonction qui m'intéresserait serait de pouvoir publier sur le shaarli du Porneia delights via mon terminal — mais je risque de voir cela réalisé relativement rapidement. En effet sebsauvage projette de permettre l'ajout de liens depuis d'autres applications web (MàJ du 13 février 2012 18:02 UTC : en passant VoidAndAny nous explique comment lier Google Reader et Shaarli). Je ne sais pas s'il va se tourner vers le développement d'une API qui dès lors me permettra de joindre un shaarli depuis la ligne de commande par l'intermédiaire d'un petit script bash, ou depuis Emacs par l'intermédiaire d'un shaarli-mode, mais permettra aussi de développer des applications pour téléphone intelligent par exemple. Mais bon confer la dernière ligne du point précédent... MàJ du 14 mai 2014 13:35 +02:00 : thuban a développé Shaarlyp, outil en python pour ajouter des liens depuis un terminal.

Point de vue personnel ¦ J'aimerai enfin terminer cet article par mon expérience personnelle vis-à-vis de Shaarli. Il a tout d'abord répondu à un besoin et il est enfantin à appréhender, ce qui est tout à fait appréciable bien sûr. Mais je dois dire que ce projet « à l'échelle humaine » m'a surtout permis de me familiariser avec le PHP, language que je souhaitais aborder depuis déjà quelques temps. Je me suis plongé dans les entrailles de Shaarli alors que je voulais, en décembre et tandis que RainTPL n'avait pas encore été intégré, modifier le thème par défaut — hardcodé à l'époque donc — pour qu'ils correspondent à l'esthétique du Porneia delights. Le code est relativement simple à comprendre et bien documenté (en tout cas d'un point de vue de néophyte) et sa taille m'a permis d'avoir une vision d'ensemble sans un labeur excessif ; même si des personnes plus expertes ont des avis qui diffèrent (notez la réponse de l'intéressé en commentaire). J'ai ainsi pu me familiariser avec ce language presque même sans que je m'en rendisse compte, de façon tout à fait ludique et avec un résultat directement visible et pratique. Les auto-didactes savent comme il peut être difficile de trouver un projet qui nous convienne, nous motive et surtout qui respecte les bonnes pratiques de programmation dans un language donné (quoique j'ai l'impression qu'avec le PHP on trouve beaucoup plus de n'importe quoi sur Internet comparé aux autres languages, mais je me trompe peut-être). Bien sûr je n'ai pas les compétences encore pour réellement apporter ma contribution au code ou même pour le critiquer (au sens noble du terme) ; mais en local, il me permet déjà d'avoir du fun tout en essayant de mettre en forme des idées qui me traverse l'esprit. Plus encore que la possibilité de partager simplement et librement des liens avec le reste du monde, je suis reconnaissant envers sebsauvage pour m'avoir permis de cocher cette entrée dans ma TODO list tout en m'amusant. Ses compétences, sa gentillesse et sa proximité avec la communauté sont de plus des qualités enthousiasmantes.

tl;dr ¦ Shaarli est une alternative libre à delicious sans base de donnée et requiérant PHP 5.1. Vous pouvez le récupérer via ce lien. Décompressez-le dans un dossier vide. Pointez l'URL dans votre navigateur pour commencer à l'utiliser. Faîtes glisser le bouton "Shaare link" (menu "Tools") dans votre barre personnelle pour une meilleure expérience d'utilisation. Ayez du fun. Partagez-le.


Vous pouvez envoyer par mail vos commentaires et vos remarques à illovae[at]bk[dot]ru.

Contrat
Creative Commons
Shaarli et ses drôles de liens (4551 mots) de illovæ et al. est mis à disposition selon les termes de la licence Creative Commons Paternité - Pas de travaux dérivés 3.0 (CC BY-ND 3.0).

Vulnerant omnes, ultima necat. Sic transit hominis regnum.
Copyleft © 2012 — illovæ et al.