Lab 1 - Code Review
- elisangli11
- Jan 14, 2020
- 4 min read
In this lab we select any two open source software packages that have different licenses and explain in detail how each community's review process works.
-You Don't Know JS Yet (YDKJS)
This particular open source caught my attention because it is a subject that I am really interested in which is JavaScript. Knowing that there are people trying to improve or learn more about it and share their knowledge can be impressive because they can bring a community together. This is license by Creative Commons Attribution-NonCommercial-NoDerivs 4.0 International. The creators of YDKJS describe it as a 'series of books diving deep into the core mechanism of the JavaScript language'. They use GitHub to teach and train their findings. Also, people can make contributions for improvement, bug fix or explanations. How they work? people can make a pull request or they can create new issues which will be review by the master of the branch. Like many projects they have different guidelines for contributing that contributors need to follow (https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/CONTRIBUTING.md). After publishing their contribution, it can take up to 1-3 days for the master or moderators to review it. They will make comments or notes about their request and the contributor need to fix or review based on the feedback. But, the actual pull for the master branch can take up to 1 - 4 months. Usually for one issue or pull there are 3 people involve: master, moderator and contributor. Depending on the request it can take to 1- 7 days for a respond from the master or moderator. The feedback from contributor to master is very good, both party's responded well with the comments.
For example (https://github.com/getify/You-Dont-Know-JS/pull/1566), this is a typo issue that did not took that long for a respond from the master. The contributor notice a small typo issue in one of the chapters and suggested a small fix. The conversation between both of them was fast and responsive because it was a small issue there are 2 participants. But it took 29 days to actually merged it to the master branch.
On the other hand, issues that required a third person (https://github.com/getify/You-Dont-Know-JS/pull/1473) take more time into making it to the master branch. For instance, this is a request to review the object key name type. After it got approved by the master, a moderator proceeded to make some comments about the changes and the contributor change it based on the feedback that he got.
The advantages of projects that are big like this one is that people review it more and it gets more feedback, more exposure to people that wants to learn independently and bring communities together. Because of the scale of the community, the disadvantages can be that many people might submit the same request or issue which this lead to a constant monitoring and reviewing from moderators or branch master. Also, it takes time that your pull request will make it to the master branch.
In order for me to make any contributions to this open source is to read their book and practice their theories. Spend some time going through their training videos and apply what I have learn so far. I think the only contribution that I can make is finding any typos or spelling issues. Since this is a book to teach people more about JavaScript and is still a work in progress there might be some typo or spelling issues.
-wav2letter++
This open source is different than the one mention above. Wav2letter++ is a smaller community with 23 contributors. This is license by BSD License and it is describe as 'a fast, open source speech processing toolkit from the Speech team at Facebook AI Research'. What intrigues me about this open source is that anyone from the GitHub community can make contributions for this particular source and is not limited to Facebook employees. How they work? Since this is for Facebook, most contributors need to sign their Contributor License Agreement before getting their request committed to the branch master (Ex: https://github.com/facebookresearch/wav2letter/pull/280). After they sign the agreement, they can start making pull request or issues. They usually have between 1 - 4 participants depending on the severity of the request. But they always count with a 'facebook-github-bot' for every request and issue. Because of that the response are faster and more efficient to keep track. Most request get closed or pulled for the branch master the same day they are created (Ex: https://github.com/facebookresearch/wav2letter/pull/411).
For example https://github.com/facebookresearch/wav2letter/pull/318, this issue is more complex hence why it took more time to close. This is a pull request for a fix for a Train crash in Ubuntu. The Contributor found a crash log and request a review to fix this crash. After the bot assigned a label, others contributors started to comment and leave their findings about this issue. Also, the exchange between the contributors is back and ford with fixes and suggestion. Which lead to a closed request fast, it only took 13 days to finish this request. I believe this got close faster because it got 4 participants and their respond time was fast, it took no longer than 2 days to get feedback from others contributors.
The advantage of projects that have a small group of contributors is that it can be more organize and easy to find solutions. But taking into account that this open source comes from a company such as Facebook and maybe they have people monitoring their process constantly instead of a one man job. I personally do not find any disadvantage from this particular open sources because the response time between the contributors and owners is fast.
I think in order for me to make contributions for this project is to read and try to understand the code first, since C++ is not my strongest I will have to make more research about some of the topics and terminology that they use to implement this AI. Once that step is done, try to run the current code they have so far and check others issues that people might have encounter and see if I can find something different. After that make my pull request for the issue that I might have encounter while testing and running the code.
Commentaires