Skip to content
Extraits de code Groupes Projets
Valider dd0c0dc6 rédigé par Lionel Dricot's avatar Lionel Dricot
Parcourir les fichiers

Merge branch 'master' into 'master'

Lucas Nélis Open source contribution project

See merge request ldricot/lingi2401!288
parents 2f8c9cc3 99e229e7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# Open Source Contribution Project
| **Author:** | _Lucas Nélis_ |
| ------------------------ | ---------------------------------------- |
| **Date:** | 05/12/2022 |
| **NOMA:** | 54431700 |
| **Academic Year:** | 2022-2023 |
| **Open Source Project:** | [XMage](https://github.com/magefree/mage) |
| **License:** | [MIT License](https://github.com/magefree/mage/blob/master/LICENSE.txt) |
## Installing a free Operating System
_9/10/2022_
I began my journey in the free software world by installing Ubuntu in dual boot on my computer. At first, I was a bit scared because I didn't have a lot of space left on my SSD and it had already been an issue in some projects. Fortunately, I found a wonderful tutorial to install Ubuntu and mount both of my disks which I had not considered at first. The installation went pretty smoothly at the exception of the partitioning of my main disk. Windows was refusing to give access to the whole storage so I couldn't shrink a partition big enough for Ubuntu. I had to disable weird things such as hibernating and it finally worked ! Now I'm able to launch Ubuntu and it feels like an achievement.
## Searching a project
_10/10/2022_
Installing Ubuntu motivated me in continuing to work for this course, I started searching for projects to contribute to. But as I was searching I realised that there were so many that if I continued searching randomly I wouldn't find anything that I liked. I decided to search based on languages I was familiar with. I decided to go with Java and Erlang, there were a lot of Java project (maybe too many) so I quickly decided to look after Erlang projects but each project that I found felt very hard to dive in. I decided to let the research aside for a moment and focus on finding subjects that I would like the projects to be about.
_18/10/2022_
I started my search again, but this time I decided to browse the web instead of Github. I found a nice website called [libhunt](https://www.libhunt.com/). Thanks to the site, I was able to browse projects by subject. I wanted to find a project with some degree of abstraction in order to avoid the problem I had with the Erlang projects. Therefore I looked for projects related to games and especially about Magic The Gathering, a card game. Magic the gathering had always been a game that I liked but didn't feel like playing because of it's high cost due to new cards coming out frequently. I found a repository called mage for Magic Another Game Engine. It allows players to play for free and supports most of the card sets and game modes.
## Building XMage locally
_22/10/2022_
I tried to compile and build the application but it is harder than I thought. However, there is a developper documentation which is quite clear. I followed it but I can't make the server and client work together locally.
_5/11/2022_
After some time, I came back on the project and managed to run a version locally. I had a harder time founding how to contribute to the project, they encourage developpers to create an easy new card to begin but they don't explain their communication process. People don't seem to open issues in order to create new cards and seem to directly open pull requests. The documentation indicates scripts which gives a list of cards waiting for an implementation so I picked one that seemed easy.
## Implementing and testing ~~Fortified Beachhead~~ Rescue Retriever
_9/11/2022_
After implementing a card by myself, I searched again if I wasn't supposed to first ask to be in charge of the card. I found a discord server and asked them how I should proceed. They told me that each set of cards had a [dedicated issue](https://github.com/magefree/mage/issues/9598) and that I should ask on that one. I found it and asked what I should do with the work that I had already done given that someone was already working on it. I dropped what I was working on and started working on Rescue Retriever the card that the maintainer recommanded me to work on.
_10/11/2022_
Using the experience of the codebase I acquired implementing my first card, I quickly finished the implementation of Rescue Retriever and began to test it. Testing took me more time that I thought. Indeed, I had to test multiple configurations of boards to ensure that the card was doing what it was supposed to do. I didn't find any errors with neither with my manual tests nor with the automatic tests. I opened a [pull request](https://github.com/magefree/mage/pull/9752). I was now waiting for the maintainer to review it.
_11/11/2022_
I received the review of my code and did some changes accordingly. I thought it would be a good idea to merge the project locally before submitting my updates but it resulted in tests not passing anymore as the maintainer pushed [failures](https://github.com/magefree/mage/commit/9e57437ae136bee770716d9fbdbc365e28c25e22#commitcomment-89565722). I submitted my changes and requested a new review. My pull request was [merged](https://github.com/magefree/mage/commit/30a498145e204254b623351442c7a4a55367d4c8) into the project.
## Conclusion
In conclusion, browsing projects can feel scary at first, especially when projects don't contain a lot of documentation. But, with good documentation and an easy way to communicate with maintainers, contributing to a project feels nice and helped me gained confidence in my skills.
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