Bonjour,
Un sujet qui me trotte dans la tête depuis quelques années maintenant.
Un peut complexe à expliquer pour les néophytes de git mais je vais me prêter à une petite présentation avant d'en venir à ma proposition de projet/idée.
En quelques mots, git fut créé par Linus Torvalds pour maintenir Linux dont il est le également le créateur. Il permet ainsi de créer et maintenir un document dématérialisé à plusieurs dans d'exéllentes conditions.
C'est ce qui permet l'avènement actuel de l'open source de mon point de vue.
En guise d'introduction, dites vous qu'il permet à des personnes ne se connaissant pas du tout, de pouvoir travailler ensemble sans même le savoir. On peut imaginer des dizaines de milliers de personnes apportant leur grain de sel tout en ayant un projet canonique, stable et cohérent! Et ça marche! He oué le fordisme à coté c'est pas grand chose.
Pour ce faire, git a introduit deux avancées majeurs : le commit et la résolution de conflit.
Le commit représente, pour faire simple, une modification sur un document. Tout commit est identifié avec un identifiant unique, ainsi historisé et contient ce qu'on appelle un différentiel, mettant en avant ce qui a été ajouté (en vert) et ce qui a été supprimé (en rouge). Voici un exemple de commit simple :
https://github.com/steeve/france.code-civil/pull/31/commits/2904ff13959603a50340c70e2bff418632ae8a8c
C'est bête mais en fait assez peut d'outil sont capable de garder entièrement l'historique d'un document, et d'une manière aussi efficace. On peut évidement savoir qui en est à l'origine à tout moment. Ce qui permet également de retracer l'ensemble des changements sur un document à une très grand précision.
L'autre avancée majeur est la résolution de conflits : si deux personnes se marchent dessus, par exemple l'utilisateur A modifie la ligne 14 du manifeste des crapauds fou, valide les changements (un commit) et les sauvegardes (en ligne). L'utilisateur B pendant ce temps et avant que l'utilisateur A ne modifie cette ligne du document, change lui aussi la ligne 14 puis valide à son tour son changement (un autre commit). Problème : ils ont tous les deux modifié la même ligne, git va stopper l'envoie du dernier utilisateur, ici B et l'avertir du conflit. A l'aide du différentiel il va lui demander de récupérer d'abord les changements de A sur la ligne 14 pour ensuite appliquer ses propres changements. Une fois qu'il a fusionné les deux changements et que c'est cohérent, il envoie le tout. On vient de faire une résolution de conflit. L'idée de A et B ont étés prises en compte et le tout reste cohérent : Les deux commits ont étés pris en comptes.
git est fait à la base pour fonctionner en ligne de commande mais des petits malins ont créé gitHub qui propose une interface et des serveurs de stockage de projets git en ligne. Sauf que ce dernier n'est paradoxalement pas open source et engrange des millions de $. Ils ont encore le quasi monopole du marché, gitLab a fait son apparition dernièrement et est open source.
git est outil extrêmement complet, je ne peux pas tout détailler ici et je n'en connais de toute façon pas toutes les facettes. Leur support en Saas (software as a service) tels gitHub/gitLab etc apportent également de nombreuses fonctionnalités très intéressantes.
Dont une particulièrement, ce qu'on appelle les pull requests. C'est ce qui permet de soumettre à validation un commit (ou plusieurs d'un coup). Comme toute validation informatisée elle est soumise à modération, automatique ou non. En gros on peut gérer un peut le chaos.
Passons dans le concret, si git est complexe au premier abord il est cependant possible de lui trouver des comparaisons assez simples. Par exemple prenons un projets de loi : on peut très facilement comparer un commit à un amendement. On pourrai imaginer une constitution en ligne ou tout un chacun puisse effectuer des pull requests (des changements soumis à validation). Pourquoi maintenant ne pas imaginer un vote pour remonter les plus pertinantes et un référundum basique avec une block chain pour la valider ou non. Ok, I'm a dreamer comme disait l'autre but I'm not the only one mais ce n'est pas non plus là que je veux en venir.
Le vif du sujet, pourquoi ne pas démocratiser cet outil? Le rendre accessible à tout un chacun avec un éditeur de texte en saas basé sur git. Par exemple j'ai travaillé avec divers acteurs publics, villes, enseignants chercheurs etc c'est effarant de les voir s'envoyer un document de boîte mail en boîte mail pour arriver à un résultat médiocre incomplet et qui a pris un mois et dont tous les protagonistes concernés n'étaient pas au courant.
Pourquoi n'auraient ils pas ce même document en ligne ou n'importe qui pourrai (ou non) y avoir accès? Sur le quel ils pourraient faire des propositions sans se marcher dessus? Que deux étudiants en lettre puissent travailler sur un même projet, que leur enseignant puisse voir son avancement et voir avec précision qui est à l'origine de quoi. Pour que deux profs partagent leur cours en ligne et qu'ils reçoivent des propositions de n'importe où et de n'importe qui etc etc. Que lorsqu'une ville souhaite effectuer le financement des maison de justice qu'ils ne restent pas entre soit mais qu'ils envoient l'ébauche du document à un juriste. Qu'un crapaud fou puisse proposer un amendement au manifeste du crapaud fou pendant qu'un autre le lise par hasard et corrige ses fautes d'orthographes (qui doivent être nombreuses dans ce poste désolé).
J'ai déjà réfléchit à beaucoup d'aspect là dessus, mais je manque de savoir et je ne peux/veux pas me lancer seul dans un tel projet, en tout cas je ne pense pas. (Une boîte Lyonnaise, gitbook, financé avec des angels américains a commencé un projet open source sur le sujet mais ils sont très orientés sciences et recherche et reste axé vers l'informatique sans oublier que l'interface n'est pas traduite en français que ce n'est pas dans leur prio pour leur avoir demandé. Pour avoir hésité à travaillé avec eux, ce sont deux produits 100% de la Silicone Valley pro macroniste et pro profit, bref j'ai passé mon chemin. J'avais également demandé à un lead dev de gitHub pourquoi ils ne s'orientaient pas vers le grand public, il m'avait répondu que dans 5 à 10 ans tout le monde coderai.. Je n'y crois pas trop et ça laisse beaucoup trop de monde sur la touche).
Voila pour la prez de git et la prez tout aussi rapide du projet. Si un dev back end ou surtout devops/adminsys est intéressé maintenant ou plus tard, je ne suis pas pressé mais ça me reste en tête et les applications sont multiples. L'open source est pour moi une nouvelle théorie économique, philosophique et sociale, il ne reste plus qu'à la mettre en place et à arrêter de réinventer la roue ou de s'approprier le savoir sur le principe et le prétexte du profit. Pour cela il faut un outil accessible je crois. Merci.
quelques liens:
https://git-scm.com/
https://www.ted.com/talks/clay_shirky_how_the_internet_will_one_day_transform_government?language=fr
Je l'avais partagé rapidement sur le chan, c'est tout aussi incomplet et un poil "marketing" mais c'est bien expliqué. Le titre est pas très bon par contre.
https://www.gitbook.com/
ps : je ne savais pas trop dans quelle catégorie mettre ceci.