Saturday, December 19, 2015

Yay! It begins here... :)

Hello Pals!

Here I am, with my very first blog post to share my journey towards contribution in FOSS Projects. I felt elated at knowing that I am selected for Outreachy internship. Knowing that, the next three months will involve heck lot of coding, IRCing and learning cool stuff, I became freaking excited. The best part about it is that you can survive the project following any time zone, any place. Yes night owls, this one is for you. :p

Outreachy is an amazing opportunity provided by GNOME along with various other FOSS organizations for passionate women who want to engage themselves in doing exciting, varied and valuable work in FOSS projects. It involves working on a project for 3 months and this time the internship duration has began from December, 7 . I have given project work updates of the last two weeks, in the latter section.

I am thankful to my mentor, Jonas Danielsson for supporting me throughout the process. Be it making the initial contribution or bearing with my silly doubts, he has always been there. :p I am also grateful to my organization, GNOME for making me a part of it.

Getting Involved

The flourishing culture of open source programming in my university, with lots of people getting selected for GSOC every next year, inspired me to get involved myself in the same arena. I looked for the process on the web and also the various organizations to which one can contribute. I found applications of organization GNOME interesting and also, I could match up with the skills required (in terms of programming language for code understanding) to start contributing to it. This link is quite useful for newbies.

Next exciting thing I got acquaint with, is IRC client (Internet Relay Chat) where one can join various channels associated with multiple applications (For example - #gnome-games, #photos, #gnome-maps and many more) and can seek the help for a head start. Believe me, there exists a cool set of people hanging around in those channels who are willing to help you at every tiny step. I started lurking in IRC and was given a suggestion to make a little application of my own for a start. At that time I was working on minesweeper algorithm, therefore made the same game using GTK and C. GTK is the primary library used to construct user interfaces in GNOME applications. It provides user interface controls and signal callbacks to control user interfaces. Here's the link to the github repository and following is the screenshot of the game made by me.

What's next?

I went through the list of various applications of GNOME and the bugs attached to them in bugzilla. For dealing with the bugs, one needs to build the application first. That indeed requires setting up jhbuild, a command-line program which automates downloading, building and running the latest source code for GNOME programs. As per my experience with jhbuild or rather I would call it demon, it requires a lot of patience and time to free yourself off those web of errors, you get in between. And StackOverFlow and IRC fellas act as best companions at that time. I remember, I struggled for a complete night and half a day with those dependencies errors. But at the end of it, was able to build the first application i.e. photos. :)

Following are the links which helped me a lot in dealing with the demon.

And one more part, I was guided by IRC fellas to switch my distro from Ubuntu to Fedora when i was caught with dependencies errors. The reason being that Fedora ships the very latest development version of GNOME as compared to Ubuntu which is often one version behind with GNOME. The switch actually made my life little easier  :)

Later on I started following gnome games. Playing those games, bugging-debugging them became my past-time.The first bug-fix made me freaking happy. It feels so awesome when little tweaks (though meaningful) made by you in the code are pushed to the master branch. Michael Catanzaro ,my games mentor guided me a lot in gearing up with more critical bugs.

Project Updates

I applied for Outreachy program through project of GNOMEMaps application. GNOME Maps is a simple maps application which fetches data from OpenStreetMap. It is written in javascript using Gjs bindings.
Following is the link to my Outreachy application, which contains the log of bugs I have solved and also the project details.

Print Support for routes in Gnome-Maps

 Requirement of the issue is that one should be able to print the route, alongside the map. Following is the mockup by the design team to achieve the same.

The project will be done as per the following division:
  • Learning the printing API doing simple non-related printing operations and also understanding how printing works in GTK+.
  • Printing basic Map View.
  • Understanding Cairo.
  • Layout the route in a printable way as a GTK UI file.
  • Layout the route in Cairo.
  • Add print UI. 
  • Testing

In the last week, I read about GTK Printing API and Cairo library provided by GNOME. It helped me in getting a basic print of the Map View. Here is link of the video :

So pals, Stay tuned for more updates. Hope you liked it :)