Originally published on WorksHub.
So you've decided you're gonna dive into the world of Open Source as described previously and you hear terms like "PR", "repo", "commits" etc. You also get to hear about "issues", "merging" or "branching". Well, other terms can wait but in this article, I'll tell you all about what an issue is and how you can take advantage of this nifty feature of the open-source environment to start learning a new programming language! Who's excited?
Whenever you visit a project on an open-source platform like GitHub, you are presented with it's 'homepage' called the repository or simply a repo. Next to that, you can see a few other tabs, the first one being labelled as "Issues". You see a list of different issues that exist in the project currently.
Issues are one of the best ways to pitch your idea to start an open-source contribution to a project.
It can be anything from a feature request, giving your idea, adding a bug report or advising an enhancement to the repo owner. As you can see, issues can have several aspects to them. One may be of really low importance, the other a 'critical' one which should be fixed ASAP. Therefore, they're marked with 'labels' so that other people contributing can know the importance of each issue.
Issues can simply be used to kick off a conversation or discussion. Did you get an idea? Unable to understand how a specific module works? Open an issue and talk about it. This is one of the great ways to take your idea and making it a 'move' towards a contribution.
Having an issue tracker in an open-source project helps a lot. Its main aim is to manage and maintain lists of issues. Let's see how much value they provide with their important features:
- As a contributor, you will be updated about the recent and upcoming changes the repo is heading towards.
- As an owner, you can create an issue template, which gives a newbie the confidence to quickly create a new issue by filling out the requirements and important information.
- You can work on enhancements, track ideas, fix bugs and more.
- The best part is you and the repo owner(s) can collaborate in a seamless environment with features like linking a Pull Request (PR), upvoting/downvoting a comment, mentioning someone, getting personalised notifications and of course, adding code snippets.
- Some issue trackers go further and let you transfer an issue to another repo or pin important ones, thereby setting a clear roadmap of what's currently happening in the project.
> Here's an example with WorksHub Issues.
As you may see, it's an issue tracking system built within the WorksHub platform. Let's open an issue and see what we get.
We have the following important things to look in this issue:
- Issue title: "When uploading an image fails, there is poor/no error message." This clearly defines what this issue is about.
- Issue level: "Intermediate". Solving this will require an intermediate level of knowledge.
- Issue description: A summary which expands upon the title and tells you what are the problems related to it.
- Issue tags: "bug, good first issue and help wanted". By listing tags, we know that this is a bug which is a good one to solve for those who are new to contributing to this open-source platform.
And most importantly, you can see the programming language required to work on this. WorksHub is built upon the listed language i.e. Clojure so it's obvious that this issue is also available on GitHub.
To start working on an issue, you must know what's required and what the issue is about. We know two things are required here, first the Clojure programming language and second, the issue is about the image upload failure.
If you don't know these, you can not solve this issue. Let's imagine you're new to Clojure, you've never worked on it before. Here are some steps you can take to learn it and then implement in an open-source issue:
Step 1: (Always) start with the official documentation.
Head over to the Clojure documentation website and get to know about the language, how it works, how to install on your platform. Once you're familiar with the language, learn its syntax, practice on repl.it or on your local system. Search for some online resources making small programs at first. The aim is to familiarize yourself with a language you just got to know about.
Step 2: Visit some online/offline resources and make projects. Refer to some video tutorials, articles or read some books based on the Clojure programming language. These resources will help you to make a few projects by yourself and you will feel more confident working on a new project.
Step 3: (Optional but highly recommended) Work on some open-source projects. This one isn't required to learn a programming language but it will be very useful to solve some issues like above. Search for those repos which are built primarily on the Clojure language. If there are some issues need to be fixed, read them thoroughly, make note of the important terms as listed above of that issue and start working on it. Not only you will implement on your learning but you'll also get a great exposure working in an open-source environment.
Step 4: Deep dive in other features of the language. You can always go through Clojure's APIs, releases, tools and frameworks when you feel confident. This is so that you're able to work on a large-scale project which may use these features in their repo.