Open Source

Open source experiences and information

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

GSoC Application Tips

GSoC is a good entry point for contributing to open source organizations. 2016 GSoC application process begins on 14th March. This blog post is about preparing a strong application which increases your chance of being selected.

First read my previous blog post on “Getting started in open source”to have an idea on how to start contributing to open source if you are completely new to the open source. Once you start with a particular organization, you have to submit a proposal for the project you wish to do during the summer.

Where can I find the scope of the project?

Go through the organization page and the idea page on the Google Summer of Code site. You can select a project from there. Different organizations handle the communication process in different ways. Some organization ask you to get in touch with the mentors of the project while other organizations recommend more public interactions like mailing lists or IRC channels. Read through your organization page and identify the prefered method of communication. Then go ahead and find out about the functionalaties and the scope of the project.

Does my previous contributions matter in getting selected?

It depends on the organization you are applying for. Past contributions are among the several other things which will make a good application. Following is a general list of things which will be considered when rating your application. However, the weighting depends on the organization.

  1. Technically strong proposal
  2. Previous contributions
  3. Interaction with the community
  4. Helping others
  5. Flexibility
  6. Willingness to learn

Technically strong proposal

This is your one chance to prove that you are technically sound and have the skillset which is required in the project. Your proposal should be original and convincing. It should address the expectd functionalities and scope. But you should be able to differentiate your proposal with others by adding an extra touch of creativity which will convince the mentors why you are the ideal person for the project. Different organizations handle the project proposals in different ways. Some organization asks the students to keep their proposals open. In these kind of scenarios adding something from your side which can make the project better will give you an upper hand. Even without open proposals you should make your proposal unique. But make sure you are not stepping the line by creating a proposal way different than the expected project. Copying some other person’s idea or proposal won’t help. It will affect both the proposals negatively.

In some cases organization’s asks some other non technical factors as well. Most student do not take time to answer these questions genuinly. Some tend to put answers which are directly copied and pasted from Google. Even though your techncial proposal is good, plagiarism won’t get you anywhere.

Previous contributions

Youe previous contributions make the mentors identify your ability and willingness to contribute. It may be a small one line fix, but it matters. But problem arises with the contributions which are not required to the project, So before you make an contribution, talk it through with the community. If you are going to fix a bug, make it assigned to yourself. Otherwise some other person who is also seeking for a contribution will do the same thing and it will result in redundant work. If you are going to propose a bug fix make sure to get it approved by the community.  They may suggest you some new things to add to your contribution as well. Don’t be greedy and get multiple bugs assigned to yourself. Most communities do not like this kind of scenarios. Hence it will affect adversely to your application. Always do one at a time. It will help you focus on your current work and do a better job out of it as well. It’s not the number of PRs that matter. It is the impact on your PR to the project that matters.

Interactions with the community

As I mentioned earlier, community interactions matter. The sense of community is a strong characteristic in open source. No one will blame you for asking a question which is related to the project. Community will always be there to help you. However, you have to ask better questions. If the answer you are searching for is openly avbailable, which means that you have not taken enough time to go through the project and related materials. Always keep your ommunity interactions positive. Follow the organization’s culture.

Helping others

Open source is all about helping others. You should be willing to help others when working with the community. Be active in mailing lists and IRC. If you know the solution to the problems being asked, don’t be hesitate to reply back even though you are fairly new to the community.

Flexibility

Requirements change overtime. Your time line and proposal should reflect flexibility to adapt these changes. If the mentors ask to change your proposal about a certain point, take their advice and change it. They will always know better about the project.

Willingness to learn

This is a crucial point in GSoC. If you are a novice or intermediate skilled person , there will be a lot to learn. Always try to find the answer to your problems yourself, if you can’t find them, ask them from the community. Your mentor will not do stuff for you in the project. You should learn and do yourself. In most scenarios mentors will direct the students to answers.

What if I don’t get selected?

Don’t get demotivated. Keep contributing and apply next year. What matters is not getting selected to GSoC, but your contributions to the open source.

Acknowledgement

This article is written from my experience being a GSoC mentor last year and a conversation I had with a fellow mentor. Thank you very much Shwethambara for your insight and experience on this matter.

 

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.

 

SoK Final Report – Theme Designing for Pairs

Theme designing for pairs is my Season of KDE project, mentored by Heena Mahour. In this project i created new themes for KDE-Edu project “Game Pairs”. In SoK period I created the following themes:

Here are some screen shots of these themes in Pairs:

Fruits Theme

Fruits Theme

Vegetable Theme

Vegetable Theme

Nature Theme

Nature Theme

Stationery Theme

Stationery Theme

Leaf Structures Theme

Leaf Structures Theme

These themes will work in following game modes in “Pairs”

  • Pairs
  • Relations
  • Logic
  • Words

The most challenging part of my project is to first build and run the program. It took some time and help from KDE community to figure out issues regarding my configuration and have “Pairs” up and running in my machine.

Next step was to understand how a new theme should be added by going through the project. My mentor allowed me to do this myself rather than stating out the ways of how to do it. Adding a theme is not only about creating images and add them. It is about connecting these images to the program as well. In “Pairs” a theme is consist of set of images and a “.game” file. The “.game” file is written in xml and contain information about the images. Following is the step by step process to create and have your theme running in “Pairs”:

  1. Download KDE Pairs
  2. Extract and follow the steps in README to  build the program
  3. Run “Pairs” (After you have built and install “Pairs” you can run it by simply typing “pairs” in the terminal)
  4. When you have “Pairs” up and running, you can start creating svg images. (To create svg images, you can use software like inkscape)
  5. Create a folder in the “themes” folder in “Pairs” and add the svg images to that folder.
  6. Create a xml file “your_theme.game” and edit it following a .game file of a previous theme.
  7. Update the CMakeLists.txt file and add the following line “create_theme(your_theme)”
  8. Built and run pairs again and you will see your theme with other themes.

Another task of my project is improving documentation in KDE pairs. The user documentation for “https://userbase.kde.org/Pairs“. I even created a techbase wiki page for pairs such that other contributors can contribute to the documentation of pairs in technical side.

A very big thank you should go to my mentor Heena Mahour without whom this project will never be successful. Further more, I would like to thank KDE community who helped me through mailing list when I have issues regarding the project. Last but not least I would like to thank to the KDE SoK organizers for providing this amazing experience. I am looking forward to contribute to KDE even after this is finished.

Theme “Leaves” added to “KDE – Pairs”

“Leaves” is the newest theme I created for KDE-Pairs as a part of my ongoing project ‘Theme Designing of Pairs’. This is done under the guidance of my mentor “Heena Mahour” who initially gave the idea about leaf structures. This will only work in 3 game modes namely, pairs, relations and logic.  You can download the theme from here.

pairs-leaves-pairs pairs-leaves-logic pairs-leaves-relation

Theme ‘Stationery’ added to ‘KDE – Pairs’

As a part of my ongoing project “Adding new themes for KDE Pairs game”, a new theme ‘Stationery’ is added. The motivation behind selecting the particular theme lies on its simplicity. Stationery objects are very much familiar with pre-school children rather than other objects. Hence these stationery items can be used in the ‘Pairs’ game to develop their logical skills, rather than worrying about their familiarity with the domain.

The stationery objects I have used for this are; book, pen, pencil, paint brush, paint tube, ruler and scissor. The theme can associate four of the six game modes. They are pairs, relations, logic and words. Few screen shots of the theme will be as follows;

In 'Pairs' game mode

In ‘Pairs’ game mode

In 'Logic' game mode

In ‘Logic’ game mode

In 'Relation' game mode

In ‘Relation’ game mode

In 'Words' game mode

In ‘Words’ game mode

This theme can be downloaded from here.

More Themes Added

After adding the first theme, I was working on a theme on nature. That theme represents the basic elements in the nature such as trees, flowers and etc. Since KDE Pairs is developed for pre school children the objects represented in the themes should be familiar and educational to them. Following are some screen shots after adding the theme nature to the game. These screenshots represents the different game modes such as logic, pairs, relations and words.

Theme Nature nature-pairs nature-relations nature-words

After drawing the elements of this I started drawing for another theme which is very similar to my previous theme (Fruits). That is vegetables.

First Theme added

Today I added my first theme for Pairs. You can find that here.  In my current project “Theme Designing for Pairs” which is a project from “Season of KDE” and mentored by Heena Mahour, the main task is adding themes.

When designing a theme for a game designed for pre-school children, you can’t just draw some pictures and add. The pictures will be educational and easily identifiable. So as my first theme I designed a theme of fruits. It contain 8 fruits; apple, banana, pineapple, mango, strawberry, pairs, orange and grapes. It will support the “Pairs”, “Relations”, “Logic” and “Words” game modes. A screenshot from “Pairs” game mode will look as follows:

Screenshot from 2014-12-14 22:56:09

To create the image files in the svg format, I have used inkscape.  Even though it took some time to be familiar with its functionality first, once you draw a thing or two you get addicted to it with its cool features.

 

 

Adding Themes in KDE Pairs

During the past weeks with the help of my mentor “Heena Mahour” I have tried to add a new theme to the existing themes in Pairs. After going through the themes directory I created a new theme with the existing images in themes like animals, and Linux flavor to see how to inject a new theme for that directory. Adding a new directory with the theme name and coding the XML file similarly as the other themes did the magic. Then rebuild Pairs and it worked. I could find my theme in Pairs UI. My next step will be creating my own images and adding them as a new theme which will be committed to the code base so the others can use it.

Building and Running KDE Pairs

As I have earlier mentioned in my previous blog post, I have started my project “Theme Designing for Pairs” for Season of KDE. My first task is to build pairs and run it in my local machine. I have previously downloaded the executable and played with it a little bit. Therefore I uninstall it and cloned the repository using the following command.

git clone git://anongit.kde.org/pairs

For the instructions on how to build the project I have followed the README file in the project. It gives a clear set of instructions  on how to build Pairs in different platforms.

After successfully built the project you may be able to run it by typing “pairs” in the terminal. Unfortunately after successfully built it, I was not able to run it. It has been a blocker in my project for a long time. I tried various things but at the end none of them worked. Therefore, I asked my question in the mailing list and there I was able to find out the reason why it is not working in my machine.

I have to set the KDEDIRS directory to root, where my KDE is installed. After setting that variable I was able to run “Pairs” without no other change.

Now I have pairs up and running , I can continue with the rest of my tasks.