Skip to content
Extraits de code Groupes Projets
Valider 9a8ac1f4 rédigé par Tania's avatar Tania
Parcourir les fichiers

Report Tania Shafiei added

parent d981e1e9
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# **LINFO2401 Project Report : Contributing to an Open Source project**
---
| **Author** | Tania Shafiei |
| ----------------------- | -------------------------------------------------------------------------------|
| **Date** | 08/12/2024 |
| **NOMA** | 1745-18-00 |
| **Academic Year** | 2024-2025 |
| **Open Source Project** | [MediaElch](https://github.com/Komet/MediaElch) |
| **Pull request made** | [feat: replace spaces by another delimiter in renamer #1827](https://github.com/Komet/MediaElch/pull/1827)|
| **License** | [LGPL-3.0 license](https://github.com/Komet/MediaElch?tab=LGPL-3.0-1-ov-file) |
## Project Description
The MediaElch project is a media management tool designed for organizing and managing Movies, TV Shows, Concerts and Music collections. It provides an interface to easily catalog media, retrieve metadata, and apply changes for concerned directories and sub-directories. The files are stored as `NFO` files.
## My Connection to Open Source
I was in Louvain-li-Nux for 3 years, where I promoted the use of open-source software through various activities we organized each year to help students become more familiar with the subject and the use of open-source tools such as Git, LaTeX, GIMP, ... I never did pull requests on projects outside of UCLouvain courses, so this was my chance to discover a main aspect of open-source contribution.
## First Project Choice
With my boyfriend, we use several open source apps on a daily basis to make our life easier. So I wanted to contribute to one of them. Therefore, I first attempted to contribute to a grocery list and recipe manager [KitchenOwl](https://github.com/TomBursch/kitchenowl). An [issue](https://github.com/TomBursch/kitchenowl/issues/235) that interested me was a feature request to add the possibility to select interface language instead of having the device automatically use the default one. Unfortunately, the code was not easy to understand and it was unclear how I could efficiently add this feature without creating a real mess. There were also setup issues (customized ip address that didn't work) with the android version.
## Second Project Choice
I started digging into the other open source projects that we use and one of them is Kodi. Since it is a large project and I wanted to contribute to something smaller, I preferred to focus on a tool that we use to create the metadata for our movies, series, and music. This way, I could contribute to something related to it. Going through the issues, I selected [one](https://github.com/Komet/MediaElch/issues/1082) that directly concerned us. On Linux distributions, having space delimiters in folder names makes it quite annoying to navigate to them using the `cd` command. So, adding a feature to replace these space delimiters with other delimiters like underscores or dashes was a great idea.
## Information about Contributors
In total, there are 30 contributors but there are only two main contributors on this project : the owner [Daniel Kabel](https://github.com/Komet) and a maintainer [Andre Meyering](https://github.com/bugwelle) that started contributing 3 years after the project started. There has been no activity from the repository owner since 2018, and the maintainer is the only person accepting pull requests. The other contributors are relatively minor.
## Contribution Process
Even though there are not many contributions to this project, they are very welcome. The maintainer posted a response on the issue to highlight the files that needed to be changed in order to add this feature, which made my contribution easier.
I started reading the contribution guidelines. It was only required to fork the repository, create a new branch, make commits, and submit a pull request. The setup was well documented, and the code itself was easily understandable. For someone who had never programmed in C++ or, more specifically, worked with Qt interfaces, it wasn't that hard to learn the basics.
I started with something simple: adding the field to the interface and adapting the checkbox state, and then I moved on to the more challenging tasks : integrating the delimiter modification in the code.
Initially, I wanted to make it possible to change from any delimiter to any other to keep it as user friendly as possible.
However, I decided it would be better to focus mainly on changing spaces since the parsing was favoring them. I ended with minor tasks like ensuring that the state of the window stayed the same when closing and reopening the app.
I made an effort to keep the same structure when adding the new feature and to follow the structural rules such as the naming conventions for the functions and variables.
I submitted my pull request and received an answer three days later, thanking me for my contribution and providing feedback that pointed out minor changes that needed to be made. I committed the changes and asked if there were any other adjustments required. The maintainer made a commit to correct some other minor changes, add documentation and comments. He then accepted the pull request.
## Conclusion
It was a really nice experience to contribute to an open source project. It is quite satisfying to know that you were part of a project that you actively use. I really appreciated the communication with the maintainer of the app, which I found to be perfect for a first pull request and encouraging for future contributions.
---
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter