-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Faire tourner Archéo Lex sur tous les codes avec une base LEGI récente #28
Comments
À date :
|
Je mentionne ici une idée pour ne pas oublier, mais ça pourra probablement faire l’objet d’un bug séparé. Avec mes déboires de versionnement sous Git des fichiers de la base LEGI et en parallèle en étudiant les tréfonds de Docker, notamment le système de fichiers AuFS, je me dis que ça pourrait être intéressant de voir les fichiers de la base LEGI comme une superposition de couches, donc de décompresser la version initiale dans un répertoire puis chaque màj chacune dans des répertoires propres (à voir comment gérer les suppressions de fichiers). Ensuite, à la lecture, pour lire un répertoire spécifique :
En comparaison de l’algorithme « on décompresse la base LEGI jusqu’au jour J », l’avantage est d’avoir de pouvoir lire en même temps toutes les livraisons de la base LEGI. En inconvénient, cet algorithme est plus lent à la lecture. Il est aussi possible de mélanger les deux stratégies et de combiner ça avec la gestion de l’espace disque :
Dans le même ordre d’idée, peut-être que les systèmes de fichiers avec la fonctionnalité de snapshot pourraient être intéressants (par exemple btrfs ou zfs, cf comparaison des systèmes de fichiers). Je n’ai jamais utilisé ce type de fonctionnalité, mais ça peut valoir le coup de s’y pencher. |
Note que la plupart des hebergeurs Git gratuits (bitbucket, gitlab, github) limite les .git a 1GB et au dela suppriment des fichiers au hasard. Autre solution a envisager: stocker des tarball dans https://git-lfs.github.com/ |
Je ne comprends pas pourquoi tu persistes à vouloir extraire les archives, ça ne fait que gâcher de l'espace disque et du temps. Je reste aussi sceptique sur l'export vers Git, d'autres projets l'ont déjà fait, et quitte à utiliser un logiciel existant MediaWiki est bien plus puissant que la meilleure des interfaces web Git. |
Autre solution: subdiviser les donnees pour les stocker dans plusieurs repo. Pourquoi pas en faire un autre qui les ajoute tous en submodules. |
@fenollp La place n’est un problème que pour la base LEGI originale (~10 Gio lorsque décompressée). Après extraction avec Git, les dépôts ne font que quelques centaines de Kio après compression (git gc), par exemple les 4 que je viens de terminer (pas encore publiés) :
Ils font effectivement jusqu’à une centaine de Mio avant compression mais vu que l’étape de compression ne prend que 15-30s, il ne faut pas s’en priver. Au passage, ce niveau de compression important montre le degré de modification au final très faible dans les historiques. Avant compression :
|
@Changaco Sur ma volonté de prendre en compte les archives, c’est parce que je préfère pouvoir recalculer des choses après coup et avoir des résultats reproductibles. Étant donné la rigueur du format Git (changer un caractère change le numéro de commit de la version en cours et de toutes les versions à la suite), je préfère pouvoir suivre assez finement les changements. Par exemple, si la mise en page est changée dans un article lors d’une livraison, je peux :
Sur l’existance de ce cas, je me suis longtemps demandé si ça valait le coup de le prendre en compte, et je suis tombé une fois sur une délibération CNIL (pas la base LEGI mais similaire donc) où il avait été un jour publié la délibération, puis dans une livraison ultérieure la même délibération mais anonymisée. Donc la réécriture existe, et je pense que le cas ne peux pas être évité, il peut toujours y avoir des erreurs (sur le texte lui-même) qui sont corrigées lors de livraisons suivantes. Je précise que le comportement actuel est le premier scénario car l’implémentation actuelle est trop simpliste, mais c’est à mon sens un bug et il serait souhaitable de basculer vers le deuxième scénario (à moins d’une autre solution). Après, sur la gestion en pratique de la base LEGI et pour des questions de performance comme expliqué dans mon commentaire, je reviens sur mon idée d’archiver sous Git la base LEGI car il est effectivement beaucoup plus performant de réextraire les .tar.gz. Il est possible aussi que le scénario "AuFS" soit également peu performant, mais pour l’instant je n’en sais rien. |
@Changaco Sur le versionnement Git ou MediaWiki, ça rejoint le « est-ce mieux d’avoir tout dans un fichier unique ou dans une arborscence ? », c’est-à-dire qu’il est possible d’extraire au format qu’on veut. Il faut soit se mettre d’accord – c’était l’approche un peu testée depuis deux ans entre les quelques projets similaire – soit accepter qu’il n’y a pas une réponse unique, mais que cela varie en fonction des besoins et des préférences. Je m’oriente vers cette deuxième voie (cf par exemple #18 visant à rajouter des liens internes : c’est utile pour certains usages mais pas tous, donc il faut mettre un switch et ceux qui veulent des liens activeront le switch). Avec le temps et les usages, j’imagine que certaines versions seront plus utilisées, par exemple une « Git + Markdown + fichier unique », une « Git + Markdown + arborscence » et une « MediaWiki + wikitexte + fichier unique ». Chacune aura ses avantages, ses inconvénients, et son utilité vis-à-vis d’un besoin spécifique. En résumé, pull requests acceptées pour des variantes dès qu’elle peuvent être sélectionnées via un switch. |
Quand je dis "extraire les archives" je parle de faire un Détecter les corrections des contenus ou de leurs mises en page ne nécessite pas de conserver les anciennes versions. |
@Changaco je ne suis pas sûr de comprendre ce qe tu veux dire, mais utiliser MediaWiki "à la place de Git" est une hérésie technique : base SQL contenant toutes les versions avec des diffs en PHP. |
Le fait que Git ne puisse pas modifier un ancien commit sans modifier tous les suivants est une des raisons qui font qu'à mon avis il n'est pas un bon format d'export pour les bases de données juridiques. Si le but est de pouvoir explorer les textes et les différences entre versions alors MediaWiki est meilleur que Git. Si le but est d'exploiter les données d'une autre manière alors il vaut mieux utiliser directement la base SQLite. Bref, je ne vois pas dans quel cas passer par Git est bénéfique. |
Je cherche à comprendre ton argument, quel est le cas pratique pour une bd juridique de modifier un ancien commit ? Pour les diffs : Git, dont c'est l'unique utilité, est très largement supérieur à 2 requêtes MySQL + un diff calculé en ugly PHP. |
La nécessité de pouvoir corriger un ancien commit a été expliquée tout à l'heure par @Seb35. Un diff n'est pas une opération très coûteuse, l'implémentation de MediaWiki est probablement bien suffisante. (Par ailleurs je ne suis pas convaincu que Git soit plus efficace pour calculer un diff entre deux versions non-adjacentes, car il doit d'abord reconstruire l'ancienne version, mais bon on s'éloigne du sujet.) |
@fgallaire @Changaco Cas existants de modifications que j’ai recensé :
Il n’y a pas « d’utilité » à changer la base de données, juste qu’il y a des modifications « éditoriales », qu’il gérer pour bien faire les choses. |
(Je rappelle qu'un des sens du nom "Git" est "stupide", et que ce n'est pas un hasard. C'est loin d'être un gestionnaire de version idéal même s'il est beaucoup mieux que ceux qui l'ont précédé. Pour le futur il y a le projet Pijul qui est potentiellement prometteur.) |
Sur les histoires de stockage, Git comme MediaWiki stockent les textes entiers (cf Git internal), et tous les deux recréent les diffs à la volée. Bien sûr, les deux utilisent la compression, soit en interne pour Git, soit via MySQL pour MediaWiki. Si on compare les deux :
Après, chacun a ses finalités, ses cas d’usage, etc. donc on peut tout à fait préférer l’un ou l’autre, et trouver qu’un usage est meilleur sur l’une ou l’autre plateforme. |
C'est vrai que MediaWiki a aussi des limites (par exemple je ne crois pas qu'il sache faire un diff sur plusieurs pages en même temps, or on ne peut pas mettre tout un Code dans une seule page). Je ne dis pas que c'est l'outil parfait, juste que dans ceux existants il me semble être meilleur que Git si le but est d'avoir une alternative basique à Légifrance qui permette de visualiser les différences entre versions. Ceci dit je pense qu'il vaut mieux construire ses propres outils que d'essayer de détourner un existant jusqu'à l'absurde, donc comme MediaWiki et Git semblent tous deux inadaptés j'opterais plutôt pour des solutions maison. |
Le lien que tu donnes n'explique que le fonctionnement basique de Git, la vraie "magie" est dans les Git Packfiles. |
Cette issue est en passe d’être résolue. Plusieurs alignements sont en passe de prendre effet pour rendre cette production possible (110k textes dans la base LEGI, 45% d’arrêtés, 45% de décrets) :
|
La version gratuite et hosted de gitlab donne 2000 minutes de CI par mois, un cron et un cache. Pourquoi partir sur une solution qui nécessite de provisionner des VM, de payer le service et de faire du Ops ? |
Je crois pas trop aux trucs magiques "qui marchent tout seuls", il faut de toutes façons toujours faire de la config et des scripts. Pour l’instant, on est parti là-dessus parce qu’il faut avancer ; si tu veux proposer des PR pour des déploiements CI ou ailleurs, n’hésites pas. |
Résolu à 99,05 % = 104/105, tous les codes tournent quotidiennement depuis une semaine sur https://archeo-lex.fr et fonctionnent à part le code des communes (ça se voit pas sur l’interface web, mais lors de la màj 14/09 -> 19/10 il était en erreur, j’avais fait en sorte que ça affiche l’erreur, mais du fait qu’il n’a pas été mis à jour depuis le 19/10 l’erreur a été effacée). |
Bon, c’est résolu à 100 %. Tous les codes sont disponibles quotidiennement sur https://archeo-lex.fr. |
C’était à faire depuis quelques temps et Suzanne Vergnolle m’a d’ailleurs relancé il y a une dizaine des jours.
Ce bug est un bug de tracking, il sert à résumer l’avancement et à faire le point sur les différents problèmes que pourrait rencontrer un utilisateur qui débuterait avec Archéo Lex. Ce bug sera fermé lorsque tous les codes tourneront correctement. L’automatisation éventuelle est hors de portée de ce bug et doit faire l’objet d’un bug séparé.
The text was updated successfully, but these errors were encountered: