Investigating Open Source Software Packages
Tags: spo600, opensource, programming, git
Published: 2023-09-17 20:28:18

This is my first blog post for my Optimization and Portability class at Seneca College. I am researching some open-source software packages and explaining how they handle code changes in the open-source environment. 

For this investigation, I've found 2 software packages with different licenses:

First, I'll be taking a look at [OpenCV](https://opencv.org/) which uses a [Apache](https://www.apache.org/licenses/LICENSE-2.0) license. They're an open-source computer vision software package that uses machine learning and its goal is the commercialization of machine perception for use in the mainstream including things like identifying faces and objects, tracking objects, and extracting 3D models of objects (Learn more at https://opencv.org/about/).

Their primary mode of accepting code changes is through their GitHub repository [here](https://github.com/opencv) where users can contribute to the project by submitting issues and making pull requests. An example I'll be looking at is this [Pull Request](https://github.com/opencv/opencv/pull/24266) for an update to the code. 

The process is pretty typical for a GitHub project the contributor  Creates a branch, Clones the branch repository locally, Creates the change/patch, and then Submits the patch as a pull/merge request to the main repo on GitHub.

The review process then begins and a maintainer is assigned to the issue who tags the request and adds it as a part of a future patch milestone. In this case, the maintainer asks another maintainer to review the code and small discussions begin about the methods the contributor uses where other contributors discuss some of the changes. The original contributor then makes some changes and then the patch is approved and merged into the main project. 4 people are involved in getting this patch accepted into the main project

Another project that I'll be looking at is the VLC media player and the VideoLAN software located at https://www.videolan.org/ which is a popular multimedia video player that uses a [GPLv3 (GNU Public License)](https://www.gnu.org/licenses/gpl-3.0.html). They have their own organization GitLab located [here](https://code.videolan.org/explore/projects/starred) for contributions to their code and require people to have an account with their organization before they are allowed to make any changes. 

I'll be describing another accepted patch through a merge request located at this [Merge Request](https://code.videolan.org/videolan/vlc/-/merge_requests/4252). Like GitHub, the contributor creates a branch including their addition for their merge request. 

In this request, the contributor creates the patch and submits it for review. The maintainer then provides tags for the request and addresses some of the methods used for changing. A small discussion between the maintainer and the contributor happens which then gets some others involved (including the president of VideoLAN Jean-Baptiste Kempf) on the methods used which results the the original contributor updating their merge branch. After this, the branch is approved by the maintainer and given a tag saying it can be added to a future update, and a couple of days later it is grouped together with many other merge requests which all together are finally pushed to the main branch.

With this, you can see how the head maintainers organize the patches provided by merge requests by grouping approved ones and adding them all at once. This patch involved 5 people from the review stage to the approving and merging stage.

By looking at these different open-source methods for software packages we see how many people contributing and reviewing the project help maintain it as both a relevant project and a free and open-source one.