I've been wanting to get into open source for a while now, even before I enrolled in my coding bootcamp. I want to contribute to certain software I use by help improving it or learn to create my own plugins, extensions, etc. for that software.
Now, enters open source. What is it? How does it work? Why use open source or why contribute? How do I contribute? How do I start? When should I start? Where can I find open source? All these questions come up to me because it just feels there is so much to open source I need to know about first.
First, What is Open Source? It is a type of software where the source code is distributed under license to allow people to study, alter, and redistribute the software to anyone for any purpose. GNU, or General Public License, is the free software license in order to allow the freedom and access for users with modifying the software.
What are some popular open-source software that you probably didn't know you were already using or have seen before?
- Mozilla Firefox (Internet Browser)
- Audacity (Audio Editing)
- GIMP (Image Editing)
- LibreOffice (Practically like Microsoft Office, Pages)
- VLC Media Player (Video Media Player)
- Notepad++ (Code Editor)
- Blender (3D Rendering & Animation)
- Ubuntu (Operating System)
If there is "Open-Source" software, then there has got to be a "Closed-Source." This is also called "Proprietary" software (it's also called "closed source" software). The main developers of the proprietary software can freely rework the software. For consumers to use proprietary software, they have to agree and sign to licensing terms and conditions, from those agreements.
How does it work?
One of the first steps of working with open source is being able to navigate through Github. Here are some sources for a Github Guide & Github Walkthrough.
Choose a programming language. The popular ones on Github are JavaScript, Python, Java, Ruby, and PHP. There are others but these seem to be the more common ones.
Choose a project you are interested in. This could be software that you already use or that you are curious to work with.
Choosing a big project compared to a small one. The popular open-source software would probably be overwhelming for a beginner because of how much code there is to study and catch up on understanding just to be on the same page with developers are contribute regularly to the project. There are issue labels stating "first-timers-only," "beginner," "easy," and other similar wording. This is a good link of Github projects for newcomers to check out.
So, some things to keep in mind, choosing a language, choosing a project you are interested in, and considering the project size.
Even Non-Programmers can contribute
Using the software itself and bug testing the products. This can be viable for giving user experience feedback to the developers to see what they can improve on. Working on documentation, like formatting, clarification with the language, adding images, short clips, or guides. Working with translations to be accessible for people around the world, which would mean translating the documentation, user interface, or the website itself. Applying some of your skills to offer into the program. If you are skilled in visual art, you could help with the UI design with providing some assets. If you enjoy writing, you could check for grammar mistakes in READMEs and communicate with the developers on how they were wanting to articulate certain passages in the documentation.
Why People use Open-source Software
There are people who prefer to use open source software compared to proprietary software. They are in control of the software they are using when things are not happening the way they one. So they can just look through the source code themselves and adjust parts they don't like. Others use it help themselves improve in their programming skills, since source code is easily accessible. They can share their work, receive critique and comments. Some people prefer this because of the security. They consider open source more secure than proprietary because the users can share the bugs they find and since any developer can jump on the project, they can help spot errors as well. With proprietary software, we have to rely on the developers for that project in order to fix issues brought up. With open source, you or other people can verify and test the issues yourself because of the access to the code.
Why contribute?
"But why should I contribute when I should worry about building my own stuff? It is basically free labor!" There is nothing wrong with wanting to always build your projects.
Sure you will probably make $0 of your time and effort put into an open source project, but the contribution to the project gives a trade off of a learning experience. Since you are having to read through other people's codes for the projects, you have to step out of your comfort zone of your coding style, and look into another style. It is like being a martial artist. If you were a black belt in Tae Kwon Do and now having to switch to a new unfamiliar style to you, like Krav Maga, you won't be able to utilize your moves into Krav Maga with your Tae Kwon Do background since you'll have to approach your moves in another way. It may take longer since it's brand new, but you have the martial arts experience so you can transfer your application of mindset to another style.
I just get that feeling of wanting to help out with the software that I currently use myself. For instance, I am a musician and I use Musescore, an open-source music notation software, and I've been seeing it grow and develop throughout the years. I feel like there is more that it can be done to improve it because Sibelius and Finale, two proprietary software, are the main two competitors of notation software in the music industry, and with their prices, it can be pricey for consumers, so they would choose Musescore for that reason.
Ever since getting into coding, I've been wanting to get into Musescore's community and development because I want to try to create plugins or add-on features for the software. Although I am still overwhelmed of having to catch up in going through the whole source code.
On the Last Note, I want to share this article that contains Top 10 Open Source Myths Busted: Myth Link
Resources
CodeNewbie: Getting started on open source when you don't know where to start Richard Schneeman
Top comments (8)
This article is very arguable.
At first, the proper term is "free software". Every free software is open source, but not every open source software is free!
Usually one can contribute to the free projects. The contributions to the non-free projects, even when they are open source is almost impossible for the the public.
At second, advertising github is not the best idea. The free software is for diversity and the free choice. There are millions of projects not hosted on github. Closing yourself in the github bubble, you will miss huge opportunities.
At third, advertising only "web-centric" languages is also not the best idea. In fact the most valuable (and interesting) free software is not written in these languages.
I would say, learn C and C++ in order to be able to work on serious projects.
I'd encourage you to have a look at this definition of free software by the GNU project - it's not true that every free software is open source.
GitHub is a perfectly fine way to start, as well as "web-centric" languages. Everyone's programming journey is going to be different, many will differ from yours. Many "serious" projects are built using web-centric languages, and there's no reason to gatekeep what you consider to be a serious project or a serious language.
Did you read this article actually?
Freedom number 2 states:
Look, I don't know who asked you to keep the gate, but it's cool, we don't need you to.
Thank you for this information. I know there are many details I've left out and probably should have added that there is still more to know about on the open source topic, as I was working on a deadline for this.
Finding it hard to get into any of the usual open source projects is no surprise really - despite the original promise of "all bugs are shallow given enough eyeballs" it turns out instead something more along the lines of "all eyeballs are as good as blind given enough lines of code grown in any way". Why not have a look at TMSR's V versioning system where each and every line of code is not only available but also directly traceable to all the "eyes" that reviewed it? At the very least, it's surely way easier currently to "get into" coding via TMSR than via GitHub, maybe come and talk to me directly on irc.
What's TMSR? Searching for "TMSR V" doesn't give me anything software-sounding.
Software never exists in a vacuum - so yes, TMSR won't be software-sounding precisely because the software part is just a tiny bit of it all. Anyway, V is a versioning system - possibly world's simplest and at the same time most powerful. If you want to dive straight in and play with it, you might find this helpful: ossasepia.com/2018/11/13/v-with-vt...
The reason why it's easier to get into coding via TMSR and V though is mainly because of a. people available and willing to help in real-time via irc b. docs standard + v-patches that are made precisely to help you understand the code line by line and all of it c. lots of active projects whose coordinators are perfectly willing to mentor effective newcomers - provided the newcomers submit to mentoring, true.