Tuesday, August 9, 2016

The much awaited GUADEC, 2016

Well the time has come to catch up with the smart peeps behind IRC nicks. \o/ This time GUADEC is organized in Karlsruhe Institute of Technology, Germany and I am all set for it. Oops forgot to mention about GUADEC. So GUADEC is annual conference of GNOME (FOSS) Organization where all users, contributors and developers meet together and have an amazing time discussing about future prospects of building the community stronger and better. Also there is good discussion on various projects and applications. Besides that, there are many interesting workshops and talks scheduled.

I am feeling quite happy to share that I am organizing a workshop to help newcomers get started contributing to GNOME. I got motivated to conduct this workshop as I know the troubles which newcomers definitely face, as I have myself sailed in the same boat at some time. I will be more than happy if I will be able to make this community bigger and people can start contributing with ease.
Along with it, I am also talking about the Outreachy project which I did with GNOME-Maps. I am eagerly waiting to meet my mentors Jonas, Mattias, Andreas, Marcus and fellow GNOMies.

Looking from the schedule, it seems that it is going to be a lot of fun. Football, Picnic, Barbeque, GNOME Women's Dinner, ... :) Really looking forward to it. I would also add that this is my first abroad trip. So hell a lot excited about it. Also planning to go around the city and exploring the places there. Looking forward to make new friend.

Will keep you all updated with event. Stay tuned.


Monday, May 16, 2016

GNOME.Asia Summit 2016

While I was going through news.gnome.org, a piece of news flashed on my screen stating that GNOME.Asia summit 2016 is to be held in Delhi, India which is my own place. Though at that time I was completely unaware about what happens in a summit, what it is meant for and all that sort of questions. But for once, I decided to atleast attend it, if not participate. I told about this news to my mentors Jonas Danielsson and Damian Nohales.  Initially i was quite reluctant to participate there, but Jonas pushed me a lot to present a lightning talk about my outreachy project in the summit. Damian too motivated me to go for the summit. Therefore I decided to submit a lightning talk proposal about my project : "Adding print route support in GNOME-Maps". Within few days i got the confirmation regarding the acceptance of my talk and also the approval of travelling sponsorship.

I was all ready for being the part of the summit and was quite excited to meet people whom I have just known by their nicks on IRC. The summit was held in Manav Rachna International University, Faridabad (India).

Day 1 comprised of workshops. The first session was divided based upon different ways in which one can contribute to GNOME (development, documentation, engagement) and in development it was branched further based on programming languages one was interested in. Because of my interest in javascript, I   joined Cosimo's team. The discussion turned out to be really helpful and cleared a lot of my doubts. Then there was a hands on session on gstreamer taken by Nirbheek and Arun. It was again an interesting one. Meanwhile I made many friends and exchanged talk with them. Above all of it, the community felt like very friendly, interesting and helping.

Day 2 and 3 comprised of a lot of interesting talks by various speakers. It was my first experience to deliver a talk at such a big summit. I was quite scared initially, but it happened all well at the end. I felt glad when I was able to reach out to people and shared the work clearly.

I was not aware of Day 4 plan i.e. excursion trip. But when Shobha (The summit coordinator) asked me to join them, I happily agreed to join them on the trip. It was a fun-filled trip to Taj Mahal, Agra. I got to know a lot about cultures of different countries and made awesome friends.

This summit has been very helpful to get me a feel of GNOME community. After all it's the people who has made it. I am thankful to GNOME community for making me a part of it and the summit. :) Looking forward to more such meets. :)

Monday, February 22, 2016

Gnome ++ :)

Hola friends,

It's been a little long, since I updated you all with the project progress. I feel immensely happy to tell that the Print Route feature has finally landed with the release of version 3.19.90(first beta release). Kudos to all the contributors (Gnomies) who have put in a lot of efforts to make this release successful. Gnome has got quite awesome stuff added to it. Following contains the log for the same:
After a series of review - refactoring - review events, the patch for print route feature  is committed.  
Thanks Jonas, Damian, Hashem and Andreas for helping me all while, reviewing the patches, suggesting wonderful approaches and yeah, keeping me motivated enough to successfully complete it (on time :P).

Following are the demo screencast of print feature.
      Long Routes: https://youtu.be/RpHcHvaS_ME
      Short Routes: https://youtu.be/Ovek9x3UHL0

Further work

 Refining the feature considering better usablility is the next step. Following tickets have been opened: 

Will be back with updates soon. Till then stay tuned. :)



Saturday, January 30, 2016

We are getting there...

Hey pals,

"We are getting there". Yes, these were the words said by my mentor Jonas when I the attached the latest patch, which made me extremely happy and jumping. :)

In the last two weeks, I worked on adding minimaps, enabling the different layouts for long routes and shorter routes and the refactoring of code. After discussion with design team, it was confirmed that minimaps were to be added for starting and finishing points only.

To make it happen, I learnt the concept of abstract classes and the factory method. As Print layout class is made abstract  which acts as a tool-box ,or rather sort of library which provides its sub-classes the methods used to get different surfaces (MapView, Instruction, Header, etc. )

Depending on the distance, we differentiate long and short routes and so the layouts for each. As shown in mockup, the long route layout contains minimaps surfaces and shorter one doesn't as the route is clear in complete MapView itself . So following are the Screenshots taken for both types.

Delhi to Mumbai has been my favorite route for testing purpose :p . 


For the shorter route I took infocity to DA-IICT, which I follow very frequently :)

Now next step is to refine the design to make it  more friendly to the user. Also some more code refactoring is required.

Will be back pretty soon. Till then stay tuned. :)


Saturday, January 16, 2016

Cruising Altitudes...

Hello Peeps,

Been a little late this time in catching you all. But yeah, I guess that can be compensated well with something which I am going to share just now.
Yayy !!! , I am able to generate a print of Map View along with instructions which looks a bit like mockups. Here is the demo video URL .

Breaking up in pieces, First I divided the data into parts. Each part is associated with corresponding page which is to be printed. From that I get number of pages which will be required and then actual  printing took place in draw-page call. The understanding of GTK Print API helped me. Begin-print signal is the one which is emitted when user is done with page setup ,but before rendering starts. All the calculations done to divide the data and get a count of pages are ensured in this one. In draw-page, actual rendering takes place using Cairo.

I am thankful to Andreas for designing an awesome UI mockup. Finally we were able to get an appropriate location and visibility behavior for Print Route Button. :) Following are the screenshots of UI.

   Without Route, print route button is not visible.

With Route, print route button is visible

Now next part is dealing with minimaps which will enlarge the route pieces and enable the user to see them with the respective instructions.

I will be back with the minimaps soon. Till then stay tuned. :)

Friday, January 1, 2016

Climbing up...

Hello Pals,

With a warm welcome to the new year and joyous ending of the old one, I am back with the project updates. I left the previous one upto rendering the Map View. In the last two weeks, I have worked upon rendering the Map View along some text.

For rendering the text, I got familiar with Pango. Pango is a library for laying out and rendering of text. Pango can be used anywhere that text layout is needed, though most of the work on Pango so far has been done in the context of the GTK+ widget toolkit. Pango forms the core of text and font handling for GTK+-2.x.

After this I tried hands on getting Map View with some text. To render the text I used Pango layout with Cairo as backend. Basically Cairo sets the source surface. And then PangoCairo helps in glueing them together.

Now the actual requirement of having this text is to print route directions along with the Map View. I have fetched the route directions using
which gives instruction for each turn point appearing in the route, using the index.

My mentor, Jonas suggested one more method of doing it i.e. By using OffscreenWindow. As it will tend to give the same outlook i.e. the icon , instruction and distance as it looks out in instruction box. Following is the screenshot of the same:

Currently I am working on getting comprehensive understanding of OffscreenWindow. After a meetup with the design team, we can have the final decision on the further proceedings.

Till then, stay tuned pals. Wish you all a happy and prosperous new year. :)


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 : https://youtu.be/p92e5rcyM3I

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