Outils pour utilisateurs

Outils du site


issue132:mon_histoire

Ceci est une ancienne révision du document !


Welcome to these few articles where I share how I tackled and solved a problem using a little of my past knowledge and leveraging the marvellous open source world. In other words, I had an issue with a piece of software (rhythmbox) and addressed it by writing a little program.

Bienvenue à la lecture de ces quelques articles où je partage comment j'ai abordé et résolu un problème en utilisant un peu de mes connaissances passées et en tirant parti du merveilleux monde de l'open source. En effet, j'ai eu un problème avec un logiciel (rhythmbox)que j'ai résolu en écrivant un petit programme.

Why have I decided to write this? Open source communities are about giving back, and I believe this is a way for me to give back, not only to the Ubuntu community, but also to Full Circle, that, as you will see, has a lot of credit in this. After you read this, I hope you’ll be even more enthusiastic about the possibilities that OSS offers, and maybe give it a go, try doing something yourself (it shouldn’t necessarily be coding).

Pourquoi ai-je décidé d'écrire ceci ? Les communautés de l'Open Source offrent la possibilité de contribuer, et je crois que, pour moi, écrire ici est une façon de contribuer, pas seulement en faveur de la communauté Ubuntu, mais aussi pour Full Circle, qui, comme vous le verrez, a beaucoup de mérite dans ce domaine. Après avoir lu ceci, j'espère que vous serez encore plus enthousiaste sur les possibilités qu'offre OSS, et peut-être essaierez-vous vous-même d'apporter quelque chose (cela ne devrait pas nécessairement être du codage).

What you will not find in these pages is how to learn to program, or a quick course on Python, also because there’s already a superb column by Greg D. Walters. I will use my program to tell my story, and to share some specific tips that show why open source is called “open” and why that is a benefit for everyone. You don’t have to be a coder or a geek to enjoy it. I know how to write a program because that was my job 30 years ago; since then I moved into a different field. When I wrote the piece of software I am sharing, I had no technical knowledge of writing code for Linux and Gnome, and didn’t know Python at all.

Dans ces pages vous n'apprendrez pas à programmer, vous n'y trouverez pas un cours rapide sur Python, parce qu'il y a déjà eu une superbe chronique écrite par Greg D. Walters. Je vais utiliser mon programme afin de raconter mon histoire et partager quelques conseils spécifiques qui démontreront pourquoi l'open source est appelé “open source” et pourquoi c'est bénéfique à tous. Vous n'avez pas besoin d'être un codeur ou un geek pour en profiter. Je sais comment écrire un programme car c'était mon travail il y a trente ans ; depuis lors, j'ai changé de domaine. Quand j'ai écrit le logiciel que je partage, je n'avais aucune connaissance technique de l'écriture de code pour Linux et Gnome, et je ne connaissais pas du tout Python.

So here is my story. I switched to Linux 12 years ago, a bit for curiosity and a bit because I was fed up with the idiosyncrasies of Windows (XP at the time): getting slow, and every six months format and reinstall to clean up the system. I started with Fedora Stentz, upgraded to Bordeaux, and then moved to Ubuntu.

Voici donc mon histoire. Je suis passé sous GNU/Linux il y a 12 ans, un peu par curiosité et un peu parce que j'en avais assez des bizarreries de Windows (XP à l'époque) : qui devenait lent, et tous les six mois il fallait réinstaller le système pour le nettoyer. J'ai commencé avec Fedora Stentz, que j'ai ensuite mise à jour vers 'Bordeaux' (Ndt: la version de Fedora, non la ville du vin), puis j'ai migré sur Ubuntu.

I don’t remember when I stopped dual-booting, probably 6 years ago when I realised I was doing everything in Linux and never using any other OS. Like many, one of the things I do with my computer is listening to music; as a matter of fact, I’m writing this with the rhythm of Beautiful Day from U2! In those years, I tried a few music players but I tended to stick with the default one provided by Canonical. Thus, for a little while I used Banshee, but mainly Rhythmbox which is described as “a reliable, dependable, and extensible GTK music player that uses the Gstreamer backend”.

Je ne me souviens plus à partir de quand j'ai arrêté le dual-boot, il y a probablement six ans, quand j'ai réalisé que je faisais tout sous Linux et que je n'utilisais plus d'autre système d'exploitation. Comme nombreux d'entre nous, j'écoute souvent de la musique sur mon ordinateur (En fait, j'écris ces lignes au rythme de “Beautiful Day” de U2). Durant ces années, j'ai essayé quelques lecteurs de musique, mais j'ai eu tendance à m'en tenir à celui par défaut fourni par Canonical. Ainsi, pendant un certain temps, j'ai utilisé Banshee, mais surtout Rhythmbox qui est décrit comme “un lecteur de musique GTK fiable et extensible, qui utilise le backend Gstreamer”.

It definitely satisfied my needs and ticked all the boxes for me. I had only one little issue: sorting. It is a nice feature that offers you the possibility of showing artists and albums in a different order from the mere alphabetical one. It does that by adding more fields to the standard MP3 ones: artist sort order, album sort order, album/artist sort order, and composer sort order – see the Illustration. I wanted to use this approach, so that, for example, ‘The Script’ would show up under ‘S’ and not ‘T’. To do so, I just need to populate the proper field (artist sort order) with “Script, The” and so I did. It worked exactly as I wanted. You can see the result in the Illustration. My next step was to sort all the albums for an artist in a chronological order – to achieve this, I simply put the year of release in the album sort order field. Of course this is how I would like to see my music, you may want it completely different.

Cela a pleinement satisfait mes besoins et “ticked all the boxes for me”. Je n'avais qu'un seul petit problème : le tri, fonctionnalité intéressante qui vous offre la possibilité de montrer les artistes et les albums dans un ordre différent que le simple ordre alphabétique. Cela se réalise en ajoutant bien plus de champs à ceux qui sont standards au MP3 : ordre de tri de l'artiste, ordre de tri de l'album, ordre de tri de l'album/artiste, et ordre de tri du compositeur - voir l'illustration. Je souhaitais utiliser cette approche pour que, par exemple, 'The Script' apparaisse sous la lettre 'S' et non pas sous la lettre 'T'. Pour cela, il suffit de remplir le champ approprié (ordre de tri de l'artiste) avec “Script, The” et c'est ce que j'ai fait. Ça a fonctionné exactement comme je le désirais. Vous pouvez voir le résultat dans l'illustration. L'étape suivante a été de trier tous les albums d'un artiste dans un ordre chronologique. Pour y parvenir, j'ai simplement mis l'année de sortie dans le champ d'ordre de tri des albums. Bien sûr, c'est comme ça que j'aimerais trier ma musique, mais vous préféreriez peut-être une classification complètement différente.

There were only two issues. First of all, I had to enter all of this information for every track, albeit using multiple selection helps, it is still a time consuming process. Second, at times the information was lost… after I closed Rhythmbox and relaunched it, some tracks had the sort fields blank. I believed it was a bug, but a search on internet showed I was the only one suffering so I was undecided what to do. I could have lived well without sorting the information, but at the same time it was a pity. Being a former programmer and user of the Rhythmbox OSS, I took a look at the source code of Rhythmbox to see if I could tinker with it. I found it too complicated for me, I had to understand too many new concepts (Gnome, Gtk, data structures), and soon discovered it was too much for me.

I have read Full Circle since the first issue, and I noticed the Python column by Greg – that gave me the idea to try to learn Python, solve my issue, and possibly offer the community a piece of software that made it easier to enter sort information. This for me is the spirit of OSS, and, during the course of this article, we’ll see why the same thing would have been way more difficult in a closed source environment.

I went straight to Greg’s lesson number 1 and tried to practice a little with the classic “Hello World” program. In a short time, I started addressing my sorting problem and began writing my first program in Python. I called it fixrhy and tried to figure out how Rhythmbox uses the sort information. Looking at the documentation (https://developer.gnome.org/rhythmbox/stable/RhythmDB.html), I saw there is an “Object” that provides access to the song DB. Again, it proved to be a little too much to chew on at the time and therefore I decided to go along a different road. I discovered that the information is saved in a XML file, so I tried to play with it. Before the next chapter, where I talk about my first program, I would like to point out that the route I took is not the ideal one. Writing a plugin and using the official API would have been more appropriate and future-proof. But, at the time, I just wanted to try Python and come up with a quick fix, and so I did.

issue132/mon_histoire.1525762794.txt.gz · Dernière modification : 2018/05/08 08:59 de christo.2so