How to start to contribute to open source (properly)? 🤔 Step 1

Weighting pros and cons, choosing project, setting goals, structuring schedule

Grigory S.
Aug 31, 2018 · 6 min read

This publication is written for people who have general knowledge in computer science and programming. Nevertheless you won’t see single line of code.

This is the second article in series «How to contribute to open source (properly)?». Here is the previous one.

I am trying to figure out the better way to get into being an open source contributor. Please join the conversation or support this research by sharing with others.

Things to remember

If you reading this you:

  1. Excited in programming and believe that doing open source is good for your future and humanity in general
  2. Have time to invest in it
  3. Don’t know where to start and how to structure your activity right

I feel like having the same problem so together we are here to figure it out.

As I said in previous post I think stacking with one project for the next 2–4 years is the best practice for the biggest and positive impact. Reasons are:

  1. Programming is hard. Being a good programmer requires practice. Code doesn’t care if you a beginner and it’s not warm and welcoming for newbies even though community may be.
  2. Open source is complicated: libraries, utilities, operation systems, text editors, browsers, frontend and backend frameworks, databases, media players and editing software… It’s impossible for single human to be fluent in all of this. And it’s not sunshine and rainbows as GitHub pictures to you: there will be times when you can’t figure out where that old bug came from for month and there will be times when there are nobody to help you. Prepare yourself.
  3. There are a lot of other good things in life apart code and computers to spend time on.

The good news are:

  1. As any skill programming can be mastered
  2. You don’t need to be fluent in everything
  3. You can make an impact working a little every week

On a level discussed it this publication (as I believe) open source activity is not different from academics: you need to learn complex subject. It takes time and effort but there are techniques that make process easier. I recommend to investigate in this techniques starting from Coursera’s «Learning how to learn» class.

I hope you do use note-taking software, calendar (Google, Outlook etc), pomodorro or other planning systems to be organized.

Also I believe that getting into some existing project is better than starting your own if you are a newbie in programming.

  1. You don’t have any idea on what it’s like to pet own project for the next 1–5 years
  2. It’s an opportunity to learn existing patterns, approaches and tricks in general or in particular software direction. I.e. multimedia editing or neural networks.
  3. Learn how to orient in existing (legacy) codebase in general
  4. Learn how to interact with community, make connections, find mentors
  5. Straighten particular language and tools
  6. Make existing software that some people already use better

Pros and cons

Think about pros and cons of participating in open source in general. I believe that for most people the main con is time consumption but if there are anything else keep that in mind. Write them down.

Choosing project

Think on projects that’s you’d like to contribute and why.
You might be a power user for some of them, for the other ones you might be familiar with language and tools, you might be completely unfamiliar but you’d like to learn them to make this particular project better. Or you’d only like to contribute because it’s valuable for your career or you do find this project valuable for the world although not being a user.

Write all your thoughts and apply some list-like structure with (for example) the following fields:

  1. Project’s name and git URL
  2. If you are a user of project than how often do you use it and for how long. Ideas for improvements or known bugs.
  3. Technologies it’s build from, knowledge required and your fluency in each from 0 to 10
  4. How do you think would would you need to read and study additionally for this project. Think about broad picture, not the specific one
  5. Reasons for being a contributor of this particular project
  6. If this project is an element of some software ecosystem?
  7. Any additional information you find useful

You have have to pick one project. It’s about 7 days till next publication, I would be nice if we’d be synchronized. I’m not hurrying you up but overthinking can also be dangerous. Set time frame for yourself (say 2 weeks) to explore as much as you can about projects you want to get into and follow it.

Goals

You need a real goal to start and follow routines.

Is it a hobby or something you count on for your future career or academics? If it would influence career than how do you think how it would be? Is it something you love and noticed some performance issues or bugs or improvement possibility? Write it all down.

If you are a student and want to get job in specific company write them an email asking what projects do they have and if participation matters to get place and what are concrete goals in it. Or if you getting a masters degree and need to understand better how neural networks works to write a scientific article about it?

Write down what would you rate as success in contributing? Is it 5 commits a month? How many? How much PR requests closed? How much new features added?

If you have a friend who also enthusiastic about getting into open source you can clarify the conditions and make a bet if someone will have less closed issues that other to the end of 6 month. Loser buys pizza. 🍕 Good motivation.

Time management

Think carefully for the next 30 minutes on how much time in your usual week you can devote to supporting open source project. Point exact weekday and time in your day-to-day schedule when you can concentrate on this activity.

Think about what could distract you in that time and think about how to avoid this distractions.

Re-evaluate your goals based on this information. Also think about deadlines to your goals in open source contribution.

If you are an undergraduate student who wants to get an internship in summer and want to make your GitHub look better for this exact company you need measurable goal.

At the same time keep in mind keep in mind that it’s better to have one focused 1,5 hours session of activity per week then 15 minutes of notifications procrastination every day. Build solid borders for time usage.

Based on time analysis think again if you can afford open source participation at all during this time of your life.

If you have health problems or some of your family member do; or you already combine study and work and have no time for intimacy with your (boy)/(girl)friend or anything else you believe for now is more important than starting new long-term serious activity.

I’m not saying that every other part of you life must be perfect. But if you do believe that there are something way more important and time consuming — hold on. Opportunity will always be there.

If you have no time at all but have finance support option, count your monthly income and think about how much money you could give away. Make a software priority list and distribute this amount. Donate directly via Patreon or with funds like Open Collective, Free Software Foundation, Linux foundation or others.

Recalculate and discuss

Probably you’ve been worrying: «What if I made a mistake in my plans?». You surely did. There is no way to orient toward something without mistakes. Correct your course and recalculate based on new data.

It would be nice to discuss your notes and ideas on this publication with semi-interested friends and help them to get into thinking about participation.

Next publication

For the next publication I hope you will chose project. I will.

Questions are:

  1. How to examine project
  2. Deciding what skills and knowledge areas you need to review
  3. Reviewing and creating a reading list
  4. Planning next week

Afterwords

I’d like you to share your opinion on suggested approach or share your own approach and ideas so we could figure out how to start to contribute to open source properly.

Next chapter will be published next week. Also next week I will share my own result of doing this kind of analysis.


Updates

04.09.2018
Next post scheduled on 07.09.2018

 by the author.

Grigory S.

Written by

like: tech, open source, travels, green tea with ice and honey; don't like: media's noise; personal website — altjsus.github.io (in Russian)

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade