[🚩VERSION-1.0.0] [✅ BUILD-PASSING] [PUBLISHED-ON-MEDIUM-WITH ❤️ ]

Another Open Source Survival Guide (Rookie Edition)

Uncovering the true essence of open source programs

Anjum Rashid

--

Source: Self Design

The first thing that you are likely to notice in this writeup should be those sweet emoji tags over the heading, just like those cool open source projects that you randomly discover while roaming into GitHub.

For instance, just take a look at this beautiful readme of THELOUNGE project!

Source: https://github.com/thelounge/thelounge

Looks pretty neat right?
Now without further ado, allow me to elaborate — the purpose of this so-called Survival Guide is to get you acquainted with some real good skills to grow yourself in software development world -

  1. Quick Basics
  2. Kick-starting Your Open Source Contributions
  3. Getting Started as a Self-learner
  4. Popular Open Source Programs
  5. How I Hopped into Student Code-In & Came Out as a Top Performer

What is Open Source?

According to opensource.com -

The term open source refers to something people can modify and share because its design is publicly accessible.

If you are from CS/IT/SE background, you can easily guess that this “something” is referring to the Source Code of a software or program.
That means you can add newer functionalities over it, come up with newer modified versions and distribute that without any requirement of purchasing a Premium / Enterprise subscription of it in the first place.

What’s an Open Source Software (OSS)?

Again quoting from the the same source -

They are software with source codes that anyone can inspect, modify, and enhance.

More precisely, Open Source is a collective concept which particularly means opening up the source code to everyone in such a way that all the parties (creator, contributor & users) get benefitted.

Open Source Software lies in the heart of this extra-ordinary concept which is powering the entire world!

Source: https://github.com/microsoft/AcademicContent

Just think about those stuffs that you are familiar with — Mozilla Firefox browser, VLC Media Player, Linux Operating System, Trello Project Management, Wordpress CMS, Python Programming Language — most of the categories of softwares/programs/languages/tools that you can imagine has available open source solutions, and many of them you are using those in your day to day life!

Kick-starting Open Source Activities

Contribution : In OSS perspective, here contribution means being able to add or extend functionalities to an existing Open Source Project by your own.
This includes contributing with non-breaking codes, improving project documentation, debugging errors, fixing any existing issue and even beautifying ReadMe with your own artistic touch!

Collaboration: Open Source takes away the concept of centralization and encourages developers irrespective of background/expertise/location to participate in a single project, which requires collaborative practices.

Open source project hosting platform like Github has collaboration functionalities and tools integrated for easy communication and development to get you going.

So how do you get started?

If you are a First-Timer, you need to commence your journey with your own Set of ‘toolbox’ in order to contribute.

Build up a toolbox (skillset) of your own that comprises of your favorite programming language along with your preferred tech stack, basic knowledge of Version Controlling (Git is the most popular one), basic idea of Github Repository management, working experience of git branches, issue filing and pull requests, understanding of license & code of conduct, a bit of documentation skill and most importantly, your consistent enthusiasm to contribute to open source no matter what it takes.

The catch is to start with a minimal set of skills and enrich your toolbox over time.

Photo by Markus Winkler on Unsplash

What if you haven’t heard most of these terms?

If you’re an inquisitive individual and self-learner, don’t hesitate to pick the hard way.

  1. Choose the programming language that you’re most comfortable with.
  2. Open up a Github Profile and get your hands dirty by experimenting with repositories. Learn version control system, throw in random git commands on your test repos and observe how those behaves.
    (now you’ll understand why that meme was stating “In case of fire, git commit then git push”)
React by Facebook; Source: Luke Chesser on Unsplash

3. Fun stuff starts here! Start exploring open source projects on Github that match up with your primary programming language, tech stack and most importantly — your comfortability.

For a quick head start, check this awesome-for-beginners repo out and choose the ones according to your preference to contribute right on!
Absolute beginners can try this super simple JU-ForkMe repo too.

4. Learn to create Issues and Pull Requests the right way. Join your preferred projects’ Slack/Discord/Telegram/Gitter platforms whichever available, reach out to their developer communities and ask your queries.

5. Write code, test, make mistakes, debug, engage with the community, learn, push PRs, wait for revisions — repeat the cycle until it gets merged!

In addition, if you are looking for more detail, I strongly recommend Open Source Guide and also HackerEarth’s Guide.

But if you’re feeling more adventurous and wish to hyper-dive your spacecraft with proper guidance and mentorship, here comes Open Source Programs to the rescue!

Popular Open Source Programs

How to dive into open source without context?

Simply hop into an Open Source Program that you like! All you need to make sure is to meet up their program & participant requirements.

Trust me, Open Source Communities have the nicest people who would surely assist you to place your very first footstep on this wonderland and grow!

There are bunch of Open Source Programs, Hackathons & Fellowships for you to explore (go through this repo for quick idea), but I’m going to briefly mention a handful of the most popular ones that open source contributors all over the world dream of to participate!

  1. Google Summer of Code
  2. MLH Open Source Fellowship
  3. Outreachy
  4. Google Code-In

All of these programs are unique in their own way with varied program timeline, selection criteria, organization distribution, project selection, contribution period, contributing guideline, reporting guideline, mentorship opportunity, networking opportunity, team management and rewards.

But getting started with some of these world-renowned programs might seem overwhelming at first to get selected or to participate.

Then what’s your option?

So here comes the trick.

Photo by Evgeni Tcherkasski on Unsplash

Turn yourself into Mr. Sherlock and start investigating online communities apart from keeping an eye on the social media to grasp the open source programs that are organized with similar program characteristics of the most popular ones (specially GSoC & MLH), but in simpler fashion and standards.

These are excellent programs for rookies and some of them are even organized for absolute beginners!

Under the hood, several of these programs are backed by GSoC graduates, MLH Fellows and Open Source veterans so you are guaranteed to have a fun time during contribution!

Some of the programs that I came by recently are -

Getting Started with Student Code-In

Well, I was lucky to notice Student Code-In’s program announcement for the first batch from one of my peers from Microsoft Learn Student Ambassadors community.

Without delay, I headed into their program website and took a glance at the program timeline.

Student Code-In Homepage

I hesitated a bit whether to apply or not, as the program was being organized in India but I’m from an outer country, so there might be regional policies and shipping restrictions associated.
So I reached out to them and surprisingly, organizers encouraged me to join in, and I believe applying for SCI-2020 has been by far one of my best decisions ever!

Breaking down the Timeline

The program timeline spanned for around three months with 60 days of contribution period in between.
From a participant’s perspective, the timeline milestones are the following-

  1. Participant Acceptance: Upon application evaluation, the participant is emailed with program acceptance notice and onboarding instructions.
SCI Slack Workspace

2. Community Bonding: Before contribution period launches, participants onboard into the program’s Official Slack Workspace and are provided a room for getting themselves familiar with program guideline, program updates and community engagement.

Some of the Projects under SCI Program

During this period, participants submit their priority list of open source projects accepted under the program that they wish to contribute.

I was looking for something that won’t be super complex but would push me to learn a new stack. As I’m really into blockchains, the only blockchain based project on the available list ended up at the top of my preference list!

3. Start of Contribution Period: Based on participant’s skills and tech stack, he/she is assigned to a single project with corresponding Project Admin (PA) and Mentors.

Luckily, I got selected for my top preference “CryptoCast”, which is an E-Voting Platform built with Blockchain tech stack for Ethereum Blockchain.

CryptoCast — Blockchain Based E-Voting

We(contributors) had a quick meet-up call with the PA (from India) and got introduced to the project tools, dependencies and the expected goals.

Afterwards, forking the upstream repo, we started examining the source codes.

Well that’s when the real challenge kicked in.

Developing with blockchain tech stack is challenging and requires good knowledge of blockchain core concepts & architecture, development framework, smart contract programming, local blockchain servers, testing framework, decentralized application and also cryptocurrency wallets.

ASANA Platform

That’s why me and my teammate from Sri Lanka opened up a project management board over ASANA Platform, set our weekly/monthly goals and worked accordingly to keep a steady progress.

On the first 20–30 days, we put more emphasis over understanding the local development environment and the development tools from scratch. In addition, we kept going through the docs in parallel to explore the newer concepts that we came by everyday.

Thus by the end of first month, I was able to fix up the project bugs and dependency issues, and so it was building just perfect in local environment.

On the second month, we started addressing available open issues and adding up new features.

Trust me, that’s when things got real.

  • Interestingly, the feature that I was looking forward to implement was based on a specific type of cryptographic signature algorithm, which literally required reading up recent research papers and dozens of blogs in order to understand the concept only.
  • Often we had calls to share thoughts and updates, which actually turned out to be productive discussions.
  • Our PA monitored the progress in intervals and provided us resources based on our queries.

4. Contribution Period Conclusion : Aftermath of my two month-long contribution period –

I got thirteen PRs submitted and merged into the codebase!

Merged PRs from CryptoCast

What pushed me to be active and functional?

  • In every 20 days, I had to submit a participant report to the project admin stating my recent PRs, filed issues, debugging work, documentation work, research and demonstration activities.
  • In parallel, SCI team kept coming up with consecutive webinars on technical topics including Linux Insights, GCP Introduction, Java Programming with Intellij IDEA etc. which made the program participation fun and engaging.

Quick tip: Don’t miss these free opportunities. I won a 90$ course on CUDA Accelerated Programming under nVIDIA Deep Learning Institute by participating in the twitter promotion mini-contest in one of their events.

5. Program Wrap up: Project admins prepared the final progress reports and shared with the SCI Team for evaluation and cross verification for every participant on the program.

6. Top Performers Announcement: Here comes the bragging part!

Source: SCI LinkedIn

I got selected as one of the ‘Top Performers’ of the first cohort!

Top performer recognition is awarded to those participants who excel in contributions count, debugging, documentation work, enthusiasm, persistency, learning ability, sharing mentality and research work. So yeah, that’s something!

Sometimes, a pat in the back is all you need to find your true potential and locomotive!

A dramatic epilogue before wrap up

Just a few months ago, my understanding of blockchain based decentralized applications & Smart Contract Development was entirely theory based.

Well, now I consider myself as an entry level Dapp Developer, and that has been made possible just because of my constant learning, coding time, networking interest and zeal for contributions during the contribution period of this program!

Photo by Ali Yahya on Unsplash

Kudos to SCI Team for successfully organizing such a big initiative and empowering open source software development crossing country domains!

Coming out of the first batch of SCI-20 made me realize that there’s an entire open source world ahead of me, yet to explore and embrace, yet to engage and collaborate with the technological goodness!

Well that’s it for now! You got a head start and now it’s your turn to buckle up, pick up your tools and start off your open source quest of awesomeness!

May the ‘Source’ be with you!

Hey this is Anjum Rashid, your friendly technical blogging dude from Bangladesh.
I’m a
Microsoft Learn Student Ambassador and love engagements with global and local communities to learn, share and contribute.
Apart from that, I’m on a quest to empower
Blockchain technology with the aid of open source. Find me sneaking out on random repos in Github and headbanging to Porcupine Tree numbers at the same time.

Get connected on LinkedIn | Twitter

--

--

Anjum Rashid

Microsoft Learn Student Ambassador | InfoSec Enthusiast | Blockchain Explorer | Musicophile