# Diaspora*

diaspora* (initialement typographié DIASPORA*) désigne à la fois une application web de réseautage social, et le réseau social distribué sur lequel repose cette application. Chaque utilisateur du réseau peut choisir de s'inscrire sur un des serveurs (appelés pods) diaspora* déjà existants ou de créer le sien. Ce serveur forme ainsi, avec l'ensemble des autres serveurs, la fédération diaspora*. Le logiciel permettant de faire fonctionner des serveurs est distribuée sous licence libre (AGPL).
Le réseau social n'est la propriété d'aucune personne unique ni d'entité unique, le préservant ainsi d'être sujet à rachat par une grande entreprise ou à de la publicité. Selon son développeur (2011) : "notre design sous forme de réseau distribué signifie qu'aucune grande enterprise ne contrôlera jamais Diaspora (« "our distributed design means no big corporation will ever control Diaspora. »).

## Historique

Les développeurs à l'origine du projet — Dan Grippi, Max Salzberg, Raphael Sofaer et Ilya Zhitomirskiy — se sont rencontrés au club informatique de l'Institut Courant des mathématiques de l’Université de New York où ils travaillaient sur un projet d'imprimante en 3D. Ils ont indiqué avoir eu l'idée de créer diaspora* après une conférence d'Eben Moglen à l'Internet Society à New York en février 2010, décrivant les réseaux sociaux existants, centralisés et propriétaires, comme étant de l'« espionnage gratuit ».
Le projet est annoncé le 24 avril 2010 sur le site web de levée de fonds Kickstarter. Les promoteurs du projet annoncent vouloir rassembler 10 000 dollars pour accomplir leur projet. Cette somme est atteinte en seulement 12 jours. À la fin de la levée, le projet récolte un total de 200 641,84 dollars, ce qui en fait, à ce moment, la plus fructueuse levée de fonds sur Kickstarter. Mark Zuckerberg, le fondateur de Facebook, a lui-même fait un don, qualifiant diaspora* d'« idée cool ».
La première version publique du code source du logiciel a été diffusée le 15 septembre 2010 (en version alpha), et le premier déploiement public initialement prévu pour octobre 2010$^,$$^,$, a été repoussé vers la fin 2012. La première version publique du réseau est lancée en octobre 2012 sous le numéro de version 0.0.1.0 (numérotation qui remplace les notations alpha et bêta utilisées auparavant). L'application connaît depuis des mises à jour régulières. Depuis la version 0.5.0.0, la communauté produit des mises à jour toutes les six semaines.
Le développement de diaspora* a eu le soutien de Pivotal Labs (en), une société spécialisée dans le domaine du développement d'applications sociales. L'application est en effet développée pendant deux ans dans les bureaux de Pivotal à San Francisco.
En novembre 2016, le réseau compte plusieurs centaines de milliers d'utilisateurs répartis sur 342 pods. Framasphère et mondiaspora.net sont les pods francophones les plus importants de diaspora* avec, respectivement, 31 196 et 5 123 utilisateurs actifs.

## Gouvernance

Dès le début en 2010, le projet est gouverné par les quatre fondateurs d'origine. Le 27 août 2012, les fondateurs annoncent sur le blog du projet l’arrêt de la gouvernance du projet par Diaspora Inc. et le projet devient communautaire. Afin de gérer les droits la fondation diaspora* est créée, chapeautée par la FSSN (Free Software Support Network). Cette annonce n'est pas sans soulever quelques questions, certains se demandent si elle n'est pas un simple aveu d'échec de la part des créateurs du projet$^,$.
Le projet a adopté la plateforme Loomio pour permettre un système démocratique de prise de décision.

## Principe de fonctionnement

Chaque utilisateur dispose d'une « seed » (graine), correspondant à son profil et à une adresse URL. Chaque personne peut accéder à ce profil soit directement, auquel cas il accède uniquement aux informations publiques, soit en indiquant une clé d'ami (« friendly key ») qui permet d'obtenir plus d'informations que le profil public. Dans ce cas, les informations sont chiffrées en utilisant la clé publique de la personne interrogeant le système. Toute personne ne possédant pas la clé privée ne pourra donc pas lire le résultat de la requête.
Exemple :
Admettons que le profil de Sophie se trouve à l'adresse http://www.sophie.com/. Elle a autorisé Pierre à être son ami. Pour cela, il a dû fournir sa clé publique OpenPGP au système, qui lui a fourni la clé d'ami 6389 en échange. Il peut accéder au profil public de Sophie à l'adresse http://www.sophie.com/, mais il obtiendra plus d'informations, étant un ami, à l'adresse http://www.sophie.com/6389. Il verra par exemple les photos que Sophie est prête à montrer à ses amis à l'adresse http://www.sophie.com/6389/photos. Les informations en réponse à la requête de Pierre sont chiffrées par GPG en utilisant la clé publique de Pierre, et donc lui seul pourra les déchiffrer à l'aide de sa clé privée.
Les quatre créateurs envisagent de proposer des serveurs sous diaspora* permettant d'héberger des profils, de manière analogue à ce que fait Wordpress pour les blogs, ce qui permettra aux personnes n'ayant pas la possibilité d'installer leur propre instance de diaspora* sur un serveur de créer malgré tout un compte.

## Objectifs techniques & fonctionnalités

Le projet diaspora* a indiqué dès 2010 le plan de développement permettant de connaître les objectifs et notamment les futures fonctionnalités du logiciel$^,$ :

### Première distribution (15 septembre 2010)

* Communication complète entre « seeds » (chaque profil des utilisateurs du logiciel).
* Chiffrement OpenPGP de bout en bout.
* Plugins permettant de recopier ses données personnelles présentes sur les principaux services Internet, comme Flickr et Twitter, dans le programme diaspora*.
* Version finale de l'interface de programmation diaspora*.
* Compatibilité avec le système d'authentification OpenID Connect.
* Microblogging.
* Publication du code source de programmation du logiciel sur GitHub.

### Seconde distribution

Il n'existe pas de date programmée pour cette seconde version, mais elle devrait comprendre :
* Des modules permettant de partager plus de données. La structure modulaire de diaspora* doit permettre de l'étendre facilement et de l'ouvrir à différents modèles de communication et de partage d'information entre utilisateurs. L'écriture de modules permettant des communications très diversifiées est donc une étape importante dans la construction du système.
* La constitution d'un réseau de développeurs pour le logiciel.
* Une simplification de l'installation et de la configuration d'une nouvelle instance de diaspora*.

### Au-delà de la deuxième distribution

Par la suite, plusieurs autres évolutions sont envisagées :
* Utilisation du système de fichiers décentralisé Tahoe-LAFS (en).
* Utilisation de XMPP, un protocole réseau pour faire communiquer des systèmes décentralisés, actuellement utilisé essentiellement par des systèmes de messagerie instantanée.
* Utilisation de VoIP pour une communication par la voix sur internet.
* Transmission de données en peer-to-peer par BitTorrent.
* Amélioration de l'anonymat des utilisateurs en utilisant le réseau Tor.
* Mise en place d'un provider OpenID Connect spécifique.
* Le support d'ActivityPub, permettant des partages de contenus sur les réseaux sociaux décentralisés, a été discuté. La discussion a été fermée en mentionnant qu'ActivityPub ne serait pas pris en charge.

## Technologie

diaspora* est écrit en Ruby. Il utilise notamment le framework Ruby on Rails. La persistance des données fut un temps assuré par MongoDB, puis le projet a migré pour supporter MySql, MariaDB et PostgreSQL.
Le chiffrement des données échangées entre les utilisateurs est assuré par GNU Privacy Guard (GPG).
Des API pour interagir avec Facebook, Tumblr, Twitter et Wordpress sont fournies.
diaspora* utilise le protocole Ostatus, permettant de standardiser les communications entre des sites web se mettant mutuellement à jour.

## Licence et copyright

Certains composants de diaspora* comme Rails et JQuery sont sujets à la licence MIT/X11. Le code spécifique au projet est distribué sous la licence AGPL v3.
Avant la reprise en main du projet par la communauté, les contributeurs externes se voyaient demander de signer un contrat avec la société Diaspora Inc. leur fournissant la copropriété de ces contributions. Elle seule avait donc la possibilité de redistribuer le logiciel sous une autre licence.