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

Merge branch 'master' into 'master'

Added Charles Xicola's project report.

See merge request ldricot/lingi2401!299
parents 880b563a 7f268937
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
**Title** : Open Source Strategy for Software development
**Author** : Charles XICOLA
**Last updated** : 23/12/2022
**NOMA** : 3456-22-00
**Year** : 2022/2023
**License** : BSD 3-Clause "New" or "Revised" License
*Detail of the license* : A permissive license similar to the BSD 2-Clause License, but with a 3rd clause that prohibits others from using the name of the copyright holder or its contributors to promote derived products without written consent.
**Note** : There is no pull request in this project. Instead, my changes can be found on the origin/develop branch of the project. My file is found at :
*gem5\src\mem\ruby\network\garnet\HOWTO.txt* .
# The Project
The project I was interested in is the development of the software "gem5". It is a software that aims at simulating a computer, from entire system down to its tiniest parts. It is widely used, mainly in the research field. It is reportedly quoted in some 5000 articles in recent years. The part I modified is called "Garnet", which is itself a part of "Ruby".
Those parts are used for testing the network of cores of a processor only. It has a very specific use.
# Why this project
During Summer 2022, I was in an internship in a French research structure (IRISA-INRIA). The goal of my team was to create a modified version of gem5, that would include new components to test. I had to modify the behavior of the software regarding these new components, and add some features. I was really invested in this project, and I wanted to add my knowledge to the project, in order to better help future modification be done easier, as most modifications I made were only a few lines long, but finding where to implement it was a long process.
# What has been done
I chose to implement a textfile, that I called "HOWTO.txt". I put a dozen short tips that help implementing what I had to do, indicating where do do what and how. Also, when something is really hard or not possible, I explained what I had tried and what had failed. I put titles of how to change what, then wrote an explaination and the functions/files to modify to add a specific feature or change a behavior.
# Connection with the community
Because the software is widely used, the contribution system is very well rounded. There is a website detailing how to install the project, its documentation and its contribution system.
Useful links :
- https://www.gem5.org/getting_started/
- https://www.gem5.org/documentation/
- https://www.gem5.org/contributing/
There is a Slack forum with dedicated channels, where it is possible to ask questions or seek help with the software. There is always a maintainer answering,as the community is very active. There are numerous active PhD students and scientists on this forum.
There is a detailed list of issues that remain to be done. This system even indicates the difficulty. Sadly, no issue tackles the part of the project I tackled.
The ticket system :
https://gem5.atlassian.net/jira/software/c/projects/GEM5/issues
I asked on the forum if Garnet was actually a part of gem5 in order to make sure I was asking questions at the right place. It turns out Garnet originates from another project, which later was merged with gem5 15 years ago. As this module is very robust, there was no update whatsoever since the merge. I then asked if modifications were welcome or not, which maintainers answered yes. They claimed it may benefit someone as I already studied the code.
So I went ahead, studied the module again to make a list of the things I modified and how to do it, then wrote a short, clear text file givings advice and tips about how to implement some features, where to do it, what to modify, what is possible to do, or is very hard etc...
# Difficulties
gem5 only works under Linux, and is hard to adapt to windows. I used a Ubuntu 20.04 virtual machine to run the software. Installation was rather hard despite having very simple instructions. I had an error with a file, which somehow fixed itself. This is very likely because I was doing something wrong without realizing.
Regarding the contribution, I had no trouble, as I was juste writing a text file.
When I tried to commit the change, I had issues with the "hooks". Those are modules which check the shape and form of the code in order to make sure the code respects certain standards. Hooks are very sensitive, as I wrote my textfile withlines a bbit too long and I had to change it.
When I tried pushing my change the first time, I had branch issues : I could not have access to the develop branch. I waited and tried again, which worked.
Then I was able to push and commit the change. To submit it to review, I needed to send it over to Gerrit, which required an identification using different scripts, and I was not able to make them work in time.
# State of the commit
The changes are staged and committed, but not submitted to review yet. Gerrit needs an identification using username and password, but somehow I can't set the password on account creation or change it later. I found a way to set an ID/password despite an empty ID, but the process is long and complex, I could not have it to work in time.
# Journal
2/11/2022 : accès au Slack des développeurs.
3/11 : Recherche d'issues à traiter, liens utiles en dessous.
https://www.gem5.org/contributing
https://gem5.atlassian.net/jira/software/c/projects/GEM5/issues/?filter=allissues
10/11 : Téléchargement de gem5, questions sur le forum Slack.
20/11 : Recherche des fonctionnalités que j'avais implémentées, vérification de leur code.
2/12 : Tentative d'installation de gem5.
7/10 : Installation de gem5, installation des hooks.
10/12 : Rédaction du HOWTO.txt, en vérifiant les fonctions/fichiers à modifier.
15/12 : Tentative de push, problèmes de hook.
20/12 : Vérification de la rédaction du HOWTO.txt
21/12 : Première tentative de push, problème de branche.
23/12 : Push des changement sur la branche de développement. Tentative d'ajout pour review sur Gerrit, mais problème d'identification.
# Conclusion
I was able to see how wide the world of open source is, and how much it is possible to contribute and help others. I am sad I could not go to the review phase in time, despite my code being committed, by lack of time and experience.
I hope I can tackle this issue later and actually help guiding later development or modification of the GARNET module, as it may help tons of students and scientists.
I learnt how a wide community can be organized arround an open-software project, using several tools such as the Jira, Gerrit and obviously their website and in-code documentation.
# Book
Bible
I wanted to enlarge my culture about religion, and confront the way I see them practiced in society, and confront the difference with the corresponding sacred text in order to better understand the aspects of religion. This book is the one I started with, with a specificity : I started reading the gospels only, in order to seize what is actually claimed by the christian prophet, to better compare it with the rest of the book later.
If I had to recommend something lighter, I would recommend "Ravage" from René Barjavel, which depicts a trait everyone forgets : almost nobody can be self-sufficient nowadays.
\ No newline at end of file
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