We use cookies and other tracking technologies to improve your browsing experience on our site, analyze site traffic, and understand where our audience is coming from. To find out more, please read our privacy policy.

By choosing 'I Accept', you consent to our use of cookies and other tracking technologies.

We use cookies and other tracking technologies to improve your browsing experience on our site, analyze site traffic, and understand where our audience is coming from. To find out more, please read our privacy policy.

By choosing 'I Accept', you consent to our use of cookies and other tracking technologies. Less

We use cookies and other tracking technologies... More

Login or register
to apply for this job!

Login or register to start contributing with an article!

Login or register
to see more jobs from this company!

Login or register
to boost this post!

Show some love to the author of this blog by giving their post some rocket fuel 🚀.

Login or register to search for your ideal job!

Login or register to start working on this issue!

Engineers who find a new job through Functional Works average a 15% increase in salary 🚀

Blog hero image

Using open-source issues to learn a new programming language

Vaibhav Khulbe 8 May, 2020 | 4 min read

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?


What is an issue and how it can be helpful? 🤔

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.

Screen Shot 2020-05-12 at 4.50.04 PM.png

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.


Why are issues important? ❗

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:

  1. As a contributor, you will be updated about the recent and upcoming changes the repo is heading towards.
  2. 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.
  3. You can work on enhancements, track ideas, fix bugs and more.
  4. 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.
  5. 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.

How can you learn a new programming language with issues? 👨‍💻

> Here's an example with WorksHub Issues.

Screen Shot 2020-05-12 at 4.51.45 PM.png 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.

Screen Shot 2020-05-12 at 4.52.54 PM.png

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.

Further reading:

Author's avatar
Vaibhav Khulbe
Web developer/designer | I write stories on @thepracticaldev
    JavaScript
    Python
    React
    Node

Related Jobs

Related Issues

viebel / klipse-clj
viebel / klipse-clj
  • Open
  • 0
  • 0
  • Intermediate
  • Clojure
viebel / klipse
  • Open
  • 0
  • 0
  • Intermediate
  • Clojure
viebel / klipse
  • 1
  • 0
  • Intermediate
  • Clojure
viebel / klipse
  • Started
  • 0
  • 1
  • Intermediate
  • Clojure
  • $80
viebel / klipse
  • Open
  • 0
  • 0
  • Advanced
  • Clojure
  • $80
viebel / klipse
  • Started
  • 0
  • 2
  • Advanced
  • Clojure
  • $180
viebel / klipse
  • Started
  • 0
  • 1
  • Intermediate
  • Clojure
viebel / klipse
  • Started
  • 0
  • 3
  • Intermediate
  • Clojure
  • $80
viebel / klipse
  • 1
  • 0
  • Advanced
  • Clojure
  • $300

Get hired!

Sign up now and apply for roles at companies that interest you.

Engineers who find a new job through Functional Works average a 15% increase in salary.

Start with GithubStart with Stack OverflowStart with Email