URL: https://linuxfr.org/users/trim/journaux/forker-ou-ne-pas-forker Title: Forker ou ne pas forker ? Authors: Adrien Dorsaz Date: 2018年09月15日T10:36:33+02:00 License: CC By-SA Tags: Score: 41 Cher journal, Ces derniers jours, je me suis dit qu'il fallait vraiment que je me mette à me faire un budget annuel pour connaître ce que je peux dépenser sans avoir peur de me mettre dans de mauvais draps. Je me souvenais d'un logiciel sympa pour suivre les dépenses qui s'appelle [HomeBank](http://homebank.free.fr). Je commence à regarder les fonctionnalités à propos du budget et je me rends compte qu'on peut le saisir, mais qu'on ne peut pas avoir de vision annuelle. Pourtant c'est bien ce que j'attendais d'un outil qui me propose de saisir un budget vu que c'est le principe même d'un budget. Bref, je vais donc voir l'état du projet et je tombe sur son site de développement sur la forge Launchpad de Canonical. Je ne suis pas trop fan de cette forge, mais j'avais eu l'occasion de la côtoyer par le passé (de ce que l'historique de Launchpad me dit, c'était pour proposer des petites corrections de Movim il y a quelques années, je l'avais complètement oublié ^^). Je savais donc comment voir l'état du projet, lire les bugs et récupérer le code avec Bazaar Explorer. Je vois un [rapport de bug](https://bugs.launchpad.net/homebank/+bug/1719184) qui fait exactement le même constat que moi à propos des budgets et qui propose même une capture d'écran d'un autre logiciel de compta pour montrer un écran qui serait utile. Ce n'est rien de bien compliqué en terme d'interface: un tableau de toutes les entrées du budget avec le détail pour chaque mois. La dernière colonne est la somme annuel pour chaque entrée du budget et la dernière ligne contient la somme pour chacun des mois. ![Exemple proposé par le rapport](https://bugs.launchpad.net/homebank/+bug/1719184/+attachment/4956164/+files/budget.png) Je me dis que, bon, HomeBank ça doit être sûrement du Python (oui, Launchpad est assez mal fait par rapport à GitLab, on ne voit pas le code facilement, je ne sais jamais où est le bon lien...) et que j'avais déjà eu l'occasion de faire un peu de GTK pour mon OpenMoko à l'époque. Du coup, cet écran ne devrait pas être trop dur, je télécharge donc le code depuis Launchpad. J'ouvre le projet avec Gnome Builder: le bon côté c'est que le projet utilise les auto-tools standards, le mauvais côté est que ce n'est pas du tout du Python, mais du C. Je ne me décourage pas: j'ai appris aux études à faire du C et je sais déjà comment marche dans les grandes lignes Gtk. Là je comprends toute la douleur de ne pas avoir de gestion de Programmation Orientée Objet native dans le langage: des noms de fonction à rallonge qui prennent énormément d'arguments, juste parce qu'il faut toujours repasser l'objet que l'on souhaite modifier et ce avec le bon type et donc il faut référencer correctement le pointeur. Heureusement, Gtk est très bien pensé et propose déjà des macros qui aident beaucoup pour s'en sortir avec ce manque de C. Je ne m'étais jamais rendu compte à quel point la POO est pratique pour le développeur: avec une ligne de POO typique, on donne le nom de l'objet à modifier (sans avoir à le triturer avec des Macros), la méthode que l'on souhaite exécuter sur cet objet (sans nom à rallonge, puisque l'héritage permet de retrouver facilement la bonne méthode) et on ne donne en paramètre de la méthode que ce qui est utilisé pour appliquer la méthode. Clairement, la POO permet donc de se concentrer sur la fonctionnalité métier souhaitée et je trouve ça un vrai plus: il y a beaucoup moins de distractions dans l'algorithme implémenté (et aussi moins de risques d'erreurs puisque le code est plus concis). Bref, cette ligne que j'ai codé en C: ```c GtkWidget *view; view = gtk_tree_view_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(view), col); ``` Ce traduirait en C++, à peu près comme ça: ```cpp Gtk::TreeView view; view.append_column(col); ``` Enfin bon, après quelques jours de compréhension du code de Homebank et de prototypage, j'arrive à développer la fonctionnalité désirée: ![Rapport d'équilibre du budget dans HomeBank](https://bugs.launchpad.net/homebank/+bug/1719184/+attachment/5188007/+files/Capture%20d%E2%80%99%C3%A9cran%20de%202018-09-12%2016-44-26.png) Maintenant que le challenge que je m'étais imposé est passé et en attendant la réponse d'un développeur sur Launchpad, je feuillette le site du projet HomeBank. C'est à ce moment là que, *au dernier* paragraphe de la page [Dévelopement](http://homebank.free.fr/fr/development.php), suite à tous les traditionnels paragraphes "Comment tester", "Comment rapporter un bug", "Traductions", je me rend compte qu'il y a un paragraphe "Source code repository" et qui dit ceci (la traduction est de moi):> I don't need help for coding purpose. You may submit patch (or branch, but I rarely uses it) for bugfix thus if you have skills to, but avoid launching yourself arbitrary alone in an enhancement (wish bug), if you do really want, contact me first.>> One of the reason is that the code trunk available in launchpad is always related to the current stable release. The real development trunk is never public until RC stage, so you can't contribute to it. I do prefer working that way for freedom of breaking thing and refactor simply.> ---> Je n'ai pas besoin d'aide pour développer le code. Vous pourriez envoyer des patch (ou des branches, mais je les utilise rarment) pour des correctifs si vous en êtes capables, mais évitez de vous lancer seul de manière arbitraire dans une nouvelle fonctionnalité, si vous le voulez vraiment, contactez moi d'abord.>> Une des raisons est que de code disponible dans launchpad est toujours liée à l'actuel version stable réalisée. Le vrai code de développement n'est jamais publique jusqu'à l'étape de release RC, ainsi vous ne pouvez pas contribuer. Je préfère travailler de cette manière pour la liberté de casser les choses et de refactoriser simplement. Et là je me dis que, wow, Bazaar est tellement mal prévu que le développeur de l'application n'est pas capable de collaborer avec cet outil. Et je comprends enfin pourquoi dans les commits de Bazaar, je ne vois que des messages du style "Release 5.x". Bon, je me dis qu'il faut que je lui écrive un petit message pour m'excuser, car j'ai fait exactement ce qu'il a dit de ne pas faire. Tout en essayant de lui faire passer un message du style "si bazaar ne sait pas gérer des branches de travail personnels facilement, il faudrait vraiment étudier la possibilité de migrer sur une forge Gitlab (soit gitlab.com, soit gitlab.gnome.org).". Mais, je lis une seconde fois le message du site et je vois que c'est écrit que ce n'est que "un des arguments" et que les autres sont donc complètement éludés... C'est là que je me dis, "Mince ! Le projet HomeBank est un super boulot, mais le développeur principal ne souhaite pas avoir de contributions et préfère développer seul dans son coin.". Maintenant, j'ai un cruel dilemme pour ce weekend: * Attendre de voir ce que le développeur va répondre sur le rapport de bug, mais je n'y crois pas trop, vu que le site du projet est assez claire (ma maigre chance est qu'il vient de faire une release du projet et que donc sa branche de développement privée ne doit pas être si éloignée du code source stable) * Dois-je écrire et ennuyer le développeur de HomeBank, malgré le message sur son site ? * Ou, puisque le site est assez claire, je devrais forker le projet pour que je puisse utiliser Git avec confort, éventuellement passer à un système de compilation plus moderne comme `meson` et pourquoi pas faire inclure le projet dans le projet GNOME directement pour qu'il bénéficie directement de sa structure communautaire et d'infrastructures solides ? Je sais pertinemment que la dernière solution est assez indélicate et que ce sera pris comme un "fork agressif", mais d'un autre côté, le projet original n'est pas communautaire et ne souhaite clairement pas l'être. Enfin, je sais que l'ambiance de LinuxFR est assez chaude, surtout sur le sujet des forks agressifs, mais j'aurai quand même bien voulu avoir votre avis sur cette situation... Finalement, peut être que je devrais juste attendre, mais ça fait du bien d’extérioriser :D

AltStyle によって変換されたページ (->オリジナル) /