Presentation de Cyca

  1. (Bref) Historique du projet
  2. Introduction
    1. Technique
  3. Fonctionnalités
    1. Arborescence
    2. Documents
    3. Flux
    4. Éléments de flux
    5. Mises en surbrillance
    6. Autres fonctionnalités
  4. Fonctionnalités à venir
  5. De quoi Cyca a besoin ?
  6. Conclusion

⚠️ Cyca est en cours de réécriture, le dépôt git est toujours disponible mais pas le site officiel.

Je vous présente aujourd'hui mon principal projet: Cyca, un gestionnaire de favoris et de flux.

(Bref) Historique du projet

L'histoire de Cyca démarre il y bien longtemps. Au début, c'était une application de bureau écrite en C#, et disponible pour Windows uniquement. Par la suite, devenant de plus en plus à l'aise en PHP, j'en ai fait une application web. Mais que ce soit en C# ou en PHP, Cyca a toujours été mon projet "laboratoire": chaque fois que je voulais tester une technique, un framework, une bibliothèque, je le faisais sur Cyca. Aujourd'hui, évidemment, les process de développement ont bien changé (parfois en bien), et ce n'est plus un projet laboratoire victime du syndrome de Frankenstein mais bien une application fonctionnelle depuis septembre 2020 et l'apparition de son dépôt sur GitHub.

Introduction

Cyca est un gestionnaire de favoris et de flux:

  • Libre (publié sous licence GNU GPL)
  • basé sur le web (écrit en PHP)
  • multi-utilisateurs
  • desktop-centric (pensé pour le bureau avant le mobile)
  • non-intrusif (pas de notifications surgissantes ou visuellement agressives)
  • respectueux de la vie privée (via différents moyens, mais en particulier par l'absence de système de télémétrie)
  • aussi simple à utiliser que possible (peu de formulaires)
  • destiné à récolter autant d'informations que possible à propos de vos favoris et de vos flux

Technique

La stack de Cyca repose sur:

Puisque Cyca fait appel au framework Laravel, l'application supporte:

  • une base de données MySQL/MariaDB, PostgreSQL, SQLServer ou SQLite (non recommandé pour des raisons de performance dans le cas d'une utilisation intensive)
  • Redis pour le cache, les sessions, les files d'attente

D'autres outils peuvent également être utilisés, tels que BeanStalkd, memcached, Amazon SQS, etc. De plus, le système de stockage de Cyca permet l'usage de systèmes de fichiers tels que FTP, Amazon S3 en plus du stockage local. En effet, Cyca est amené à stocker un certain nombre d'informations additionnelles et offre donc le choix de leur emplacement.

Fonctionnalités

Arborescence

Cyca permet la gestion de favoris (ou documents) au sein d'une arboresence de dossiers (par opposition à un système de tags, qu'il sera toujours possible d'implémenter ultérieurement s'il y a une demande). Cette arborescence constitue le premier panneau de l'interface, occupant le côté gauche de l'écran.

En outre, chaque utilisateur peut créer ou rejoindre un ou plusieurs groupes. Un groupe permet de partager avec plusieurs utilisateurs la même arborescence de dossiers, de documents et de flux, avec des permissions attribuables par utilisateur et par dossier, par le créateur du groupe.

Chaque nouvel utilisateur se voit attribuer son propre groupe, par défaut inaccessible aux autres ("Seulement sur invitation").

Un groupe peut être directement rejoint par un utilisateur, ou seulement sur invitation. Une fonctionnalité prévue dans la roadmap impliquera un système de fédération, où il sera possible d'accéder à un groupe hébergé sur une autre instance de Cyca.

Il existe actuellement trois types de dossiers, chaque type ayant certaines caractéristiques:

  • Le dossier Éléments non-lus permet de lister tous les documents possédant des éléments de flux non-lus
  • Le dossier Racine, où seront stockés les autres dossiers et les documents
  • Les dossiers créés par l'utilisateur

Chaque groupe possède sa propre arborescence de dossiers, incluant un dossier Éléments non-lus et un dossier Racine qui lui sont spécifiques.

L'utilisateur a la possibilité de basculer d'un groupe à l'autre très facilement grâce aux liens situés au-dessus de la liste des dossiers.

Sur cette capture, vous pouvez voir le groupe en haut (avec le nombre total d'éléments non-lus dans ce groupe), puis, en dessous, l'arborescence appartenant à ce groupe.

Un formulaire simple permet de créer ou renommer chaque dossier (à l'exception des dossiers Éléments non-lus et Racine). Le drag'n'drop permet de déplacer dossiers et documents.

Chaque dossier peut être déployé ou réduit (expanded ou collapsed), comme dans toute arborescence digne de ce nom, avec toutefois une subtilité: il est possible de déployer ou réduire un dossier et ses sous-dossiers en maintenant un clic long sur l'icône en forme de triangle à gauche du dossier. Pratique pour cacher ou voir un sous-ensemble des dossiers en quelques instants.

Documents

Un dossier peut contenir un nombre illimité de documents. Cette liste occupe la partie médianne de l'écran. Elle peut afficher des listes différentes en fonction du dossier sélectionné: soit les documents effectivement liés au dossier en cours, mais aussi les documents contenant des éléments non-lus si le dossier éponyme est sélectionné.

Là encore, le formulaire pour ajouter un document est extrêmement simple: il suffit de renseigner l'URL du document (ou du flux) qui nous intéresse dans le panneau des détails (occupant la partie inférieure droite de l'écran).

Si vous renseignez l'URL vers un flux (RSS ou Atom), Cyca analysera ce flux à la recherche du document parent. Cyca ajoutera alors à vos favoris ce document à la place du flux RSS, qui, lui, sera associé au document.

Vous avez ensuite la possibilité de découvrir les informations collectées par Cyca à propos de l'URL qui vous lui avez soumise en sélectionnant le document, ce qui provoquera la modification du panneau de détails en bas à droite de l'écran:

Vous constaterez sur la capture ci-dessus la présence d'un flux RSS qu'il est possible d'ignorer. Cyca l'a automatiquement découvert, et me proposera donc l'actualité de ce site dès qu'elle sera disponible.

Vous remarquerez en outre la coloration de certains éléments des adresses affichées dans Cyca, dans le but d'améliorer leur lisibilité, et éviter certains problèmes de sécurité les conçernant, malheureusement pas en évitant ces problèmes (Cyca ne peut pas deviner si le site que vous avez ajouté à vos favoris soit bien celui qu'il prétend être, en tout cas pas à ce stade), mais en vous présentant l'URL que vous venez d'ajouter d'une façon plus claire, plus lisible, en vous permettant de différencier rapidement les caractères disposant d'une graphie similaire (ce qu'on appelle les homoglyphes).

Enfin, vous noterez en bas de cette capture un groupe "Réponse HTTP" dépliable qui contient toutes les informations récoltées lors de la requête HTTP au serveur.

Ces informations ont un but informatif. Ce n'est pas un outil de sécurité, qui ne cherche ni à récolter des données auxquelles il n'a pas accès, ni à faire usage de ces données à des fins malencontreuses. Les données récoltées par Cyca sont des données publiques, accessibles à tous, telles que la version du protocole, les en-têtes de la réponse, le type MIME, etc. Par ailleurs, aucune donnée personnelle n'est envoyée au serveur distant, pour qui c'est Cyca le client.

Pour les connaisseurs, c'est la librairie Guzzle qui est mise en oeuvre ici.

Flux

Dès qu'un document est créé dans Cyca, l'application va automatiquement découvrir les flux associés de deux façons différentes:

  • la méthode classique, consistant à analyser les balises <link> à la recherche de flux déclarés
  • la méthode brute, consistant à tester certaines URLs connues (par exemple, /feed, /rss, etc.)

Grâce à ce fonctionnement, et c'est le but de Cyca, même si vous ignorez que certains sites déclarent un flux, ou même si vous ignorez ce qu'est un flux, vous aurez accès à l'actualité de vos favoris, même si vous n'êtes pas encore consommateur de flux. Autrement dit: Cyca a été conçu pour vous engager sur la voie de la consommation des flux RSS et/ou Atom.

Éléments de flux

Les éléments de flux sont affichés dans le panneau situé en haut à droite, et se présente sous la forme d'une liste, mêlant éléments lus et éléments non-lus dans tous les dossiers, à l'exception du dossier Éléments non-lus qui ne listera que les éléments... non-lus.

Vous pouvez voir ici que Cyca liste les éléments lus en gris clair, tandis que les éléments non-lus sont affichés en blanc. On dispose par ailleurs du titre du flux dans lequel chaque élément a été publié, ainsi que la date de publication.

Enfin, on aperçoit une fonctionnalité intéressante de Cyca: la mise en surbrillance, qui vous permet de mettre en exergue certaines expressions qui vous intéressent en particulier (ici, "Apple").

Cyca respecte la décision des éditeurs de flux de ne pas inclure la totalité du texte dans leur flux. Certains, particulièrement les geeks, les revues scientifiques ou les systèmes d'alerte incluent le texte complet de leur publication, parfois même avec des pièces jointes (que Cyca ne supporte pas encore), mais d'autres se contentent d'un résumé, voire d'un simple lien.

Cyca n'a pas et n'aura jamais la volonté d'aller plus loin. Il existe des outils spécifiques à cet usage, mais ils ne respectent pas l'éthique que je veux pour Cyca.

Mises en surbrillance

Cyca vous permet de définir des mises en surbrillance, qui vous vous permettre d'isoler, dans la liste des éléments de flux, ceux qui vous intéressent particulièrement.

Il vous suffit pour cela de définir une expression et une couleur associée. Cette expression peut être un simple mot, ou une expression régulière.

Autres fonctionnalités

  • Cyca supporte un thème sombre et un thème clair, soit forcé soit adapté automatiquement en fonction du système d'exploitation
  • Cyca est actuellement capable de lire les méta-données d'une image et d'un fichier PDF

Fonctionnalités à venir

  • J'aimerais intégrer un système de fédération permettant, comme dit plus haut, de rejoindre un groupe hébergé sur une autre instance de Cyca
  • J'ai commencé à travailler sur une librairie pour le protocole gemini, qui permettra d'ajouter des liens sur ce réseau à Cyca...
  • ...puis, en créant une abstraction des protocoles, permettre à Cyca de gérer des favoris sur n'importe quel réseau (FTP, Gopher, etc.)
  • J'aimerais introduire un moteur de recherche local, permettant de retrouver facilement documents et éléments de flux (en cours lors de la publication de cette présentation)
  • J'aimerais ajouter la possibilité de trier les documents et les flux selon les préférences de l'utilisateur

De quoi Cyca a besoin ?

  • D'argent: j'arrive en fin de droits au chômage, ce qui signifie que je ne pourrais plus travailler sur Cyca à temps plein. Mon objectif était de monétiser Cyca par la mise en place d'un service hébergé, mais je n'ai plus le temps d'atteindre cet objectif. Les dons me permettraient de financer l'électricité, le matériel, et le travail que je fournis sur Cyca, en attendant d'atteindre l'indépendance financière.
  • De traducteurs: Cyca n'est pour l'instant disponible qu'en anglais et en français.
  • De "colporteurs": si vous avez lu mon premier post sur ce blog, vous savez déjà qu'il me manque un réseau social, de personnes en mesure de tester Cyca, en parler autour d'eux, et me remonter problèmes et suggestions.

Conclusion

J'ai développé Cyca parce que j'estime que c'est une application qui répond à deux besoins que j'ai en tant qu'Internaute: gérer des favoris (en grande quantité) et des flux (de même). Il me semblait logique de faire les deux au même endroi.

C'est, pour moi, pour mon usage quotidien, une application essentielle, qui répond à ces besoins de la meilleure manière possible, selon mes critères.

Mais je souhaite qu'elle puisse répondre aux vôtres aussi, afin qu'elle figure dans le rang des outils "essentiels", au même titre qu'un gestionnaire de mots de passe, ou d'un éditeur de texte.

Merci d'avoir lu cette présentation. J'espère qu'elle vous donnera envie de donner sa chance à Cyca, et d'en parler à vos contacts.