De mon utilisation de CozyCloud


Contexte

J’amasse des données depuis 1996. Ce n’est pas que je n’avais de données avant mais plutôt que le système que j’utilisais  est devenu inutilisable et que les sauvegardes l’étaient aussi. Je ne dirai pas que je suis devenu un obsédé de la sauvegarde. J’ai un NAS à la maison pour les sauvegardes et des serveurs dédiés que je transforme en VPS. Avoir des doublons ne m’inquiète pas. En revanche, amasser c’est bien mais il faut pouvoir retrouver ce que l’on recherche.

J’ai une approche tout est document : une conversation par messagerie est autant un document que les vieux documents PDF ou LaTeX qui trainent. Pour les documents web j’ai utilisé Annotea un certain temps mais le projet a perdu d’intérêt avec son absence d’implémentation suivie. Pour les vidéos j’utilisais du smil. Pour les livres et les recettes je me suis tourné vers des français (TEA, Open Food System – plus d’actualité depuis juin 2015) qui avaient promis des formats dédiés au stockage et au partage. Les promesses n’ont pas été tenues.

Bref, c’est faisable pour un poste fixe mais pénible à configurer et à maintenir. Le partage se fait avec des moyens classiques comme Seafile mais rien d’intégré. La récolte des documents est manuelle. C’est aussi compliqué à consulter à distance. Ce n’est pas l’outil que l’on peut installer en douce à la fin d’une install party pour booster l’acceptation de Linux avec des fonctionnalités cools.

La recherche

J’ai une forte habitude des systèmes de gestion de contenu et des grands frères pour entreprises. J’aurai pu monter mon propre outil mais je cherchais une approche plus novatrice. J’ai testé des outils comme Marmotta qui sont axé sur l’enrichissement mais peu pratique pour la navigation et le partage ou Seafile trop axé sur le partage et pas sur l’enrichissement.

Je me suis tourné vers les boîtes à outils du cloud avec 0wncloud et quelques autres. Le LAMP à plutôt tendance à me faire fuir : ce que l’on gagne en légèreté sur le serveur se paie lourd en nécessité de réinventer sans cesse la roue ou de gérer des dépendances de 5 lignes (cela vaut aussi pour l’écosystème Node.js).

Puis une startup a proposé de tenir un stand et une conférence sur l’outil qu’elle développait aux JDLL 2012. J’ai rencontré les développeurs et le concept m’a séduit. Tout le contenu des applications est stocké dans une base orientée document qui est synchronisable facilement. Pour commencer, j’ai testé dans une virtualbox pour évaluer l’installation et les besoins du serveur. Je ne le recommande pas : ce n’est pas utilisable en production et les limites que j’ai rencontré étaient celle de ma VM.

Installation et import des données.

J’ai choisi le mode facile avec un VPS et une image préinstallée. Quelques clics et ça démarre avec l’offre la plus basse (2Go RAM et 10Go SSD). Il a ensuite fallu que je fasse les mise-à-jour système et serveur car l’image n’était pas de première jeunesse. Un petit tour sur IRC a suffit pour mes quelques interrogations. Tout fonctionnait.

Le premier import proposé est celui- des données Google. En dehors des contacts et d’un agenda je n’y stocke rien. Ce fut un peu lent mais sans problème. En revanche, un compte IMAP me servant d’archive a mis en évidence plusieurs points gênant pour le grand public :

  • L’import est lent. Vraiment. Et il n’y a pas de jauge permettant d’estimer l’avancement du processus.
  • 2Go de RAM ce n’était pas assez. En fait si, mais c’est la consommation moyenne de mon instance sans compter le système. Donc ça swap (cf point précédent).
  • C’est de l’IMAP, l’import a repris à chaque redémarrage en tâche de fond (cf points précédents)

Au bout de deux jours j’ai regardé les logs système avec un développeur pour convenir que mon instance VPS était trop juste (j’utilisais le swap et je remplissais 95M de l’espace disque). Il m’a fallu attendre la fin de l’import de ce compte pour faire un nettoyage de la base (je suis redescendu à 80% d’occupation disque) et un passage à l’option supérieure du VPS. Pour le coût, je suis vraiment au large maintenant pour le prix d’un petit serveur dédié.

J’ai ensuite configuré 2 Rapsberry Pi pour avoir des instances secondaires locales en cas de besoin et l’application fonctionne bien pour android 7.0 depuis sa version 2.2. Les versions précédentes fonctionnaient bien avec android 6. La version desktop semble fonctionner.

J’ai encore eu quelques soucis sans doute liés à l’image VPS d’origine qui sont rentrées dans l’ordre avec l’aide des développeurs.

Les avantages et inconvénients de CozyCloud

En dehors de l’aspect synchronisation fort sympathique, Cozy Cloud c’est surtout un environnement de développement d’applications. Le but de ces application n’est pas la manipulation des données mais le stockage et, bientôt, l’enrichissement.

Je n’ai plus besoin d’aller télécharger mes factures chez mes fournisseurs, une application s’en charge. Les données de mon smartphones sont sauvegardées. Pour ma veille journalière je peut conserver un lien ou l’article complet. Une petite appli IRC (il manque du XMPP ;). Pour les mises-à-jour je reçoit les notifications via l’application android puis il suffit d’un clic. Petite ombre : pour importer mes flux OPML de Newsblur vers ZeroFeeds il m’a fallu rajouter l’extension ‘.opml’ au fichier. En revanche, pour mes projets collaboratifs j’utilise Taiga et Kallithea. Ce sont des données hors de la sphère personnelle.

À ce stade c’est l’outil idéal qui fait ce dont on a besoin et dont on oublie la complexité. Mais… non, en fait on oublie pas la complexité. Une application demande une installation manuelle dans le système (l’image VPS mal installée) et lorsqu’une erreur survient c’est vraiment galère de trouver les logs et de comprendre le problème. Grâce à npm, les applications s’installent et se mettent à jour.  Ou pas. C’est un problème général avec cet outil et pas un problème de CozyCloud. Nous sommes du coup assez loin d’un outil à mettre entre les mains d’un individu lambda.

Le dernier inconvénient : point de partage ou d’outil connectable. Un plugin Seafile ou XMPP me conviendrait. Lorsque j’ai des données à partager je les sélectionne et je mets à disposition sur un dépôt séparé. Lorsque j’ai fini je détruit le dépôt. Ce n’est pas un outil de travail en groupe mais bien un partage de données personnelles.

Enfin, à la fois un avantage et un inconvénient : chaque instance est personnelle et il n’est pas possible actuellement d’installer deux instances dans le même système. J’hésite à passer à une installation en docker (engine+compose+swarm) pour le VPS en gardant un rapsberry pi par personne physique. C’est plus la fonction de partage qui manque à mon goût qu’un système de mutualisation des instances.

Ce que j’aimerai maintenant c’est un  ou plusieurs systèmes d’indexation (Qwant ?) et d’amélioration (Marmotta ?). Je suis conscient que les fonctionnalités vont varier selon la puissance de l’hébergement. S’il y a déjà des tags dans un article que je marque ou que je sauvegarde j’aimerai pouvoir les avoirs automatiquement et aussi pouvoir rajouter les miens. Chaque application peut implémenter cela de son côté; si c’est un fonction du framework cela deviendra le standard. Avec la conteneurisation, cela peut être un ou plusieurs conteneurs en boîte noire disposant juste d’une API de requêtage.

D’où vient la richesse ?


Richard Stallman vient de faire petite tournée française du 12 au 15 janvier pour animer diverses conférences (Richard Stallman en tournée en France). C’est une bonne occasion pour revenir sur le ou plutôt les modèles Open Source. Depuis plus d’une décennie, un clivage assez diffus se crée au sein des communautés : « Are we making Free Software or Open Source? ». Aujourd’hui Framablog a mis en ligne la traduction d’un article publié sur la blog de Google qui montre que même cette société parmi les plus influentes a besoin de communiquer sur ce sujet  :

L’ouverture selon Google : « The meaning of open » traduit en français (Google and The meaning of open)

Au-delà de cette réflexion vient celle de la richesse et de la manière de la générer à partir d’un travail intellectuel.

La richesse dans le monde

Le système monétaire et pécuniaire a été créé pour permettre l’échange de biens et la quantification de la richesse. Basé sur le principe souvent biaisé de l’offre et de la demande il nous permet de faire circuler ou d’amasser de la richesse. Mais celui-ci ne définit pas la richesse : il ne fait que la quantifier et la rendre tangible.

Un mineur qui extrait une matière première va produire une quantité moyenne de minerai qui va être vendue au poids. Il est limité par la quantité de minerai dans la mine et par son outillage. Un cultivateur va récolter et vendre ses produits au poids ou à l’unité. De la même manière il est limité par la taille de son exploitation et son outillage. Un ouvrier ou un artisan va façonner, modifier et vérifier un nombre de pièces déterminé par période de temps selon la complexité de la tâche (une boîte de conserve métallique met moins de temps à être créée qu’un Stradivarius). Il est limité par l’afflux de matières premières et par son outillage. La corne d’abondance ayant été tarie il y a bien longtemps, toutes ces professions sont avant tout limitées par le fait que la Terre est un volume fini. Nous ne connaissons pas les ressources exactes de notre planète mais nous sommes capables de mettre en équation la richesse qu’elle nous procure chaque année et qu’elle nous procurera en moyenne pour les 50 prochaines années. Cette richesse est tangible. Nous la voyons tous les jours bâtir notre confort.

À l’autre bout de la chaîne il y a des produits financiers qui sont le produit d’équations complexes prenant en compte la réussite de projets qui ne sont pas encore mis en œuvre et une croissance mondiale estimée basées sur plusieurs niveaux d’estimation qui reposent eux-mêmes sur des prévisions. Cette richesse est intangible et complètement spéculatoire. Tant que la boîte de Pandore n’a pas été ouverte (et que les estimations n’ont pas été vérifiées par une observation des résultats) ces produits peuvent rapporter une fortune ou au contraire représenter un dette colossale. Nous pourrions la qualifier de « richesse de Schrödinger ».

Au mileu de cela il y a tout un ensemble de métiers qui apportent des richesses relatives à des connaissances ou un savoir faire développé à partir de connaissances. Un artisan va aussi bien fournir un service quantifiable dans la création d’une pièce qu’une richesse non quantifiable en travaillant sur l’esthétique ou sur la qualité de la pièce. Les enseignants, les médecins (et tant d’autres), les corps juridiques et législatifs procurent de la richesse chacun à leur niveau même si leurs produits ne sont pas quantifiables : le savoir, la santé, le droit, la loi. Si nos parlementaires étaient payés à l’amendement voté, combien de procédures législatives seraient sans fin ? Malgré tout, cette richesse est quantifiable.

Tout service rendu directement ou indirectement à une personne,  à une entreprise ou à une société représente un investissement en apprentissage, en outillage et en temps qui est quantifiable. Tout cela restant dans le contexte de notre planète, comment obtenir la plus grande richesse à partir de ressources limitées ?

Le dilemme de l’appropriation et du partage

Dans la recherche scientifique on commence souvent par définir un environnement idéal (un gaz parfait, un matériau sans défaut, une énergie constante et inépuisable). Une fois qu’un modèle satisfaisant est obtenu, les contraintes de la réalité sont rajoutées pour le mettre à l’épreuve. Dans un écosystème idéal tout être vivant, et ses descendants, possède les ressources nécessaires à sa survie. À partir de cela, il est possible de créer un nombre infini de modèles idéaux  de « tous les êtres sont propriétaires de tout » à « chacun est propriétaire uniquement des ressources strictement nécessaires à sa survie immédiate » en passant par une infinité de variantes. Ces deux modèles extrêmes n’encouragent aucune compétition.   La vie a choisi un système moins tranché: chaque être peut s’approprier toutes les ressources qu’il veut mais celles-ci peuvent lui être disputées par les autres.

Un être seul ne peut posséder toutes  les ressources et la plupart des êtres ne possèdent pas les ressources suffisantes à leur survie. Pour survivre il leur faut s’associer avec d’autres êtres. Ils partageront les mêmes ressources pour en tirer le maximum possible dans le but de faire survivre l’association entière. Les liens tissés entre les êtres d’une association sont complexes et les associations interagissent aussi avec leur environnement. Les deux points communs de toutes les associations sont le partage de ressources et la lutte pour la survie. Dans une association, les deux principes sont l’autosuffisance et la communication. Le premier permet de définir un espace vital, des règles de production et d’échanges (volontaires ou non) de ressources – les fourmis fournissent aux pucerons une plante dont ils se nourrissent et en échange elles se nourrissent sur leur dos – et des règles de reproduction. Le deuxième permet de gérer les informations connues sur l’environnement. Elle permet aux associations de faire face aux pénuries, aux attaques, ou au contraire à la surabondance.

Les associations qui survivent le mieux sont celles dont les membres sont les plus adaptés à leurs tâches et qui communiquent le mieux entre eux. La communication contient la transmission du savoir, du savoir-faire et des signaux. Elle permet de gérer et d’obtenir plus de ressources. Sans être de la richesse, elle en représente un support comme peut-être la monnaie dans une autre dimension  : elle va permettre la transmission, l’échange et l’obtention de richesse sans jamais la matérialiser. Pour autant la communication n’est ni immédiate ni fidèle. En reprenant l’exemple des fourmis, elles ne donnent pas d’indication aux pucerons sur le nombre de plantes disponible ni sur les prédateurs éventuellement présents dans les environs. Pourtant elles vont partager des plantes avec eux pour qu’ils en tirent une meilleure substance qu’elles n’auraient su le faire. Leur association s’est approprié une ressource qu’ils ont partagée. La nature est remplie d’exemples de ce types d’association à des niveaux beaucoup plus complexes. Entre autres, une association peut être composée de plusieurs associations et un être peut faire partie de plusieurs associations distinctes.

L’écosystème des services

Chaque service correspond à un besoin qu’il peut éventuellement susciter – la peur génère des besoins qu’il est souvent difficile de justifier mais facile à combler. Lorsqu’une entité – un être ou une association – fournit un service à une ou plusieurs autres, elle attend un échange de richesse en contrepartie. Une nouvelle association naît de cet échange avec ses gains et ses dépendances. Le niveau de dépendance autour d’un besoin va dépendre du nombre de fournisseurs et de la transparence des interactions entre eux. Un parasite qui ne peut survivre que sur une seule espèce va s’éteindre avec elle. Si tous les troupeaux évitent une zone où sont présents leurs prédateurs ceux-ci vont devoir se rabattre sur des proies plus petites et moins nombreuses et vont surement voir leurs populations se réduire et s’adapter voire s’éteindre. En contrepartie les troupeaux vont comporter plus d’animaux faibles, malades et non féconds ce qui va amenuiser leurs chances de survie à long terme.

Pour que les entités puissent  s’adapter à la défection de l’une d’entre elles,  il faut que le besoin soit clairement connu du demandeur et que la relation avec le fournisseur comporte une communication du savoir et du savoir-faire suffisante pour qu’un service équivalent puisse être créé en interne ou apporté par une ou plusieurs entités extérieures à l’association. La défection peut aussi bien être la suppression pure et simple du service comme une demande de contrepartie non viable ou non optimale pour l’association. Si le saumon de rivière devenait moins gras les ours arrêteraient de le chasser pour constituer leurs réserves d’hibernation mais continueraient toutefois de le chasser pour la richesse de sa tête en nutriments essentiels. Il leur faudra compenser en augmentant leur prises en animaux gras dans d’autres catégories de proies ou en trouvant une source spécialisée en graisse (des oies et des canards du Gers par exemple).

Si l’adaptation ne peut être réalisée rapidement l’entité demandeuse va au mieux perdre une partie de ses ressources (donc de sa richesse) et au pire perdre des éléments et une part plus importante de richesse jusqu’à la disparition. Durant le processus de disparition elle peut aussi être englobée par une entité fournissant ce besoin en interne souvent avec des contreparties plus importantes et une marge de manœuvre plus limitée pour sa survie mais moins dépendante de sa seule communication avec les fournisseurs de services.

Et le logiciel dans tout ça ?

Le point le plus important est la définition exacte et objective du besoin. Avoir besoin d’un site web pour gagner de l’argent ne permet pas  de définir quelles sont les technologies qui rendront le meilleur service au coût moindre en vue des ressources consommées. En revanche, être capable de savoir quelles relations nous voulons mettre en place entre les visiteurs d’un site et son contenu va permettre de créer les scénarios  qui vont qualifier ou disqualifier des plateformes logiciels et des plateformes d’hébergement. Après viendront les questions d’indépendance et de coût.

Les logiciels fermés vont créer une plus grande dépendance au niveau de l’obtention des licences et de l’évolution du matériel et de l’hébergement, mais pas forcément une plus grande dépendance  vis-à-vis des prestataires au niveau des services personnalisés. Un nouveau prestataire devra sûrement recréer le service existant pour être en mesure de le contrôler. En revanche, la concurrence est souvent plus rude entre les prestataires de logiciels fermés car leurs coûts sont très similaires. La communication est plus souvent axée sur ce que la solution est capable de faire que sur la manière dont la solution remplit votre besoin. En cas d’évolution de la solution il n’est pas évident de détecter le glissement entre le besoin initial et le service rendu par rapport au coût. Le partage d’informations et l’apprentissage se font lors de séminaires et de formations coûteuses ou sur des forums dont le contenu est soigneusement filtré. Les groupes d’intérêts autour d’un logiciel fermé vont être dirigés par l’éditeur et ses partenaires directs (prestataires ou cliens). S’il émerge des places d’indépendances génératrices de trop grandes richesses, elles sont soit englobées dans un groupement plus grand mieux contrôlé et rentabilisé, soit rachetées, soit attaquées en justice.

Les logiciels libres ont plus de transparence sur la manière dont ils remplissent un besoin. Les blogs et les sites des communautés sont remplis d’exemples et de documentation à ce sujet. Et si cela n’était pas le cas il vous est facile de publier une série de documents en interne ou en externe qui précisent votre démarche et vos méthodes pour remplir votre besoin. Si les documents sont publiés en externe, les retours vous permettront d’améliorer votre expérience à faible coût. L’apprentissage se fera le plus souvent en ligne comme le partage d’informations sans nécessité d’abonnement ou de formation coûteuse. Des prestataires pourront vous proposer ce type de service pour augmenter votre savoir et votre savoir-faire plus rapidement mais cela ne sera qu’optionnel. L’investissement le plus important pour les logiciels libres sera la veille technologique et l’apprentissage et sera plus quantifiable en temps qu’en argent. Cela rend son coût moins maitrisable en théorie mais pas dans la réalité.  Les groupes d’intérêts autour d’un logiciel libre sont de deux types : communautaire et projets satellites.  La communauté de développeurs et d’utilisateurs met en place ses outils de communication avec des listes de diffusion, des sites, de la messagerie instantanée, etc. Les utilisateurs et les développeurs vont aussi créer un système équivalent autour de projets satellites dans lesquels ils vont s’impliquer beaucoup plus directement et qu’ils vont sponsoriser plus facilement, souvent au grand bénéfice de la communauté entière. Autour de Plone je peux citer les projets Plone4Artists, getPaid (e-commerce), PloneGov (universités), CommunesPlone,  EduCommons (implémentation d’OpenCourseWare) et bien d’autres.

Toutefois les logiciels se rejoignent sur quelques points. Si peu de prestataires maitrisent un logiciel, la dépendance envers ceux-ci est la même qu’il soit ouvert ou fermé. Il faut alors choisir de faire confiance au prestataire ou d’avoir en interne une alternative prête à l’emploi en cas de défaut de celui-ci. De même si vos données sont prisonnières dans un système duquel il ne vous est pas possible de les extraire en entier avec les métadonnées que vous leur avez ajoutées, vous ne pourrez assurer leur pérennité ni la migration vers un nouveau système ou même vers la version supérieure du système que vous utilisez. Il faut considérer une donnée, une relation, un document comme un tout au sein de son contexte et non pas comme un élément du système.Dans ces deux cas le logiciel apporte la richesse toute relative d’un produit financier complexe: jackpot ou banqueroute.

À l’heure du choix

Au final, lorsque le besoin est bien établi le choix entre logiciel libre et logiciel fermé se fera en fonction du ratio temps/argent que vous souhaitez investir et du délai que vous proposent les prestataires. Si vous en prenez le temps, le logiciel libre vous apportera plus de connaissances, de maitrise, d’indépendance et de retours sur investissement par rapport à votre besoin. Cela deviendra votre richesse interne. Le logiciel libre n’impose pas, pour les applications créées en interne,  à quelques exceptions près, la diffusion des sources  à l’extérieur . Vous pouvez donc choisir comment communiquer votre expérience et faire connaître votre savoir-faire.

Which mind mapper tool are you using ?


Since one year now I am using mind mapping tools to manage knowledge around private and professional projects. I tried only Open Source (but not always free) software :

All are very intuitive and propose import/export for various format but only FreeMind have its Plone addon. It is a flash viewer for .mm files.
None of them propose collaborative edition.

I didn’t find any python program that implement some mind mapping features in pypi neither on search engines.

In January we generalized the use of mind mapping tools and saw that a lot of us had started to use them since a while without communicate around this need. All these softwares can import map from mindmanager but they cannot import or export map from one of them. The work to merge all our maps to one format will be hard.

Which mind mapping tool are you using ?