Illustration de la problématique de fragmentation en contexte collaboratif

Fragmentation en contexte collaboratif
Fragmentation en contexte collaboratif

Supposons que Al ait à modifier son fragment 3 pour créer un 3' qui devrait donc le remplacer).

Al ne peut pas prendre en compte les contextes tiers d'utilisation de 3 :

  • Défaut de connaissance (exemple : Al ne connaît pas l'existence du lien 7->3)

    Dans le cas général on doit considérer que Al ne connaît pas les utilisations qui sont faites de 3, c'est une information qu'il n'a pas à gérer.

  • Complexité (exemple : Al ne peut pas écrire un 3' compatible avec les utilisations de 4 et de 7)

    Dans le cas général on doit considérer que la mise à jour d'un fragment entraîne la mise à jour de fragments associés qui appartiennent à un autre utilisateur

Donc la substitution de 3 par 3' conduit potentiellement à des incohérences de contenu au sein du système.

Il n'y a pas de solution générale à ce problème, mais un ensemble de stratégies à mobiliser en fonction des contextes, notamment car cela dépend de la nature de la mise à jour (sachant qu'une mise à jour est souvent composée de plusieurs types de mises à jour différents) :

  • Changement de sens (correction d'une erreur, changement d'avis, ...)

  • Correction syntaxique

  • Ajout de contenu

  • Suppression de contenu

  • Réécriture (modification de forme sans changement de sens)

  • ...

Ces solutions sont par exemple :

  • Créer la nouvelle version 3' pour Al, et maintenir la version 3 pour les autres utilisateurs (et leur laisser au choix la mise à jour)

    Avantage : maintient la cohérence

    Inconvénient : maintient plusieurs versions en concurrence et entraîne des copies (fork) ou bien l'usage de versions figée (deprecated) ; demande un choix à l'utilisateur ; le besoin serait souvent l'acceptation de certaines modifications et le refus d'autres

  • Créer la nouvelle version 3' et avertir tous les contextes utilisateurs

    Avantage : maintient la référence

    Inconvénient : le système est incohérent tant que les modifications n'ont pas été faites

Dans les deux cas les modifications doivent être intelligibles aux auteurs, afin de prendre les bonnes décisions.