Project Contributions
freeCodeCamp
freeCodeCamp is a GitHub repository that helps people learn to code for free. There was a section that needed an explanation and I attempted to contribute by adding an explanation similar to an already existing explanation elsewhere in the project.
Here is a link to the pull request I made.
This is what the explanation looks like:

Unfortunately I was unable to utilize GitHub codespaces to make this contribution as I was having technical difficulties, and so the pull request was rejected.
Blog Posts
BP01
What is Open Source?
For a project/software to be open source means that the source code is able to be accessed freely and portions may be edited and redistributed.
What Surprised Me?
What I found most surprising is the amount of collaborative tools and methods that come with being part of an open source project, such as the idea of pulling and pushing code from and to the cloud to avoid costly mistakes in the main branch.
Well Known Companies/Projects that Use Open Source
- Linux
An operating system alternative to Windows.
- Blender
A software that allows 3D modeling and animation. - GIMP
An image editing software alternative to pricey softwares such as photoshop. - Python
A programming language with an emphasis on readability.
- Firefox
An open source web browser.
In addition to these open source softwares, large companies such as Google host open source projects instead of Google as a whole being open source.
Why it Matters
For entirely open source projects, take Blender for example, this means that the community that utilizes this software is able to have a stronger voice in changes to the software than if it was not open source. For large companies like Google, this allows them to benefit from the extra volunteer development/ideas from open source while still keeping key aspects of their software proprietary.
BP02
What I learned about Markdown and Git
I was previously not aware of the Git workflow of branching and merging, more specifically:
Who moved my Cheese!\ When multiple people are working together at the same time using multiple branches, your current branch may become outdated compared to main. If the project is poorly managed, this can result in conflicts where one programmer is working on something and somebody else “moves their cheese” by doing something that causes them to have to do more work or breaks their feature altogether.
How Markdown and Git help contribute to open source and develop professionally
Markdown offers an efficient tool to communicate ideas, allowing you to layout things neatly and put emphasis where you want it.\ \ Git offers a productive work flow that both allows for ease of collaboration as well as getting things accomplished in a professional and streamlined manner.

Have I Used Git or Markdown before?
I have acutally never explicitely used Git or Markdown before taking this class! However, I have learned very little HTML before which is similar to Markdown and so some of the formatting is familiar to me.
What surprised me about Markdown and Git
I was most surprised by how widely used Git and Markdown are. Some examples where Markdown is used are:
- Discord
- Stack Exchange
And for examples of software that uses Git/GitHub, see last week’s blog post
BP03
How I chose a repository to explore
At first, I was unsure of how to choose a repository to explore. The lists of repositories I could find online seemed daunting and endless. Upon recommendation by Professor Bassetti, however, I decided to look for a repository related to LaTeX and the display of mathematics on computers. The reason I chose to do so is because I am a Math Major, and LaTeX is something very useful in the field of mathematics, so I was interested in seeing how it works/is supported.
That is how I found MathJax. Some notable features laid out in the README are:
Image take from this repository
What I found interesting about its structure
The structure of the repository was very organized, the only notable disorganized portion being that there are 24 branches. Prior to exploring this repo, I did not know how such a large open-source project would look “under the hood” so-to-speak.
I now can see how work can be streamlined through
- Rules of conduct - Effort is better spent contructively than destructively
- Ease of access - If a potential contributor is deterred because it is made difficult to do so, that is less potential volunteers
- Organization of repo - If the repo is difficult to navigate or disorganized people may be put off from the project
It is in this way that open-source becomes a valuable tool useful even in industry.
What I found interesting about its community
The most interesting thing I noticed about the community is how many recent issues are open. In just the past month there have been 17 issues opened.
Equally interesting is just how committed to the project some of the contributors are. I found one such contributor helping in almost every issue I opened, and helping within the same day a lot of the time, which goes to show how on top of the project the community is!
What I found interesting about its contribution process
The contribution process was very welcoming and open to anyone who wanted to report a bug or request a feature. The contribution guidelines were very easy to follow, starting with three simple rules to ensure that anyone who wants to contribute can.
Image take from this repository
It is essential that an open-source project be accessable if it is to attract a large amount of contributors.
BP04
Reveal.js
What is it?
Reveal.js is an open source software that allows you to create presentations with vast customizability options, as opposed to tools such as google slides which are far more limiting.
How is it structured?
The repository of Reveal.js is structured like any other standard repository on GitHub, but more specifically it includes:
- Examples
- A demo presentation that explains how to use Reveal.js
- A comprehensive README file that explains both how to install and use the software
- An MIT License
- A contribution guide
- Over 80 open pull requests and over 1,000 closed pull requests
In order for a user to use the software, they simply fork the repository and can edit their own copy.
How it is documented/maintained
The documentation on the commits is very specific to what issues they addressed. For example:
Clear documentation of this kind is essential since a repository of this scale has thousands of commits, so it is impossible to search through them without clear, descriptive titles.
As for the maintanence, I find it interesting how many issues are opened and the number of different people opening and working on the issues. The most interesting open issue I saw was:
Which requested support for an updated version of MathJax - the same repository I personally explored last week! I find it fascinating to see an overlap like this between two open source projects that I would not have thought about normally!
Could I see myself contributing to this?
At first, the lack of beginner friendly tags set me off from this repository. I felt it was too advanced, but seeing the feature request issue related to something else I explored prior makes me believe that there may be a small contribution I could make, even if it is just a feature request.
Feature Request:
We should put this apple in the repo in case someone gets hungry
BP05
Open Source Licensing
What I learned about open source licenses
MIT vs GPL: The MIT license places little restriction on what users can do, whereas the GPL is specifically a copyleft license, meaning any software that uses or is derived from GPL-licensed material must also be released under that same license. I find this type of license to be intruiging and, as far as open source goes, preferable, since it means that the project will truly remain open source even if used by other people.
Tetris Movie
The Tetris movie was not only a great movie, but it also gave me a glimpse into how chaotic the licensing world can be. It felt at times that no one knew who Tetris even belonged to, or that someone thought they had the rights to it but due to some very specific reason they still didn’t have the rights. I am glad that open source almost circumvents these issues by opting for simpler licenses that either allow you to use the software as you like, or copyleft licenses that keep any use of the software open source.
NIU’s approach
I found NIU’s approach to who owns intellectual rights/patent rights/copyrights interesting. Namely how the student had the rights to whatever they created unless they used something (finances, lab equipment, etc) from the school to help them. In the latter case, NIU would have the rights.
How licensing both empowers and complicates open innovation
Licensing gives people the peace of mind that they will be credited with their ideas and that those ideas cannot be stolen from them. On the other hand, licensing may also feel as though it restricts the creative freedom of people.
- A recent example of this is the problem with false copyright claims on YouTube videos. A lot of the time these are imposed by AI that is trying to interpret fair use, and this inevitably leads to unfair suppression of videos that should fall under fair use.
- Another example is the Tetris movie with how difficult it was for Tetris to go from an idea to a game almost everyone had easy access to.

Shoutout to this guy who kept getting screwed over from how confusing all of the Tetris ownership rights were.
Bonus
A repo I am interested in is called Cubyz, which is a game similar to Minecraft but with more customizability for the players. It uses the GNU General Public License v3.0, a copyleft license that allows users to freely copy and distribute the software, but does not allow users to change the software. I found the license’s preamble to be neat and very much in the spirit of open source:
This screenshot was taken from the preamble of the GNU General Public License v3.0
BP06
My Experience With Global Hack Week
During this past week I attended two events from the Global Hack Week:
- Tetris Mini-Event
- Understanding Open Source Repos
What I Learned
During the Understanding Open Source Repos event, I learned a lot about how repos are structured and how to ensure that your pull requests and issues stand out. You can make them stand out by:
- Following GitHub best practices such as making sure you format correctly and check to see if someone else already made a similar pull request/issue
- Reading and understanding the CONTRIBUTING.md file so you know how to format issues/pull requests
- Giving descriptive titles and descriptions and using concise language so nobody has to guess what you mean
The instructor for this event was Varshini from Major League Hacking, who did a great job interacting with the people at the events they hosted. Funnily enough, Varshini also hosted the Tetris Mini-Event I attended, and their live commentary was quite amusing.
What Challenge I Completed
I opted for quite an easy challenge, that being to star my favorite repo. I chose to star Cubyz, a game similar to Minecraft that I hope to contribute to at some point this semester. As someone who does not spend a large amount of time on computers or with programming, it has been difficult for me to find a project that really grabbed my attention. Cubyz was able to do so since not only do I like Minecraft, but I also found the reworking from the ground up of many of Minecraft’s mechanics in Cubyz fascinating - such as the 3D chunks and options for custom items and biomes.
Relating back to understanding the CONTRIBUTING.md file I found this portion of Cubyz’s to be quite relevant to how I’ve seen a lot of programmers do their work now:
Screenshot taken from Cubyz CONTRIBUTING.md file
How This Experience Shaped My View
The thing that I found most surprising was how inviting the GHW community was. They were very good at inviting new people and simultaneously showcasing/explaining the importance of common practices and how to contribute as a beginner. Beforehand I was worried that people may have been pretentious and unwelcoming to newcomers, but this week has helped alleviate my worries. As I start working towards making a contribution to a real project, I hope I this continues to be the atmosphere in the community!
I also learned that I suck at Tetris!
BP07
Explore Non Code Contributions
What counts as a contribution in open source?
In open source, a contribution is a very broad term that includes any effort that improves or attempts to improve an open source project. These can be both code and non code contributions and usually involve working on issues and/or pull requests.
My Thoughts on the Value of Code and Non-Code Contributions
While code contributions are of obvious value - you need code for your project to function - non-code contributions can be helpful in a variety of ways, namely:
- Formatting and documentation improvement
- Assisting others who may be trying to contribute
- Improving the user-friendliness of the project
- Testing out the project to ensure that everything is working correctly
As such I believe that no open source project can reach its potential without ample non-code contributions.
How Diagrams Help Clarify a Workflow
The use of diagrams, particularly those discussed in Mermaid, can take a workflow from being disorganized and strewn throughout multiple softwares to being streamlined and all in the same place. Effective use of diagrams also makes communicating with others about how to reach project goals much simpler as the diagram offers a simple visual that can be easily shared.
How Communication and Collaboration Shape Successful Non Code Contributions
One Non Code contribution I found in freeCodeCamp, which was about inconsistent capitalization in a quiz, outlined how it can be achieved by a first-time contributor. It was then taken into a pull request later that same day, allowing a user to complete their first pull request. In this case the issue was very minor and easy to fix, so the collaboration was rather to get the contributor to be able to complete their first pull request. So not only is communication and collaboration necessary to get work done effectively, but also it can help bring even more people into the project. Non-code contributions are a great way to do so since the contributor will not need any coding expertise.
What Non Code Contribution Opportunities Did You Find?
While I did not find any specific unclaimed non-code contribution opportunities, the examples of non-code contributions that I did find all were very similar. Usually it involved a typo somewhere or adding some information of some kind. Things like these are important to keep a project professional and neat. The other kind of contribution I would see was when people collaborated to help someone else get a first contribution. In this way i feel that the open source community of the projects I have looked at this week felt almost equally focused on improving the project as they were exposing others to the world of open source.