Summary of my Accomplishments as a part of OPW’2013

Arrival of mid September marks the wrap up of my term as an OPW intern for GNOME-Music and also the beginning of my time with gnome after the internship (Yes! I plan to stick around for a long, long time !)

This post is an effort to condense my contributions and visions from the last 3 months into a report for OPW wrap up.

View for No Music Found


Behavior of playbar toolbar after reaching end of queue
Implementing Repeat ALL functionality
Made my first port from gjs to python (widgets.py!)
Added RTL variants to repeat-shuffle icons
Implemented searchbar
Optimized code!
Learnt to deal with travis errors!
Optimized more code!

  • While I would have expected myself to be limited to just the implementation related bugs, I soon discovered that you can indeed work on UI bugs regardless of owning ubuntu 13.04 (where UI fixes are a pain , partially why the screen-shot courtesy of this post goes to sai :) ). And so I gave in color and width fixes .. and well, adhered to the mockup designs for music !
  • I also learnt that not only do we want a clean indented code, but also an “error-trace” free terminal , and so I cleaned my error trace and made pyflakes and pep8 happy !
  • Porting to python in one crazy week not only saw me writing some huge code porting javascript code but also introduced me to Travis. And I could write a separate blog describing how to make Travis happy !
  • Its the one line fixes which prevent random crashes and fix the “i don’t know why the hell wouldn’t this work” emotion which are the toughest to get to:

I too had my share of those and fixed some :
Fixed grabbing media keys on window focus
Fixed disappearing error icon
Fixed scrollbar positioning
Fixed Attribute error
Fixed crashes

  • Taking care of i18n is important ! – Strings should be translatable
  • Vision for future!  I intend to keep working with gnome-music and help implementing the future features like remote sourcing, completing search, etc.

I have through this journey learnt that Opensource is not just about coding , but about collaborative learning and innovating ..Its about the thrill of solving your first bug, the magical week of meeting those people behind the “nicks”, making friends, improving your skills, experiencing lows.. but cutting through them and rediscovering your highs.

Its about joining a community (and a family ) and never wanting to leave!

Signing off with some screens:




My Diary for Git && GitHub


Working with Git for the first time in opensource can indeed be overwhelming! The purpose of this blogpost is to make that experience a little less troublesome by covering some of the initial steps which every novice should find useful. Its pretty concise for a topic as elaborate as git, yet I try to cover as many bits as I can :) The following finds it’s origin in my notes for Git and GitHub while I was scaling my first steps into the world of collaborative development.

Git && Github ~ What’s difference ? Don’t they sound the same??

While Git is a revision control system, a tool to manage your source code history,  GitHub is a hosting service for Git repositories.  So, they are not the same thing: Git the tool, GitHub the service for projects that uses Git.

Ok , Good so which one do I use?

There are usually 2 types of patches one needs to contribute with opensource (my experience is largely composed of gnome) :

First, are the ones wherein your project has a repo hosted not on GitHub but (say)  Gnome Repos for existing Projects .

In this case you don’t really have to worry about the GitHub part of this post (unless ofcourse you want to learn it anyways ;) ).Here the git commands you would be looking for are (In order):

  • git clone <git-url-for-project-repo> : This command will create a copy of the repository you intend to work on in your local system (the first time). It is this repo you will be working on to test the changes you will later want to contribute in the codebase. 
  • If you already have a repo cloned then :

git fetch: This command updates your local copy of a remote branch. This operation never changes any of your own branches and is safe to do without changing your working copy.
git pull : This command does a “git fetch” followed by a “git merge” .It is what you would do to bring your repository up to date with a remote repository.

  • git add <name-of-file-editted-by-you> : This command “updates the index using the current content found in the working tree, to prepare the content staged for the next commit”, it also ensures that the ignored files are not added by default.

Yeah, sounds fancy, BUT , how do I check if some file is added or not at any point of time in my git repo ?

    git status is what you want to run here .

That shows me the file I added , I need to see the changes too, is git that smart ?

Turns out , it is .. git diff  is what you are looking for here.

Continuing with the bullet flow..

  • git commit -m “<commit-message>” : This command records the changes in the files earlier indexed(staged) to be “committed” into the history of the git repo.

Thus, you will use git add to start tracking new files and also to stage changes to already tracked files, then git status and git diff to see what has been modified and staged and finally git commit to record your snapshot into your history

So, I have the changes here, they work like pretty and I am proud of me . but, how do they get to the parent repo?!

Here is when we introduce patches. These are consolidated pieces of code you would attach to Bug reports in (here Bugzilla) or send to mailing lists to share the modifications you have with you in your local repo, and the ones which you would like to be integrated into the main source code of the respective projects.

  • git format-patch HEAD^ : This command generates patches suitable for being applied via “git am” , In the scope of this blog, I only describe the command given the one commit on a clean repo is being patched.

Thus, with the above workflow , you will find that you have successfully leaped the first baby steps towards git. I’d highly recommend going through branching and many more concepts which can be found in a great reference -> HERE

Thanks for the first way round , but too bad, I have a project which requires me to issue PRs (whatever they are ! )

Second kind of projects are those which are hosted on the web and have repositories in GitHub (for eg gnome-music :) )

While the first steps uptil committing changes in these are the same, the way a developer is required to communicate these changes to the co-developers varies a bit. After “git commit” , the workflow derails to the following steps:

if you have rights to change the master project repo (which is a little unlikely if you find this blog useful ;) ):  then directly use “git push

if not: you need to do the following :

  • Go to the “Fork” option on the extreme right of the webpage of the git repo and fork it
  • A copy of the repo in your github page gets created. This is where you will need to merge the changes from your local copy for you to request a pull request with the master repo of the respective project. The URL for this will be referred to as <your-project-fork-url> in the subsequent post.
  • Since a direct command to push into the master wont work , we need to first push it into our repo on Github and then request the maintainers to merge the changes with the project repo.
  • git remote add <remote-name> <your-project-fork-url> : This command will add another repository for the main repo to synchronize with.
  • git push <remote-name> master: This command pushes the required changes to your forked repository.

So far so good, but where are the PRs!! (Pull Requests)

The final step involves going to the main project page. In the right side column of the page is an option called “Pull Requests” , click it  < Click on the green button on top-right which says “New pull request” < select the base repo on the left-side (i.e. the project repo) and your project repo on the right < The required git diff is generated < Click “Send Pull Request”

(While choosing the repos you want to compare, one can choose other repositories other than just the master for the given repo. Thankfully the github ui is friendly enough to walk newbies through this !)

Vola! there you go, bug the people on the channel to make sure your enhancements are merged ;)

Other advanced tools you might want to look at – git rebase, git gui, git mergetool, git branch, git stash, git fetch, git pull,git merge (and more as you go :) ) Hope it helps in “un-horrifying” the initial troubles with git and github.

Signing off : “Its not that I know too much, its only that I know what Hiting the “?” key on any page in Github does ;)”


GUADEC = 0 :\ to… GUADEC ++ :D :D !

A picture speaks a million works ..


My first GUADEC was not just a single experience initiated but an incrementor for life!.. This is one of the few blogs wherein I am out of words about how to explain the awesomeness that defined the 7 days of Brno, GNOME and some of the best people I know :D

The week kicked off with me looking at a whole new currency (Czech koruna) , hearing a whole new language (Czech) , exploring a whole new place (Brno, and later Prague) and encountering an infinite array of new faces .. faces which I later discovered to be amazing friends , talented coders, designers, developers, my mentors, and some of the most fun people to hang out with! :D

The morning were characterized with a keynote , followed by some of the most enlightening talks (which itched me to google for hours to dig deeper into topics covered in each one of them).. It was all right there gtk, gstreamer, GLADE :D (it just got a different level of awesome btw in the talk :P ) , Designing with blender (which made me go like , are you serious ? blender does that?!) , Bug-fixing (which was like everything I learnt so far + more condensed in an hour :D) … There were so many more I wanted to attend but couldn’t !

The talks were followed by the bestest of parties and dinners and lastly a Brno tour!

Here I will take a moment to mention the people who made all the above one of the bestest experiences for me :D

(My mentors :D)
Vadim ~ Thankyou for the beautiful gifts .. And for being forever helpful .. :D
Seif ~ I have had the best Android experiences playing spaceteam on your phone :P.. I am ditching my blackberry soon .. and I promise I will improve my accent by the next time we meet :D
(Non mentors ;))

Allan, Jakub ~ Thanks for all the design discussion sessions :D

Andrea ~ I absolutely loved the talk you and Sri gave :D , and I am so glad you are planning on visiting India :D

Andreasn , Fabiana ~ You both are absolutely awesome :D It was a pleasure hanging out with you guys ..I really really hope to see you next year too :)

Aruna, Aakash, Lavanya, Sindhu, Nirbheek, Satabdi ~ It was a pleasure to see all of you at GUADEC, we should meet in India too :D

Anton, Joris ~ Great work with PiTiVi guys! :D

Allesandro, Mattias, Richard, Florian, Jasper, John, Nacho, David, Fidencio ~ Was great meeting you guys briefly , hope we get to talk more the next GUADEC! :)

Christophe ~ Thanks for siding me to summon Vadim to the venue ;) was so great to see you !

Emily ~ From spaceteam to wine (which I did not put into your beer :P ) its been so so great to see you and trouble seif teaming up with you.. I hope to see you soon :)

Felipe ~ Thanks for hanging out in music and for the walk with you and Julita to the venue :D

Flavia ~ Loved having you next door :D We have lots of catching up to do the next time we meet :D

Giovanni ~ Thanks for the awesome insights, being the compass for all of our outings and the debates about python and gjs ;) Hope to see you soon :D

Jan-Christoph, Bernhard ~ Great ideas on collaborating music and cloud guys :D

Julita ~ Thanks for all the photos and for getting my name right (eventually :P )

Kalev ~ Hope you found your luggage ;) , was great to meet you :D

Marina, Karen, Tyler ~ You have all inspired me a great deal, thankyou for giving us the opportunities and for the most chirpy women’s dinner :)

Meg ~ You have been a great roommate :D Hope I didnt trouble you too much :)

MagD ~ Thanks for reminding me to fill in my yearbook and lending your pen to do so ;) – rest-of-it -> in your yearbook :D

Patricia ~ It was so much fun hanging out with you.. I wish I can come to Spain sometime and talk all about our homes over pina-coladas :P

Rob ~ Thanks for signing my yearbook with a GNOME graffiti :D

Sam Bull ~ I will get to Mozart (the language :P).. The piece of information about Shakespear was downright awesome :D

Sri ~ So good to see you after hearing so much about you :D Finally ! :)

Tiffany, Elice ~ Good to hangout at lunch and get to know you both.. hope to spend a lot more time with you guys the next time around :D

Victor, Bogdan ~ I remember it more like toso ! :) Great to see you among all my co-interns :)

Arnel, Eslam, Sai ~ Missed you guys!

I tried my best to remember all the names (irc handles + faces) .. if I forgot any .. please feel free to poke me on #gnome-music ..

This week was an absolute journey for me .. from going out of India for the first time.. to trying new stuff to eat, to nights of hacking , playing space-team, or just talking to people who do what they love to do.. !

It was learning , knowing, partying and having some of the best time I know of :) Thanks for GNOME for sponsoring me to come down and avail all the awesome :)Closing out – I gave a little presentation about my project too! (amidst Intern-Lightening-Talks)




This post was originally supposed to be about

1) git push , pr’s and git flow , the problem, dos and dont
3) .profile and the pr from terminal which might screw it up
4) how to get your blog added in bugzilla and get a hackergotchi
5) how to beat travis CI :P
git remote add upstream git@github.com:gnome-prototypes-team/gnome-music.git && git pull upstream”
GUADEC beats all those anytime , everytime :D..
And so I am here , listening to the great talks, meeting amazing people, eating good food, and absorbing everything in :DImage

Search – music , answers and superheros..

Week3 and 4 saw me mess with the search branch at gnome-music.

While Vadim had the basic implementation working , I realized how tricky it is to migrate to newer stuff , only to see how simple things can become after that! To achieve the same for search we migrated from :




Hail the Gtk.SearchBar , which is mainly a toolbar to integrate a Gtk.SearchEntry with.
Useful references for the same can be found at – https://developer.gnome.org/gtk3/3.9/GtkSearchBar.html and https://developer.gnome.org/gtk3/3.9/GtkSearchEntry.html

This was given the mockup with 2 views which the designers quickly revised to a BIG detailed implementation :D https://raw.github.com/gnome-design-team/gnome-mockups/master/music/wire-search.png ..

And so went on the work with creating timeouts (which is useful when you want to record if a user is done typing etc) and revising the views.

While I’d always thought that search is good if I know the paradigm I am searching in.. For instance I’d have liked to go to the albums view and got albums by the same I typed, songs for songs and so on.. There is something the designers had to say that struck me .. Do we have a filter when we go type in google?! The beauty of search is when I type the keyword in and all the results (with their filters) turn up.. So I get the point and I am off to writing new queries !

Some Rambles (some answers)

Having been present on #guadec this week, the feeling of attending it (https://www.guadec.org/) is finally sinking in :D So is the acknowledgement of how much planning and work goes in ! :D For all those it might help here is all you need for a visa application form :

  • Documents for the application form
  • A travel agent if you want to do it the convenient way
  • A trip to the embassy for an interview (If you are applying to Czech and haven’t traveled before)

One of the parts I have been waiting for .. the superheros :D

My channel is especially characterized with having a pack of x-men.

Introducing the man of steel Guillaume Quintard (\o`~~~~~ -> thats how he likes to fly with a cape on :D)
One of the best coders I have come across , he is natural in tackling new API’s in a jiff.  Right from explaining all the annoying questions we ask him , to tackling some brain dead days for me, he is the savior on the channel :D

My recent encyclopedia, or well lookup for advice superhero – Arnel A. Borja. Right from being the code style nazi (for my betterment :P ) to suggesting better approaches, correcting errors and coding at lighting speed, he is  one of the best people to hang around and code with! :D

The Jedi masters :D Finally .. Thanks to Seif Lofty and Vadim Rutkovsky for being the best mentors and guides. Letting us experiment and learn SOOO much :D


Signing off ~ You never know how strong you are until being strong is the only choice you have – Someone :)



This blog is not about “A legendary dwarfish creature supposed to guard the earth’s treasures underground ~ GNOME” , but about my organization which pretty much does the same with code and coders, designs and designers and all the other people we have  :)

This June 17th marked the beginning of my term as an OPW intern at GNOME-Music. Thankyou Marina Zhurakhinskaya for guiding me toward it :)

Following is some of what I learnt in the past couple of weeks..(In no specific order)

Learning the essentials.. While most of us jump onto code , I realized its the building and putting together of all that code which is the trickiest..Thus, getting familiar with some of the tools like Jhbuild (https://wiki.gnome.org/Jhbuild) and Git comes in super handy..! This week around I also tried my hand on fixing auto-tools bugs [Here] (first ones for me! if it were not for Arnel , I would have taken another couple of  hours + the 8 I already did :D ) , this also tackled saving the settings of an application at close.

Decoding the code, and code.. The next thing and the very foundation of what I have been doing for all my time spent hacking applications is this -> Decode what is in there , and code on top of it.

Following this approach I have so far worked on the following :

Design is important!! Last couple of weeks taught me how important it is to follow the mockups , respect the well thought of designs, each precision and detail.

I realized it is completely “logit” to spend couple of hours nudging a few pixels here and there..Following are the hours I spent nudging pixels .. some reaped commits, many didnt :D [1][2][3]

Indentation is God!! I am serious, it is God. I am today aware of the number of spaces I put. (4 for a long lost tab) , a space after an if.. and so on. I hate trailing space errors and my savior is (:%s/\s\+$//) , we all love vim dont we :D

Error Traces are not appreciated.. We all love a clean terminal at the startup of an application. :) So fix it as you like it!

Without amazing people in your community.. None of the above is possible!

Thanks for being the best channel I have ever been to :D

Seif Lofty, Vadim Rutkovsky , Guillaume Quintard, Arnel A Borja, Eslam Mostafa, Manish Sinha, Sai,and very recently – Ignacio Casal Quinteiro (nacho) , Fabiano Fidêncio (fidenco) . Hackers on #gnome-hackers . Designers jimmac, aday, adreasn.

Signing off ~ Life is a roller-coaster (or well right now it is :D )


DISCLAIMER : The following is bound (by space and time) to be random and very much “humanities” :P…

It fails me how could one translate all their thoughts into a blog post.Thoughts after all are multi-dimensional, they range across time , space, people and place (I sort of like when stuff rhymes).. This was until this struck me .. SPACE AND CODE.

I do not intend to cover the tedious 4 space indentations which most of us developers crib about :P  , rather this blog is about the 2 things which fascinate me the most (and of which I can never get enough of).

Any good code is like the night sky , It has history and stories and thoughts which need to be hacked into. Catching the trail of thought which leads the logic in a code pre written is like tracing the constellations which render the night sky smitten..

Signing off..

“The needs of the many outweigh the needs of the few.” – Spock

Space and Code..