Mes données dans un nuage ? — Oui mais le mien

Plutôt que de se résigner à l’usage de services en ligne n’offrant aucune garantie réelle de confidentialité, Frank Karlitschek a décidé de ne pas se contenter de prêcher la bonne parole mais de passer à l’acte en élaborant (avec d’autres) un projet qui remporte un succès grandissant : un logiciel libre et open source de stockage de données. En revenant sur l’historique du projet ownCloud, il nous rappelle au passage les clés de la réussite (ne perdons pas de vue la proportion importante de projets open source qui n’aboutissent jamais) : développement collaboratif du code ouvert, prenant appui sur des outils et choix techniques ayant déjà une large base de développeurs, flexibilité, compatibilité multi-plateforme…

Cet article donne quelques indications plus précises sur les technologies mises en œuvre qui peuvent laisser perplexe le lecteur non développeur, mais la démarche et la philosophie de l‘open source y apparaîtront pour tous avec clarté. L’enjeu, c’est de rendre à l’utilisateur le contrôle de ses données.

Au fait, Framasoft dispose depuis un an de son propre ownCloud [1], pourquoi pas vous ?

Pourquoi j’ai créé OwnCloud et l’ai rendu open source

par Frank Karlitschek, fondateur de ownCloud et mainteneur de l’architecture globale du projet.

Article original : Why I Built OwnCloud and Made It Open Source Traduction Framalang : Asta, r0u, KoS, Wan, Omegax, goofy, Diab

Il y a 4 ans, j’étais au CampKDE à San Diego, je donnais une conférence sur la protection des données, mettant en garde le public sur les risques pour leur vie privée auprès des fournisseurs de cloud – en particulier Dropbox. « — Eh bien fais-le toi-même », m’a-t-on dit. Bien sûr, j’avais déjà créé des choses dans le passé, alors bien sûr, j’ai dit que j’allais le faire. Et c’est là que j’ai commencé mon odyssée, en premier lieu pour me protéger moi-même, mes amis et mes collègues de l’espionnage des gouvernements et d’autres méchants, et plus tard – quand j’ai vu l’intérêt croître dans le monde – pour concevoir un projet concret et efficace.

je n’avais pas envie d’envoyer mes données à un service tiers pour qu’il les stocke on ne sait où

Évidemment, je devais décider d’un certain nombre de choses avant de commencer, notamment ce que je voulais que fasse le logiciel, quelle plateforme de développement utiliser, comment le structurer et bien sûr il fallait que je lui trouve un nom : ownCloud (NdT : littéralement, « le nuage qu’on possède »).

Mes amis et moi avions besoin d’un moyen de synchroniser nos images, nos documents et même nos vidéos en passant d’un appareil à l’autre (au lieu d’utiliser une clé USB), nous voulions aussi partager ces fichiers avec nos amis et nos proches. À l’époque, Dropbox devenait très populaire, mais je n’avais pas envie d’envoyer mes données à un service tiers pour qu’il les stocke on ne sait où. Je voulais créer une plateforme que mes amis puissent utiliser sur les espaces de stockage qu’ils avaient déjà, à la différence du cloud, pas seulement pour synchroniser et partager, mais aussi une plateforme assez flexible pour qu’on puisse y créer des applications.

Bien sûr ownCloud allait être open source.

Je faisais déjà partie de la communauté open source, mais ce n’est pas la seule raison. En faisant de l‘open source je concevais un code qui serait complètement transparent (et donc aurait peu de risques de comporter des « portes dérobées » pour entrer dans mes données). De plus je pouvais compter sur un grand nombre de personnes animées des mêmes convictions pour m’aider à créer ownCloud, je n’étais donc pas tout seul. Et je pouvais réutiliser les technologies d’autres projets. Comme SABREDAV, qui est le framework que nous utilisons pour la communication WebDAV du serveur (CalDAV, CardDAV et WebDAV sont tous utilisés par ownCloud), et nous utilisons aussi jQuery. Nous avons également utilisé csync pour les capacités de synchronisation bi-directionnelle du client de bureau et Qt pour l’interface utilisateur multi-plateforme. Je n’ai pas eu à réinventer la roue une fois de plus, je n’ai eu qu’à assembler ce qui existait déjà pour que tout fonctionne.

Mais comme je l’ai déjà dit, je savais ce que je voulais : ownCloud devait être plus qu’une « app ». Bien sûr, stocker les données d’une manière sûre et sécurisée est une chose importante. Mais en fin de compte, les gens veulent faire quelque chose de leurs données, alors j’ai voulu ajouter davantage de fonctionnalités à travers les applications ownCloud. Les applications sont des extensions qui peuvent implémenter des fonctionnalités telles que la détection de virus, la journalisation des accès et des changements de fichiers, le versionnage, le chiffrement, l’édition de fichiers et bien d’autres choses. Ce genre d’intégration du stockage de fichiers avec d’autres services est essentiel pour le développement futur.

Je voulais que mon projet soit flexible, de sorte que les gens puissent s’appuyer sur ownCloud (et beaucoup l’ont fait, avec une application type « Google News », un streamer de vidéos, un lecteur de musique, un calendrier – et plus encore) et que ownCloud puisse s’intégrer dans de nombreux environnements. Par exemple, n’importe quel client WebDAV devait pouvoir accéder à ownCloud dès le départ et le concept d’applications internes est là aussi depuis le début du projet.

Bien entendu, nous sommes plus avancés à présent — il y a des API de partage et d’administration, des API internes pour les applications utilisant OCS, il existe des bibliothèques pour mobile (que nous avons rendues open source) et qui permettent l’intégration à d’autres applications mobiles, une base de données clés-valeurs pour un usage général de stockage de données, de synchronisation, et davantage encore. Ensuite, il y a l’intégration de systèmes de stockage externe comme FTP, S3, SWIFT, CIFS, iRODS et beaucoup d’autres. Mais même à l’époque où nous avons commencé, les intentions étaient claires – construire quelque chose d’assez flexible pour que les gens puissent créer des solutions auxquelles nous n’avions pas pensé.

Et c’est justement ça, la puissance de l‘open source.

Nous (ma communauté grandissante et moi) avons évalué différentes options pour trouver la bonne technologie qui pourrait tourner sur chaque plateforme, du micro serveur jusqu’à des clusters de serveurs, qui aurait toutes les fonctionnalités et serait connue d’un grand nombre de développeurs. C’est pourquoi nous avons opté pour PHP et JS pour la partie serveur, C++ pour la synchronisation des Clients, Objective-C pour iOS et Java pour Android.

Il y avait plusieurs critères architecturaux à remplir dès le départ : multiplateforme, facilité d’extension, support des infrastructures, haute disponibilité basée sur les composants les plus largement utilisés. Donc, nous avons choisi PHP, pour cibler la pile « LAMP » (Linux / Apache / MySQL / PHP) qui est la plus répandue et éprouvée des plateformes permettant tout cela.

C’est également un projet open source et PHP est disponible gratuitement, facile à trouver, et multiplateforme (variantes Windows et Linux, IIS, Apache et autres serveurs Linux). Il bénéficie d’une communauté massive de développeurs dont beaucoup sont très expérimentés. Enfin, c’est un langage facilement accessible pour la communauté. Avec tout ça, c’était une évidence.

« L‘open source est la seule solution pour un stockage de données réellement sécurisé »

Comme j’ai commencé ce projet par une conférence sur la sécurité et la confidentialité, il était essentiel d’avoir la meilleure sécurité possible pour les API. J’ai choisi un chiffrement SSL fort pour toutes les API WebDAV et REST. L’authentification est faite via la méthode basique, qui est très simple et facile à gérer. On peut également utiliser SAML, fourni au travers de son implémentation Shibboleth. En complément OAuth et l’authentification à deux facteurs sont disponibles, et nous profitons même de la flexibilité de ownCloud pour intégrer un backend personnalisé, en utilisant des jetons à la place des mots de passe standards.

Je suis convaincu que le stockage de fichiers n’est pas seulement un service web ou une infrastructure informatique de plus. C’est là où les gens et les entreprises stockent et gèrent leurs données les plus importantes. C’est pourquoi il est essentiel de le rendre aussi sécurisé que possible. Avec un logiciel propriétaire, vous ne pouvez jamais être sûr qu’il n’y a pas une porte dérobée ou d’autres problèmes de sécurité. L’open source est la seule solution pour un stockage de données réellement sécurisé. Voilà ce que j’ai fait et pourquoi je l’ai fait. J’ai mis à ce travail toute ma passion pour l‘open source et il a aussi demandé beaucoup de soin !

Le site du projet ownCloud

Contribuer au développement d’ownCloud

Notes
[1] Tiens par exemple, vous voulez de quoi imprimer de chouettes posters qui expliquent ce qu’est le logiciel libre ? C’est par là