+7 votes
1.4k vues
par dans Collaboratif
remontrée par

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. 

6 Réponses

0 votes
par Batracien fou (298 points)
En fait, j'ai un peu du mal à tout comprendre.

Tu parle de travail collaboratif sur un document.
Des trucs comme google drive le permettent d'ailleurs il doit surement exister un pendant chez Framasoft.
Ou l'on peut modifier un document à plusieurs en même temps en sachant qui a fait la modif et en ayant un historique des modifications.

Il existe aussi les Wiki, qui sont aussi fait pour ça créer et modifier des documents à plusieurs avec un historique des modifications.

Donc j'ai un peu de mal à voir ce que tu attend de Git dans exactement ?
par Batracien fou (298 points)
En fait, ce que tu vois, c'est un Wiki côté utilisateur, mais où les pages et modifications sont validés comme pour Git pour rentrer dans la version officiel.
par Batracien fou (298 points)
Ok, je vois bien le concept.

Et je trouve l'idée intéressante.
0 votes
par
remontrée par
Si je rentre un peut dans les détails techniques du projet, si jamais ça intéresse quelqu'un.

http://www.nodegit.org/ sera à la base du backend je pense.

Je ne suis pas très confiant sur les perfs en node mais il est utilisé et maintenu par Gitter, Atom, GitKraken, autant dire qu'il est assez stable et c'est de toute façon un binding de https://libgit2.github.com/ qui est écrit en C.

(un petit post sur le sujet de gitKraken https://blog.axosoft.com/cross-platform-nodegit-app/)

Côté DB je ne sais pas encore quoi stocker et comment, une partie pour les utilisateurs c'est certain, pour le reste git fera le job pour l'instant. (he oui c'est cool ça fait DB :))

Côté client, react peut être angular2 (voir Vue), sûrement du TS mais à voir, j'y ai pris goût, c'est un peut lourd au début mais ça se montre très rentable par la suite.

Pour l'interface, il faudrait que je les sortes de ma tête, j'en ai déjà fais une bonne partie.

Le plus gros point d'interrogation pour le moment est le format d'écriture, je veux quelque chose d'accessible, donc pas de markdown, mais il faut aussi que le formatage soit compris par le diff de git. Je sais pas exactement comment marche encore l'ODT et ce qui existe comme parser (côté front). Je veux conserver un minima de formatage : polices d'écriture, couleur, taille de police. Basique pour commencer.

En terme de WYSIWYG, j'en ai vu quelques uns open source qui semble assez prometteur mais il faut vérif avec le point d'avant.

Voilou dans les grandes lignes.
par Batracien fou (298 points)
le markdown est pas mal.
Et il doit surement y avoir des WYSIWYG qui permette de faire du markdown.

Avec une recherche vite fait
https://stackedit.io/
https://github.com/benweet/stackedit
par Batracien fou (298 points)
Surtout que si je me rappelle bien le format odt, c'est en fait un zip avec des fichiers xml.

Si en soit, il peut être assez facile de faire du merge de xml.
Des fois, ça peut être vite chiant à faire (et je connais le pb l'ayant déjà eu).
0 votes
par Tétard dingue (10 points)
J'aime beaucoup l'idée même si j'ai pas compris tout les tenants et aboutissants ;)

Juste quand tu envisages la block-chain essayes peut être de voir si l'application que tu veux mettre en place a vraiment besoin d'une approche Data-centric, ou si cela ne peut être repensé par une approche agent-centric en s'inspirant ou utilisant des concepts comme Holochain (https://holochain.org/) ou Git justement. Je pense que le concept clé est la Hashchain et non pas la Blockchain qui en est une implémentation bien spécifique qui introduit le concept de "consensus sur tout le réseau". Or pour le développement d'un fichier, d'une loi ou autres (pour reprendre tes exemples :p ) un consensus n'est pas forcément nécessaire sur tout le réseau à tout moment, d'ou en effet l'utilisation de git que tu sembles avoir choisi.

Mais en fait je n'ai surtout pas vraiment compris comment et pourquoi tu voulais utiliser la blockchain ?
0 votes
par (3 points)
Yes, pourquoi pas, j'ai eu l'occas' de participer à un hackaton dans la ville de Roubaix, on utilisait Framagit et Framacarte pour le projet et malheureusement, aussi utiles soient ces outils il faut avouer ont un sacré temps de retard. Si nous avions plus de temps, plus de ressources et tous une maîtrise de Git et des repo Github nous aurions avancé bien plus rapidement et moins chaotiquement.

Par contre, je ne suis pas convaincu que le commun des mortels puisse maîtriser Git sans une bonne séance de pratique sur la durée, même avec une UI complète. Il y a beaucoup de paramètres dont on n'est pas maîtres à prendre en compte lorsqu'on s'apprête à faire un commit, donc il faut aussi des modérateurs attentifs et qui savent maîtriser l'outil.

Cela dit, c'est une proposition intéressante et à retenir, au moins pour des projets internes.
par Batracien fou (298 points)
edité par
De ce que j'ai compris, ce n'est pas d'avoir un nouvel outil git.
il existe déjà pas mal de truc (github, gitlab, etc..)

Mais plutôt, une sorte d'éditeur de texte côté utilisateur et un système à la git derrière pour toute la partie validation et intégration des modifications.
0 votes
par Batracien fou (298 points)

Je suis tombé sur ces Wikis que je n'ai pas testé :

Est-ce que c'est le genre de truc que tu verrai ?

par Batracien fou (298 points)
0 votes
par Tétard déjanté (22 points)
Bonjour Mathéo,
Peut-être que ton idée serait facile à développer avec Holochain. Je ne suis pas pointu techniquement mais je sais qu'ils ont intégré les principe de GIT dans leur techno.
Je fais la promotion de cette techno en France que je vois comme un chainon essentiel du faire ensemble pour établir de la confiance numérique à grande échelle.
Je suis à ta dispo si tu veux approfondir le sujet.
Tout de bon,
Loïc

Bienvenue à toi
Crapaud Fou

Vous avez une idée folle après avoir lu le manifeste du Crapaud Fou? Proposez-la ici et recueillez les opinions des autres crapauds fous.

Rejoignez aussi la mare aux crapauds pour des discussions en direct.
...