Week 1 Lab 1 Open Source Software
Tags: opensource, github
Published: 2021-10-06 04:44:15

Hello my friend, this is my first blog which is about the first week material of SPO600(Software Portability and Optimization). In this blog I’m going to examine two open source software and explore the review process for each community.
 
I believe every programmer is super familiar with open source software. Based on my personal coding experience, when I was so confused about how to push a program into real life and make it to solve the real problem, open source software provides an opportunity to take a look at how the program works and the procedure of reviewing and debugging the errors. Open source software is very beneficial for each programmer who wants to learn and analyze the source code. It also offers a chance to use the idea of the source code into another program.


##Bitwarden 
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s1viqofxpg2t0dhm1ghj.png)
####Overview####
Bitwarden is a password management software, it offers the individuals and teams to securely store their password and credentials. Bitwarden is an open source software which provides multiple methods to protect user information such as mobile app, software package on Windows and Mac platform, and browser extensions etc.
 
####License####
The core products of Bitwarden offer the GPL-3 (GNU general public license 3 version) and the A-GPL to the community. The GPL version 3 is to guarantee the freedom of changing and sharing to all versions of the program. In this case, Bitwarden provides the core password management code for individual password vaults, including web, mobile, desktop and CLI versions as well as core server code under the GPL license.

####Procedure####
Bitwarden holds the source code of the core server and each platform on Github([Bitwarden Github](https://github.com/bitwarden)), and assigned 7 people as the manager of the program. However, Bitwarden also opens a lobby for the programmer to communicate, help to debug the code and share their ideas of the system functionality during the development based on the Bitwarden source code([Bitwarden Lobby](https://gitter.im/bitwarden/Lobby)). Moreover, Bitwarden encourages people to contribute through the Github and follow the contribution guideline: 
1- Visit the community forums([Bitwarden forums](https://community.bitwarden.com/))
2- The new contributor has to assign the contributor agreement in order to access and modify the github repository.
3- Request a new feature. The contributor needs to check the current features on forums([Feature request](https://community.bitwarden.com/c/feature-requests/5)) before requesting a new feature.
4- Write the new feature and make a new flag for the new feature on the community forums([Feature flags](https://community.bitwarden.com/c/github-contributions/7)).
5- Report a bug or submit a bugfix.
6- Submit a pull request to the help repository([Github help page](https://github.com/bitwarden/help))
7- Help other users on community forums.
8- Commit pull request  against the master branch.
By this way, Bitwarden accepts every contributor to report the security issues.

####Example of package reviewing process####
In the open source community, each software has different approaches to review the package from the contributor. Bitwarden chose to use pull requests in Github to review the new packages and bug reports. Here are two examples:
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rub5pr3mv1o6lcckemmh.png)
The first example is a bug report. A contributor opened an issue on Github. Then the collaborator of the manager teams received this report and posted it onto the pull request for the Bitwarden engineers to keep track of this issue and come up with a solution for this bug.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/slh4pc22nr0gvjn4g7to.png)
Once the Bitwarden engineers received a new bug report, they would open another issue on Github to describe the bug and list the recovering steps for solving this problem.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3mut3ttcp7xuisccm1af.png)
The second example is a bugfix process.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z8fv5dzvoamcef1o17k8.png)
The Bitwarden allows the registered contributors who signed the agreement to approach the repository. In this example, the contributor addressed and uploaded the solution for it on the pull and requests. Then the contributor requested a collaborator to review the update. After the reviewing the update would be committed against the master branch.

##Godot##
Godot is the second open source software, it is a C++11 based, [cross-platform](https://en.wikipedia.org/wiki/Cross-platform_software), [free and open source ](https://en.wikipedia.org/wiki/Free_and_open-source_software)  [game engine](https://en.wikipedia.org/wiki/Game_engine) released under the [MIT license](https://en.wikipedia.org/wiki/MIT_License). 
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w77qwdj7qla4wxdrm7s4.png)
####Community####
Godot offers many different [communities](https://godotengine.org/community) for contributors around the world such as FaceBook, Reddit, Github, Twitter, Youtube online contributor chat. Beyond this, Godot also established a local user group including physical community and online community in Canada, South America, Europe, Africa, and Asia. All of these platforms actually help a lot of people to get involved in game engine software development and provide tons of thoughts to improve the user experience. 
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ypzf6hdq84ln3lhw9own.png)
 

####Procedure of contribution####
Same with Bitwarden, Godot chose to assign a team of developers to maintain the Github and receive the user response and contributions. They are responsible to help to solve the bugs and evaluate the proposals from each contributor according to the [rules](https://github.com/godotengine/godot-proposals). A simple example for observing the procedure. 
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3swqy45z3nyws2wh2fpe.png)
The contributor uploaded a solution on pull request for a template file issue then the manager reviewed and approved the changes. 

####Conclusion####
Bitwarden and Godot are two examples of open source software based on Github and community forums, it allows all of the contributors to assist in the development of the program, then improve the program robustness and provide new features to the user. Using Github as a platform is convenient for all of the contributors to work together and discuss the bugs and bugfix efficiently. On the other hand, it may also cost more time for the managers to check the code. As a student who observed the whole project of contributing and reviewing process, I have to be familiar with the popular programming language because most of the softwares choose to use the popular and high level programming language as the majority of source code. The contributor has to control it very well in order to solve the bugs and add new features for a program.