The git repo behind my blog.

mon-lecteur-rss-ideal.html 34KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="HandheldFriendly" content="True" />
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  8. <meta name="robots" content="index, follow" />
  9. <link href='https://phyks.me/theme/stylesheet/fonts.css' rel='stylesheet' type='text/css'>
  10. <link rel="stylesheet" type="text/css" href="https://phyks.me/theme/stylesheet/style.min.css">
  11. <link rel="stylesheet" type="text/css" href="https://phyks.me/theme/pygments/monokai.min.css">
  12. <link rel="stylesheet" type="text/css" href="https://phyks.me/theme/font-awesome/css/font-awesome.min.css">
  13. <link href="https://phyks.me/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Phyks' blog Atom">
  14. <link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon">
  15. <link rel="icon" href="/images/favicon.ico" type="image/x-icon">
  16. <!-- Chrome, Firefox OS and Opera -->
  17. <meta name="theme-color" content="#333">
  18. <!-- Windows Phone -->
  19. <meta name="msapplication-navbutton-color" content="#333">
  20. <!-- iOS Safari -->
  21. <meta name="apple-mobile-web-app-capable" content="yes">
  22. <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
  23. <!-- Microsoft EDGE -->
  24. <meta name="msapplication-TileColor" content="#333">
  25. <meta name="author" content="Phyks" />
  26. <meta name="description" content="EDIT : J’ai repris quelque peu le commentaire de FreshRSS, après discussion avec son auteur. J’avais raté certaines options en particulier. EDIT 2: Suite à quelques retours sur cet article, je tiens à préciser que la première partie de l’article (« Panorama de ce qui existe ») est volontairement courte …" />
  27. <meta name="keywords" content="">
  28. <meta property="og:site_name" content="Phyks' blog"/>
  29. <meta property="og:title" content="Mon lecteur RSS idéal"/>
  30. <meta property="og:description" content="EDIT : J’ai repris quelque peu le commentaire de FreshRSS, après discussion avec son auteur. J’avais raté certaines options en particulier. EDIT 2: Suite à quelques retours sur cet article, je tiens à préciser que la première partie de l’article (« Panorama de ce qui existe ») est volontairement courte …"/>
  31. <meta property="og:locale" content="en_US.UTF-8"/>
  32. <meta property="og:url" content="https://phyks.me/2014/07/mon-lecteur-rss-ideal.html"/>
  33. <meta property="og:type" content="article"/>
  34. <meta property="article:published_time" content="2014-07-10 17:24:00+02:00"/>
  35. <meta property="article:modified_time" content=""/>
  36. <meta property="article:author" content="https://phyks.me/author/phyks.html">
  37. <meta property="article:section" content="Selfhosting"/>
  38. <meta property="og:image" content="/images/profile.png">
  39. <title>Phyks' blog &ndash; Mon lecteur RSS idéal</title>
  40. </head>
  41. <body>
  42. <aside>
  43. <div>
  44. <a href="https://phyks.me">
  45. <img src="/images/profile.png" alt="Phyks" title="Phyks">
  46. </a>
  47. <h1><a href="https://phyks.me">Phyks</a></h1>
  48. <p>I write about dev, FOSS, DIY and more, in French and English.</p>
  49. <ul class="social">
  50. <li><a class="sc-rss" href="feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
  51. <li><a class="sc-envelope-o" href="mailto:phyks+blog@phyks.me" target="_blank"><i class="fa fa-envelope-o"></i></a></li>
  52. <li><a class="sc-github" href="http://github.com/phyks/" target="_blank"><i class="fa fa-github"></i></a></li>
  53. <li><a class="sc-gitlab" href="https://git.phyks.me/phyks" target="_blank"><i class="fa fa-gitlab"></i></a></li>
  54. </ul>
  55. </div>
  56. </aside>
  57. <main>
  58. <nav>
  59. <a href="https://phyks.me">Home</a>
  60. <a href="https://links.phyks.me">Bookmarks</a>
  61. <a href="/pages/hosted-tools.html">Tools</a>
  62. <a href="/archives.html">Archives</a>
  63. <a href="/pages/memo-autohebergement.html">Autohébergement</a>
  64. <a href="https://phyks.me/feeds/all.atom.xml">Atom</a>
  65. </nav>
  66. <article class="single">
  67. <header>
  68. <h1 id="mon-lecteur-rss-ideal">Mon lecteur <span class="caps">RSS</span>&nbsp;idéal</h1>
  69. <p>
  70. Posted on 10 July 2014 in <a href="https://phyks.me/category/selfhosting.html">Selfhosting</a>
  71. &#8226; 16 min read
  72. </p>
  73. </header>
  74. <div>
  75. <p><strong><span class="caps">EDIT</span>&nbsp;:</strong> J&#8217;ai repris quelque peu le commentaire de FreshRSS, après
  76. discussion avec son auteur. J&#8217;avais raté certaines options en&nbsp;particulier.</p>
  77. <p><strong><span class="caps">EDIT</span> 2:</strong> Suite à quelques retours sur cet article, je tiens à
  78. préciser que la première partie de l&#8217;article («&nbsp;Panorama de ce qui
  79. existe&nbsp;») est volontairement courte et caricaturale. C&#8217;est une
  80. compilation caricaturale de réflexions que j&#8217;ai entendues, et je ne
  81. m&#8217;étends volontairement pas dessus, pour ne pas allourdir inutilement
  82. cet article qui vise d&#8217;abord à présenter les points qui me semblent
  83. importants pour mon lecteur de flux <span class="caps">RSS</span>&nbsp;idéal.</p>
  84. <p><em>Attention, cet article est un bon pavé et il est sûrement plein de
  85. répétitions…&nbsp;:)</em></p>
  86. <p>Sam&amp;Max ont écrit récemment sur <a href="http://sametmax.com/pourquoi-sametmax-com-utilise-wordpress/">leur moteur
  87. idéal</a>. Le
  88. moteur de blog est un réel problème, et j&#8217;adhérerais immédiatement à un
  89. moteur de blog qui satisfasse leurs critères (mais bon, pour l&#8217;instant
  90. ma solution maison patchée de partout fonctionne pas trop mal&nbsp;:). En
  91. revanche, un autre point mérite une bonne réflexion et pourrait être
  92. grandement amélioré et modernisé&nbsp;: le lecteur <span class="caps">RSS</span>.</p>
  93. <p>J&#8217;utilise actuellement <a href="https://github.com/ldleman/Leed">Leed</a> sur mon
  94. serveur. J&#8217;en suis globalement satisfait, mais certains points m&#8217;agacent
  95. et ne sont pas résolus, au fil des versions. Pourtant, après avoir fait
  96. le tour des solutions existantes, c&#8217;est la solution la plus
  97. fonctionnelle que j&#8217;ai trouvée… Je profite donc de ce billet pour
  98. dresser un bilan de ce que j&#8217;ai vu passer sur les lecteurs <span class="caps">RSS</span> et ce que
  99. je voudrais trouver dans mon lecteur <span class="caps">RSS</span>&nbsp;idéal.</p>
  100. <h2>Panorama de ce qui&nbsp;existe</h2>
  101. <p>Tout d&#8217;abord, sebsauvage a fait il y a quelques temps un <a href="http://sebsauvage.net/rhaa/index.php?2013/03/15/17/15/39-arretez-de-pleurer-google-reader-hebergez-un-lecteur-rss-chez-vous">petit tour
  102. d&#8217;horizon des solutions de lecteurs <span class="caps">RSS</span> à
  103. héberger</a>.
  104. Je vais faire court, au risque de m&#8217;attirer les critiques&nbsp;:</p>
  105. <dl>
  106. <dt>Leed</dt>
  107. <dd>On attend le support du multi-utilisateur depuis un moment, il
  108. utilise <code>mysql_</code> qui est déprécié, base MySQL
  109. obligatoire, quand même assez lourd, une licence non libre (<span class="caps">CC</span> <span class="caps">BY</span> <span class="caps">SA</span>
  110. <span class="caps">NC</span>), des développeurs principaux indisponibles (le
  111. <a href="http://leed.idleman.fr/">wiki</a> est globalement <span class="caps">HS</span> pour l&#8217;instant),
  112. un thème de base très moche, pas si simple à installer pour Mme
  113. Michu, des thèmes qui sont quand même limités, et <a href="https://github.com/ldleman/Leed/issues/391">bloqués par le
  114. dépôt principal</a>…</dd>
  115. <dt>KrISS&nbsp;Feed</dt>
  116. <dd>C&#8217;est moche, pas fonctionnel. Je ne me suis pas attardé sur le
  117. reste, qui semble assez&nbsp;standard.</dd>
  118. <dt>FreshRSS</dt>
  119. <dd>Il peut gérer beaucoup d&#8217;articles (100k annoncés sur le
  120. <a href="http://freshrss.org/">site</a>). C&#8217;est pas très bô (beau / ergonomique
  121. / efficace) non plus, trop compact (notamment sur smartphone, quand
  122. on a des gros doigts&nbsp;:), et les infos importantes ne sont pas mises
  123. en valeur (à mon avis, les flux sont les éléments principaux, à
  124. mettre en valeur&nbsp;; sur <span class="caps">FRSS</span>, mon œil est beaucoup plus attiré par
  125. les dossiers et les boutons). C&#8217;est aussi compliqué à installer
  126. (base MySQL, même si c&#8217;est pas si compliqué, Cron manuel,
  127. instructions dans le <span class="caps">README</span> que ne lit pas Mme Michu), et cela
  128. risque de bloquer Mme Michu… Ses avantages par contre&nbsp;: il supporte
  129. très bien la charge, et l&#8217;intégration de Mozilla Persona est
  130. originale. Il a aussi de nombreuses possibilités, pour peu qu&#8217;on
  131. fouille un peu les menus de&nbsp;configuration.</dd>
  132. <dt>Aeres</dt>
  133. <dd>Site <span class="caps">HS</span>, mais ça a l&#8217;air très moche&nbsp;aussi.</dd>
  134. <dt>Miniflux</dt>
  135. <dd>Seul concurrent sérieux, à la vue du site. De très bonnes idées,
  136. comme le <em>full content</em> et la suppression des trackers à la volée,
  137. mais quand on ouvre la page de démo, c&#8217;est moche… et
  138. <strong>inutilisable</strong> ce qui est vraiment dommage pour un script qui est
  139. hébergé contre paiement. C&#8217;est minimaliste, trop minimaliste. Les
  140. liens pour marquer comme lus, non lus, supprimer etc sont
  141. invisibles, le texte de l&#8217;article non sélectionné est illisible,
  142. surtout sur un mobile en plein soleil, il n&#8217;y a aucun support de
  143. plugins, les raccourcis claviers sont complètement dissociés du
  144. contrôle à la souris et il me semble assez lourd quand on charge de
  145. nombreux&nbsp;articles.</dd>
  146. <dt>selfoss</dt>
  147. <dd>Ça commence bien, le site est beau et les <em>screenshots</em> donnent
  148. envie, mais qu&#8217;en est-il vraiment&nbsp;? Déjà, c&#8217;est <strong>compliqué</strong>&nbsp;:
  149. l&#8217;installation est compliquée, la configuration se fait dans un
  150. fichier <code>config.ini</code>, il n&#8217;y a pas de démo disponible,
  151. et quand on finit par l&#8217;installer pour le voir en action, on se rend
  152. compte que ce n&#8217;est quand même pas très&nbsp;utilisable.</dd>
  153. <dt><span class="caps">RSS</span>&nbsp;Lounge</dt>
  154. <dd>Connu pour sa lourdeur, il fait tout (ou presque, il ne fait pas
  155. encore le café), on&nbsp;passe.</dd>
  156. <dt>cartulary</dt>
  157. <dd>C&#8217;est compliqué, le <span class="caps">README</span> est paumatoire, alors qu&#8217;il n&#8217;y a
  158. vraiment aucune raison d&#8217;expliquer de façon si compliquée une
  159. installation somme toute assez&nbsp;basique.</dd>
  160. <dt><span class="caps">RSS</span>&nbsp;Miner</dt>
  161. <dd><a href="http://www.rssminer.net/">Le site</a> ne s&#8217;affiche pas correctement
  162. chez moi, la barre de gauche cachant la moitié de la page et ne se
  163. fermant pas, je m&#8217;attends au pire et je n&#8217;ai pas regardé plus en&nbsp;détails.</dd>
  164. <dt>News&nbsp;Blur</dt>
  165. <dd>Il y a des idées, notamment le côté social. Mais c&#8217;est compliqué, et
  166. hors de portée de beaucoup de monde, car ça tourne sous Django, avec
  167. du MongoDB et du PostgreSQL. Je ne suis pas sûr que le côté social
  168. soit compatible entre plusieurs instances et utilise un réseau
  169. décentralisé pré-existant, qui permettrait de le plugger facilement
  170. avec Diaspora ou n&#8217;importe quel autre logiciel du genre, et évitant
  171. de multiplier les réseaux et les&nbsp;protocoles.</dd>
  172. <dt>Feed <span class="caps">HQ</span></dt>
  173. <dd>Inscription obligatoire pour tester, c&#8217;est aussi du python + redis +
  174. postgresql + elasticsearch, donc on oublie pour Mme&nbsp;Michu.</dd>
  175. </dl>
  176. <h3>Que conclure de ce panorama&nbsp;?</h3>
  177. <p>Quoi que je fasse, je reviens vers Leed. De nombreuses fonctionnalités
  178. sont annoncées depuis un moment, et j&#8217;attends qu&#8217;elles voient le jour,
  179. mais il reste le plus fonctionnel et celui qui colle le mieux avec mon
  180. lecteur <span class="caps">RSS</span> idéal, tout en restant loin de la perfection. Le reste est
  181. moche, complexe, lent, et même les solutions payantes (mais opensources)
  182. ne s&#8217;en sortent guère mieux. Je n&#8217;utilisais pas Google Reader, mais s&#8217;il
  183. était dans la tradition des outils Google (simple, fonctionnel et
  184. rapide), je n&#8217;ai pas (encore&nbsp;?) trouvé de réelle&nbsp;alternative.</p>
  185. <p>Concernant Leed, la première étape est bien sûr de changer le thème par
  186. défaut (Marigolds) pour un meilleur thème. Le plus complet et maintenu
  187. actuellement est <a href="https://github.com/tmos/greeder">Greeder</a> de
  188. <a href="http://tomcanac.com/">tmos</a> (bien que <a href="http://rss.remitaines.fr/">Hot
  189. Beer</a> se défende, même si je n&#8217;adhère
  190. absolument pas au format <em>webzine</em>). tmos travaille sur un pack Leed +
  191. greeder et sur l&#8217;intégration de Leed dans
  192. <a href="https://yunohost.org/">Yunohost</a>, qui devrait lui redonner un peu de&nbsp;fraîcheur.</p>
  193. <h2>Mais du coup, c&#8217;est quoi mon lecteur <span class="caps">RSS</span> idéal&nbsp;?</h2>
  194. <h3>Rapidité, simplicité,&nbsp;fonctionnalité</h3>
  195. <p>Je met à jour mon lecteur <span class="caps">RSS</span> toutes les heures, et j&#8217;y passe donc
  196. quasiment une fois par heure. Je ne veux pas passer dix minutes à chaque
  197. fois pour réussir à cliquer sur le bon bouton, ou pour attendre que la
  198. page soit&nbsp;chargée.</p>
  199. <p>Il faut donc qu&#8217;il soit beau, intuitif (pour ça, Leed + greeder remplit
  200. bien ce rôle), rapide et fonctionnel. Le but est aussi de lire des
  201. articles, pas de voir défiler des titres, donc il faut que les articles
  202. soient affichés en entier (mais personnalisables <em>via</em> une option pour
  203. satisfaire tout le monde), sans avoir besoin de cliquer trois fois sur
  204. chaque article pour le&nbsp;lire.</p>
  205. <p>Je le regarde de partout, et beaucoup sur mon portable, dans les
  206. transports. Or, bien souvent, il n&#8217;y a pas de réseau dans les
  207. transports, et je ne veux pas d&#8217;une <a href="http://standblog.org/blog/post/2014/06/29/Web-Entrepreneur-Conference-videos-disponibles">énième app quand du <span class="caps">HTML5</span> peut le
  208. faire</a>.
  209. Du coup, un thème responsive, des actions tactiles (comme Greeder, en
  210. plus étendu) et une utilisation du <em>local storage</em> et le tour est joué&nbsp;:)</p>
  211. <p>Toutes ces fonctionnalités (et celles qui vont suivre) peuvent paraître
  212. en contradiction avec «&nbsp;être léger, rapide et fonctionnel&nbsp;», mais si le
  213. script est suffisamment compartimenté, on peut ne charger que ce qui
  214. sera utile à l&#8217;affichage et conserver un grand nombre de fonctionnalités
  215. avancées, sans alourdir nécessairement le script (sauf dans le cas où
  216. tout serait activé en même&nbsp;temps).</p>
  217. <h3>Extensibilité et&nbsp;customisation</h3>
  218. <p>On ne peut pas faire un logiciel parfait, qui satisfasse tout le monde.
  219. Plutôt que d&#8217;opter pour le minimalisme et se priver ainsi de fonctions
  220. avancées, un système de plugins bien pensé me paraît mieux. Celui de
  221. Leed est bien pour ça, même s&#8217;il manque un peu de documentation.
  222. Idéalement, il faudrait même que les plugins et thèmes existants pour un
  223. des lecteurs <span class="caps">RSS</span> les plus répandu actuellement soient compatibles (mais
  224. là, je rêve je pense&nbsp;:).</p>
  225. <p>Quelques idées de plugins cools en vrac&nbsp;:</p>
  226. <ul>
  227. <li>Recherche&nbsp;: très souvent je lis des articles, puis quelques jours
  228. plus tard je réalise que j&#8217;aurais du les garder de côté car j&#8217;en ai
  229. besoin. Sauf qu&#8217;à ce moment, je ne sais plus sur quel flux je l&#8217;ai
  230. lu, et c&#8217;est une galère de le retrouver. Un plugin de recherche sur
  231. l&#8217;agrégateur permet de résoudre ce&nbsp;problème.</li>
  232. <li>Une implémentation de
  233. <a href="https://github.com/sebsauvage/rss-bridge">rss-bridge</a> pour le côté&nbsp;user-friendly.</li>
  234. <li>Des plugins spécifiques par flux, pour afficher les conversations
  235. entre shaarli en tant que conversations par&nbsp;exemple.</li>
  236. <li>Annotation de texte en direct pour noter rapidement des idées, des
  237. corrections de typo&nbsp;etc.</li>
  238. </ul>
  239. <p>Pour le côté user friendly et l&#8217;adoption par Mme Michu, il faudrait
  240. aussi une liste de plugins «&nbsp;officiels&nbsp;» (c&#8217;est-à-dire respectant les
  241. guidelines et donc compatibles) simple, à la wordpress. Il suffirait
  242. alors d&#8217;envoyer l&#8217;archive dans l&#8217;interface admin pour l&#8217;installer&nbsp;automatiquement.</p>
  243. <p>Idéalement, il faudrait des coding guidelines strictes, qui manquent sur
  244. les projets actuels. Notamment sur la façon d&#8217;écrire un thème ou sur les
  245. balises à utiliser dans un thème, afin de garantir la cohérence de
  246. l&#8217;interface et la rapidité du script. Leed par exemple, a un dépôt
  247. <a href="https://github.com/ldleman/Leed-market">market</a> très hétérogène, et des
  248. thèmes qui n&#8217;ont pas de base commune rendant très difficile
  249. l&#8217;implémentation de nouveau code sur plusieurs thèmes. Pire, certains
  250. plugins doivent être adaptés pour chaque thème, ce qui est une perte de
  251. temps&nbsp;considérable.</p>
  252. <h3>Une gestion fine des&nbsp;flux</h3>
  253. <p>Une autre fonctionnalité qui me paraît importante est de pouvoir gérer
  254. finement les flux, c&#8217;est-à-dire pouvoir prioriser, classer, trier et
  255. filtrer des flux très&nbsp;facilement.</p>
  256. <p>Un premier point est la gestion des doublons. Très souvent, il arrive
  257. d&#8217;avoir des articles similaires, sur le même sujet, voire même des
  258. articles tout simplement identiques, si certains flux se recoupent. Le
  259. premier cas est difficile à trier et à filtrer (même si idéalement ces
  260. articles devraient pouvoir être regroupés ensemble), mais le deuxième
  261. est très simple à filtrer. Les doublons devraient donc être masqués et
  262. gérés comme un seul et même&nbsp;article.</p>
  263. <p>Un autre point important est la présence du multi-utilisateur. Cela
  264. permet ainsi de ne charger qu&#8217;une seule fois les liens communs à
  265. plusieurs comptes, et d&#8217;accélerer le rafraîchissement des liens ainsi
  266. que d&#8217;alléger la charge des serveurs. Je vois deux cas d&#8217;utilisation
  267. importants&nbsp;: pouvoir avoir une seule instance pour tout une famille, et
  268. pouvoir avoir différents comptes par activité (un compte pro et un
  269. compte perso par&nbsp;exemple).</p>
  270. <p>D&#8217;autres fonctionnalités sympathiques sont proposées par certains
  271. lecteurs <span class="caps">RSS</span>, notamment la gestion de la priorité des flux, pour
  272. prioriser certains&nbsp;flux.</p>
  273. <p>Je pense aussi qu&#8217;il y a moyen de faire des trucs très sympas avec les
  274. dossiers, qui sont bien trop rigides comme fonctionnement (et que je
  275. n&#8217;utilise pas personnellement). Sûrement un système de tags, ou un
  276. système flexible par mot-clé. Mais je n&#8217;ai pas encore d&#8217;idées précises à
  277. apporter pour cette réflexion. N&#8217;hésitez pas à partager les votres&nbsp;:)</p>
  278. <h3>Transparence et protection de la vie&nbsp;privée</h3>
  279. <p>Un des principaux avantages de s&#8217;auto-héberger est d&#8217;avoir les
  280. contraintes de transparence, de sécurité et de protection de la vie
  281. privée qu&#8217;on se fixe, au lieu d&#8217;être dépendant d&#8217;une solution tierce sur
  282. ces&nbsp;points.</p>
  283. <p>Un lecteur <span class="caps">RSS</span> idéal, et toujours dans l&#8217;optique de l&#8217;utilisation par le
  284. plus grand nombre, devrait&nbsp;:</p>
  285. <dl>
  286. <dt>afficher de manière claire les logs&nbsp;disponibles</dt>
  287. <dd>on ne devrait jamais devoir aller chercher une information dans un
  288. obscur fichier de log écrit dans le répertoire du script, ou pire,
  289. dans les logs Apache. Au contraire, ces informations (historique de
  290. connexions, historiques de mise à jour, …) devraient être
  291. disponibles dans l&#8217;interface directement, de façon claire et
  292. compréhensible en un clin&nbsp;d&#8217;œil.</dd>
  293. <dt>des statistiques&nbsp;claires</dt>
  294. <dd>de même, une fonctionnalité absente de nombreux lecteurs <span class="caps">RSS</span> et qui
  295. me semble pourtant plutôt basique est la possibilité de voir en un
  296. clin d&#8217;œil quels sont les flux fréquemment mis à jour, quels sont
  297. les flux les plus actifs, les moins actifs, etc., ceci afin de
  298. pouvoir très facilement trier ses flux et supprimer les flux morts.
  299. Il m&#8217;est arrivé plusieurs fois d&#8217;avoir un flux qui a changé
  300. d&#8217;adresse, ou qui était momentanément indisponible, et de mettre
  301. plusieurs jours à m&#8217;en rendre compte, faute d&#8217;affichage clair comme
  302. &#8220;attention, le flux <span class="caps">XXX</span> n&#8217;a pas été mis à jour depuis N jours, alors
  303. qu&#8217;il avait une fréquence habituelle de M articles /&nbsp;jour&#8221;</dd>
  304. <dt>régler finement les&nbsp;permissions</dt>
  305. <dd>S&#8217;auto-héberger, c&#8217;est aussi pouvoir régler finement les fonctions
  306. avancées de ses logiciels. J&#8217;utilise intensivement la vue anonyme de
  307. Leed, pour ne pas avoir à me connecter à chaque visite, et car je
  308. trouve ça pratique de pouvoir voir les flux <span class="caps">RSS</span> que les autres
  309. suivent, on découvre bien souvent de nouveaux flux top comme ça.
  310. Mais sur la plupart des lecteurs actuels, soit tout est public, soit
  311. tout est privé. Or je ne veux pas forcément que <strong>tous</strong> mes flux
  312. soit publics. En particulier, certains flux liés à des services que
  313. j&#8217;utilise (mon Owncloud, par exemple) ne devraient pas être&nbsp;publics.</dd>
  314. <dt>être compatible avec les autres outils libres à&nbsp;disposition</dt>
  315. <dd>Enfin, même si je souhaite beaucoup de fonctions dans mon lecteur
  316. <span class="caps">RSS</span>, je ne veux pas qu&#8217;il devient un monstre polycéphal qui fait
  317. tout. Le libre a cela de merveilleux qu&#8217;il existe une infinité de
  318. petits outils qui font une seule petite tâche, mais la font très
  319. bien. Pourquoi implémenter aussi une gestion des favoris, quand
  320. Owncloud le propose, quand shaarli marche du tonerre et est de
  321. surcroît très simple à installer, etc. Il faut donc au contraire
  322. prévoir d&#8217;être compatible avec ces autres outils, pour que le libre
  323. soit cohérent. En particulier, owncloud propose un flux <span class="caps">RSS</span>
  324. accessible après authentification (<span class="caps">POST</span>) des &#8220;activités&#8221; sur le
  325. compte. Pratique pour suivre des dossiers partagés. Mais très peu de
  326. (si ce n&#8217;est aucun) lecteur <span class="caps">RSS</span> disponible ne gère cette
  327. authentification&nbsp;=(.</dd>
  328. <dt>promouvoir la vie privée de&nbsp;l&#8217;utilisateur</dt>
  329. <dd>En utilisant son propre lecteur <span class="caps">RSS</span> auto-hébergé, on a un contrôle
  330. total sur nos flux, et on ne divulgue pas d&#8217;informations non
  331. contrôlées à un tiers (typiquement l&#8217;hébergeur du lecteur <span class="caps">RSS</span>, qui
  332. pourra alors nous cibler plus finement). J&#8217;aimerais pouvoir
  333. retrouver ça dans mon lecteur avec un filtrage des liens feedburner
  334. par défaut, pour supprimer ces redirections et les remplacer par des
  335. liens directs, ainsi qu&#8217;un filtrage des publicités dans les flux, un
  336. peu à la manière des
  337. <a href="https://github.com/ldleman/Leed-market">plugins</a> urlclean et
  338. adblock pour Leed. Il pourrait aussi cacher le referer lors de
  339. l&#8217;ouverture d&#8217;un lien externe, etc. Il y a énormément de
  340. possibilités de ce&nbsp;côté.</dd>
  341. </dl>
  342. <h3>Toujours garder l&#8217;ergonomie en&nbsp;tête</h3>
  343. <p>L&#8217;ergonomie est sûrement un des points faibles des lecteurs <span class="caps">RSS</span>
  344. disponibles actuellement (et du logiciel libre&nbsp;?). Elle est bien souvent
  345. négligée, et cela prive bon nombre d&#8217;utilisateurs d&#8217;utiliser les scripts
  346. en&nbsp;question.</p>
  347. <p>Pourtant, il y a moyen de faire beaucoup de choses, notamment en usant
  348. (abusant&nbsp;?) de JavaScript et des fonctionnalités récentes (transitions
  349. <span class="caps">CSS</span>, <span class="caps">HTML5</span> etc). Du drag&amp;drop s&#8217;implémente facilement, et facilite
  350. grandement l&#8217;utilisation pour beaucoup d&#8217;utilisateurs. Décrémenter un
  351. compteur d&#8217;éléments non lus en JavaScript chaque fois qu&#8217;on marque un
  352. élément comme lu prend 3 lignes de JavaScript et pourtant cela n&#8217;a été
  353. implémenté que récemment dans
  354. <a href="https://github.com/tmos/greeder/commit/446a521d240db62bc8350f54b31148429afeddb7">Greeder</a>
  355. et dans le thème par défaut de&nbsp;Leed.</p>
  356. <p>De plus, j&#8217;ai besoin d&#8217;une application web pour ne pas dépendre de
  357. l&#8217;ordinateur (ou du téléphone) que j&#8217;utilise. Que je sois sur mon
  358. téléphone, mon ordinateur ou n&#8217;importe quel autre périphérique, je
  359. retrouve mes news dans le même état, sans synchronisation compliquée, et
  360. sans développer un logiciel différent par périphérique. Le web est
  361. vraiment magique pour ça. Mais ce n&#8217;est pas pour autant que je ne veux
  362. pas que cette <em>webapp</em> se rapproche le plus possible d&#8217;une application
  363. native (qui sont bien souvent des <em>wrappers</em> autour d&#8217;une interface web,
  364. sur mobile, de toutes façons). Ainsi, sur mon portable, je veux
  365. retrouver des actions tactiles, un stockage en <em>local storage</em> car je
  366. risque d&#8217;être déconnecté sans raison, et une interface utilisable
  367. pleinement sans jouer avec le zoom. Et sur mon ordinateur, je veux
  368. pouvoir bénéficier d&#8217;une navigation au clavier, avec des raccourcis
  369. claviers, et de fonctionnalités avancées telles que le rafraîchissment
  370. régulier ou <a href="https://github.com/tmos/greeder/issues/71">la
  371. notification</a>, afin de se
  372. rapprocher le plus possible d&#8217;une application (et peut être un jour
  373. tourner dans sa propre instance du navigateur, pour ressembler vraiment
  374. à une application&nbsp;?).</p>
  375. <p>Côté interface, celle-ci doit faciliter la lecture en mettant l&#8217;accent
  376. sur le contenu et les actions importantes. Il y a aussi beaucoup de
  377. boutons qui ont une fonction peu claire dans les scripts que j&#8217;ai pu
  378. voir&nbsp;: double négation dans les questions qui nous fait répondre «&nbsp;oui&nbsp;»
  379. quand on voulait dire «&nbsp;non&nbsp;», pas de rappel du nom du dossier quand on
  380. veut marquer tout un dossier comme lu (ce qui nous fait nous demander si
  381. on a bien cliqué sur le bon bouton)… D&#8217;autre part, quand je qualifiais
  382. les interfaces de «&nbsp;moches&nbsp;» au début de cet article, c&#8217;était bien
  383. souvent que l&#8217;interface était peu claire / paumatoire /&nbsp;clicodrôme.</p>
  384. <p>La mode est au <em>scroll</em> infini. C&#8217;est bien pratique quand on a une
  385. connexion permanente, mais dès que la connexion coupe, qu&#8217;on recharge la
  386. page, et qu&#8217;on se retrouve tout en haut, c&#8217;est nettement moins drôle. Du
  387. coup, vive la pagination, en gardant une option pour le <em>scroll</em> infini,
  388. pour ceux qui l&#8217;aiment particulièrement. Par contre, si le <em>local
  389. storage</em> est très largement utilisé, le <em>scroll</em> infini peut
  390. s&#8217;envisager, car la perte de connexion ne bloquera pas la&nbsp;page.</p>
  391. <p>Enfin, un dernier point essentiel à mon avis est la possibilité de se
  392. connecter automatiquement et d&#8217;avoir un <em>bookmarklet</em> efficace pour
  393. ajouter des flux (idéalement, une intégration directe avec le module
  394. d&#8217;abonnement de Firefox&nbsp;:). Leed a un bon <em>bookmarklet</em> mais la
  395. connexion automatique n&#8217;est arrivée que récemment. Et attention sur ce
  396. point, <a href="https://github.com/sebsauvage/Shaarli">Shaarli</a> a une connexion
  397. automatique erratique, qui a tendance à ne pas passer chez certains&nbsp;hébergeurs.</p>
  398. <h3><del>Paraître</del> Être&nbsp;sérieux</h3>
  399. <p>Trop de scripts de ce genre ont aussi des traductions approximatives,
  400. <em>monkey patchée</em> ou bourrées de fautes. L&#8217;inernationalisation est
  401. importante de nos jours et ne doit pas être négligée, surtout qu&#8217;elle
  402. est désormais facilitée par les outils disponibles et qu&#8217;elle n&#8217;est pas
  403. si problématique si pensée depuis le début. Faire un test sur les
  404. nombres à afficher pour afficher l&#8217;accord si besoin n&#8217;est pas très long,
  405. et il est possible de faire une fonction à appeler pour le faire à
  406. chaque fois. Ce n&#8217;est pas grand chose, mais c&#8217;est plus propre, plus beau
  407. et plus tentant. Une bonne traduction, une bonne licence, un code en
  408. anglais et des <em>coding guidelines</em> motiveront plus les gens pour écrire
  409. du code et faire des&nbsp;contributions.</p>
  410. <p>Il faut aussi avoir une sortie régulière de versions, quitte à sortir
  411. des versions rapprochées. Si toutes les nouvelles fonctions sont
  412. regroupées dans une branche <code>dev</code> et regroupées dans une
  413. version stable une fois par an, Mme Michu ne verra qu&#8217;une version par
  414. an, et se dira donc que le développement est lent, même si chaque
  415. version apporte énormément de nouveautés. Au contraire, un dépôt avec
  416. des commits réguliers est plus attirant car on se dit que le logiciel
  417. vit, qu&#8217;il est suivi et qu&#8217;on n&#8217;aura donc pas à attendre longtemps si on
  418. rencontre un problème avec. Personnellement, si je rencontre un problème
  419. bloquant avec un logiciel et que celui-ci n&#8217;est pas résolu rapidement
  420. (en quelques semaines tout au plus), que je le veuile ou non, j&#8217;oublie
  421. l&#8217;existence de ce logiciel, je trouve des alternatives, et je retombe
  422. dessus par hasard quelques mois plus&nbsp;tard.</p>
  423. <p>De même, on ne peut pas tout développer, et on ne peut pas tout
  424. réinventer. Du coup, il devient important de virer les fonctionnalités
  425. inutiles, ou qui font doublon avec d&#8217;autres programmes, pour ne pas
  426. réinventer la roue et se consacrer sur les points essentiels pour le&nbsp;script.</p>
  427. <h3>Et tout cela… pour&nbsp;tous</h3>
  428. <p>Comme j&#8217;ai déjà insisté pas mal dessus, je reprendrais juste brièvement
  429. quelques points dans cette partie. Mais pour rester dans l&#8217;érgonomique
  430. et le beau, un tel script devrait être facile à installer, à configurer
  431. et à utiliser, par&nbsp;tous.</p>
  432. <p>Ceci passe par une interface user friendly, utilisant pleinement les
  433. fonctionnalités offertes par les navigateurs aujourd&#8217;hui (drag&amp;drop,
  434. <span class="caps">AJAX</span>, …). Ceci passe aussi par l&#8217;internationalisation, la présence d&#8217;une
  435. vraie liste d&#8217;extensions, facilement utilisable, une doc claire et à
  436. jour et un fonctionnement identique (dans la mesure du possible) sur la
  437. plupart des hébergements&nbsp;disponibles.</p>
  438. <p>Du côté de la licence, un tel lecteur <span class="caps">RSS</span> devrait être sous une licence
  439. libre (dans le sens de logiciel libre), ce qui n&#8217;est malheureusement pas
  440. le cas de Leed aujourd&#8217;hui (sous licence <span class="caps">CC</span>-<span class="caps">BY</span>-<span class="caps">NC</span>-<span class="caps">SA</span>), qui a d&#8217;ailleurs
  441. une licence ambiguë, déconseilleé pour les codes sources (voir
  442. <a href="http://freear.org.uk/content/creative-commons-licenses-software-just-say-no">ici</a>
  443. ou
  444. <a href="http://wiki.creativecommons.org/Frequently_Asked_Questions#Can_I_use_a_Creative_Commons_license_for_software.3F">ici</a>)
  445. et complexe comme le montre <a href="http://www.framablog.org/index.php/post/2012/10/15/non-commercial-creative-commons">cet article chez
  446. Framasoft</a>,
  447. un comble pour une licence qui se veut simple et intuitive.&nbsp;:)</p>
  448. <p>Enfin, un des principaux points est sûrement de pouvoir mettre à jour
  449. les flux facilement, sans y penser et sans intervention. Actuellement,
  450. la plupart des lecteurs nécessitent une intervention de l&#8217;utilisateur
  451. pour ajouter une <em>crontask</em>. C&#8217;est compliqué, source de problèmes,
  452. d&#8217;erreurs en recopiant etc, et ça complique l&#8217;installation pour pas mal
  453. de monde. Il y a sûrement moyen de rendre cela plus facile aussi, en
  454. tout cas ça serait top si c&#8217;était le cas.
  455. <a href="http://owncloud.org/">Owncloud</a> par exemple propose de lancer les
  456. tâches par <span class="caps">AJAX</span>, webcron ou cron, sans configuration de la part de&nbsp;l&#8217;utilisateur.</p>
  457. <h2>Conclusion</h2>
  458. <p>Aucun lecteur <span class="caps">RSS</span> ne me satisfait pleinement, mais Leed me paraît le
  459. moins imparfait à l&#8217;heure actuelle. En prenant des briques à gauche, à
  460. droite, on réunit la plupart des fonctions qui me paraissent
  461. importantes, mais je pense qu&#8217;il y a encore moyen de faire beaucoup pour
  462. s&#8217;affranchir des modèles classiques et établis de lecteurs <span class="caps">RSS</span> et
  463. proposer quelque chose d&#8217;innovant, misant sur l&#8217;ergonomie et s&#8217;adressant
  464. au plus grand&nbsp;nombre.</p>
  465. <p>Je vais essayer de mettre ça en pratique, en gardant en tête les points
  466. que je juge le plus important&nbsp;: facilité d&#8217;utilisation, ergonomie, beau
  467. et performant. Je ferai sûrement quelques articles sur des points
  468. spécifiques que je croiserai. Si vous me lisez et que vous avez un
  469. hébergement mutualisé, n&#8217;hésitez pas à me donner des infos sur votre
  470. hébergement <span class="caps">PHP</span> (version de <span class="caps">PHP</span>, modules disponibles qui sont trouvables
  471. dans le phpinfo notamment) car je ne sais pas exactement quelles sont
  472. les installations typiques de <span class="caps">PHP</span> sur&nbsp;mutualisé.</p>
  473. <p>Enfin, beaucoup de fonctionnalités seraient implémentées très facilement
  474. en utilisant les technos à la mode, nodejs ou les solutions à base de
  475. python par exemple. Mais cela oblige à se priver du côté «&nbsp;facilement
  476. installable par tous&nbsp;» car ces solutions ne sont pas disponibles sur la
  477. plupart des hébergeurs mutualisés. Ça semble aussi être un des problèmes
  478. de <a href="https://diasporafoundation.org/">Diaspora*</a> par exemple, car
  479. j&#8217;entends régulièrement qu&#8217;<a href="http://maniatux.fr/index.php?article473/diaspora-c-est-pas-pour-moi">installer son pod est
  480. compliqué</a>,
  481. notamment car Diaspora* utilise Ruby, C&#8217;est vrai, et si c&#8217;est pour
  482. utiliser un pod public, proposé par la communauté, beaucoup
  483. d&#8217;utilisateurs ne voient pas de réelles différences par rapport à&nbsp;Facebook,</p>
  484. </div>
  485. <div class="tag-cloud">
  486. <p>
  487. </p>
  488. </div>
  489. </article>
  490. <footer>
  491. <p>
  492. &copy; 2017 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>
  493. </p>
  494. <p>Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a></p><p>
  495. <a rel="license"
  496. href="http://creativecommons.org/licenses/by-nc-sa/4.0/"
  497. target="_blank">
  498. <img alt="Creative Commons License"
  499. title="Creative Commons License"
  500. style="border-width:0"
  501. src="https://phyks.me/theme/img/cc/by-nc-sa.png"
  502. width="80"
  503. height="15"/>
  504. </a>
  505. </p> </footer>
  506. </main>
  507. <script type="application/ld+json">
  508. {
  509. "@context" : "http://schema.org",
  510. "@type" : "Blog",
  511. "name": " Phyks' blog ",
  512. "url" : "https://phyks.me",
  513. "image": "/images/profile.png",
  514. "description": "I write about dev, FOSS, DIY and more, in French and English."
  515. }
  516. </script>
  517. </body>
  518. </html>