Depuis maintenant plusieurs mois, un de mes plus grands projets est l'unification de la notion de contenu et de fournisseur de contenu. Que l'on navigue sur internet pour lire les dernières actualités, que l'on cherche une application sur le Play Store ou encore que l'on regarde des photos dans nos bibliothèques, on interagit avec des contenus (les actualités, les applications ou les médias, …) disponibles à travers de différentes sources (sites, blogs, magasins en lignes, stockage local, bibliothèques, …) dont le rôle est de fournir du contenu aux utilisateurs.
De ce constat m'est venue l'idée de rechercher un moyen d'unifier les comportements de ces éléments : une façon unifiée de rechercher les contenus au travers des différentes sources, de trier, de recroiser les informations entre elles. On pourrait alors utiliser un logiciel client permettant l'agrégation des différents contenus, où l'on peut trouver les contenus de centaines de sources dans une seule interface, où l'on pourrait classer, regrouper, fusionner différentes informations.
Mais l'utilisation d'un seul logiciel pour tous les types de contenu ne serait pas forcément adaptée. En effet, il serait difficile d'unifier le comportement des articles de journaux, des applications et des vidéos par exemple. Par contre, il serait possible d'établir une base de données locale à un périphérique (que ce soit un ordinateur, un téléphone ou autres) dont le travail serait d'agréger le contenu, et de fournir des logiciels spécialisés aux utilisateurs, tels qu'un logiciel de gestion de vidéos (films, séries, …), un logiciel d'agrégation des actualités se basant sur une seule source locale : notre base de donnée de contenu.
Je vais ici développer la notion de contenu, de fournisseur, et des différentes applications en relation.
L'unification des différents types de contenus passe par une étape essentielle : l'identification des éléments communs à tous les contenus afin de modéliser un type complètement générique dont tous les contenus pourront hériter. Voici ces éléments :
Voici quelques exemples d'application de ce modèle :
Malgré cette unification, il reste intéressant de conserver un typage, des catégories pour distinguer les contenus. Cela permettrait aux futures applications de se baser sur un type unique de contenu, par exemple uniquement les contenus vidéo, et également de faire des recherches par type. Cela permet également de définir un ensemble d'éléments caractérisant chaque type de contenu.
Voici la liste temporaire des types de contenus que j'ai mis en évidence, leur hiérarchie et leurs caractéristiques, chaque sous-type héritant des caractéristiques du type supérieur :
Un fournisseur de contenu correspond à une source, l'emplacement où les contenus sont publiés. Afin de compléter cette unification des comportements, il faut également trouver les éléments communs aux fournisseurs et établir un comportement commun que tous les fournisseurs pourront suivre. Par exemple, pour une grande partie des fournisseurs sur internet, il est possible de fournir une URL pour retrouver le contenu initial. En reprenant les trois exemples de contenu ci-dessus (et vous pouvez essayer par vous-même !) :
De plus, il faut penser que l'ajout de fournisseurs sera de la responsabilité des utilisateurs, si chaque utilisateur peut ajouter un nouveau fournisseur et le publier, la liste se remplira surement très vite. Pour le moment, j'ai développé un fournisseur « générique » s'adaptant à la plupart des sites internet. En fournissant une expression régulière et l'adresse du site en question, il est capable de retrouver la liste des contenus du site.
A l'heure actuelle, j'ai implémenté les modèles des contenus et des fournisseurs de contenus, et je travaille sur la mise en cache et sur l'exploitation de ces données pour réaliser des applications diverses. J'ai par exemple pensé à une application permettant de gérer ses épisodes de séries télévisées, avec de multiples fournisseurs de contenu mis en relation :
Cela permettrait de faire correspondre facilement un épisode vidéo avec ses informations.
Afin de suivre l'évolution de l'implémentation de ces notions, je vous invite à suivre certain de mes projets, notamment les suivants :
Je vais évidemment continuer de travailler sur ces idées. Je mettrai sans doute à jour cet article au fur et à mesure de l'implémentation de ces notions et de l'évolution de mon travail.
N'oubliez pas que si vous souhaitez plus d'informations, ou si vous souhaitez contribuer à mes projets en proposant des idées, vous pouvez me contacter sur les réseaux sociaux.