DEV Community

Cover image for How to Get Started with Open Source
Sam Jarman ๐Ÿ‘จ๐Ÿผโ€๐Ÿ’ป
Sam Jarman ๐Ÿ‘จ๐Ÿผโ€๐Ÿ’ป

Posted on • Originally published at samjarman.co.nz

How to Get Started with Open Source

This is the 6th post in my Junior Developer Diaries blog series. Iโ€™m writing more every week, and you can sign up to hear more and read previous posts on my website.

As an employer, or even a fellow developer, I want to see your passion for this industry. One of the best ways to do this is to have some of your favourite projectsโ€™s code open to view by me and others.

What is Open Source?

Open source is a term used to refer to codebases that anyone can view and propose edits to. Most notably for our industry is the website GitHub, which hosts almost all open source projects.

Open sourcing projects is a great way to get involved in the community โ€” it lets you interact with other developers, it lets you learn to code better, and it even can help you become familiar with large code bases, something often quite daunting for junior developers.

How do you start?

But how do you start? First, Iโ€™d try something really, really simple. Go find a project you like, maybe itโ€™s your favourite ruby gem or or an npm package and start reading the code. Weโ€™re not looking for logical flaws here, weโ€™re looking for typos. Yes. Typos. Typos in comments. Your first pull request to an open source will be a typo correction. You will change reuturns to returns. You will change him to them. You will change whatever you can find that is trivial and safe.

But the change isnโ€™t important. What is important is how you then propose the change. Look around a bit, and youโ€™ll most likely find a contributorโ€™s guide or a section in the read me. These sections will tell you how you make a change to the code base. How you check out the code, run it, branch naming conventions, PR conventions etc. You might also want to read last weekโ€™s Code Reviews blog for a good read on how to create a great PR. Also itโ€™s a great time to interact with the maintainers of the project, and start that relationship that will be helpful to have as the intensity of the PRs increase.

Now that youโ€™ve learnt how forking and creating pull requests works, itโ€™s time you open source something of your own. But what Sam? Well, do you have any projects from Uni or bootcamp? How about that script you wrote one weekend for a laugh? How about that code you wrote a hackathon?

The code doesnโ€™t necessarily have to be good (whatever that means?!) just get it online. It doesnโ€™t have to be finished. We just want to see youโ€™ve done something. And yes, you donโ€™t have to get fancy and write a contributing guide like the one above, but a simple yet effective ReadMe will be helpful.

What a Great ReadMe Has

So what goes into a great ReadMe?

  1. A description of the project. What does it do? What does it solve?
  2. Installation of the code into your own, or how to run it on your computer
  3. Common (trivial) examples of usage
  4. Comments about how to contribute. This can be simple
  5. A link to more information, documentation or support
  6. A list of known bugs, limitations and/or a To Do list of features. Although these should also be issues in the GitHub repo
  7. Optionally, a list of people using this code inside theirs (in the case of plugins etc) or top contributors
  8. If no LICENSE.md, an indication of the license of the code (MIT, Apache etc). Use Choose a License to determine this

What a Great Repo Has

So thatโ€™s a great open source ReadMe. What else should a great repo have (apart from code)? (Yes, I know, some of my projects donโ€™t have all of these)

  1. A ReadMe
  2. A Contributing Guide
  3. An Issues template
  4. A PR template
  5. A License
  6. A Code of Conduct

So go on, set up your GitHub account (theyโ€™re free). Learn the fundamentals and get started! Look at you go! Open sourcing is a really great way to get involved in this community and it will really help you grow your technical skills as a developer. I wish you the best of luck!

This is the 6th post in my Junior Developer Diaries blog series. Iโ€™m writing more every week, and you can sign up to hear more and read previous posts on my website.

Top comments (19)

Collapse
 
sudo_bangbang profile image
Roshan Jossey

Iโ€™m working on a project to help beginners get started on contributing open source projects.ย github.com/Roshanjossey/first-cont...
Itโ€™d be awesome if you could check it out and gimme feedback

Collapse
 
samjarman profile image
Sam Jarman ๐Ÿ‘จ๐Ÿผโ€๐Ÿ’ป

Looks great, Roshan! Lovely idea!

Collapse
 
sudo_bangbang profile image
Roshan Jossey

Thanks mate. Please do share it to people who might find it useful

Thread Thread
 
axelledrouge profile image
AxelleDRouge

I just used the project to learn how to make first contributions. Thanks, it helped a lot!

Collapse
 
thebouv profile image
Anthony Bouvier

Your link to an example CoC (or article about CoC) is just a hash link back to this article. If you happen to have a good link for this, please share. Glad you pointed out that a great repo should have a Code of Conduct. I think they're absolutely necessary.

Collapse
 
samjarman profile image
Sam Jarman ๐Ÿ‘จ๐Ÿผโ€๐Ÿ’ป

Good spotting Anthony! Totally agree. I was meaning to link to this - help.github.com/articles/adding-a-...

Thanks!

Collapse
 
sarthaksri profile image
Sarthak Srivastava

Sir,I have just studied HTML CSS Bootstrap and heading on to JS.I have no experience in the field.So can u give any sort of suggestions to me for starting my blog here at The Practical Dev or open source contributions.

Collapse
 
samjarman profile image
Sam Jarman ๐Ÿ‘จ๐Ÿผโ€๐Ÿ’ป

Click that "Write a post" button on the top left and write what you've done so far. Tell your story.

Collapse
 
ben profile image
Ben Halpern

Wonderful post, you're more than welcome to post other parts of the series. ๐Ÿ˜Š

Collapse
 
samjarman profile image
Sam Jarman ๐Ÿ‘จ๐Ÿผโ€๐Ÿ’ป

Thanks Ben, that really means a lot coming from you :) I'll be posting the others very soon so more people can benefit from my writing! :)

Collapse
 
ruben69695 profile image
Ruben Arrebola

Awesome post Sam and thanks for share it, you have give me all the information I need to get started in GitHub to contribute to Open Source. :)

Collapse
 
samjarman profile image
Sam Jarman ๐Ÿ‘จ๐Ÿผโ€๐Ÿ’ป

Thanks Ruben! I appreciate the comment :)

Collapse
 
bufferlol profile image
Buffer • Edited

There is a typo in "What is important is how you the*m* propose the change." :)

Collapse
 
samjarman profile image
Sam Jarman ๐Ÿ‘จ๐Ÿผโ€๐Ÿ’ป

Gosh, why do they put those keys so close together!?

Collapse
 
walker profile image
Walker Harrison

Great write-up, Sam. You might have already seen, but GitHub just released the results of their OSS survey.

Collapse
 
samjarman profile image
Sam Jarman ๐Ÿ‘จ๐Ÿผโ€๐Ÿ’ป

Thank you for the kind comment, Walker. Good link! Thank you :)

Collapse
 
theodesp profile image
Theofanis Despoudis

Great. I can recommend also this guide:

Open Source Guide

Collapse
 
samjarman profile image
Sam Jarman ๐Ÿ‘จ๐Ÿผโ€๐Ÿ’ป

Alexandros, thank you so much for your comment. It's really motivating to hear this when Im working on this series. Thank you and good luck! <3

Collapse
 
olusamimaths profile image
Olusola Samuel

Great post Sir. I'm sure this will help me as I begin my Javascript journey๐Ÿš.