If you read my previous post on the theory of contributing to open source software projects, you may now be ready to contribute to open source.
But not yet! First you need a cognitive guide and a practical guide.
The stages of contributing to open source
There are two different stages of contributing to open source software project documentation – cognitive and practical.
A) Cognitive – Understand what open source projects are, the tools they use, and how to contribute
- What is open source
- What are open source communities
- How do you join an open source project
- What prerequisite knowledge you need
- Understand the Github platform, and the differences between Github, Git and Github desktop
B) Practical – Learn how to use GitHub tools to submit your pull requests
- Find your open source project
- Fork the repository on GitHub
- Change the text or add your own content in Markdown
- Commit your changes on GitHub
- Push your changes to the master branch
This post now goes deeper into the cognitive side of contributing to open source projects on GitHub. Skip straight to the practical guide if you need to, or refer back to the original theory.
1. What is open source
Open source in this context is a model for software development that is based on “open” principles.
Opensource.com defines it as:
Open source software is software with source code that anyone can inspect, modify, and enhance.
“Source code” is the part of software that most computer users don’t ever see; it’s the code computer programmers can manipulate to change how a piece of software—a “program” or “application”—works.Programmers who have access to a computer program’s source code can improve that program by adding features to it or fixing parts that don’t always work correctly.
It comes with a license that users must agree to when they modify (change) or redistribute (share) the code for their own purposes.
In our situation, we are simply helping a community to modify their own code but we’re not redistributing another version of it. We don’t need to worry about the license.
2. What are open source communities
Open source software can exist without a community but it wouldn’t get very far. It usually has to have the support of a community of contributors who work together to keep the software working and updated.
Some examples of well-known open source communities are:
- The WordPress community
- The Linux community
- The Python community
The Linux Foundation has a good description of open source communities.
Unfortunately, open source communities have a reputation for being somewhat hostile to newcomers and elitist once you get there. Racism and sexism run rampant. This contributes to the current problem of a lack of diversity in open source.
Inclusive open source communities
The open source model means a collaborative approach to projects where there is no official ‘leader’ (although there are project maintainers), and anyone can contribute as long as they are sufficiently motivated and skilled. Rather than a top-down approach, projects are co-created and theoretically have limitless potential.
Not all communities are created equal. Open source communities are typically contributions-based, which means the most active people rise to the top of the hierarchy. They are typically also homogenous in that similar types of people gravitate together.
They’re not actively un-inclusive but this community approach ignores the fact that under-represented groups often feel they need ‘permission’ to join an open source community. Like attracts like.
More often than not, people may lurk as a bystander before fading away, never making their first contribution. Add on the even lower status of being a non-developer, and the chance of an individual ever contributing to an open source project plummets to practically zero.
Examples of inclusive communities
I’ve come up with this short list of inclusive communities you could consider getting to know, based on my personal experience. They also have real-life events which are, as I said, key to for many people in making that leap to participation.
- FreeCodeCamp – free learn-to-code tutorials and a global community, FreeCodeCamp has many meetups and a forum you can participate in.
- Write the Docs – a conference for documentarians, Write the Docs is founded on open source principles and you can contribute to the codebase.
- WeRockTech – run by Eddie Jaoude, this community in online-based but you can find Eddie and his cohort at many hackathons and women in tech events around London. It’s aimed at getting more under-represented groups into open source.
Remember that open source is just a mindset and a model for software development. It can also be applied in other fields. It’s similar to the idea of a ‘collective’ in business.
Open source is the concept, and the software communities are the tangible representations of this concept. Look for software and communities, and you will find open source.
If you don’t have that opportunity yet, I’m going to walk you through the steps right now anyway.
3. How do you join an open source project
The reality is that the bigger the project, the harder it may be to get your contribution accepted. But don’t fret! There is a way to overcome this problem – find a community first and join their software project later.
Open source projects don’t just exist in the vacuum of the internet. Open source is not just code (though many will try to convince you otherwise). The code is created by an active community that has assembled around a set of values, or is trying to achieve a communal goal.
A good community wants to empower contributions from people with all types of skill sets. If a project has a strong real-life community presence, there will likely be many valued ways to contribute other than specialised programming. It also recognises the physical and psychological barriers that exist for newcomers – especially when they have a background not well-represented in open source.
In my experience, it’s much easier for newcomers to become members of communities FIRST, and the software is a means to an end. Find your community in real life, and then contribute to their open source software through GitHub in the browser.
Here’s a list of top open source communities for newcomers.
4. GitHub versus Git and GitHub Desktop
So you’ve found your open source community, and now you need to figure out how to actually do the code thing.
For newcomers, the different Git-based platforms for contributing to open source can be a major sticking point.
We’ll go into the differences between each platform now.
What is GitHub?
In case you don’t know, GitHub a social coding platform, based on Git, a version control system for programmers.
Different platforms use the Git version-control platform. These are:
- GitHub in the browser – basically a website, and it’s the one we’ll be using because all you have to know is how to use a basic web application.
- GitHub desktop – you install a client on your machine and it’s kind of similar to GitHub in the browser. It’s a WYSIWYG interface and easier for non-programmers.
- Git – this is accessed through the command line and you need to know specific commands before you can use it. Extremely powerful but high barrier to entry for non-programmers.
Well-meaning writers use these terms interchangeably but they actually refer to distinct applications. Each requires a particular level of skill or domain expertise before you can use them. You also access them in different ways – browser, desktop, command line.
We’ll be using GitHub in the browser so we won’t have to install any programs.
Here’s a tutorial to get you started with GitHub.
Why are people scared of GitHub?
I think this sarcastic tweet interestingly reveals how difficult it is for non-developers outside of the programming world to get to grips with GitHub.
Let’s pour one for that time Fox tried to explain GitHubpic.twitter.com/XwXAezcdE2
— Igal Tabachnik (@hmemcpy)June 3, 2018
Snarky comments from smug programmers destroy confidence. The fear of making a gaffe like Fox did holds many people back from starting to contribute.
But no more!
Why use GitHub in the browser
GitHub works by hosting software source code publicly on its platform. Anyone can look at the code and potentially contribute.
Developers often contribute to open source projects using an installed desktop “client” such as Git or GitHub Desktop. You download the code you want to edit onto your machine and work locally. Git uses the command line to interact with GitHub, while GitHub desktop has a Graphical User Interface (GUI).
GitHub Desktop and Git in the Command Line need to be linked with standard free text editors like Atom. Your machine automatically links them together when you install the program.
The text editor interface allows you to make changes to code, and the Git or GitHub Desktop client communicates with the original repository through your internet connection.
We aren’t going to work with Git because learning the command line takes too long and isn’t always worth it for people like us. We also won’t use GitHub Desktop because it requires installing various programs. We’ll have less control over the code but you don’t need that much just to add new content to a website.
The next practical guide is focused on making your changes in GitHub in the browser (through the GitHub website).
5. What prerequisite knowledge you need
It’s more than possible for non-developers to contribute documentation to open source, but you will need to have basic confidence in building websites.
This means understanding:
- HTML and CSS
- The structure of websites
- How to use a Content Management System (eg WordPress)
- A GitHub account (free)
Don’t worry if you’re not at this point yet. Head over to a free tutorial site like Codecademy to learn more about coding, and come back when you’re ready.
Otherwise, head onto the practical guide for contributing to open source documentation on GitHub.
thanks is very helpful