Open source

My Journey in Open Source

One can raise an argument saying “is the competitions like GSoC and Outreachy , really helpful to open source or do they just create short term contributors who will only contribute for the monetary gain?” Being a constant open source contributor in various projects and organisations I have seen the same. I have seen students who only contribute having the monetary gain in mind and seen them disappear when they are not selected, or the program finishes. But everybody isn’t like that. These programs just create the opportunity and provide that extra push you need to step on board.

I also started my journey in open source from a program like that. Few years back (in 2014), I wanted to start contributing to Open source and I saw that GSoC is a good opportunity. So I start searching for projects and organisations which align my interests. Wikimedia foundation was one of my top choices. I whole heartedly support their mission of making knowledge open to anyone who desires it. Wikipedia has taught me lot of things. It was time to give back. When I was searching through their projects list I found out about Wikimedia labs sub community and their project on improving documentation for the new comers. Wikimedia Labs provides a platform to host wikipedia related bots by community members. I found it very interesting and matches my abilities in technical documentation nicely. Since it was not a coding project it wasn’t listed in GSoC projects, but it was listed under FOSS OPW (now Outreachy) projects. That is when I found about FOSS OPW.

FOSS OPW (now Outreachy) is a GSoC like program which helps people from underrepresented groups such as women, cis, trans, gender queer people, to get involved in open source. It doesn’t limit your contributions only to code. You can find projects in documentation, design, marketing apart from coding. So whatever is your passion, you can find a role in open source.

Wikimedia is a very welcoming community to new comers. It taught me most of the things I know about the open source and open culture. My mentor was Andrew Boggot. My initial task was to review the main page and getting started page in Wikimedia Labs wiki . Since I was new to the community and the wiki, the task was ideal for me. They wanted the perspective of a new comer so that they can improve it to make new comers more welcoming. Then they asked me for a demonstration of the main page and the changes it needed  as a follow up task. By the time I completed these tasks I was pretty much comfortable with Wikimedia labs platform. Then I prepared my proposal for Outreachy which got accepted upon submission.

My job was to improve the documentation of Wikimedia labs to make new comers’ lives and the existing contributors’ lives easy. One of the significant contributions is to make the documentation of every project (bot) hosted in Wikipedia Labs complete and easily queryable. In that way new comers can easily get an idea about what projects are open for contributions and what projects are finished. It also helped the administrators to identify the status of each project for administrative operations. My progress report and final summary can be accessed from here. After the project ended, I continued to contribute to the other sub communities as a Wikidata item editor, Media wiki translator, etc.

Ending my FOSS OPW internship with Wikimedia didn’t ended my enthusiasm to contribute to open source. That is when I found about Season of KDE (SoK).  It differs from most of the open source programs since it doesn’t offer money. Since I wasn’t in open source for money, it suited me well. It was also open to other disciplines apart from coding as well. The project which caught my eye was “Theme Designing for Pairs”. What I had to do is design different themes for the KDE-Edu project “Pairs”. You can read all about it here.

Meanwhile I was selected as a scholar in “Learn IT, Girl” first edition. It is a global mentorship program where a scholar is matched with a mentor to learn a programming language from the scratch and do an open source project. My project was “Expense Splitter”. It is a platform developed from Ruby to make the splitting money easy among your friends. When we go out with friends and buy something to eat or drink, usually one person pays for all and others pay him/her back immediately or later. Expense splitter track these expenses and allows the creditor to send the notifications to debtors. It will help you manage your debts and settlements. I was able to successfully finish the project and pass the program. Not only that my project has been selected as one of the best projects and added to their showcase. In future I expect it to expand to Android and iOS platforms so that the expenses can be recorded immediately since you have your phone with you always. After having an awesome experience in the first edition, I volunteered to be in the organising committee for the second edition and also selected as a mentor so that I can give back what I learnt during the first edition and what I already knew.

My most constant and significant contribution to open source lies with Systers. Systers is an Anita Borg Institute Community whose objective is to improve the female participation in tech and allow them a safe heaven through systers mailing list. In the open source perspective, systers is an umbrella organisation for GSoC. It has some of their own projects and some of the collaborative projects with Peace Corps and Mailman. The project I contribute to is “PCSA – Peace Corps Safety App”. Peace Corps aims to provide a compassionate and supportive respond to all the volunteers who have been sexually assaulted. PCSA mobile app supports this initiative by letting the Peace Corps Volunteers to report and gain information on Peace Corps Safety and Security procedures. The Android version of the PCSA started with GSoC 2015 where I was one of the mentors of the project. After the GSoC we proceeded with the app implementation with the counter contributors. We also participated in GCI (Google Code In) 2015. For GSoC 2016, we started the iOS version and a web front end for the app. I am currently the lead mentor of the PCSA-Android for GSoC 2016. Throughout the project lifetime, I have been the primary maintainer of the repository. My responsibilities included reviewing and validating issues, reviewing and merging pull requests and project management. I also maintain the project wiki.

Maintaining an open source repository comes up with lot of challenges. Handling traffic, determining what’s best for the project, maintaining a positive community sense are few of them. It is hard to reject a pull request which is not needed for the project, although its author has put a significant effort in that. You should be technically sound to reply the arguments the authors put forward in justifying their choices in code reviews. You need to have a good up to dated knowledge base on the technical side of the project, in this case Android.  Hence, the impact of this project to my future goal of being a good mobile developer is invaluable.

My activities in GitHub: https://github.com/sandarumk?tab=activity

I also enjoy writing and giving advice about GSoC and starting in Open Source. Check my Quora profile here. I am also one of the most viewed writers in “GSoC” and “Open Source Projects”. If you have any problems or need tips feel free to contact me. I will be more than happy to help.

Given below is my portfolio:

Github: sandarumk

LinkedIn: Dinu Kumarasiri

Quora: Dinu Kumarasiri

Twitter: @sandarumk

Getting Started in Open Source

Last week I have met several college students who are willing to contribute to open source but do not know where to start from. Few years ago I was in the same boat. Since GSoC 2016 is getting nearer and students have already started to find organizations and start contributing, this would be the ideal time to publish the post.

Get your skills and abilities listed

Fist you have to analyze your self. You have to figure out what you actually want and what are you comfortable with. For example you may be an expert in Android and want to contribute to a project related to Android. Or else you may know the basics in Android, by contributing you want to get more experienced. In a completely different scenario, you know Java but you want to contribute to c++ project to learn c++ while contributing. So there can be many reasons why you want to contribute to open source. First take some time. Take a pen and paper and write down what you really expect from contributing to open source.

Once you know what you want, you have to figure out your strengths and weaknesses related to that area. Then you will be able to get a good understanding on for what you want to contribute. Once you get your skills and abilities listed with your expectation you can start finding a project.

Select a project or two to contribute

Many people have this misconception that finding a project to contribute is the most difficult thing in the process.  Believe me it is not. Once you know what your expectations are, you have to list out what kind of a project you need. You have to focus on the project’s technical details for this. For example you are a java expert and you want to learn c++ in the process of contributing, selecting a java project is not going to work. So you have to identify the technical details such as programming language and focus of the project (such as algorithms, machine learning and data science).

Once you figure out the details you can directly search an open source project which matches your specification in google. Another way is go to the last years GSoC page and search your specifications. Then you will find the related projects.

Make a list of projects you like and go through each and every project. Most projects maintain wikis and you can find them in their start contributing page or similar pages. Read through them and try to understand what the projects are about. According to your understanding on them select one or two projects of your interest. Then comes the interesting part.

Subscribe to their mailing list

Once you found the project, subscribe to their dev mailing list. Most projects have the details on how to contribute/ getting started sections. If you are not comfortable introducing yourself to the community just yet, wait for some time and read the mails coming from the list. If you do not understand anything they are talking about, just ignore them. But by reading these mails you will get a good idea about communication and  Do not try to overthink and ditch the project and start another.

Shoot an introductory mail

Once you are familiar with the mailing list and mailing list etiquette, send an introductory mail to the mailing list introducing your self and asking them  to help you on getting started. In most of the cases as a result to this question , a community member will direct you to a page where there will be some beginner tasks related to the projects listed. You can read about them and claim a task. The way of claiming a task is different from organization to organization. In most organization when you go to the ticket of that task, you can comment and clarify your questions and tell them that you are interested in doing that specific task. Then they will assign it to you.

Start Contributing

Now that you have introduced yourself to the community and found a task, you can can start working on the tasks. In most of the open source projects, they use git for version controlling. What you usually have to do is fork the project, make changes to the code according to the task you are assigned and then make a pull request to the project’s repository in the organization. You can ask from the community about how they are going to do this.

 

Half way through the Internship with Wikimedia

Since it has been already six weeks passed and this is the seventh week of the FOSS OPW internship from this blog post I thought of speaking my overall experience in during the past weeks.

First let me introduce my background. I am a final year undergraduate from Department of Computer Science and Engineering, University of Moratuwa , Sri Lanka. So as you would have guessed final year is not easy. When the internship starts I was having a little bit of free time because my final year has not been started at that time. So I had plenty of time to engage in the internship work. This was new experience for me. For few months I have been engaged with open source communities. So when my internship starts I have a quiet good idea on how the open source communities work. But yet it was a new experience to me.

The assistance I got from my mentor was great. He was always there to guide me and show me the direction where I should focus. After the first few weeks my final year started and I started to get busy. That’s when things become a little bit tough.But however I love doing what I do. So although I have to manage my time more effectively to cover all the work I have at the end of the day I feel happy that I was able to do all the things I supposed to do.

So my advice for all is whatever it is do what you love. It will help you to get through tough times easily.

Two weeks with Wikimedia Labs

As I have previously blogged I am doing an internship with Wikimedia Labs for FOSS OPW.  At the end of the two weeks I have learned many things from my internship. The first challenge I got is learning Semantic Form Extension.

Semantic Forms Extension is a highly tied in with Semantic MediaWiki Extension. It will let you easily add , edit and query data using forms in your wiki without any programming.

According to my plan the first two weeks of my internship was dedicated to having the getting started documentation redesigned and we are still discussing about changes done. As soon as  the things get decided we hope to get it all completed and move to the next phase.

Experience you get working with open source community is altogether a different one. You can get help via IRC channels and mailing list and every one is willing to help if you follow the proper etiquette.

GSoC Vs FOSSOPW

GSoC (Google Summer of Code) and FOSSOPW (Free & Open Source Software Outreach Program for Women) are two of the most widespread open source internship programs. But the number of people who know about FOSSOPW is low considering to GSoC.
GSoC logoopw logo

If you don’t know about GSoC and FOSSOPW visit the following links :

Although both programs support open source community by providing paid internships for the participants and looking similar from outside, they have their differences.

Main differences between GSoC and OPW :

  • OPW targets women as the name suggest, but GSoC has no such constraints
  • You don’t have to be a student to apply for FOSSOPW, but for GSoC you need to be a student to participate
  • You can participate only once in FOSSOPW program, but if you are eligible you can do GSoC as many times you want
  • OPW stipend is also the same as the GSoC stipend which is $5500, but you get additional $500 as a travel allowance
  • While GSoC projects only focused on coding aspects, OPW projects cover a wider field with documentation and outreach projects

Open Source for non-coders

meme

What if I told you, you can be a part of open source community without writing a single line of code ?

Yes, The time has now come that the open source community has opened their doors to welcome non coders to contribute to their projects and be a part of the community. If you are good at documenting and have a technical background and willing to do something for the open source community here is your chance. You can help them with documentation to make their projects better.

One of the main goals of the open source community is sharing knowledge. For this purpose documentation is an important necessity. It will help to motivate the new contributors as well as keep the current contributors up to date.

For new comers who are willing to help with the project , documentation with getting started guides should give the push they need to take the first step in to contributing.

For contributors already contributing the project, good documentation will help them to stay up to date with the development of the project and help them to get familiar with other modules and components without going through all the code.

Almost all the open source projects use wikis for the documentation purpose. Following are few wikis of the projects that I am familiar with :

In a wiki anyone can log in and change the documents to make them better. However it is your responsibility to make the best of your contribution by doing something valuable to the community.