Skip to content
Extraits de code Groupes Projets
Valider 8a941d91 rédigé par Dimitri Wauters's avatar Dimitri Wauters
Parcourir les fichiers

Merge branch 'master' of github.com:dimitriwauters/lingi2401

parents ae2f1673 3dd2a53a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 984 ajouts et 32 suppressions
# Open Source Contribution Project
*Author:* Adrien Moinnet
*NOMA:* 70571500
*Year:* 2021-2022
*Selected project:* [LeagueStats](https://github.com/vkaelin/LeagueStats)
*License:* ShareAlike 4.0
# Chapter 1 - Finding a project
For the realization of this work, I first had to choose a theme, an interesting project, not too simple but not too difficult either.
In order to find the perfect project for this course, I decided to search on github by putting keywords related to my passions or projects that interested me. So I started to put "chess" or "3D LeapMotion" (since I'm going to use it for my dissertation, it could have been a good idea).
But unfortunately, either people didn't respond to my requests, or the projects were a bit too complex, or they were almost finished.
Therefore, I started to look for another topic including "League Of Legends" (a video game I played a lot and still play occasionally). I was able to find many codes related to bots to cheat or codes in Chinese or Korean.
# Chapter 2 - Project selection
After searching for a long time, I managed to find the rare pearl. A project that uses interesting applications for future projects (Vue, Javascript, Typescript, Nodejs, PostgreSQL, Redis, etc), an active project, a project based on an effective website and therefore, very often used by users, a relatively young and dynamic community and finally, a discord community to be able to discuss with the different developers of the project.
This project is called LeagueStats. It is a website based on the game "League Of Legends" and allows players to analyse their game data and obtain certain statistics about their games that are not available directly in the game (https://leaguestats.gg/).
# Chapter 3 - Launching the project
In order to be able to launch the project on his computer, I could follow the description of the project which was relatively well done. Therefore, I had to install some frameworks such as PostgreSQL and Redis, and then come the problems. I had a lot of trouble getting the project to work. I started to run the client code and the server code at the same time in order to test it. Unfortunately, I couldn't understand my mistakes very well. I had to create a PostgreSQL user, figure out how to get the APP_KEY and finally the RIOT_API_KEY. After having the help of a developer and the help of the project creator, I finally managed to launch the project.
# Chapter 4 - Looking for features to add or improve
In order to be able to contribute to the project, I obviously had to understand how the code works, read it in its entirety and look for features to add or improve.
After reading, I was able to make a small list of features to improve, such as :
• Creating a button to display 50 old matches (instead of having to press the 10 button 5 times)
• Improving the site by allowing to see the stats of the players of the previous years (for the moment, only the year 2021 is taken into account)
• To be able to display the data concerning the 5vs5 ranked matches
• Improve the display of the most played characters by activating the "only most played" button and by allowing to display more data concerning the games by inserting as for the main menu of the player
• Etc ...
As you can see, there are still a lot of features to add and improve on the site even if it is already quite complete for the moment.
# Chapter 5 - Choosing the feature to improve
To be honest, I didn't really have time to work a lot on the improvement of the site. All the steps already took me a lot of time, so I had to choose a feature that was not too difficult to implement and that did not require weeks of work. Therefore, I decided to implement a button to display more than 50 matches instead of 10 to allow players to see their match stats more quickly. I thought this was an important feature as it was causing a lot of problems in using the site.
# Chapter 6 - Pull request
After modifying two files and testing and verifying the functionality of my implementation, I made a pull request so that my functionality could be introduced into the original code. I haven't received a response yet but having spoken to the project creator, there is a good chance that it will be accepted.
# Open Source Contribution Project
Open Source Contribution Project
*Author:* Alberto Samele
......@@ -16,11 +16,59 @@ It all began with my search for an exciting project to work on. I knew that I wa
*What should I contribute to*... such a broad question. By typing "Swift" in the GitHub search bar, over 200000 repositories are found. That's right, those are 5 zeros right there.
Well, let's start off by saying what I *don't* want to contribute to (or at least, not right now):
- Official Apple maintained projects like the Swift language. Although it would undoubtedly be impressive to work on them, it looks like the vast majority of the projects have been written using C++, or heavily rely on C++ code, which I'm not too familiar with. Chances of me slipping into those chunks of code seem pretty high... *Skip*
- Networking/Parsing libraries. Are they useful? Yes. Are they used daily by tons of companies for different scale projects? Sure. Is my definition of "fun Friday night" trying to figure out why some rarely reproducible downcast fails 10% of the times? Not in my books. *Skip*
- Some rad-looking UI component with thousands of stars that almost any iOS Software Engineer has heard of? *DING DING DING* that's where the sugar's at.
- Official Apple maintained projects like the Swift language. Although it would undoubtedly be impressive to work on them, it looks like the vast majority of the projects have been written using C++, or heavily rely on C++ code, which I'm not too familiar with. Chances of me slipping into those chunks of code seem pretty high... *Skip*
- Networking/Parsing libraries. Are they useful? Yes. Are they used daily by tons of companies for different scale projects? Sure. Is my definition of "fun Friday night" trying to figure out why some rarely reproducible downcast fails 10% of the times? Not in my books. *Skip*
- Some rad-looking UI component with thousands of stars that almost any iOS Software Engineer has heard of? *DING DING DING* that's where the sugar's at.
After looking at a bunch of libraries, I finally had my candidate: [SwiftMessages](https://github.com/SwiftKickMobile/SwiftMessages) . With over 6500 stars and 640 forks, the relevancy of this library was undisputed. On top of it all, I also had the chance to work with it in one of my past jobs, so my familiarity with the project would for sure give me an edge.
In particular, I decided to take care of [this](https://github.com/SwiftKickMobile/SwiftMessages/issues/207) "issue", which is technically a feature request. It seems manageable enough to get my feet wet in the Open Source world, but it's also something handy that I could picture people using in their day-to-day coding lives.
# Chapter 2 - Getting started
With over 20000 lines of code, getting started was definitely not an easy task. Luckily, [SwiftKickMobile](https://github.com/SwiftKickMobile), the creator of SwiftMessages, included a Demo project to showcase all the project's functionalities.
Demo.xcodeprojc>Double-click>Run-on-Simulator and... perfect! We're already up and running!
![Alt Text](https://i.makeagif.com/media/10-03-2021/PecyWo.gif)
Now, let's fresh up our memory on *what* exactly I'm supposed to be doing
> Maybe it would be a good idea to add some optional haptic feedback to certain alerts. [...] There's three levels of feedback for notifications: success, warning and error. At the moment it can be added using event listeners, but adding default support for it on specific configurations would be helpful
Although pretty clear, let's try to extrapolate some additional informations from this generic request:
- *What should I be doing?*
Adding haptic feedback to alerts. The ticket specifically says *some* alerts, and by that they mean the pre-configured / pre-themed success, warning and error alerts (in the gif, the green, yellow and red pop-ups). The ticket goes on about mentioning *"Three levels of feedback for notifications"*. The "three levels" and "notifications" keywords narrow down the object that needs to be used for this task to one and one choice only: ```UINotificationFeedbackGenerator```.
- *When should I be doing it?*
As per [Apple's Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/feedback/), haptic feedback notifications are linked to specific events: success, warning or error. Given that the ticket specifically mentions *default* support for the corresponding pre-themed views, it is fair to assume that each haptic feedback notification should be triggered as soon as the pop-up is displayed. By proceeding this way, a reasonable library's use-case for the out-of-the-box popups would be: User receives some sort of error/warning/success message, a popup appears to notify the user and the phone vibrates alongside the popup presentation.
- *Where should I be doing it?*
Where in the codebase should I exactly be acting? Which files should I edit or add? Now, that's a good question...
# Chapter 3 - Sailor's job
In the darkest nights and with the highest tides, facing waves thousand of lines of code tall, it is a good programmer's job to never lose his route and know how to navigate the project's structure.
I've clearly defined *what* I need to do and *when* I need to do it (see Chapter 2), so I'm not intimidated.
Here below, some excerpts from the [Captain](https://github.com/AlbertoSamele)'s logbook detailing his adventure.
![Alt Text](https://c.tenor.com/gBm8n_pn5fQAAAAC/are-you-ready-kids-captain.gif)
1. Identified from the demo project how the default popups (error, warning, success) are instantiated and styled.
2. Pinpointed the three files in which I would act:
-*`MessageView`*, to add default haptic feedback values which changes based on the used preset;
-*`Presenter`*, to allow default behaviour overrides, to give the possibility of quickly adding haptic feedback to custom views and to actually trigger the haptic feedback based on the popup lifecycle (willAppear, didAppear, etc.);
-*`SwiftMessages`*, as a link between the independent MessageView and Config files.
3. Added possible haptic feedback options through an enum, with a self-contained *trigger* function
4. Identified the methods used to present the various popups in *`SwiftMessages`*, linking the `SwiftMessages.Config` struct with the `UIView` object passed along as parameters.
5. Identified the exact instant in which the popups `.willDisplay` thanks to pre-existing observers in *`Presenter`* , then triggering haptic feedback.
[Captain](https://github.com/AlbertoSamele)'s notes:
> Success!! After a long journey, I finally made it... the feature is now working! Ahhh, the sweet vibration that pervades my phone on each popup will bring me joy till my very end, remembrance of a long lived adventure.
> To this day, one thing only still troubles my mind... *`MessageView`* and *`Presenter`* were initially so *beautifully* independent, so much so that adding a *`Presenter`* -specific behaviour to a property related to a *`MessageView`* instance seemed impossible. Luckily, the *`SwiftMessages`* class was there to bridge the two and with some trickery I was able to propagate *`MessageView`* notification type onto *`Presenter`* while still maintaining a very good amount of reusability, independence and as little cross-dependency as possible. Could I have done better? Time will only tell..
# Chapter 4 - The end?
Repo? Forked. Changes? Committed. Pull request? [Created.](https://github.com/SwiftKickMobile/SwiftMessages/pull/484)
Merge? *...not yet*
# Open Source Contribution Project
*Author:* Alisson Carvalho
*NOMA:* 54661900
*Year:* 2021
*Selected project:* [nevergrad](https://github.com/facebookresearch/nevergrad)
# Project Research and Selection
I discovered nevergrad while doing my Master's thesis, looking for libraries in python that offered different optimization methods, specially Evolutionary Algorithms. Nevergrad is a optimization library that offers severall different optimization techniques. None of these techniques depend on calculating the gradient of the objective functions, hence the name NeverGrad was chosen.
Nevergrad offered the biggest selection of optimization algorithms, mostly (but not limited to) Evolutionary Algorithms. Using a single library for many optimization techniques saves a lot of time, as it would take me the need to change just a single line of code to experiment a whole different optimization technique.
Nevergrad is an awesome library with several optimization techniques, but there are some improvements possible.
## Possible Contributions
When dealing with Evolutionary Algorithms, most of these algorithms use a population of individuals to perform optimization. Each of these individuals represent a set of values that are going to be tested, in order to perform the optimization.
But in nevergrad the numbers of individuals in each population cannot be set by the developer. The default number of individuals is kept the same, for anyone using an optimization technique, like PSO (Particle Swam Optimization) and DE (Differential Evoluation). The number of individuals in each population may affect the result of the optimization, as it will define how many evaluations of the objective function will be performed.
It is important that the developer is able to change features of the optimization techniques based on their needs, as some optimization problems may require different configurations of the optimization technique, some configurations that are different than the default configuration.
Also, there are some optimization techniques used in Hyperparameter optimization that are widely used, but not available in nevergrad. For example, SMAC (Sequential Model-based Algorithm Configuration) is a great optimization method for hyperparameter optimization, but it is not available in nevergrad.
In Conclusion, I would like to extend the customization of some optimization techniques, that only use default values for individuals in a population, and enable the developer to choose how many individuals they will use in their optimization. In case there is still time and the task is feasible, I would like to add SMAC to nevergrad.
## The Actual Contribution
After looking through the issues (and getting in contact with the admin's) of the project, I decided to move from the possible contributions described above to a more practical contribution, as these improvements wre less needed than improving what was already implemented.
One of the admins of the project gently listed a few issues happening at the moment and that were feasible for first-time contributors. The problem consisted in some libraries that were required to run the Nevergrad library, but there were many dependencies, which made the library itself slower than it could be. (For example, installing it on developer's mode would take more than a day...)
I fixed some of the dependencies, making it optional to the user, only importing it when really needed, to make the library faster and more reliable for its user.
# Pull Request
The PR was done, and its available [here](https://github.com/facebookresearch/nevergrad/pull/1308). Waiting for it to be approved and merged.
\ No newline at end of file
# Open Source contribution report
* *Author:* Clément Delzotti
* *NOMA:* 29312100
* *Year:* 2021-2022
* *Selected project:* [Cilium](https://github.com/cilium/cilium)
* *License* : Apache 2.0
## Finding a project
Knowing that the eBPF technology had peaked my interest, I was looking for a project using it. I was thinking that maybe I could even keep this project for the *Open Source project* course. After a bit of research I realized that there isn't so much project using eBPF, but *Cilium* had the advantage to have loads of *good-first-issues*, therefore I chose it for this contribution.
## What is Cilium ?
Cilium is a project leveraging eBPF to enhance Kubernetes networking. Allowing secured exchanges between pods and nodes, load balancing, better visibility on what is happening on the network layer, etc. It is written mainly in Go, using the homemade [Go Library for eBPF](https://github.com/cilium/ebpf).
## Compiling the project
This is where the fun started. I'm running a Manjaro Linux distribution on my desktop computer and an Arch Linux distribution on my laptop, and none could actually build Cilium. After a lot of unsuccessful research to find a solution, I decided to try it on Ubuntu as it is probably the most common distribution. It actually fixed my problem, even if it took me less than 10 minutes to run into an outdated package that stopped me from building Cilium. I just had to install it by hand and I could finally compile the project !
## Contacting the community
This part was actually quite easy, I found a GitHub issue with the "*good-first-issue*" label and asked if I could do it. They accepted.
## Contributing
The contribution consisted on adjusting bad castings in C that generated lots of warnings. Once I did it, and made my pull request, GitHub indicated that a test was failing. As I had no idea what this test was, I sent a message on their Slack Server asking for help. Some kind stranger explained to me that some of their tests where messed up, he simply re-run it and it passed successfully. Still, it wouldn't be enough as I apparently didn't respect the coding conventions, and therefore I had to make a second commit to fix it.
## Merge situation
[Still pending](https://github.com/cilium/cilium/pull/18015), people are busy on the weekend (Contribution has been made on 26th November)
\ No newline at end of file
# Open Source Contribution Project
*Author :* Clothilde de Villenfagne
*Date :* Octobre 2021
*NOMA :* 33991600
*Selected project:* [Notepad++](https://github.com/notepad-plus-plus/notepad-plus-plus)
## Research and Selection of the Project
I didn't know the open source world so I had no idea what program I would be interested in was open source. I started to look for different projects on the internet, I first thought about the VLC media player application, but when I looked a little bit more I realised that it was a difficult project to access and out of reach for a first open source contact.
After a discussion with an acquaintance, it made me think of notepad++, a text editor I use a lot. He pointed out some options he would like to see on it, so I decided to work on it.
A first approach with the community has been made and it is a community open to everyone and very willing to contribute.
## Start and difficulty
As noted above I wanted to add an option to the text editor, when I started working on it I quickly got lost in the different files. Especially since the project is in C++, a language I don't know perfectly, it seemed too complicated to approach the initial idea.
So I went back to the issues already present, I first sorted them by the one that had the most comments. So I started the project, but while I was working I realized that I was overtaken by someone who had submitted a solution to the problem before me.
That didn't stop me and I left to find another issue.
## Contribution
After several searches, I found an issue that required sorting the functions alphabetically rather than by order of appearance. It took me more time to find where the code was located in all the files than to make the actual modification.
Being my first contribution to an open source project I chose a relatively easy issue to start familiarizing myself with the environment and the language.
I made a pull request and I'm waiting to see if it is accepted by the moderator. If it works why not continue the contribution further.
# Open Source Contribution Project
*Author* : Cyrille Debongnie
*Date* : Novembre 2021
*NOMA* : 92461200
*Selected project*: Exercism
# Research and Selection of the Project
First ever dive into the open-source world, the amount of possibilities was as exciting as overwhelming. What to choose? What project could be relevant?
I was considering participating in VLC since I’m using it a lot and had found a few behaviors that I wanted to improve (failing to scan the casting device, impossibility to cast subtitles). After considerations it seemed rather hard to dive into, the learning curve too steep, so I chose to focus more on a javascript-oriented project, as this is the language that I’d like to improve on more.
I first stumbled upon [GoodFirstIssues][gfi] where you can see a list of open issues on GitHub, which is great if you’re looking to dive directly into an issue, but lacks an overview of the community participation aspect in my opinion.
I finally found the teaching platform [Exercism][exc] which has a beautiful GUI and a really well made contribution system, very organized. It also made a lot of sense to me to contribute to this project, because I'm teaching private classes, and it's much more fulfilling to help as many people as possible that may not afford to pay for school or private tutoring.
# Exercism
Exercism is a web based platform providing free education on programming paradigms and concepts. They offer many interactive courses on a huge variety of languages. The open-source community is rather active and helpful.
# Process
I browsed the issues list and chose a non-technical issue : [FirstIssue][this] where I had to add explanations and informations to JavaScript concepts, such as how to use exponentiation, what is NaN, how you can use underscores for readability in big numbers and more.
I asked to be assigned to the issue and the person in charge was very responsive and very helpful. I read as much in their documentation as possible first, to avoid asking as many useless questions as possible.
In order to contribute to this project I had to install locally the fork of this project. Overall they made it very easy for beginners like me to dive in, as mentionned earlier in the few hours I looked into dozens of different projects, they had the best interface to help new contributors.
# Contribution
I was assigned two files to update, I decided to first try and get one of the file to be accepted by them before investing too much work on something that didn't fit their expectations, so I chose to update the "numbers" file, even though their website is top quality, their guidelines on how to improve concepts is rather abstract, as there is not a single right way to operate, but it's more like a mindset.
My first [PR][1PR] was denied because of a mix-up I made, I inserted the wrong snippet of code, and ended up with Java code on the JavaScript section. Here the feedback was rather short as the change request by them was solely focused on my code error and not on the rest of the work. After a quick fix, I updated my PR and awaited for the review. It also got rejected but this time I got a very thorough feedback by another contributor.
# Conclusion
I didn't expect a few things about the open source world, how nice people could be, how exciting participating in an open-source project is, how a project cannot exist without an active community, and also how hard it can be to find an interesting issue that is not yet assigned.
Overall a very interesting experience and I'm glad to see that people are really willing to invest themselves in giving such quality education to as many as possible.
It was rather harder than I expected to find the right level of explanations to fit their standards, as of today my contribution is not part of their project, but I'd like to keep on adjusting up until they deem it good enough, since they invested time in accompanying me, it's the least I can do.
[gfi]: https://goodfirstissues.com/
[exc]: https://exercism.org/dashboard
[this]: https://github.com/exercism/javascript/issues/1505
[1PR]: https://github.com/exercism/javascript/pull/1534
# Open Source Contribution Project
Author: Elio Pani
NOMA: 61541400
Year: 2021
Selected project: https://github.com/pytorch/pytorch
*Pull Request :* [Pull Reaquest #43102](https://github.com/pytorch/pytorch/pull/43102)
#About the project
While working on a project, I was using a lot PyTorch, it is an open source machine learning library based on the Torch library, used for applications such as computer vision and natural language processing, primarily developed by Facebook's AI Research lab. I saw that there was an issue in the documentation when comparing it to the result I got. As I learned to use more and more Pytorch, I thought it was a good idea to learn more about it's world and the people behind. It's a highly used application so I know I would learn a lot.
# About the issue <span style='font-size:8pt;'>*(2021/09/19)*</span>
Pour de la classification d’image en utilisant plusieurs gpus (2).
En deep learning par defaut les calculs sont faits avec des float32 (32 bits pour chaque nombre). Pytorch propose “AMP” (Automatic Mixed Precision) qui mixe les calculs entre float16 et float32 (Plus rapide, plus léger).
Pour plusieurs GPU tu utilises “DataParallel” de Pytorch qui permet de paralléliser les calculs sur plusieurs gpu.
AMP et DataParallel ensemble ne fonctionnent pas directement (selon la doc). Dans les faits pourtant si. Tu as donc regardé les issues reliées à ton problème et à trouver qu’en fait le code avait été mis à jour pour résoudre ce problème, mais pas la doc.
Quand j’ai voulu utiliser DataParallel avec AMP j’ai été voir dans la doc le fonctionnement et quand j’ai comparé mes logs avec les informations de la docs, je me suis rendu compte qu’elle n’était pas à jour.De plus, en creusant un peu, j’ai vu un des contributeur qui avait commenté le faite que le code avait bien été modifié mais que la doc était encore celle pour l’ancien code. Il fallait rajouter des lignes de codes pour que ça fonctionne dans la version précédente alors que le code actuel lui ne demande pas. J’ai donc modifié la doc pour qu’elle soit en accord avec ce que le code fait
# About the process
# Open Source Contribution Project
*Author* : Envel SOUIDI
*Date* : 2021-2022
*Noma* : 1826-21-00
*Selected project* : [VividHues : Python Package](https://github.com/KennyOliver/VividHues)
## Introduction
I was pretty new to Github and the open source environment.
Naturally, the first thing I did was to look at different projects, to see if any would catch my attention.
Since I didn’t know what I was looking for, I decided to look at unsolved issues on github.
## First Contribution
For my first contribution, I wanted to join a beginner friendly community.
I looked for projects with issues labeled : "good-first-issue".
After few hours, I managed to find a good beginner friendly project : the Hacktoberfest 2021 [https://github.com/dscmbcet/hacktoberfest-2021], which is specially made for beginners on github.
There is a strong active community, ready to help open source beginners.
I made my first contribution (pretty simple) : I had to print prime numbers from a lower bound to an upper bound, using for loops.
After asking some questions to one contributor about the community, the project and pulling requests, my work got merged.
This gave me a much needed first approach of the open source community.
## Second Contribution
Then I started to look for another project to contribute.
Since I wanted to do some Python, I found a project about building a Python package for colored strings in Python.
There was one contributor to this project. Luckily (for me), he had some issues, so I started to talk about the project with him.
I asked for assignement on an issue, which was about printing strings in different colors (rainbow, random, character by character...).
I asked him to clarify what he needed, and what I needed to do, so I could start to work on the issue.
I made my pull request, and then got merged fairly quickly after.
## Conclusion
The most difficult part was having a good grasp on the Github tool. The very beginning is kind of rough.
However, making my first pull request getting merged was quite satisfying.
Additionnaly, contribution to small projects is something I find interesting. You can easily get along with the contributor(s), and keep helping frequently.
Why not to keep in touch with the Python package project ?
# Open Source Contribution Project
*Author:* Bernard Lima Costa François
*NOMA:* 49741600
*Year:* 2021-2022
*Selected project:* [react-native-select-dropdown](https://github.com/AdelRedaa97/react-native-select-dropdown)
# Personal Background
As far as I am concerned, the world of open source is totally unknown to me. During my bachelor studies I didn't put much effort into my studies, and I was often satisfied with doing the minimum for the projects. Today I consider that I have a lot of weaknesses regarding my real computer skills. Until last year, I had never really participated in computer projects outside of the ones proposed in my courses.
I chose this course because I wanted to take my first step into the world of open source of which I have heard so much.
# Project Selection
As said above, I don't have much experience. The only projects I've done outside of university are mini-games made with Unity and C#, and a mobile application made with react-native. So it's natural that I'm going to focus my research in these directions.
First of all, I went to open source game projects made with Unity. I did some research focusing on games that had an active developer community and I came across the [open-project-1](https://github.com/UnityTechnologies/open-project-1?utm_source=YouTube&utm_medium=social&utm_campaign=evangelism_global_generalpromo_2020-09-21_open-projects-01-repository). But when I wanted to clone the project I noticed that the project took a lot of space and I had to download a lot of resources, and this discouraged me.
I then turned my search to open source react-native libraries because during my application project, I had used a few. And I thought that it could be a good training to dive into the source code of these libraries. I started looking at the [react-native-maps](https://github.com/react-native-maps/react-native-maps), [react-native-modal](https://github.com/react-native-modal/react-native-modal) and [react-native-slider](https://github.com/callstack/react-native-slider) libraries. But often I got stuck either on understanding the structure of the project or I just got stuck on bug fixing.
Finally, I found the [react-native-select-dropdown](https://github.com/AdelRedaa97/react-native-select-dropdown) library which is not yet too advanced, and is still often updated by the community. This project was made for me!
# Choose a contribution
After analysing the project and its structure, I went to the "issues" section and started looking for which problems I could solve, or which functionality I could add.
I have selected [issue#21](https://github.com/AdelRedaa97/react-native-select-dropdown/issues/21#issue-1032474320) and added the ability to select a second icon that is displayed when the dropdown is open. After one week without any feedback on my request I decided to review my code and I foud some possible ameliorations. So I updated my code and sent a new version of it. Now I'm waiting for any feedbacks.
# Conclusion
To conclude, I am very happy to have made my first open source contribution, it allowed me to familiarize myself with tools like git. It also gave me the opportunity to dive into the details of some react-native libraries and to realize the magnitude that open source projects can take.
\ No newline at end of file
# Open Source Contribution Project
**Author:** NIZET Guillaume
**NOMA:** 5441-21-00
**Academic year:** 2021-2022
**Selected project**: [Files, A modern file manager for Windows](https://github.com/files-community/Files)
## Introduction
During my bachelor in computer science, I never got to contribute to an open-source project. I always thought it was super complicated and that it wasn't really worth the effort. But this year, I wanted to change my mind about this so I decided to follow this course which I saw as a good opportunity to dive into the world of open-source.
## Finding a project and a contribution
Now that I was motivated, finding the project I wanted to contribute to wasn't a big deal. I spent a few hours browsing on GitHub, trying to find a project with an active community which looked simple enough to make my first ever contribution. I focused on projects which had `good-first-issue` labels and I found an [issue](https://github.com/files-community/Files/issues/6867) on the [Files](https://github.com/files-community/Files) project which looked great for the newcomer I was: adding a keyboard shortcut to show/hide hidden files.
## Making the contribution
The very first step was building the project. It took me quite some time since it required having Visual Studio installed along with several other dependencies.
Once the project was up and running on my computer, I had to get familiar with the code to understand how everything worked, which wasn't an easy task since the project is written in C#, a programming language I had never really used.
After spending some time getting the hang of the code, I started implementing the keyboard shortcut feature which would solve the issue I had chosen. This wasn't a very hard task: a few lines of code did the job and everything was working like a charm.
I did some testing to make sure I tackled the issue correctly then I opened a [pull request](https://github.com/files-community/Files/pull/7106) to get my changes reviewed and eventually merged, maybe!
After a few hours, two conbributors approved my changes and my contribution was merged, which made me quite proud.
## Conclusion
The world of open-source is not unknown to me anymore and it is not as scary as I thought. Contributing, yet in a very small way, to an open-source project was a very pleasant experience.
\ No newline at end of file
......@@ -23,3 +23,14 @@ It's a small tool that helps players to analyze their raiding performances by pa
### Decision
After having taken the time to think about it, I decided to go for WoWAnalyzer instead of SimulationCraft. This choice is justified by the fact that Simc is just way too big for me. I think I would take way too much time to make a decent contribution to the project in my opinion. Therefore, WowAnalyzer was the default choice in that case !
### Issue
I worked on two issue :
[1](https://github.com/WoWAnalyzer/WoWAnalyzer/issues/4121) Where they needed an additional views for conduits(specific in-game talent tree allowing players to have more power) to allow players to see what they were playing during the fight. The issue has been solved in this [PR](https://github.com/WoWAnalyzer/WoWAnalyzer/pull/4602)
[2](https://github.com/WoWAnalyzer/WoWAnalyzer/issues/3739) Where they needed to update the class (warlock class) for the current game system as the game evolves. Unfortunately, I've been only able to work on it partially by updating some of the changes made on the class talent tree (being myself a player of the class) in this [PR](https://github.com/WoWAnalyzer/WoWAnalyzer/pull/4607).
# Conclusion
To conclude, I am very happy to have made my first open source contribution, it allowed me to familiarize myself with tools like git. It also gave me the opportunity to dive into the details of some react-native libraries and to realize the magnitude that open source projects can take.
\ No newline at end of file
......@@ -6,29 +6,61 @@ NOMA: 14611300
Year: 2021
Selected project: [Ansible](https://github.com/ansible/ansible)
Selected project: [~~Ansible~~](https://github.com/ansible/ansible) [Matomo](https://github.com/matomo-org/matomo)
# Why this project ? <span style='font-size:8pt;'>*(2021/09/19)*</span>
## Ansible
## ~~Ansible~~ <span style='font-size:8pt;'>*Update 2021/11/14 - New project Matomo*</span>
According to [Ansible](https://github.com/ansible/ansible) Github repository README, Ansible is :
~~According to [Ansible](https://github.com/ansible/ansible) Github repository README, Ansible is :~~
<cite>"Ansible is a radically simple IT automation system. It handles configuration management, application deployment, cloud provisioning, ad-hoc task execution, network automation, and multi-node orchestration. Ansible makes complex changes like zero-downtime rolling updates with load balancers easy.". </cite>
<cite>~~"Ansible is a radically simple IT automation system. It handles configuration management, application deployment, cloud provisioning, ad-hoc task execution, network automation, and multi-node orchestration. Ansible makes complex changes like zero-downtime rolling updates with load balancers easy.".~~ </cite>
~~A GPL-3.0 License is applied to this project.~~
## Matomo <span style='font-size:8pt;'>*2021/11/14*</span>
After many attempts to resolve issues on Ansible, I decided to go to another repository in which I am interested and which also contains many issues.
Matomo is a web solution - based on PHP, MySQL and angularJS in frontend - allowing activity analysis on a website. It is said to be a very good alternative to Google Analytics, and all in a Free / Libre context.
A GPL-3.0 License is applied to this project.
## Motivation
## ~~Motivation~~ <span style='font-size:8pt;'>*Ansible motivation*</span>
~~Python is a programming language that I find very interesting and practical on a daily basis. It was therefore logical that I headed for a project using this language.~~
~~I went to Github and started looking for this Python project that I would like to contribute to. In the search list, Ansible showed up and that's when I knew I needed to contribute.~~
~~Today, the automation of deployment and maintenance tasks are in full expansion and I find it important to contribute to these DevOps focused projects knowing that they represent, from my point of view, the near future of IT.~~
## Motivation <span style='font-size:8pt;'>*2021/11/14*</span>
I have always had a particular affinity with the world of web activity and performance analysis.
This project being an alternative version to Google Analytics - which I use daily - immediately appealed to me.
It is important today to keep an eye on these metrics in order to improve our websites on a daily basis and, therefore, the user experience.
Moreover, the programming languages present in this project are, for me, familiar languages.
# ~~Issue~~
[~~Issue #73410~~](https://github.com/ansible/ansible/issues/73410)
~~Adding an argument to vars_prompt component.~~
~~This enhancement allows you to automatically decide whether a value is truthy or falsy and return the associated bool value.~~
~~In addition, to go further in development, it would be good to adapt this functionality to various types of data.~~
# Issue Matomo <span style='font-size:8pt;'>*2021/11/14*</span>
[Issue #18162](https://github.com/matomo-org/matomo/issues/18162)
Python is a programming language that I find very interesting and practical on a daily basis. It was therefore logical that I headed for a project using this language.
Tooltip not close when redirect to another page.
I went to Github and started looking for this Python project that I would like to contribute to. In the search list, Ansible showed up and that's when I knew I needed to contribute.
Today, the automation of deployment and maintenance tasks are in full expansion and I find it important to contribute to these DevOps focused projects knowing that they represent, from my point of view, the near future of IT.
The issue regarding this bug concerns an information popup that does not act as desired in a specific case. In the software, it is possible to open an information popup when you click on the information icon present for each of the subcategories of the navigation bar. In normal operation, the popup disappears when changing the subcategory. The problem was that when clicking on a category (and not a subcategory), the popup did not disappear and remained frozen.
# Issue
# Pull Request - Merged <span style='font-size:8pt;'>*2021/11/14*</span>
[Issue #73410](https://github.com/ansible/ansible/issues/73410)
[Pull Request #18304](https://github.com/matomo-org/matomo/pull/18304)
Adding an argument to vars_prompt component.
This enhancement allows you to automatically decide whether a value is truthy or falsy and return the associated bool value.
In addition, to go further in development, it would be good to adapt this functionality to various types of data.
\ No newline at end of file
To resolve this issue, I started by analyzing the behavior of the software and tracing the root of the problem. Then, after some code manipulation and good performance tests, the problem was solved and, from then on, I could offer my solution to the maintainers of the repository via a pull request.
The mainteners were very responsive and my pull request was approved and merged shortly after my proposal.
\ No newline at end of file
# Contribution à un projet Open Source
*Auteur:* Louis Labbé
*Date:* Décembre 2021
*NOMA:* 55961700
*Projet sélectionné:* [ADE Scheduler](https://github.com/SnaKyEyeS/ADE-Scheduler) ([Issue](https://github.com/ADE-Scheduler/ADE-Scheduler/issues/651) & [Pull Request](https://github.com/ADE-Scheduler/ADE-Scheduler/pull/652))
## Recherche et sélection du projet
Aux alentours de la semaine 6 de ce quadrimestre, j'ai commencé à rechercher des projets auxquels je pourrais contribuer. J'ai tout d'abord pensé tant qu'à faire, à trouver un projet autour de mes centres d'intérêt comme les jeux vidéos, les échecs, la lecture, la sécurité, etc. Concernant les jeux, je n'ai pas trouvé satisfaction, car soit le sujet ne m'intéressait pas, soit le projet était malheureusement abandonné depuis plusieurs années. Pour les échecs, c'est tout l'inverse, beaucoup de projets sont ouverts sur le sujet, mais consistent simplement à recoder un joueur d'échecs ou le jeu en lui-même. Bien qu'intéressants, ce sont des duplicatas constants et je ne préférais pas participer à "ce mouvement" apparaissant sur GitHub. De plus, j'ai déjà codé un joueur de jeu de plateau donc l'envie m'est passée. Alors que je ne savais pas quoi faire, la solution est venue à moi toute seule.
En effet, j'ai reçu un beau matin de S6, un mail m'indiquant qu'au moins un de mes mots de passe était compromis suite à une violation d'un site ou d'une application que j'utilise. Étant donné que je possède une armada de mots de passe très sécurisés que je prends un malin plaisir à confectionner, j'ai tout de suite regardé la liste des sites web violés récemment, mais je n'utilisais aucun d'entre eux. J'ai tout de suite pensé à recréer des mots de passe différents ou à utiliser un gestionnaire de mots de passe gratuit, mais il s'est avéré après quelques recherches que le mot de passe compromis était "student" pour le compte "etudiant" de ADE pris en charge par l'UCLouvain... Après avoir un peu déstressé, j'ai réalisé que certains gestionnaires de mots de passe sont open source comme [Bitwarden](https://github.com/bitwarden). En menant une petite recherche, j'ai trouvé une [issue](https://github.com/bitwarden/web/issues/1064) abordable qui était en attente depuis plusieurs mois et j'ai commencé à inspecter le code pour résoudre le problème. Seulement comme j'étais très occupé par mes autres projets, j'ai préféré ne pas demander à m'attribuer l'issue, car je ne savais pas si j'allais pouvoir la résoudre rapidement. Et malheureusement, après 2 semaines, ce que je redoutais arriva, quelqu'un a demandé à travailler dessus après un "up" de l'auteur de l'issue.
J'ai ainsi entrepris de chercher un autre projet qui m'intéresserait, mais rien ne me convenait. C'est alors que j'ai décidé de changer de tactique, au lieu de chercher un projet qui m'intéresse, pourquoi ne pas chercher un projet utile à mon entourage. Il s'est révélé que bon nombre de mes camarades utilisaient ADE Scheduler. Il s’agit d’un outil qui permet de gérer à sa façon les horaires provenant d’ADE en filtrant des évènements, en améliorant leur visibilité, en permettant d’exporter le calendrier sur d’autres applications, etc. En naviguant sur le [site web](https://ade-scheduler.info.ucl.ac.be/calendar/) afin de suivre la procédure pour contribuer au projet, j'ai remarqué bon nombre de fautes d'orthographe sur différents onglets du site. Étant donné que je suis un maniaque de l'orthographe, j'avais enfin trouvé en S8 ce que j'allais faire, corriger toutes ces fautes. Comme personne dans notre année n'avait contribué au projet et que l'issue n'existait pas encore, je pouvais me laisser le temps de réaliser mes autres projets sans crainte que quelqu'un me chipe "mon issue". Finalement, il s'est avéré par la suite qu'un autre élève a contribué à ce projet, mais ce ne fut pas bloquant.
## Contribution
La contribution a été dans mon cas, la partie la plus simple de mon projet. En effet, j'ai seulement dû trouver les fichiers contenant les textes, comportant des erreurs, qui étaient affichés sur le site web et après avoir lu la documentation et la façon de contribuer au projet, j'ai créé mon [issue](https://github.com/ADE-Scheduler/ADE-Scheduler/issues/651) en commentant en dessous pour m'assurer que ce que je pensais faire était correct. Après avoir eu l'approbation, de l'un des mainteneurs d'ADE Scheduler, j'ai cloné un fork du projet, et créé une nouvelle branche où j'ai édité des fichiers json là où c'était nécessaire. En tout, j'ai corrigé 47 fautes d'orthographe et j'ai réalisé lors de ma contribution que 2 liens n'étaient non seulement pas mis à jour, mais également redirigeaient seulement sur une version anglaise qu'importe si l'on consultait la version française ou anglaise d'ADE Scheduler. Je les ai donc modifiés en conséquence.
## Pull Request
Une fois terminé et après relu de nombreuses fois mes modifications, j'ai entamé la dernière étape qui consistait à réaliser le [pull request](https://github.com/ADE-Scheduler/ADE-Scheduler/pull/652). Celui-ci s'est révélé plutôt simple malgré quelques imprévus.
En effet, après avoir soumis mon pull request, un mainteneur différent de celui avec lequel j'ai précédemment conversé m'a gentiment demandé s'il était tout de même possible que j'exécute quelques commandes de mon côté pour assurer le bon comportement de ma modification, car certains messages simplistes comme "Cancel/Annuler" sont présents dans un fichier .po qui nécessite d'être recompilé après modification. Cependant, j'avais bien fait attention avant de faire ma requête au premier mainteneur qui m'a donné son accord que je n'avais pas besoin de réaliser cela étant donné que les fautes que j'avais trouvées étaient présentes uniquement dans des fichiers json "static" ne demandant aucune compilation. De plus, comme mes changements consistaient seulement en des ajouts et suppressions de caractères dans des textes, et non pas du code ou des fichiers nécessitant une compilation, je n'avais pas besoin d'exécuter tous les tests de mon côté.
Après avoir mis cela au clair avec le mainteneur, le CI Testing a malheureusement échoué indiquant qu'une exception avait été lancée par une fonction. Très surpris par ce résultat, j'ai enquêté sur les détails de cette erreur et relu assidument mes ajouts, mais je ne trouvais vraiment pas de quelle manière ma contribution pourrait être à l'origine de ce problème. J'ai donc fait part de mon incompréhension face à cette erreur aux mainteneurs du projet et l'un d'eux m'a dit de ne pas m'inquiéter puisqu'en fait cette erreur est produite actuellement avec les pull requests externes au projet et que cela a encore besoin d'être résolu de leur côté. Le mainteneur a alors finalement validé et fusionné mon pull request avec la branche principale.
## Conclusion
En conclusion, alors que ma contribution technique est faible, je pense avoir malgré tout atteint l'objectif principal de ce projet qui consistait à faire un premier pas dans l'open source.
Durant ce projet, j'ai beaucoup appris non pas par ma contribution, mais grâce à mes recherches sur GitHub. En effet, j'ai parcouru énormément de projets et lu de nombreuses issues, et j'ai ainsi été étonné par la manière dont des personnes qui pourtant ne se connaissent pas peuvent être amenées à se réunir, à interagir autour de certains projets et à s'accorder sur ses problématiques. Concernant le projet ADE Scheduler, avant de contribuer, j'ai lu certaines issues ouvertes et fermées pour voir comment cela se passait et j'ai été surpris par la bienveillance et surtout l'ouverture d'esprit de certains des mainteneurs, car bien qu'il s'agisse de leur "bébé", ils conçoivent d'accepter ou de réaliser des changements au projet qu’eux ne désirent pas forcément et en cas de désaccords, procèdent à un vote à la majorité.
Cependant, j'ai également découvert quelques points que je trouve négatifs sur GitHub. Effectivement, j'ai constaté qu’énormément de projets consistaient à refaire mainte et mainte fois la même chose comme réécrire dans différents langages des fonctions triviales, moins optimisées qui plus est, ou recréer des minis-jeux qui existent déjà à de nombreux endroits sur la plateforme. J'ai également découvert un fléau: les personnes qui demandent à être affectées à une tâche et qui ne donnent plus jamais de nouvelles par après sans avoir rien changé. Pour finir, j'ai trouvé que dans les gros projets open source, les issues sont inondées par des demandes de feature d'utilisateurs, sans labels, qui n'ont en plus parfois pas pris la peine de vérifier si celles-ci n'étaient pas déjà discutées auparavant.
Pour être honnête, je comptais au début de cette année faire une bonne contribution plutôt technique et compliquée. J'ai fini par réaliser qu'il n'y avait pas de bonnes ou de mauvaises contributions, mais seulement des contributions dont l'importance et l'utilité varient en fonction des personnes. En effet, certaines personnes, comme moi, aiment faire attention à l'orthographe alors que pour d'autres cela n'a pas d'importance, d'autres encore aiment que leurs données soient totalement sécurisées là où certains se moquent que par exemple leur photo de famille finisse par être publique. Ainsi, toutes les issues et pull requests, n'ont pas forcément la même valeur aux yeux de tous, mais elles n'ont pas à l'être, je pense. Pour terminer, je considère maintenant que la contribution la plus utile à un projet open source ne consiste pas à y participer sur GitHub, mais plutôt d'en faire la publicité autour de nous.
# Open Source Contribution Project
*Author:* Louri NOËL
*NOMA:* 26202100
*Year:* 2021-2022
*Selected project:* [Supertux](https://github.com/SuperTux/supertux)
*License:* GPL 3.0
## The Project
**Supertux** is a platformer game which draws its inspiration from the Mario
games. It features Tux (the mascot of Linux) instead of the red mustachioed,
going through icy lands to save his girlfriend Penny from the claws of Nolok.
## Motivations
I played SuperTux when I was little, and I have waited for an update since
then. I have missed the 0.6.2 version which was released in May 2020
and there is apparently a lot more to come, so I think choosing this project
could be a good idea for a starting point.
## Learning about the community
*16/09/2021 - 26/09/2021*
I thought at first the community was almost dead, because of the low number
of commits these past months, the low activity on the forum, and the few
recent issues and pull requests. So I decided to observe during a week
to see if I could really choose this project.
The [twitter account](https://twitter.com/supertux_team?lang=fr)
only retweets fanarts of the game (2 times this summer).
The active part of the
[forum](https://forum.freegamedev.net/viewforum.php?f=66)
is mostly about creating maps, nothing related to development.
The community is also on LiberaChat and Discord, but I don't dare
to go on those for the time being.
## Building the project
*22/09/2021*
I tried building the project on Windows at first, but I must link
the dependencies manually with my current environnement,
and there are many of them.
I did not manage to build it, so instead I tried building it on
a Ubuntu virtual machine, and it worked well! But the game was lagging,
so I built it again in my dual-boot Ubuntu instead.
## Looking for something to do
*27/09/2021 - 01/10/2021*
I didn't find any appealing Issue which would seem simple enough to start,
so I played through the game looking for bugs.
I have found some, and one of them was promising (ie. I could take it on
with little effort).
When Tux dies, the level's music fades out. Then Tux reappears at the
beginning of the level or at a checkpoint, and the music fades in
from where it stopped. But sometimes (seemingly randomly), the music
does not play after reappearing: the other sounds are still there,
but there is no music. The music starts again when resuming the game
from the pause menu, or when changing its volume in the options.
## Investigating the bug
*02/10/2021 - 03/10/2021*
I have noticed that the bug happens more frequently on the virtual machine
than on the dual-boot Ubuntu. In fact, I have built the project
on my dual-boot because the game was lagging too much in the virtual machine.
This made me suspect a race condition issue.
I first looked into the src/audio folder, where the bug likely was.
I spent a few hours adding log messages to understand the flow
of the program, and I finally found the issue.
When Tux dies, the Player class calls (1) SoundManager::pause_music (2)
with the argument *fadetime=3.0* .
This then calls (3) StreamSoundSource::set_fading (4) with the same argument
which changes its state to *FadingPause*.
Then in StreamSoundSource::update (5), because the state is now *FadingPause*,
it decreases the gain of the music by calling (6) StreamSoundSource::set_gain
while the time counter does not reach the fade time.
In most cases, Tux reappears soon enough and GameSession calls (7)
MusicObject::resume_music, which calls (8) SoundManager::resume_music (9)
with the argument *fadetime=3.2* .
It then calls (10) StreamSoundSource::set_fading (11) with the same argument,
which changes its state to *FadingResume*. Then in StreamSoundSource::update
the gain increases and the music plays.
But in some cases (**that is the bug**),
Tux reappears after the fade-out effect has completed, and the music is
paused (12) after decreasing its gain to 0. When Tux reappears,
the gain is increased but we cannot hear the music because
*it is not playing*: it is still paused.
## Fixing the bug
*04/10/2021*
To fix the bug, when the music must fade in, I call
StreamSoundSource::resume (13) on top of calling
StreamSoundSource::set_fading in SoundManager::resume_music (which is
called by GameSession).
This additional call will play the music if it is paused, and otherwise do nothing (ie. return immediately if the music is not paused).
... I just added one line.
### References: (before my commit, these might have changed since)
| n° | file | line |
|:--:|:----------------------------------|:----:|
| 1 | src/object/player.cpp | 1949 |
| 2 | src/audio/sound_manager.cpp | 343 |
| 3 | src/audio/sound_manager.cpp | 351 |
| 4 | src/audio/stream_sound_source.cpp | 127 |
| 5 | src/audio/stream_sound_source.cpp | 75 |
| 6 | src/audio/stream_sound_source.cpp | 121 |
| 7 | src/supertux/game_session.cpp | 158 |
| 8 | src/object/music_object.cpp | 77 |
| 9 | src/audio/sound_manager.cpp | 395 |
| 10 | src/audio/sound_manager.cpp | 403 |
| 11 | src/audio/stream_sound_source.cpp | 127 |
| 12 | src/audio/stream_sound_source.cpp | 118 |
| 13 | src/audio/openal_sound_source.cpp | 104 |
## Interacting with the community
*05/10/2021 late at night*
Before doing a Pull Request, I wondered if I should do an Issue
describing the bug. I decided to ask the community about it,
as it will give me the occasion to interact with others.
I went to the community's LiberaChat using KiwiIRC IRC Client,
there is about 10 people connected. I asked:
> *(21h45)* Hello, I'm new here! I have found a minor bug and I would like
to do a pull request to fix it. Should I do an Issue first to explain
the bug, or can I just explain it briefly in the PR?
To which Semphris replied: (he is one of the official SuperTux Team members)
> *(21h46)* Normally I'd be among those who promote doing an issue first
> But honestly, the management is all over the place
> so if you don't want to bother opening an issue, it's fine
> As long as you explain what the issue is/was in the PR description,
enough so that we can notice it, and discuss the upsides/downsides
of many remedies
(He was the only one to say anything, even unrelated,
in the following 2 hours)
Thinking about the objective of this course, I opted to also do an Issue,
in order to have more interactions with the community.
So I replied:
> *(21h49)* Ok thanks, I think I will do the Issue first.
And so, I made an [Issue (#1833)]
(https://github.com/SuperTux/supertux/issues/1833) following the guidelines
of the *CONTRIBUTING.md* file. I then commited to my fork
(by again following the guidelines) and did a [Pull Request (#1834)]
(https://github.com/SuperTux/supertux/pull/1834)
Later that night, at 23h38, Semphriss approved my PR, commenting:
> I remember running across that bug a few times.
Props for finding how to fix it, and big thanks for the PR!
At 00h18, Tobbi said on LiberaChat: (he also is a member of the SuperTux Team)
> Interesting. I thought the issue has long been fixed
To which I replied:
> *(00h58)* Well, I only noticed it because it happened most of the time
on my virtual machine:
> The game was lagging so much that Tux took way longer than 3 seconds
to die. The music had all the time to be paused (see the Issue for details)
(1h23) I decided to go to the community's Discord server.
**What a surprise!** The Discord server is lively!
I should have joined sooner, that's where everybody is hiding!
## Update: two months later
I stayed on the discord server, which is indeed pretty active.
All the important decisions are discussed and made there.
It is also funny, for example with its joke rules
("banning" people for posting oranges in the wrong channel)
Unfortunately, I didn't have time to do more, but I hope to be able to in the
near future.
## Actual status
Commit merged into master on 11 October.
Issue closed on 13 October.
# Open Source Contribution Project
*Author :* Mellini Luca
*NOMA :* 67941900
*Year :* 2021-2022
*Selected project :* [VerbCalc](https://github.com/ErykPiasecki07/VerbCalc)
*Selected issue :* [Issue #30](https://github.com/ErykPiasecki07/VerbCalc/issues/30)
*Pull Request :* [Pull Reaquest #51](https://github.com/ErykPiasecki07/VerbCalc/pull/51)
&nbsp;
# Project Selection
Since I'm very new in the world of Open Source, I kind of struggled finding an interesting project I could bring an usefull contribution to. I indeed spent a lot of time just finding the "sector" I wanted to dive into.
First of all I wanted to give a contribution to a video game I play a lot since years, which is [Osu!](https://github.com/ppy/osu). The project is in heavy development, has a lot a contributors, a very complete documentation, but requires a programming language and a Framework I don't master at all. Thereby I couldn't end up finding an issue I could give a contribution to while still feeling myself usefull.
I kept thinking about other projects but then I thought about Python, which is the programming language I used the most all along my schooling but also the one I would like to keep improving myself with.
So I looked for a Python project when a friend of mine ([@RosarNicolas](https://github.com/RosarNicolas), also student for that course) told me about the website [Good First Issues](https://goodfirstissues.com/) which includes all the issues having the tag "good first issue", sorted by the most recent ones.
I finally ended up finding an issue about [VerbCalc](https://github.com/ErykPiasecki07/VerbCalc), a Python library created in order to make calculations from natural language.
The project is quite new so it doesn't have lots of contributors but I found the concept interesting since it reminds me another course where I had to create my own programming language in which I actually wanted to add such a feature.
I think my knowledge in Python can bring something to this project and I therefore can't wait to work on it.
&nbsp;
# Contribution
The issue ( [Issue #30](https://github.com/ErykPiasecki07/VerbCalc/issues/30) ) I asked to be assigned to consists of handling written numbers (make "two" appears as "2" for example).
My first step in the contribution was to make some local tests, see if the main issue (convert a literal number into its integer) can be easily fixed or not (it initally sounded like an easy issue to me). And it was indeed surprisingly easier than I thought since I was able to achieve it in only one day of work.
I was now able to translate any possible sentence containing a literal number (receiving "three thousand six hundred and thirty two" would output "3632"). After asking the project owner some precisions (concerning the use of hyphen, the "and" word and the way I could integrate it), I had to go to the second step, which was the actual integration of my solution in the existing project. I thought that the issue was finished but this is were I started struggling. Indeed, after integrating my solution while respecting the existing structure, format, etc., I found out that I had to fix some other issues resulting from the integration of my code. I had to handle calculations now, since this is the main purpose of the project. This was the hard part because I had to be able to handle sentences such as "five plus nine minus seven to the power of six". And those kind of sentences were not tested in the unitests so it took me time before realizing how far I had to go before making it fully stable and making sure that I could take care of any calculation containing any literal number.
I'll not explain the code I wrote but I ended up managing this after trying and retrying lots of regex operations techniques. I thought I could finally open the Pull Request but that was still not over. When adding some more unittests, I realized that there was still a point of failure. The handling of the invalid expressions such as "two plus minus" or "five five plus four". After trying to fix it, I thought about the fact that I would need a complete separate issue. After discussing with the repo owner, we indeed concluded ( [in this comment](https://github.com/ErykPiasecki07/VerbCalc/issues/30#issuecomment-981119612) ) that I could open a Pull Request with the solution I created but that it will not be merged since there is still this important point of failure that will be integrated in a new issue ( [Issue #52](https://github.com/ErykPiasecki07/VerbCalc/issues/52) ).
&nbsp;
# Interaction with the community
The only person I interacted with is the repository owner. It was really pleasant to communicate with him since he's very reactive and very understanding about all the questions I asked him. Those discussions stayed in the comments of the issues so that any contributors can see the historical of the way I managed to solve the issue as well as the different issues I encountered.
My questions mainly concerned some issues I had about the project. I also asked him stuff concerning his feelings about the way I was turning my solution to the issue, the way he was planing to manage some future features of the project (so that I could figure out how to turn my solution the best possible way), about the way I was supposed to integrate my solution (which was the main issue I encountered as said earlier), etc.
We also discussed about some external libraries called "[word2number](https://pypi.org/project/word2number/)" that could have already fixed the issue I worked on. Unfortunately I found that library after opening my pull request, which was a bit too late but he still asked me to throw an eye on it, test it and come back to him if using it within the project would be something feasible. Which is something I will do for sure.
I also spent some time writing him in order to keep him informed concerning my progress and how things were evolving. This is something I consider as important to do when you work on such a project where other persons are involved, and I think he appreciated it as well.
Then I asked him some questions about the project itself, how he started thinking about this project, how it is actually born, etc. I think this is important to know as much possible about a project you put effort in. He then explained me his past in IT and how he ended up launching the project.
&nbsp;
# Conclusion
In conclusion, I would say that my main feeling about Open Source is that I am surprised. Indeed, that's my first experience in the world of Open Source and I am suprised about the fact that it went that well.
I feel like people contributing for free to some kind of project are necessarily nice since they just do it by pure pleasure. Everyone helps everyone without judgment with the common interest of wanting to improve the same project.
I'm also suprised to see how fast a project can grow when there are multiple contributors ready to put effort in it. Indeed when I initially asked to be assigned to the issue, there were only 2 issues opened. While writing this conclusion, 10 days later, there are now 8 issues and some other contributors interested in the project and I think this will keep growing.
I'm glad I was part of such an experience at least once in my IT career because I really felt like being actually useful to a project that will itself be useful in the future.
Though, as said earlier, I'm kind of frustrated about the fact that I couldn't fully integrate my contribution due to the complications of some extra features of the project. That's why I will for sure keep working on this project (as I said to the project owner) in order to improve it as much as I can with the skills I possess and so having my job completely done.
To finish, I noticed that my knowledge about git and all its usages are lower than what I thought. Knowing that, I will do my best to fix that in order to be more prepared in the future.
&nbsp;
# Current State
Waiting for the repo owner to keep me informed about his thoughts concerning the Pull Request review (even if I already know it will not be merged).
Still working on the project since I actually enjoy it.
\ No newline at end of file
# Open Source Contribution Project
- **Author**: Martin Danhier
- **NOMA**: 53612100
- **Year**: 2021
- **Selected project**: [MuseScore](https://github.com/musescore/MuseScore)
## Context
### About the project
MuseScore is a free and open source software for creating and editing music scores, and is used by thousands of musicians worldwide. It allows them to write music using a WYSIWYG editor similar to Microsoft Word, and to export the score to a variety of formats.
Currently, the community is working on the fourth major release, which aims to improve MuseScore's user experience and make it more intuitive for users coming from other programs, like Sibelius.
MuseScore is licensed under the GNU General Public License version 3.
It was developed using C++ and Qt.
Like the famous audio editing software [Audacity](https://github.com/audacity), the development of MuseScore is supported by the [Muse Group](https://mu.se/), which provides the project with full-time developers to help the community.
### Choice of the project
As a pianist, I sometimes find myself in the need to write scores. Being free and open source, MuseScore is a great choice for me. However, the project always lacked a lot of UI polish and important quality of life features required to be as efficient with it as with other software, like Sibelius.
However, after having elected a new head designer, the MuseScore community decided to start working on the next major release, MuseScore 4, which will completely rework the user interface in a clean and modern way, as well as introducing new features and improvements.
In the long term, the software also aims to become a complete [digital audio workstation](https://en.wikipedia.org/wiki/Digital_audio_workstation) that would not only allow musicians to write scores, but also to render them into high quality audio files, removing the need for other dedicated proprietary softwares like [FL Studio](https://www.image-line.com/fl-studio/). This would make MuseScore much more intuitive and powerful than the proprietary alternatives.
Needless to say, I am particularly interested in the project, and I can't wait to see what the future holds. This is why I decided to join the community, and I hope my contribution will help the project reach its goal sooner.
## Contribution
### Building the project
Before starting to work on the project, I wanted to make sure to be able to build it and configure my IDE to support it.
This process is thankfully well documented on the repository's wiki.
However, since I wanted to use VSCode instead of QTCreator, I had to create the configuration files myself, since the provided ones were outdated. I still didn't submit them, since I am still improving them from time to time. I eventually will, once they are ready.
### Finding an issue
To welcome new contributors, the MuseScore community labelled several issues as "good-first-issue". I chose one of them to start with: [MuseScore#9201](https://github.com/musescore/MuseScore/issues/9201).
The problem was that when zooming in the editor without the mouse wheel (e.g with ``CTRL +``), the anchor point (focus point) of the zoom was always located at the top left corner of the editor, instead of the center point or the active user selection, if there is any.
### The fix
To fix this issue, I had to implement the following changes:
- Add a method to get the position of the canvas (in other words, the value by which the page was dragged around in the editor) because it was not accessible from the outside.
- Add a method to compute the focus point of the zoom (the center of the selection if there is any, or the center of the view otherwise).
- Use this method in the zoom ones in order to determine the focus point.
In order to do this, I had to understand the inner workings of the notation system. This knowledge will be helpful if I want to contribute to more complicated issues in the future.
I also had to respect the code style guidelines of the project, which are documented on the wiki.
I opened a pull request for my changes: [MuseScore#9365](https://github.com/musescore/MuseScore/pull/9365).
Quickly, reviewers suggested changes in order to improve the quality of the fix (there still were code style issues, and I used Qt built-in classes where the internal format was preferred.)
After several iterations of fixes, the changes were finally approved and the PR was merged in the master branch !🎉
## Conclusion
### What I learned
This contribution not only taught me the structure of the code base, but also how the community works and what kind of answers I can expect from it.
In my later contributions, I also learned what kind of issues are the best to focus on (e.g try to focus on the issues that were approved by the maintainers with specific labels).
It also taught me things I didn't know about Git and GitHub, for example that if you include `Fix <issue-id>` in the commit name, the issue will be closed automatically when the commit is merged into the master branch. It also taught me about Git rebases, and how to "squash" several commits into a single one.
### Future contributions
Since everything went well for this first contribution, I decided to continue working on the project. I already managed to have several other pull requests merged (such as [MuseScore#9486](https://github.com/musescore/MuseScore/pull/9486) or [MuseScore#9532](https://github.com/musescore/MuseScore/pull/9532)), but I plan on doing more in the future.
In a later future, I'd like to have the opportunity to work on issues with a larger scale instead of tiny fixes. For now, most of these issues are directly assigned to the core team. I will try to contact the maintainers about it on their Discord server.
# Contribution à un projet Open Source
*Autheur:* Jacques de Dixmude Slavic Maxime
*NOMA:* 62051500
*Année:* 2021-2022
*Projet selectionné:* [VerbCalc](https://github.com/ErykPiasecki07/VerbCalc)
# Selection du projet
Par où commencer ? _"Trouver un projet Open source"_ C'est si large comme consigne qu'au début on se dit :
" Tranquille, je trouverais ça très facilement grâce à mes trop nombreux centre d'intérêt." Et bien non!
Car les devellopeurs de projet Open Source ne sont pas des amateurs!
Trouver un projet où contribuer est donc très très très laborieux.
La recherche de projet a commencé via le tag "good first issue" de Github.
Du coup on regarde les projet 1 par 1 et malgrès le tag,
je trouvais ces issues trop compliquées et/ou trop longues...
Les semaines passent et arrive un moment où je me suis dit :"Déjà 6 semaines! Je vais demander de l'aide.".
Ainsi, j'ai été contacter le professeur de ce cours afin d'avoir de nouvelle piste de recherche.
Le résultat de l'entre vue ne m'avait pas autant avancé que je ne l'aurais espéré.
Démoralisé, j'ai laissé passer 2 semaines avant de continuer mes recherches.
J'ai donc regardé ce que mes collègues ont trouvé et j'ai fini par tomber sur VerbCalc!
Un grand merci à [@LucaMellini](https://github.com/LucaMellinis)
sans qui je serais encore en train de chercher un projet !
#Verbcalc
C'est quoi? Le projet est de traduire une phrase verbeuse ( exemple : two plus two) en un calcul ( 2 + 2) afin de produire le résultat de ce dernier ( 4 )
Au moment au j'écris ce rapport, seul les opérations peuvent être traduite.
# Contribution
En regardant le projet, j'ai remarqué qu'il ne possèdait pas l'opération logarithme.
Ainsi, j'ai créé une issue demandant si je pouvais l'implémenter.
C'était sans savoir comment les opérations était réaliser...
Pensant donc que l'implémentation du log serait trop longue,
j'ai modifié mon issue pour implémenter l'opération Modulo à la place l'ayant vu dans la liste des opérations dans un des fichier du projet.
Le hic, c'est que j'avais mal relu mon code et il restait 1 logarithme dans le code au millieu de mes modulo.
Donc le responsable du projet la vu et me la fait remarquer.
Ce qui a retardé le merge de ma contribution.
Car entre temps, le monde continue de tourner et les devellopeur d'Open source de contribuer!
Ainsi quelqu'un avait implémenté la racine carré, ce qui a engendrer fatalement un merge conflit.
Merge que je n'ai pas eu à gérer. Le responsable du Git s'en est chergé à ma place.
Vous pouvez aller voir cette contribution sur Github [ici](https://github.com/ErykPiasecki07/VerbCalc/pull/35).
# Conclusion
Le monde de l'Open Source est vaste et complexe.
Il est facile de contribuer mais c'est une autre histoire pour faire de cette contribution interressante aux yeux de la communauté.
Sans parler de cette course à la contribution où on doit contribuer avant les autres pour que la contribution soit merge.
Bref, tout ça pour dire que ce projet a été très stressant et remet en question nos compétences de programmation dnas le monde réel en dehors des petits exercices sur Inginious.
Pour finir sur une note positive, ce projet a quand même servi à laisser une trace à la postérité de notre passage.
On a aider la communauté même si en pratique la contribution n'était pas d'une difficulité hallucinante,
ça permet aux personnes capables de les résoudre de consacrer leurs temps à ça au lieu d'en faire des facile qui sont facilement chronophage.
\ No newline at end of file
......@@ -4,22 +4,33 @@
*NOMA:* 14431900
*Year:* 2021
*Year:* 2021-2022
*Selected project:* [coding-space](https://github.com/rishipurwar1/coding-space)
# Project selection
Since the number of open-source application that i'm using is really low i decided to browse the internet and thus find this project.
The project seems quite young and thus only beginning but I find the concept interesting. When i need to learn a language or another
Since the number of open-source application that i'm using is really low i decided to browse the internet and ended up finding an issue about Coding-Space.
The project in itself seems quite young and thus only beginning but I find the concept interesting. When i need to learn a language or another
technology, I always find myself in difficulty to create exercice to practice by myself and end up in tutorials videos and so on...
I did my bachelor in High School and had some courses about web development. I think i could bring something to this project and would therefore like to contribute to it.
Those are the actual issues but i think that other stuff might follow since the youth of the project.
https://github.com/rishipurwar1/coding-space/issues/27
https://github.com/rishipurwar1/coding-space/issues/26
https://github.com/rishipurwar1/coding-space/issues/25
https://github.com/rishipurwar1/coding-space/issues/24
# Contribution
The issue I choose is the following-one [Fix skeleton loading card](https://github.com/rishipurwar1/coding-space/issues/25).
The description of the issue was quite short and mentionned a problem in the size of the skeleton that take place as loading animation before retrieving the date from a Firebase Database.
I'm willing to participate to all of them and maybe more to start my journey in the open-source world
I started by analysing the code and the behavior of the UI during the loading state to find a way to solve the issue and improve the user experience. After this I proposed an example of design for the skeleton card and asked for an access to the current database of the project to ensure consistency between the two state of the web pages (before loading data and after loading data). I didn't have to wait long to get a positive response.
As I was in regular contact with the owner of the repository through Github (pull request) and Discord (a server for the community of Coding Space) I was able to respond more precisly to his need. My work has been done over two pull request.
First Pull request :<br>
The website is divided in five mains pages in which four of them require loading skeleton for cards that represents challenges, solutions to challenges and ressources. For each of them I add to create new React component and adapt some code that was previously used to match the new design. I also used this as an occasion to correct some inconsistencies in the code. Some parts of the cards were the same but implemented in different way. I also noticed the use of two different modules (grid and flex) for the organization of the cards before and after loading. This topic has been left out for the moment.
This task was longer than difficult and went smoothly. I did strugle a little to make the pull request due to some conflicts but I managed to do it. The pull request has been accepted and merged into the project.
Second Pull request :<br>
Later on I created a second pull request to implement some minor modifications requested by the owner in order to finally have the final result. This pull request was also accepted and merged into the main branche.
# Conclusion
Working on an open source project was completly new to me. By working on this issue I noticed that it would be a good thing to learn more about the git tool to avoid wasting time in the future. I may not have made huge modifications to the project but I'm still proud of what I did.
......@@ -9,21 +9,44 @@
## Research and Selection of the Project
As I had never tried to collaborate on an Open Source project, this course marked my first contact with the Open Source world. Not really knowing in which direction to start my research of a topic on which I was going to work, I start by reading the guide provided on GitHub for newcomers simply named [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/). It seemed like a great point to start the adventure.
As I had never tried to collaborate on an Open Source project, this course marked my first contact with the Open Source world. Not really knowing in which direction to start my research of a topic to work on, I started by reading the guide provided on GitHub for newcomers, entitled ["How to Contribute to Open Source"](https://opensource.guide/how-to-contribute/). It seemed like a great point to start the adventure.
After thoroughly reading this article, many helpful resources are showcased towards the end such as [GitHub Explore](https://github.com/explore/), [First Contributions](https://firstcontributions.github.io/) and [First Timers Only](https://www.firsttimersonly.com/). The last one, "First Timers Only", was of particular help in my search, allowing me to explore other resources such as [First Contribution](https://github.com/firstcontributions/first-contributions), [Good First issues (.com)](https://goodfirstissues.com/) and [Good First Issue (.dev)](https://goodfirstissue.dev/).
The first one, First Contribution, is a GitHub repository focused on simplifying and guiding the way beginners make their first contribution on the platform. It allowed me to discover the whole process of the standard "fork -> clone -> edit -> pull request workflow" for the first time.
The two others, on the other hand, have been of real help in discovering several Open Source projects of interest which I will describe below. Through those resources, I've discovered several repositories such as [Lofi](https://github.com/dvx/lofi), [Harvest](https://github.com/tfukaza/harvest) or [Five Fifths Voter](https://github.com/Call-for-Code-for-Racial-Justice/Five-Fifths-Voter).
The first one, First Contribution, is a GitHub repository focused on simplifying and guiding the way beginners make their first contribution on the platform. It allowed me to discover the whole process of the standard "fork -> clone -> edit -> pull request" workflow for the first time.
The two others, on the other hand, have been of real help in discovering several Open Source projects of interest, which I will describe below. Through those resources, I've discovered several repositories such as [Lofi](https://github.com/dvx/lofi), [Harvest](https://github.com/tfukaza/harvest) or [Five Fifths Voter](https://github.com/Call-for-Code-for-Racial-Justice/Five-Fifths-Voter).
Although those projects were really interesting in my opinion, as "Lofi" was very relevant for me since I use Spotify daily and as "Five Fifths Voter" seemed like a great project to empower equality, they seemed in my opinion a bit too challenging for me, considering it was my first time contributing and that I needed to do a "small" contribution. Thus, I kept browsing the resources providing me with different examples of "beginner-friendly" project, and that's how I finally encountered the project named [Voyager](https://github.com/pulkithanda/voyager-hf).
Although those projects were really interesting in my opinion, as "Lofi" was very relevant to me since I use Spotify daily and as "Five Fifths Voter" seemed like a great project to empower equality, they seemed in my opinion a bit too challenging for me, considering it was my first time contributing and that I needed to do a "small" contribution. Thus, I kept browsing the resources cited above, providing me with different examples of "beginner-friendly" projects, and that's how I finally encountered the project named [Voyager](https://github.com/pulkithanda/voyager-hf).
As described on the repository, Voyager is a space website that can be used as a template in the future for space-related topics. Once again, it is a topic that is of interest to me, as I myself am quite fond of space observation and space related content, like videos. Plus, developing a website is always something that appeals to me since we did not do web development through my engineering degree. Finally, the different issues available seemed reasonable to solve given my current skills. That's why I decided to go for that Open Source project.
As described in the repository, Voyager is a space website that can be used as a template in the future for space-related topics. Once again, it is a topic that is of interest to me, as I am myself quite fond of space observation and space-related content like videos. Plus, developing a website is always something that appeals to me since we did not really do web development through my engineering degree. Finally, the different issues available seemed reasonable to solve given my current skills. That's why I decided to go for that Open Source project.
## Communication with the community
## Interaction and communication with the community
When contributing to Open Source projects, the interactions with the community constitute a central part of the process. Luckily for me, the owner of the project was "quite obviously" reachable through the GitHub comment section, directly under the issue that a person would be assigned to. But the owner also happened to have a Discord server, which you could join in order to speak more easily about specific points or problems that an assignee might encounter while working on one of the issues.
In my case, I mainly used the GitHub comments section to communicate at first, but then I also used a bit the Discord server that was available to ask more details to the owner about specific points I was working on, in order to not "pollute" the GitHub comment sections with plenty of messages.
Since this project was participating in Hacktoberfest 2021, which is a month-long celebration of open source software where open source maintainers give new contributors extra attention as they guide developers through their first pull requests on the platform, I must say that I received a lot of help and guidance from the maintainer.
Plus, since a considerable amount of other people, including students like me, were also contributing to this project, it made it buzzing with life.
## Contribution
For my contribution, I decided to tackle the issue named ["Adding a Video Gallery section for pictures"](https://github.com/pulkithanda/voyager-hf/issues/6) on the Voyager project repository. As the name of the issue is quite straightforward, the owner of the repository wanted a video gallery to be added below the "About me" page (as a separate "div"). But before starting to work on the issue, I first needed to exchange with the owner to grasp exactly his need, as I found it strange to add a **video** gallery that would contain **pictures** and not videos, as the title is indicating. After discussing, I was now assured that he wanted a gallery containing video thumbnails that could act as a link towards a video player.
Using some references that he provided me with, I started integrating code into the forked project to build an "Image slider" with a scroll effect for the video gallery. I found it to be a great choice of design, matching the overall "space" theme of the website. The architecture of the website, developed in Flask, wasn't too difficult to take in hand. Flask is a micro web framework written in Python, thus the project consisted of CSS, JavaScript, HTML and Python files. To integrate my video gallery, I simply needed to write some CSS, JavaScript and HTML code.
At first, I had some difficulties with the [gsap](https://greensock.com/gsap/) library, making me unable to integrate the code properly. Then, I encountered a bit of trouble with some CSS parameters that were conflicting with existing CSS values for the web page. Also, the JavaScript code snippet I was using needed to be adjusted to properly fit the needs of the functionality. Finally, I integrated "iframes" to place Youtube thumbnails in the video gallery, making it fully functional.
The owner of the project seemed pleased with my work and just asked me to fix a few remaining small things. After that, I sent my pull request and the owner accepted it, merging my code into the project. In the end, it was very interesting to contribute for the first time to such an open-source project and I hope it will help people using the Voyager website template in the future.
## What I have learned
In the end, this project has been a great opportunity for me to further improve my knowledge and skills in software development and web design, as it is something that has always piqued my curiosity and as it is not something that is taught at our university. Thus, I can fairly say that I have now a better grasp of :
* Flask "microframework", which can serve as an entry to more complex full-stack frameworks, such as Ruby on Rails or VueJS.
* How to reach project owners and communicate with them to better understand what they exactly want.
* Javascript code, especially to achieve certain functionalities, as in my case, making video thumbnails rotate.
# Report - Contribution to open source project
| **Author:** | _Rodrigo Magaldi_ |
| ------------------------ | ---------------------------------------- |
| **Date:** | 26/10/2021 |
| **NOMA:** | 2622-21-00 |
| **Academic Year:** | 2021-2022 |
| **Open Source Project:** | [Exercism](https://github.com/exercism/) |
## Choice of the project
As soon as I got to know that we were supposed to contribute to an open source project, what came to mind was an npm package I used a lot in my last job, called [brazilian-utils](https://github.com/brazilian-utils/brazilian-utils). Basically, it's a general tool for field validation of Brazilian information (phone number, address, ID number, etc.). However, by the time I checked, there were no simple issues to be resolved, nor was the community particularly active, so I decided to take a look at some other possibilities.
Having never contributed to an open source project before, I was a little lost, so I took a look at what previous students of this course had done, and I found out about Exercism, an open source tool to learn how to program. I had come across this kind of website before, but not Exercism per se, and I was really interested to find out how such a big project was organized.
Thus, Exercism is the project I contributed to. Since I had experience working with Typescript (and strongly typed languages are much better to work with), [this](https://github.com/exercism/) is the track I chose to follow.
## My process
After [studying a little as to how to contribute to an open source project](https://github.com/firstcontributions/first-contributions) and beginning the [learning track of typescript on exercism](https://exercism.org/tracks/typescript) to get acquainted with the service, I thought I was ready to make a contribution.
My first thought, seeing how the description of the exercises was written, was that I could contribute on making the instructions a little clearer for the students, by separating the text in sections, adding inputs and examples of inputs and outputs, so I created an [issue](https://github.com/exercism/typescript/issues/807) at the repo.
However, as was pointed out to me, Exercism is not meant for absolute beginner programmers, so it's not too bad that the instructions don't guide the whole solution to the problem.
In light of that, I decided to contribute by adding an exercise to the track, in which the goal is to translate the colors of a resistor into a human readable label.
## Conclusion
Although I did not put too much work into the actual coding, it was really enlightening to understand how to work at an open source project, and I hope I can make more contributions to Exercism and other projects in the future.
The maintainer was really nice to me and fast in responding to my questions and inputs.
- Issue created: https://github.com/exercism/typescript/issues/807
- PR: https://github.com/exercism/typescript/pull/814
With all tests passed, I'm just waiting for full aproval and finally the merge of my work into the main branch.
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