Deleuze pour les développeurs : déterritorialisation

Réexaminons le diagramme de cet agencement:

What's up with this line?

Qu’est-ce que cette ligne a de particulier ?

Et bien, ce n’est pas parce que les agencements sont relativement amorphes qu’il n’est pas du tout possible de différencier ce qui en fait partie ou non. Cet agencement particulier délimité un territoire: tout ce qui est dans la ligne fait partie du territoire, et le reste est dehors. Un peu comme pour un château:

Fort Pitt, mode Vauban

Ou, puisque nous ne parlons pas que d’espace physique, un groupe ou un cercle social:

Core team de Ruby on Rails

Bien sûr, le monde s’étend largement outre le cœur de l’équipe. Mais la ligne rose désigne les frontières de l’agencement qui consiste ce cœur d’équipe.

Déterritorialisation

Donc qu’est-ce qui arrive à ces frontières lorsqu’on les traverse ? Et bien, votre château est envahi. Un nouveau membre entre dans l’équipe. De nouveaux serveurs sont mis en ligne. Ce processus est appelé déterritorialisation. Réparer les lignes cassés, reformer une frontière, ça s’appelle la reterritorialisation. Je suis récemment tombé sur un symbole de déterritorialisation intéressant: le logo Open Source.

Logo Open Source

Visuellement, ce logo communique l’idée de déterritorialisation que contient le geste d’ouverture de votre code: ce qui est interne est exposé dehors. Les murs ont été cassés !

Un autre exemple: en construisant un service web, on commence juste avec notre service:

Schéma d'un service web

Nous avons ici un serveur d’application, une base de données et les données d’identification des utilisateurs. Ces composants forment notre agencement. Souvenez-vous que les concepts abstraits sont des objets, tout comme notre code et nos serveurs ! Nos identifiants sont stockés dans la base de données, de sorte que personne ne sort du service.

À présent, nous décidons de permettre aux gens de s’identifier avec Twitter:

Service web+Twitter

Twitter devient le moyen d’identification le plus courant sur notre site. À présent, l’agencement de Twitter a déterritorialisé le nôtre:

Service web déterritorialisé+Twitter

Nous pouvons minimiser les effets, autrement dit reterritorialiser notre service, en essayant de privilégier notre système interne d’authentification, et en ne faisant que connecter celui de Twitter au nôtre.

Service web reterritorialisé+Twitter

À présent, en intégrant complètement Twitter dans notre service, il fait partie de notre assemblage. Bien sûr, de nombreuses interconnexions ont été négligées ici. Mais de notre point de vue, elles ne nous affectent pas. En revanche, les décisions de Twitter sont à présent essentielles pour la bonne marche de notre service. Leurs mises à jours et changement de politique nous touchent directement.

Il y a aussi une re-déterritorialisation plus subtile et secondaire: notre code et notre service étaient avant isomorphiques. Mais à présent notre code a réclamé la possession d’un nouveau territoire, et l’ancien code n’est plus qu’un sous-agencement de l’agencement total.

Un exemple avec Git

La notion précédente de déterritorialisation reposait largement sur la notion de dépendance, mais ce n’est pas nécessairement ainsi. Prenons un autre exemple:

Toute requête d’intégration Github est un acte de déterritorialisation, et toute intégration est une de réterritorialisation. Considérez ce petit dépôt, avec trois commits:

Petit dépôt Github

Vous le clonez:

Petit dépôt cloné

Vous ajoutez un commit, et un nouvel objet dans votre dépôt:

Petit dépôt agrandi

Puis vous m’envoyez un mail, en me demandant de copier votre dépôt:

Demande de fusion

J’aime le code, donc je fais un git fetch:

Fusion récupérée

Déterritorialisé !

À présent, la copie locale:

Fusion copie

et votre dépôt s’est reterritorialisé. Ces étapes ont lieu tellement vite que vous ne vous en rendez probablement pas compte. Mais conceptuellement, c’est ce qui arrive.

Un exemple social

Un dernier exemple qui est encore moins lié au code: entrer dans un nouveau groupe social. Vous êtes à une conférence, et il y a quatre personnes qui discutent:

Quatre personnes discutent de Ruby

Ils forment un agencement que l’on appelle une conversation. Elle parle des nouvelles amélioration de Ruby 2.0, ce qui veut dire que ça va être particulièrement intéressant. Hé. Et vous décidez que votre opinion a de l’importance, donc vous déterritorialisez l’agencement, et à supposer que l’on ne vous ignore pas, vous le reterritorialiser autour de vous.

Entrée dans le groupe des fans de Ruby

La langue que nous utilisons est proche du vocabulaire deleuzien: nous entrons ou nous nous intégrons dans une conversation.

Conclusion: Les diagrammes

Nous pouvons appeler ces dessins «diagrammes» ou «machines abstraites». Ils peuvent représenter ces types de relations conceptuelles de manière visuelle, ce que je trouve très pratique pour la compréhension. Les développeurs appellent ces machines abstraites «design patterns» en anglais, ou patron de conception en français.

À présent que vous avez vu le processus que les agencements utilisent pour entrer en rapport, j’espère que vous les trouvez utiles. Parce que leur niveau d’abstraction permet de les réutiliser dans d’innombrables situations.

Commentaires !

Vous pouvez discuter en temps réel dans le webchat ou en pointant votre logiciel jabber sur polnetz@conference.sploing.be.

Vous pouvez aussi me contacter par mail à netz@sploing.be.

Mais surtout, contribuez !

Pourboire et parrainage

Pourboire

Sploing ! Bécassine wants your money

Bécassine vous propose de me donner quelques sous pour le temps et l'argent investi dans la rédaction de l'article que vous avez lu et la maintenance du blog aux adresses suivantes.

Pour chaque don je vous embrasse virtuellement et vous envoie un petit mot doux.

Si vous ne savez pas ce que sont des bitcoins, voici une foire aux questions et une présentation des logiciels disponibles.

Parrainage

Pour 0,02 BTC=1LTC=10000DOGE

Vous pouvez parrainer cet article ou un article déjà existant.

Pour 0,04BTC=2LTC=20000DOGE

Vous pouvez me demander de traduire un article dont vous serez automatiquement parrain. Envoyez-moi un mail à netz@sploing.be pour les détails.