Contributing to open source projects is one of the most satisfying ways of accumulating experience. Not only do they offer ample opportunities to practice your new skills, but you also get to contribute to a worthy cause, while reaping countless of other benefits for your new career.
So what is open source, and why should I care ?
Open source refers to software whose source code is available and can be studied, modified (enriched, changed altogether) and redistributed. Frequently, the software is available for free use as well. Widely known free open source products include operating systems like Linux, browsers like Mozilla Firefox, content management systems (CMS) like WordPress and Drupal, programming languages like Python, scripting languages like PHP, and so on.
‘Free, as in speech’ as opposed to ‘free, as in beer’.Richard Stallman, American free software movement activist and programmer
While some people use the terms interchangeably, there’s an important distinction to be made here between ‘open’ and ‘free’ software. In brief, the openness refers to the availability of the code for inspection etc. (as indicated above), whereas, the ‘free’ attribute refers to the price = free of charge for regular use (freeware). Or as Richard Stallman said of open source, ‘think of it as free speech, not free beer’. This has led to endless philosophical debates in the industry (if you’d like to delve deeper, just Google free vs. open software, or anything along those lines.
The concept of open source is, arguably, among the coolest things ever, one of the most important factors of overall progress. ….. you contribute to keeping the internet open for all through the communities that tend to be built around them, through the sharing of best practices. Here’s a quick video from the Free software foundation explaining why open source is crucial:
Here’s an excerpt I love from How to contribute to open source projects (link below):
“Contributing to open source happens at all levels, across projects. You don’t need to overthink what exactly your first contribution will be, or how it will look… Instead, start by thinking about the projects you already use, or want to use. The projects you’ll actively contribute to are the ones you find yourself coming back to. Within those projects, whenever you catch yourself thinking that something could be better or different, act on your instinct. Open source isn’t an exclusive club; it’s made by people just like you. ‘Open source’ is just a fancy term for treating the world’s problems as fixable.”Open source guides
Why should I contribute (what’s in it for me)?
Oh, I’m glad you asked!
- First of all, you use & develop relevant skills. Whether you aim a coding or a non-coding career in tech, contributing those particular skills to an open source project can help you try them out in a tech setting. You can take your new coding skills for a test drive (the feeling of seeing your first ‘real’ lines of code!). Or you can see how the non-coding skills (finance, law, sales, marketing…) you are hoping to use in pursuing a tech career pan out in a tech environment. It’ll also help keep you motivated in your learning since you’ll see your work yield concrete results.
- You start building a professional network in your chosen field – a network where people know you as the ‘new you’ from the get go; this will be valuable for consolidating your skills and maybe landing a job down the road. Depending on your involvement and your performance, you might just find a reference to add to your job application, or a mentor to help steer your steps.
- You test your chops in collaboration, problem solving, interpersonal communication, leadership etc. in a tech environment; this is critical, because these WILL come up in any job interview – and being able to provide examples of how these played out for your in your contributor experience will come in very handy.
- Your contributions enrich your portfolio and constitute social proof of your growing expertise (your resume will thank you later). Just be sure to add your growing GitHub account to your LinkedIn profile.
- The added benefit? You can kiss your nagging impostor syndrome goodbye, as each commit is living proof that you are an active professional in your new field. Congratulations!
- You get to solve problems you care about. This one matters a lot to me – and chances are it might matter to you too. Whatever your interests, chances are there are organisations using open source software to pursue their mission, and, if so, this can be a criteria for selecting the project you contribute to.
- You get inspired and discover new interests. You know how they say that you don’t know what you don’t know? This is particularly true as you get started on your tech journey. When participating in open source projects, you’re exposed to plenty of new ideas, new technologies etc. – and, more importantly, you’ll see an immediate application that will make them more accessible and more appealing to you. Not only that, but by meeting people with a diversity of interests, you just might find the inspiration you need to take your next step in tech.
- Your voice counts. Studies after studies indicate just how important it is to have all segments of society represented in tech. Newcomers in their late 30s, 40s and beyond are one of the missing voices. Bonus points if you’re a woman, black or brown, LGBTQI, have a disability etc. And if you’re not in any of these categories – don’t shy away; your life experience and your fresh perspective counts too!
What you need to HAVE / DO / KNOW to be an effective contributor
Here are a few things you need to have / do so you can power up your contributor experience. This is NOT to say that if you don’t have / do these you won’t be able to contribute – not at all. Don’t let anything hold you back from joining a project of your choice and bringing your valuable contribution! These next few items are here just to guide your steps, should you want to prepare and enhance your contribution.
First of all, a computer (duh!)
Whether contributing long term or during a Contributor day, on site or remote, it’s good to have your own computer. Since you’re transitioning to a tech career and likely getting a lot of learning etc. done – that shouldn’t be an issue. If it is, though, there are always solutions (library etc.) and organisers usually make efforts to welcome all but, of course, you’ll be a WHOLE lot more comfortable and more likely to follow through with your commitment if you can work your preferred hours etc. Doesn’t need to be a fancy, expensive one (stay tuned for a guide on how to pick a machine if you don’t have one – coming soon!).
Next, on your computer, you might need to have certain software solutions installed. These are difficult to guess since they’ll depend on your machine, the project you contribute to and, for sure, on your tasks. Some projects will require you to have a certain operating system (ex. Linux); others might require access to a specific software (ex. Photoshop if you plan to work on design – though keep in mind there are always free and open source alternatives 🙂 – like Inkscape or Gimp). So be sure to read the contributor guidelines or check in with the organisers to find out what you need. The obvious thing to have at hand, of course, if the actual software that you’ll contribute to!
Github & version control
You’re almost sure to run into Github, sooner or later, as you start contributing. In a nutshell, Github is a version control platform / hub used by developers (28 million developers, to be precise!) to collaborate on code while keeping track of the changes made to their code, using a system called Git (that’s also free and open source, by the way). Stay tuned for a learning plan (coming soon); in the meantime, here’s a self explanatory first project from Syk Houdeib, who also transitioned to a tech career in his early 40s. And another one, equally good.
Project management & communication tools
On the communication tools front – the most common is Slack, and you’re bound to need it sooner or later as you start working in tech. So it’s helpful to become familiar with it as soon as possible.
PS: all these have a free version, so you can create an account and start exploring them ahead of your first contribution.
Ok, you got my attention – how do I get started?
Before we explore all the things you can do – you’ve a few decisions to make:
Duration – how long do you have?
First, you need to decide how much time you’d like to dedicate to open source. Are you looking for a long term project – something related to a technology or a topic you’re particularly interested in? Or would you like a ‘sampler’ (like a Contributor day)? Or you might like to start with a one day and take it from there?
Nature of tasks – what would you like to do?
You also need to decide what kind of work you’d like to do. Are you looking to practice some coding? Or would you rather get started with a non-code task? Or perhaps you’d like to be able to ‘shop’ around? Here are some options you might come across:
- Coding tasks: If you’re learning to code, you’re in for a treat. Most open source projects tag beginner tasks so they’re easily found by people who are just getting started. If all you’ve got is a little HTML and CSS, start using it straight away; as soon as you learn something new, find a project that allows you to use it straight away. It’ll make you learn so much faster. Plus you’ll get a lot of depth – you’ll see your code in action, you’ll learn to debug, you’ll get feedback on the quality of your code… Also, you’ll soon start seeing the context of your contributions, and hopefully you’ll be curious about what you’re seeing; curiosity makes for more sustainable learning.
To get started: see the resources below (Projects to get you started), or head over to Twitter and follow @first_tmrs_only – a bot that shares tasks that have been cherry picked for beginners.
- Documentation: if you’re just getting started with code but already have some basic skills, you’re already ahead of the regular users. This puts you in a great position to draft the documentation of the software, since you are able to understand both the developers and the users.
To get started: download and read their documentation; look at the date it was last updated; try it in practice, make notes of the process and any ideas for improvements – your perspective as a newcomer is priceless. Do some reading on drafting technical documentation and maybe check out the documentation of other similar products.
- Testing: if you’re organised and patient, you can test the functionalities of the software and report any bugs you find. Later on, when and if you’re ready, you can start fixing small bugs yourself, and move to the code camp. Code or no code, this can be a solid career choice down the road.
To get started: start ‘playing’ with the product and make notes of anything that doesn’t sit well with you: any errors, any inconsistencies (ex. a same feature presented under two different names, or capitalised in one place / not capitalised in another etc.); do some reading on testing procedures.
- Translation + localisation: we live in an increasingly globalised world. However, only about 20% of the population speaks English, so there’s ample need to translate and localise (adapt) software. In doing this, you open a door of possibility for both the users and the software producers.
To get started: understand the difference between translation and localisation. Maybe read some articles on the same topic and start building a little vocabulary of your own. The three CMS I’ve enlisted (WordPress, Drupal, Joomla) are good places to get started.
- User support: if you find it easy to communicate directly and are able to use plain language rather than professional or technical jargon, this role is for you.
To get started: You can pick up tickets or answer questions in forums, on Quora, Reddit, Stack Overflow etc.
- Video: you can also create video tutorials that presents the software, demonstrates its main functionalities (possibly by level) etc.
To get started: WordPress TV is a good 1st project. You can either create new videos, subtitle existing ones etc. – and the community is super welcoming and will help you get started.
- Communication: if you’re into communication – you know, social media, press releases, events, newsletters etc. then you’re in luck. Most open source software come with a faithful and usually quite vibrant community, and there are always, ALWAYS tasks around communication.
- Design: even in the cases where developers are graced with aesthetics, working on design, UX, UI, accessibility is not the best use of their time. This is where you come in.
To get started: Maybe have a look at Gimp or Inkscape and see what you can contribute while learning to use the tools!
Type of project – well, trust me: just go with the community projects!
Theory indicates there are several types of open source projects, but my recommendations below are all community projects. This is because community projects:
- Are easier to join – you just show up and start contributing
- Offer more opportunities to learn and network – since you’ll be working alongside contributors of all levels (beginners to veterans)
- And are waaaaay more fun – which will go a long way to ensuring you stay the course!
All these make community contributions extremely valuable to your transition. Here are some of the options:
- Non-coding tasks (also great for easing in): if you’d like to pursue a non-coding career in tech, you can try these projects. These also work wonders if you aim to contribute to coding tasks but would rather ease in by taking on something you’re more comfortable to begin with. In this list you’ll find both coding and non-coding tasks such as translation/localisation, training, testing, events, design, documentation, video, marketing, events, user support etc.
- Projects involving coding: in this group I include some more technical, coding tasks for projects available in GitHub. When searching for a project to contribute to, look for tags like ‘first timers only’, ‘easy’, ‘good first issue’, ‘for new contributors’, ‘up for grabs’ etc. Also check the date the item was opened, to make sure you contribute to something… alive 🙂
Finally – the great thing about open source communities is that there’s (usually) no formal application process etc. You go in, lurk for a while (not long!!!) to get a feel of how it’s organised and what the needs are, and then you make a first contribution (maybe fix a bug, or signal a typo), and then another… you start interacting with peers and before you know it… you’re a part of it!
Projects to set you off on the right foot
Disclaimer: this list is far from perfect or exhaustive, so I will aim to come back and update it often. For the time being my criteria for inclusion were
- a welcoming environment for newcomers
- a diversity of tasks (coding / non-coding, various technologies, various uses) and
- … my being aware of them.
So without further ado – here’s a list to get you started:
Non coding tasks
- WordPress (content management system – CMS)
- Drupal (CMS)
- Joomla (CMS)
- Moodle (online education)
- Python foundation
- Various design jobs
- Awsome open source
- Good first issue, by technology and another one
- Great for new contributors, by GitHub
- Find more options on Up for grabs
- Google Open Source projects
- Awesome for beginners
- Contribute to specific projects:
If none of these projects spark joy :), a simple Google search for open source projects for beginners will give you plenty of choice.
Test the waters with a Contributor event
Contributor events such as
Making the most of your involvement
What to do before your start contributing
- Read up on the project and the community – aim to understand who does what and what contributing means in their specific context. You might find info on contributing on their site, a wiki or their GitHub account.
- Read all communication about the event (if attending a Contributor day type of event) – understand your role, the whole organisation, who does what, times / calendars, tools to be used (set up / create accounts etc.) create a separate folder for your work, check your connection, have a drink and a snack on hand, pen and paper for quick notes…
- Consider your objectives in getting involved – do you hope to connect / network? Learn? Practice? Once you know what you want, find an opportunity that matches your objective
- Join the community – connect w/ organisers – introduce yourself, check the indicated communications channels frequently (it’s not their job to chase you, it’s yours to do your best to stay in the loop); start interacting with other members.
What to do as you start to contribute
- Be helpful – aim to find your place where you can best contribute, given your skills and your interests, but also the needs expressed by the organisers
- Be agile – adapt to whatever is going on
- Be respectful with the other participants (no snarky remarks about people’s level of English etc.)
- Communicate clearly and assertively – don’t let people guessing what you had in mind, and don’t expect them to know what you want/need etc. The clearer the communication, the better off everyone is
- Pay close attention to the quality of your contribution – remember, everyone’s busy and they don’t have time to babysit you; nor do you want to be micro-managed. So triple check every submission before pressing send
- Be patient, persevere and demonstrate you’re a team player
- Always presume good faith / good will – but don’t ‘expect’ anything; expect just to give, grow, learn
What really not to do
- Don’t take on more than you can handle – nor accept tasks that you’re not able to deliver (skill-wise, time-wise or anything else). That doesn’t mean don’t stretch a bit (this is, after all, supposed to be a growth opportunity for you and it’s why you’re doing it in the first place) – just not to the point whether you cannot deliver. Find your own sweet spot.
- Don’t monopolise – whether by intent or accidentally – the conversation or a certain type of tasks
- Don’t expect to be babysat – in a large community you will need to find ways to be helpful, to prove you’re there to stay before people ‘notice’ you. It’s understandable – chances are there are many people coming and going, and since these communities are often ran by volunteers… they need to prioritise. PS – this is not the case in WordPress; they get extra points for being super welcoming to newcomers!
Don’t be demanding of people’s time, is what I’m saying.
- Similarly, don’t take things personally, for instance if an idea you put forward is not well received. There are, for sure, reasons behind their reluctance, and you just haven’t been there long enough to be able to see the big picture. Nor should you be disappointed if ever your work is critiqued: remember, you’re there to learn. Keep an open mind and never make the same mistake twice.
- Goes without saying, but don’t be pushy, aggressive, and especially avoid being defensive
What to do after the contributor day has ended or as you advance on your contributor journey
- Write thank you messages to organisers & participants who have helped you
- Connect on LinkedIn – with organisers, peers etc.
- Reflect & write a blog post / article / Medium article
- Extract your lessons learnt – things you’d like to do differently next time; some you might want to include in your posts (blog, social), others you might just file under ‘note to self’
- Extract things that have shaped you, examples of good work etc. that you can later refer to in an interview; jot these down as the memories will fade
- Publish on social media – tag the event, participants who can comment positively etc. – all these will go toward building social proof of your growing competence
- Leverage your contributor experience in your job search: include it in your resume, in your portfolio etc.
A few more good open source resources:
- How to contribute to open source – an EXCELLENT guide, really make sure to prioritise reading this before getting involved
- The Wired guide to open source
Also, be sure to follow:
- @first_tmrs_only – a bot that shares issues marked ‘first timers only’
- Hacktoberfest / @hacktoberfest – a month-long celebration of open source
- Free software foundation / @fsf
- Free software foundation Europe / @fsfe
- Open source initiative / @OpenSourceOrg
- Opensource / @opensourceway
And while you’re at it, why not also have a look at the importance of a free internet for all, for ever:
Have you participated in an open source initiative as part of your career transition?
How cool is that! Comment below or get in touch to share your story!