Experience with OpenEBS in this Hacktoberfest

From Hacktoberfest website, I came to know that Open Source Cafe Bangalore is conducting Hacktoberfest workshops every weekend and they are also providing some awesome goodies for our contributions. So, I decided to give it a try.

Hacktoberfest 2018


I was late for the workshop on day one itself (Thanks to Bangalore traffic!). A session about Kubernetes was ongoing. Since I don’t even know what a Container is, it was hard for me to understand what Kubernetes is all about. The next session was about how we can make our first PR to some open source repository. Since I already made a few PRs, I understood it.

It’s better to start with simple issues first.

In most of the repositories, people will tag the issues concerning the complexity. Thanks to the openebs community for tagging beginner friendly issues. So, I choose to work on a few issues tagged as “hacktoberfest” — a few of them were very simple, such as fixing the linting errors. But a few of them were little complicated like adding autocompletion to a CLI tool.
Taking up the more straightforward issues initially gave me confidence. And it helped me to understand the conventions to follow for that particular repository such as signing every commit that we make.

Help is available in the community if you need.

When I decided to work on the project OpenEBS/Maya, I struggled to set up the project on my machine. I was using MacOS, and the build instructions were written for Linux OSes. People like Satyam Zode and Prateek helped me to build the project by changing some lines in the Makefile.
This project was written entirely in Golang. When I decided to work on this project, I didn’t even know how to write a hello world program in Golang. But people were there to help me whenever I got stuck.

Always consult with some maintainers before you add some external libraries to the project.

I took the issue of adding bash completion to a CLI tool named mayactl, since Akshay has mentioned a library to do the same thing. I learned a bit of Golang from A Tour of Go. Then I tried to incorporate the bash completion library to mayactl. After a couple of failed attempt, I was able to implement the essential bash completion. In the review, Ashutosh Kumar told me that if we add an external library to our project, we should also be able to maintain it. So, he asked me to decide on it.

You don’t need to know every bit to fix an issue.

Instead of using some external library, people told me to look into the source code of kubectl to see how they implemented the bash completion. I dug into kubectl’s source and figured out the part where they performed bash completion. I copied it and made it compatible with mayactl.

Copying code is fine as long as you know what it does is.

You don’t even need to know a language to work on an issue. You can learn the language on the go. To fix the bash completion issue, all I need to know was three things:

  • A little bit of Golang
  • Know how bash completion works
  • Where to add the code inside mayactl

I didn’t know all these things before I started. I learned this by doing it.
I was happy by knowing that this PR was selected as the best PR of the week and I won an Amazon Echo from OpenEBS.

Tweet

The next issue that I took was to add some features to a Common Integration Testing Framework (CITF) that OpenEBS is planning to use for all of their projects. I thought this is difficult to work on since I don’t know how OpenEBS works. But the people like Ashutosh, Prince Rachit and Akash Srivastava explained the essential parts of OpenEBS that are required to work on the issue. Without completely understanding it, I worked on it. And with the help from the community, I could complete the tasks.

Address the review comments properly

After completing the task, I made a PR. People approved the changes, and they asked me to put some screenshot about the feature that I added. But I was not clear about the kind of screenshot that they needed. So, I asked them, and they clarified. I made a GIF about adding autocompletion in mayactl and added it along with the PR.

In a community, help others too

When we were done with issues in CITF, the next task was to test the mayactl with the CITF. I added a few test cases using CITF. Then I helped others in reviewing their code and getting it merged with the master branch. I got to see that a lot of people were facing the issues that I encountered before. So, I shared the solutions that worked for me. I got happy that I also was able to help someone who was in need.

For my contributions to OpenEBS throughout this month, I won a laptop from them.

Tweet

Don Williams
Don is the CEO of MayaData and leading the company for last one year. He has an exceptional record of accomplishments leading technology teams for organizations ranging from private equity-backed start-ups to large, global corporations. He has deep experience in engineering, operations, and product development in highly technical and competitive marketplaces. His extensive professional network in several industries, large corporations and government agencies is a significant asset to early stage businesses, often essential to achieve product placement, growth and position for potential exit strategies.
Kiran Mova
Kiran evangelizes open culture and open-source execution models and is a lead maintainer and contributor to the OpenEBS project. Passionate about Kubernetes and Storage Orchestration. Contributor and Maintainer OpenEBS projects. Co-founder and Chief Architect at MayaData Inc.
Murat Karslioglu
VP @OpenEBS & @MayaData_Inc. Murat Karslioglu is a serial entrepreneur, technologist, and startup advisor with over 15 years of experience in storage, distributed systems, and enterprise hardware development. Prior to joining MayaData, Murat worked at Hewlett Packard Enterprise / 3PAR Storage in various advanced development projects including storage file stack performance optimization and the storage management stack for HPE’s Hyper-converged solution. Before joining HPE, Murat led virtualization and OpenStack integration projects within the Nexenta CTO Office. Murat holds a Bachelor’s Degree in Industrial Engineering from the Sakarya University, Turkey, as well as a number of IT certifications. When he is not in his lab, he loves to travel, advise startups, and spend time with his family. Lives to innovate! Opinions my own!