Démocratiser "git" au grand public.

+6 votes
230 vues
posée par matheo Tétard déjanté (28 points) 31-Mai-2018 dans cercle-collaboratif
recatégorisées par Flo.Cuvellier 26-Juin-2018

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
répondu par Trenty Crapaud déjanté (237 points) 01-Juin-2018
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 ?
commentée par matheo Tétard déjanté (28 points) 01-Juin-2018
Google doc ou Framasoft que j'aime beaucoup et qui font des choses super ne sont pas du tout au niveau de gitHub ou autre.
On ne peux pas imaginer des centaines de personnes travaillant sur un google doc, c'est le chaos assuré.
git le permet, et bien plus encore.

https://www.ted.com/talks/clay_shirky_how_the_internet_will_one_day_transform_government?language=fr
Peut être que ce sera mieux que mes propos.

Je n'attend rien de git, git est très bien tel qu'il est, c'est un outil que je trouve honnêtement sublime et je pèse mes mots.
C'est le plus bel outil moderne de démocratie participative que j'ai jamais eu l'occasion de voir. Si ce n'est la block chain mais les deux concepts ne sont pas non plus totalement étrangers l'un de l'autre. (Un commit au fond peut être considéré comme est un block, enfin bref c'est incomplet et c'est pas le sujet).

Ce que je souhaite c'est le rendre accessible justement.
Pour l'instant il est réservé aux informaticiens et je trouve ça très dommage.
Ce qu'on appelle commit ce qui est ni plus ni moins qu'un amendement.
Nul besoin d'être informaticien pour comprendre et utiliser son fonctionnement.

Le projet est justement de rendre accessible git avec une interface épurée simple et claire et traduite en anglais et français pour commencer. En vue de l'utiliser pour autre chose qu'uniquement l'informatique, dans un premier temps un simple éditeur de texte en ligne basé sur git.

Une interface épurée ne fasse pas peur d'entrée avec des truc partout comme gitHub (bien qu'elle soit correcte). A vrai dire, deux intrerfaces, l'une pour les novices avec le strict minimum, l'édition (commit), les pull request basta. Et une autre avec d'avantage de choses, graph des personnes travaillant sur le projet, branches etc etc.
commentée par Trenty Crapaud déjanté (237 points) 01-Juin-2018
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.
commentée par matheo Tétard déjanté (28 points) 01-Juin-2018
J'aime pas trop parler de wiki, même si sa définition semble être la bonne le terme wiki est très connoté à de l'information/présentation today.

Je préfère parler d'un soft de traitement de texte sur le web basé sur git.

Mais si la "version officielle" est l'équivalent de la branche master ou d'une release oui c'est l'idée. La validation n'est pas uniquement qui m'intéresse, c'est le fait de pouvoir discuter d'une proposition également entre autre chose. Le diff, forks, branches, merge, pull request, etcetc
commentée par Trenty Crapaud déjanté (237 points) 01-Juin-2018
Ok, je vois bien le concept.

Et je trouve l'idée intéressante.
0 votes
répondu par matheo Tétard déjanté (28 points) 01-Juin-2018
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.
commentée par Trenty Crapaud déjanté (237 points) 01-Juin-2018
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
commentée par matheo Tétard déjanté (28 points) 01-Juin-2018
Ouep le soucis c'est que la plus part des gens utilisent word ou libreoffice.
Enfin du ODT. J'aimerai pouvoir faire des imports/export depuis ces formats du coup.
Et le markdown est très simplifié, pas de couleurs etc.
Mais je suis encore assez indécis sur le sujet.
J'aimerai éviter au maximum à obliger les users à utiliser une synthaxe particulière même si je sais que dans les diff il y aura forcément le formatage des styles ce qui m'embête mais je vois pas comment faire autrement.
Pour le coup le markdown est bien plus lisible que de l'ODT c'est certain.
commentée par Trenty Crapaud déjanté (237 points) 01-Juin-2018
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).
commentée par matheo Tétard déjanté (28 points) 01-Juin-2018
Ouep de ce que j'avais vu ça ressemblait à du XML, effectivement je pense que çe peut vite devenir lourd rien qu'à regarder les diffs.
Je vais peut être rester sur du md...
0 votes
répondu par etiennejls Tétard dingue (11 points) 03-Juin-2018
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 ?
commentée par matheo Tétard déjanté (28 points) 03-Juin-2018
Ola, en fait je pensais juste à la block chain pour le vote sur les pull request (proposition d'amendement), si tu veux faire un référendum concernant pour sa validation, pour savoir si on la merge (fusionner) ou non par exemple.
Le problème si on parle à grand échelle aussi, c'est que le nombre de propositions d'amendement peut être très important, même en dev parfois c'est galère de s'y retrouver entre les pull request, du coup je pensais proposer un système de vote comme sur ce forum d'ailleurs (si quelqu'un a le nom je suis preneur), pour remonter les plus populaires/prioritaires.
Et ensuite un possible référendum dessus pour les valider ou non mais tout ça est encore optionnel et non prio pour le coup.
Je vais regarder la holochain, je vois pas ce que c'est.
commentée par matheo Tétard déjanté (28 points) 03-Juin-2018
edité par matheo 03-Juin-2018
https://www.ted.com/talks/clay_shirky_how_the_internet_will_one_day_transform_government?language=fr

ça peut surement aider dans la compréhension, j'aurai surement dû le mettre un peut plus en avant, je le trouve juste un poil pas assez dans la retenue de peur qu'il ne fasse passer l'open source et git pour une utopie.

Mais il énonce des principes fondamentaux forts des deux :
- déjà que ça marche pour des millions  de dev, donc ce n'est pas une utopie (15 millions d'utilisateurs github maintenant et c'est exponentiel il me semble)
- c'est distribué et peut cher à mettre en place
- la transparence est bien mais n'est pas suffisante et ne va que dans un sens
- git permet un modèle horizontal et non plus vertical (à modérer évidemment)
- git est une nouvelle forme d'argumentation
- git permet la collaboration entre des personnes des milieux sociaux assez radicalement divers (on pourrai parler de pauvreté et de la fracture numérique mais c'est un autre sujet)
- git induit l'un des meilleurs systèmes d'historisation jamais fait.
- etc

Mais il va à peine assez loin pour moi :
- git chamboule les théories du travail tels qu'on les connaît/connaissait (je peux développer), par exemple, j'ai travaillé à distance pendant un an, ce qui aurai été impossible sans git, je l'affirme dans mon cas.
- l'open source chamboule la manière dont on voit la propriété intellectuelle en terme social, philo et économique
-  Si je ne m'abuse, c'est la première fois que l'homme commence réellement à arrêter de réinventer plus la roue, ce, à une grande échelle

y tout y tout
0 votes
répondu par gh00 (3 points) 11-Juin-2018
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.
commentée par Trenty Crapaud déjanté (237 points) 12-Juin-2018
edité par Trenty 24-Juin-2018
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
répondu par Trenty Crapaud déjanté (237 points) 24-Juin-2018

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

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

commentée par Trenty Crapaud déjanté (237 points) 25-Juin-2018
Il existe aussi https://legacy.gitbook.com/
0 votes
répondu par Loy Annecy Tétard déjanté (22 points) 07-Aout-2018
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.
...