Gnome-gitg Split View feature progress. [GSoC]

Introducing split view in gitg is comprised of small small tasks just like any other software feature requires.

One such task is:- Gitg should be able to detect binaries and images diffs if these are in the diffs then split-view simply does not makes sense.

With Albfan’s mentoring I was able to complete this task in mere 1-2 days and get it merged :- , πŸ™‚

Now, This task was really less about code for me and more about research, the real challenge was to figure out some hints which might already be in gitg. And finally after looking a lots of code I found how it can be done.

Gitg has already two functions implemented which handles images and binary for example:-

All I needed to do was to find these functions and then hide the split-view toggle buttons and it works like a charm πŸ™‚

Now the next sub-task is to add a drawing-area between these two Diff-views which will be having curves drawing like we have in meld.

These curves will make the split-view look more interesting and intuitive.

The port from meld’s implementation is undergoing and I have been contributing to Albfan’s pet project for this purpose.

Right now I was able to refactor it so that it can be ported to gitg’s needs easily.

The prototype looks kind of like this, so right now here I am adding the data manually with this handy UI, when ported to gitg the diff-commits will add the data automatically so basically this model needs to be implemented data source can by anything. I also added support for 3-way diff. Which basically be in the case of 3-way merge which is one of the other sub-task that needs to be poured into split-view feature.

So basically right now there are 2-3 blockers which I added to my task list in this MR, I believe will be solved by the end of this week and then we can start work to port it to gitg πŸ™‚

I am available at [Kirito-3] #newcomers and #gitg , if anyone wants to know more πŸ™‚

Fingers crossed πŸ˜‰

Gnome and Gitg

Hello viewers, In this blog we I will be sharing how I started with Gnome 😍

So let’s start with a little bit of introduction of mine,

I am Gaurav Agrawal, born and raised in Jaipur Rajasthan. I am currently a student of Computer Science and right now working with Gnome community which is my second family πŸ™‚

Now let’s move on to the exciting stuff, my Gnome Journey! , I will break this down in several parts so hold on πŸ˜›

  1. How I reached Home(GNOME): So , I was trying to look for an implementation of Hash Table data structures in C and eventually I found this cool implementation in Glib which is a core data structures library developed by Gnome. I got the library and was able to understand how to use it, but the use-case which I had involved many tweaks and for them I asked for help in the #newcomers IRC, guys there were just awesome, full of knowledge, ethics, and most importantly their friendliness which really made me feel like man I want to be here and learn a lot.
  2. My best mentors Albfan(Alberto Fanjul) and Exalm(Alexander Mikhaylenko):When I was active in the IRC for the Hash table, these guys helped me a lot, and from the very start they made me an open source guy, from them I was able to learn coding styles which I sucked at, use of repositories, casting, docs and what not. Alberto was very motivating and if anyone asks me that who is the best FOSS mentor for a beginner I will without a doubt recommend him. Whatever you learn while working him just stays with you forever and it’s concrete πŸ™‚
  3. My First Contribution at GNOME a baby step πŸ˜› : After the completion of the Hash-table experiment, I reached out to Alberto cause I knew he was the perfect guy who can help me get started with Gnome workflow and foss, and It was no surprise he gladly took me on-board and was in no time solving silly to good doubts of a #newcomer to get started with Gnome. 1)He helped me choose a suitable project, 2) He eased out the process of using git, 3) Biggest was motivation , he really motivated me and still does so. the list will go on, can’t thank him enough and can’t tell enough what he taught me πŸ™‚ . So my first contribution was just a README migration to markdown but what mattered to me was the learning which I got from there and it still benefits me a lot, just as I said whatever he taught is concrete and useful every time.
  4. The technical Journey at Gitg 😣 : So, the baby step paid off and I started learning technical work from Gitg developers, folks at #newcomers, and docs I was constantly struggling with my good old academic skills which was nothing when exposed to real world code-base. Things like:- Not being able to understand the code , not able to understand issue, not getting the git, not getting the coding style was really common. It was a real struggle and still present now, but you know what when you have great mentors and a fantastic community you do not need to feel low πŸ™‚ , Albfan , exalm, andre, bil, csoriano, …… list goes on they really helped a lot and still helps, not just me but anyone who has the will. After a few hard days and a lot of hard-work I was finally able to contribute things to Gitg which were a milestone for me that reminds me everyday that this is what which is meant to let you keep going.
  5. Challenges ahead: See, in any work challenges will always be your mates and we need to learn lessons from them. And I have many, 1. Git, 2.Code-base, 3. Communication skills, 3.Coding skills, 4.Conventions 5.Libraries and …. . I think with my community backing me up, one day I will be able to confidently say that there are really few left now:)
  6. Honorable Mentions and Credits: First of all I will really like to thank Gitlab for providing Gnome a great developer friendly infrastructure which really takes out a lot of burden and smooths out every learning curve. I will love to thank Carlos who took the gitlab initiative and brought it here. My whole family GNOME who continues to give a place which is full of learning opportunities for students like me. Every developer who is putting their hard-work everyday to make GNOME a better place and full of resources.

GUADEC 2020: Newcomers Workshop

Trust you all are enjoying GUADEC 2020! , It’s been going well thanks to the organising team’s efforts and everyone’s love πŸ˜€

We are hosting Newcomer’s workshop BOF on Monday 27 Jul 2020, (15:00 β†’ 17:00 UTC) , This is a great place to be at if you are someone who’s looking to explore how to contribute to GNOME. We will be going through the project’s practically and will be sharing you the information that gives you the head-start to your journey at GNOME!

For yours and our convenience we have prepared a wiki post which helps you go through the initial setup for participating in this workshop, Kindly just go through this and setup your systems as per the instructions.

We are excited to see what you do next on your GNOME adventure!

Stay Tuned and Enjoy GUADEC πŸ˜‡

Community Engagement Challenge

Credits: GNOME Foundation

I think I speak for many when I say that each one of us in the FOSS worldΒ  loves opportunities that give rewards and compensation for working on FOSS projects.Β  And, it’s even better when these opportunities have little technical or conditional restraints.Β Β 

That’s why I’m excited for the inaugural GNOME Foundation 2020 Community Engagement Challenge which is a rare opportunity to participate in a FOSS contest and win prizes along the way (special thanks to Endless for the grant that supports this Challenge!)Β Β 

The GNOME foundation is giving you an exciting new opportunity to apply your creativity, ideas, and skills to help grow the FOSS community by submitting an idea which engages beginning coders with the free and open-source software (FOSS) community. Even better, selected ideas can win up to 21,000$ in cash and prizes along the way, including sponsorship to a future GUADEC and much support from the GNOME Community.

The Gnome Foundation wants to rewardΒ  your ideas that help bring a new generation of coders toΒ  FOSS. If you are someone who is filled with fun, creative, unique, educational, engaging ideas, and care about FOSS this is the right challenge for you!Β 

So, hurry up and check out this link and submit your entries by 1st July, stay in touch with us via social media by following #gnomechallenge or if you have any questions, please email  

I am excited to  see how exciting the future of FOSS will be with your amazing ideas πŸ˜€


openSUSE Asia Summit 2019, Bali

When you travel for the very first time Internationally there are lot of things going in your head. Especially for someone like me, who is a vegetarian and is travelling all alone with no experience of flight. I was a lot nervous, was thinking about the culture of the place I am going, was nervous about flight itself, I watched a lot of “How to save yourselves” videos while travelling in flights. 🀫

So, yeah it was pretty messed up.

When, I was boarding the plane, my mom called me in last 10 mins, said news is going on about some “terrorists” entering Delhi (where my flight was), she was really really nervous and at one point I said “Do you want me to leave everything and abort?”, well no πŸ˜…

So, yeah a fully nervousness filled journey started, I boarded Singapore Airlines and damn it was A380, my first International flight and that too with a jumbo, I forgot all the things as soon as I entered the plane.

I gotta tell you, from the very start, I started realizing how well humanity can be, air hostess/host were taking so good care of the passengers, I felt so welcome and I guess indebted that my words aren’t just enough.

I mean, I can joke about this and say “At one point it felt like this much care I don’t even get from my parents”πŸ˜‰ 

I was in the flight, slept for a while ( It was midnight flight) , and then it hit me, I saw that crew was up whole the time making sure that we sleep well, I was so touched by this, and I reached out to the crew and talked about this, they were very welcoming and talked about their job and I had a nice talk with them, All of the whole experience was just so nice.

In the end, they reached out to me, and shared a token of gratitude, they gave me “Singapore airlines playing cards and a ball point pen”, with a letter that they enjoyed having me as a passenger. Well, I was not aiming for any gifts or something, I just went to them and asked about their job and appreciated their hard-work genuinely.

I still manage to store this precious memory πŸ™‚
Hope to see you again Mr. Westwood

I had a layover in Changi Airport, Singapore. And yes it’s absolutely worth the hype on Internet. I mean it’s really high tech, lots of recreational stuff, amazing gardens and you get to see “The Jewel”, also operations wise they do their best!

You will have a good time layover-ing in Singapore :p

Now, until this point, you should have got the idea that how comfortable I would have got so far. Yep!, that’s correct πŸ™‚

I reach Bali, it was a 1-1.5 hour flight from Singapore. Comfort was gone … :/ well because I never experienced foreign exchange yet, and I had to reach the hotel somehow. So, I was thinking to myself can I pay online ?, Do I use my ATM ?, Do I buy sim card here ?, Do I exchange few dollars which I got with me here only ? ….. so on… after a lot of nervousness and search in and outside of the airport I exchanged few dollars just slightly above my taxi far and reach my hotel.

Pheww πŸ˜ͺ , First test over!

Now, I checked in rested for that day, on 5th October was my conference next day.

Day 1

I reach the venue 1.7 Km away on a sunny day (It was hot) , but foot :/ , well because It did not hit me that moment Motor bike ride app Gojek and Grab exist there.

Here, I was welcomed by the kind volunteers, after few paperwork of attendance, I got my welcome kit πŸ˜‹

Woah, it was goodylicious πŸ˜‰

:p There was a bottle too, not in this picture :/

I then attended few talks, one of them was about creating open source communities in Indonesia where the main focus was on students. Being a student myself I took part in that discussion. Then another one was by Mr. Segitz where from Suse, where he talked about how Suse takes security bugs, how they handle them, critical bugs etc etc..

I asked him about something similar to Android, where you restrict apps based on the permissions, he said it is a good idea and can be discussed. Niel added on about “Flatpak” on this discussion and yeah it’s a good idea πŸ™‚ Flatpak has those things already :p

I met, Ahmad Haris for the very first time, can;t forget his custom shoes πŸ˜‰ he was showing off that moment :p , he managed to get them done by “FANS” I mean he’s a CEO haha (As per him :p)

I met more GNOME folks there for the very first time, I mean that feeling when you meet the folks behind IRC and chats for the first time. Yeah it was phenomenal, just makes me more excited about upcoming GUADECs. I just want to meet everyone :p

So, there in openSUSE summit, we had a little GNOME world πŸ™‚ , Ahamad, Kukuh, Rania, Shobha, Rosanna, Neil and others πŸ€—

It was a really great day.

I gotta say, I had doubts about Inodensia culture in general, my stereotypical family was worried because there it was majority of relegion which I do not belong to, and other stuff.

But, to be honest, I have never met such respectful, generous, helpful people in my entire little life that I have met in Indonesia. They are just the best humans out there!

Oh, that’s our little cute “minix” :p (I gave her a nickname) and the University campus was extremely beautiful with a really cool view of the Sea πŸ™‚

I met many cool folks from Japan and China openSUSE community!, It’ just gets better and better when you meet folks from around the FOSS world. We all are working for same goal, to make the world a better a place! I have described in my previous GNOME Asia blog already that FOSS can make a huge impact in lives of people. It has tremendous possibilities, and when I personally saw the companies like “FANS” getting value out of it I was stunned and really happy πŸ™‚

Day 2

I attended Niel’s talk, and loved how he swept in GNOME education challenge at the end of the talk because yeah the talk got over few minutes early πŸ˜‰

Then, one of the really amazing talk was by Mr. Takeyama from Japanese community, they are doing a really great job out there to increase Japanese support on the magazing FOSS tools by personally contributing. And the coolest part is they have “Geeko Magazine” published every 6 months where they personally manage all the things. And have cool Japanese styled animation covers too πŸ˜‹.

He generously gave me a sample, but sadly it does not have a Manga like animated cover :/ , but yeah still a cool stuff to have :p

If you happen to visit Japan and get a chance to attend Comiket festival they do have a stall there grab those before stock gets over (Really Limited)

My Treasure πŸ˜‰

When I went back to hotel on the second day, the openSUSE bottle broke :/ , I got sad, really because it was cool. I asked Kukuh that will it be possible to have an extra left and if he can get that in GNOME Asia, and wow to my surprise it worked out and he arranged one for me. Now I have it safe with me πŸ™‚

Thanks a lot Kukuh! , means a lot!

My cracked bottle :/

I am really astonishingly amazed by the great Indonesian People, their culture, their FOSS community specially, how well they manage to organize such beautiful events, and the fact that how linked they are, I mean most of the organizing committee in GNOME Asia and the participants were in openSUSE too πŸ™‚

The best part is, even working people take out their time collaborate with the University staff and students and make these amazing events happen.

To be honest I am a bit Jealous of the community there, hope we have that presence in India too πŸ™‚

Thank you everyone out there who made this event happen and took care of the participants and speakers! , I would definitely like to give a talk next time there πŸ™‚

And for all of you did not make it there, yeah you missed a lot :p

*Note: I would really like to know in the comments if you are interested to know about Bali Tourism, this post got a bit long, if there is a good response I would really love to share the journey πŸ™‚

Peace ✌️ 

Hope to meet you all back again!

GNOME Asia 2019

I feel very emotional and excited while sharing my first ever GNOME+ FOSS + International conference experience with you all.

So let’s get started.

Before starting my journey I was really nervous as I never traveled outside my homeland, I was travelling alone, I am a pure vegetarian and I am someone who fear air travel πŸ˜₯Β  (but not anymore :p)

Speaker 😎 , Loved the Design Team’s Work !

So, firstly and foremost I would like to thanks a lot lot lot lot …… to local committee for making everything smooth and already planned for the guests and speakers. You folks did a lot of hard work, were awake till late nights to make sure next day goes alright and what not. The local committee was so so helpful and gracious that they arranged us an 45 KM+ far Airport pickup, Awesome venue, Lunch (And for me I was vegetarian they took care of that also) , and I think almost everyday at the conference there was some sort of Dinner party organized by them, the city tour, great swags, lots of love and support.

It’s the people of Indonesia and local team which made all of my fear went away as soon as I entered the Indonesian land.

From local team, I can’t remember all the names but those I remember I would love to share Mr. Andik , Mr. Ahmad Haris, Mr. Kukuh ,Mr. Jordan, Mr. Mohammad Fadhil, Mr. Firdaus etc …. To me personally now it feels like I left a family back there and I miss you all ! Everyone of you were really friendly and made us feel at home 😭 

Day 0,

There was inauguration ceremony, and later on Newcomer’s workshop πŸ™‚ , I took sometime to figure out the huge campus and missed a bit from the starting half of the day 😦 , When I arrived the next schedule was for Newcomer’s workshop which was organized by Felipe, Me and Sajeer Ahmad. Sadly Felipe wasn’t able to attend the conference but he kindly took time out and was available online helping us out the whole time.

Our workshop was for 3 hrs which was like the only thing apart from the other workshop parallel to ours that day.

In this workshop we had quite a good amount of attendees where some came from far off distances like 200+ KM which made me feel more excited and honored about organizing it.

I talked about the GNOME application projects which are a good way to start, newcomers wiki, Introduction to Git concepts, Role of IRC for a newcomer, our Gitlab infrastructure, GNOME builder πŸ₯° , code reviews etc.

Audience was fairly new to GNOME technologies, FOSS development and internet was not so fast at that location so it became a bit hard for us to solve and solve issues then and there, So I took another approach and demonstrated them how to solve bugs using my development setup and some of the bugs which were already solved and were easily visible in our gitlab, this also gave me a chance to explain how to submit patches on gitlab and how discussion look like there.

I also got a chance to explain them about Git as my friend Exalm once pointed out during newcomers IRC discussions long time ago that ‘It’s a common problem for newcomers where they forget to fork projects’, so I took this chance and explained concepts of Forking, Branching, Merge Requests, Cloning, etc which can give them a boost towards submitting their first patch πŸ™‚

In the workshop I also took a chance to make students aware about programs like GSOC, GNOME coding education challenge, Outreachy, etc. In the end I told them for a student FOSS not only has rewarding opportunities like internships and jobs but most importantly you get a lot of learning. When you as a student get to work with highly skilled people working as an experts in their fields the learning you will get is enormous. And for me personally the most important thing is I get to hangout with amazing folks πŸ™‚

Sajeer contributed to GStreamer side, so he took a chance to explain newcomers on how they can contribute there. (More to follow about that in his post :p )

So in short a lot happened in newcomers workshop πŸ˜‰

Thanks a lot to Felipe who kept mentoring us online and helped us from very start.

I was really nervous without having him around and this was my first ever workshop :/ , but at last I feel good now that it went more good then I we all imagined.

I met Andre Kalpper , Kiki from Mozilla foundation, Mr. Khairul Aizat and his lovely little son, Bin Li, Haris, Franklin, Mr. Enoki , and lots of amazing people which was a really amazing and lovely experience for me. πŸ™‚

Day 1,

This day, I attended talks but mostly talked a lot with folks in the speakers room πŸ˜‰

The talk which I loved the most was on “Running linux on PS4” by Mr. Iwan S.

In the speakers room, I looted Kiki’s Mozilla swags πŸ˜‚ , she is really sweet and was kind enough to share her swags with every one πŸ™‚ , I plan to spread the swags among my local community.

The most inspiring thing which I learnt from the whole trip was Mr. Iwan’s story. My eyes still shine like a baby’s eyes listening what he achieved and how well he’s ready to share back to community.

Mr. Iwan is sponsor from which is a local Indonesian brand having products in footwear. But to my surprise he was not just sponsor he was a speaker also. And he had a really amazing story.

He told me that he has saved 30 K USD just by adopting FOSS in his company per year in departments like designing, office suites and Operating systems. He also helped publishing one designing book for Inkscape in local language which was phenomenal.

Hearing from someone that they have saved thousands of dollars in their business in person is amazing 🀯 , but what’s super amazing is that the guy is in front of you and is giving a lot back to community not just by sponsorship but by actively participating in entire conference. Plus his humility and kindness, I am simply a fan of fans now 😌

Now I feel even more proud working for FOSS πŸ₯³Β 

Mr Iwan and Me :p

During the conference I certainly made lots of friends, I mostly enjoyed hanging out with Andre and Haris, Andre also share some of his own farm grown apples back there which I would never forget, I never had such amazing apples tbh. thanks a lot for that Andre!

Haris was absolutely amazing guy, I never felt he is some guy whom I met 2 days back, instead I felt like he’s a friend from years. We talked on lots of things from community in Indonesia , his love for guitars to Him being a supreme leader :p , his family, his company, open source, ….. to him helping me figure out vegetarian options there.

Haris with his lovely daughter πŸ˜‹

Day 3,

It was amazing keynotes and talks, I loved the talk by Haris and Mr. Khairul Aizat where he explained the plan to have next GNOME Asia in Malaysia πŸ˜‰

For me my biggest takeaway from the conference is,

FOSS is about people, community, freedom and code. I personally really loved the people part of it. People like Haris, Jordan, Andik, Kukuh etc etc from Indonesia are simply amazing infact everyone there is so respectful, friendly, helpful, cheerful …. I just don’t have words to describe.

Hospitality of Indonesia is simply great! , FOSS community is great you will enjoy a lot lot more when you will hang around with people in person! πŸ˜‡

(There is really a lot left for me to say, I just can’t cover everything up in words it was truly amazing experience for me and I see a lot of great potential and strength in FOSS community back in Indonesia! )

I would like to thank GNOME Foundation for sponsoring my travel. It was such a great pleasure to see everyone in person and I hope to meet everyone more and more!

Google Summer of Code 2019 FINAL REPORT

My Google Summer of Code (GSOC) project was focused on “Implementing split view” in gnome-gitg. This blog post serves as my final submission to my Google Summer of Code project.

Under this project there are 4 important parts which need to be implemented.

  1. Split view does not makes sense when the diff is of Images and binaries or other non text versions. (Completed)
  2. Meld like “Diff bar curves” can be ported to Gitg or not (Curves completely implemented, Gitg port work partially complete and algorithm tuning for corner cases remains)
  3. Make a tool application to aid diff bar curves development (Completed)
  4. Three-way split view in case like three-way merge. (Partially complete, UI is ready, but we discovered that at a later stage that back end needs some major improvements to make way for three-way split view so that work is partially done)

And to put everything together cleanly :-

  • Refactor existing code. (Partially complete)

I am happy to say that most of the parts have been realized and will soon land on Gitg split view MR while some of them have already landed.

My workflow was distributed, so we have a main split view MR !18 and my whole work is to improve this MR so that it can finally be merged into master.

Work done :-

  • Hide split view when it does not make sense !85.
  • Refactor existing code !102.
  • Diff Bar drawing estimation !9. here we explored how to draw diff bar curves as meld does, we are quite accurate, but there are some corner cases which points to the conclusion, that it’s better to keep the diff bar as an experimental feature for the time being. (see commit)
    • A complete analytical GUI flatpak application to tune and aid development of Diff bar curves drawing and implementation logic !9.
  • Refactor existing code based UI to XML based UI (Gtk.Builder) which makes more sense and introduction of stack switcher. !101.
As shown in the video split view only makes sense for text and not for things like image. This video also shows the implementation of stack switcher for unified and split view.

Remaining work :-

  1. Polish diff bar curve joining algorithm for close corner cases. (!5)
  2. Three-way back end implementation. (!98)


Diff bar curves

Diff Bar curve joining algorithm is a custom algorithm which will try to solve our problem of joining multiple single line diff curves into a nice single curve.

Here for every addition and deletion we get line data like

old line : -1

new line : 1


So here we follow this data and draw curves. But a problem arises here, say we have addition from lines 1 to 6, a single curve should be drawn from line 1 to 6. But here, there will be no single curve drawn from line 1 to 6, instead there will be 6 curves drawn for each line separately. This is because the line callback gives data about each line separately. It is really challenging to join the related diff lines and add them so that they consume less memory overall by reducing the number of dynamic variables formed for each line and make more sense. We hit about 80-90% accuracy and easily handle all the normal cases, but there are some complex cases where the drawn curves can simply be described as a mess of combination of deletes and additions. That’s where it needs polishing.

Comparison:- Without Diff Joins (left) and With Diff Joins (right)

To mention a corner case, notice the three-way Diferencia diff mentioned later in this post. Here, if one is to look at the diff curve carefully, the right addition type diff curve is incorrect, or more accurately, has bad accuracy. This is because the current algorithm to join diffs did not successfully separate two diff hunks for “hello” and “world”. This corner case arises because of the fact that to process the diffs, they need to be first filtered according to their types which makes it harder for the code to differentiate hunks and the starting point of different hunk. This occurs because the algorithm takes all the processed diff data and then processes it. This results with dynamic hunk data unmapped with the line diff data. With further processing this kind of corner case can be solved by, for example, providing the post-processing function with hunk data whenever it changes and restarting the rendering process for current and dynamic hunk information, though this is just a proposition and is probably not going to work. But this also proves to some extent that this issue can be solved.

Three-way merge

Gitg’s existing code is not compatible with three-way merge, hence there are two parts needed to make sure it’s realized. First is implementation of necessary changes in the front end, and other is back end of said front end.

Gitg’s current state in case of a three-way merge

As mentioned at the start of this post, back end is the challenging part here, and implementation requires existing Gitg code to go through many design changes. To understand how it can be implemented I read lots of existing code to understand how diff is actually implemented in Gitg, and there I got to understand that in Gitg we render each file separately from a diff object.

Here is the comparison between existing three-way state in Gitg, and the work done for three-way merge in my project. We can see that earlier we had to choose which parent, while here we do keep one parent in left and one in right. Notice in case of three-way merge, the option to choose parents disappears.

The following image shows with an example, that three-way is possible in Diferencia and can also be implemented in Gitg. Diferencia is the debugging tool developed with the help of my mentor Alberto Fanjul to test the algorithms for rendering curves, handling diffs, and three-way merge, so that it can easily be ported to Gitg.

Three-way diff debugging in Diferencia using the joint-diffs algorithm.

Now, a diff object represents changes done to a given file between a commit from it’s parent or older file. And that’s the existing design for now, it’s based upon a single parent and child pair. While back end implementation of three-way merge require 2 such diff’s pairs. Here, I was also able to extract this information from existing code, but the challenge is to render this information. This will require an entirely new design for rendering the file diffs. Another place that needs attention is, how to handle the common files between the diff pair and uncommon ones, as three-way view would not make sense for files that only have one parent.

Final thoughts

There were a lot of thins things I learnt from my experience while coding for my GSOC project, some were skills while some were things that i found very interesting and contrary to what I used to think :^)

Here are some skills i learnt :-

  • GNOME workflow.
  • How to do upstream contribution.
  • Advanced git concepts.
  • Code documentation.
  • Meson building system.
  • Flatpak’s building and distribution system.
  • GTK.
  • Advanced vala concepts.
  • Gitlab’s CI/CD.
  • Basics of what a Docker is and how to use them.
  • Exposed to Libgit2 code-base which is one of our most important dependency.
  • Using patches to fix dependencies.
  • UI making using Gtk.Builder and Glade.
  • Code linters such as uncrustify and how to use them.
  • Git diff mechanism.
  • Good coding practices.


The Most important lesson for me was that “FOSS is more about people than code”. It’s just really overwhelming to see how communities supports each other and makes wonderful software for the betterment of the society seeking freedom and power in hands of their USERS.

Google Summer of Code allowed me to contribute 3 months full-time to my community, where me being a newcomer not only just advanced in coding and development but it also gave me a chance to get a wider look at all things going on in the GNOME community, this would certainly be impossible if I were doing something else like school or non-open source internships with contributions on weekends. And finally as a result I was able to contribute a little to the engagement team and make new extremely talented friends!!

I also contributed to other initiatives, like “Newcomers Initiative” where we try to make sure newcomers can easily solve their early issues and do not face any difficulties in tools and setup.

I feel extremely fortunate and grateful to be mentored by Alberto Fanjul who is not just a talented engineer and mentor but also a rare soul who is kind and understands what needs to be done and how it will be done. He had a nice vision of leading and designing the plan for my project.

He mentored my very nicely and was always ready to address my most silly to most obvious queries.

I will also like to appreciate efforts of GSOC admins at GNOME Foundation who organized this program in GNOME and made everything went to smooth.

I honestly can’t find a better organization then GNOME, people here are so nice and supportive. I would also like to say a huge thanks to GNOME Foundation for giving me the chance to do this internship here.

Special thanks

A huge shout out to these people and friends who supported me in this journey :-

Alexander Mikhaylenko, Adwait Rawat, Felipe Borges, Sriram Ramkrishna, Kristi Progri, Carlos Soriano, Alexandre Franke, Umang Jain, Meg Ford, Nuritzi Sanchez, …..

GSOC is totally one of the biggest contributions by Google to the Open Source Communities and I can’t thank Google enough for supporting students like me and giving us this amazing opportunity.

GSOC Progress by Mid July

July Marked the beginning of II GSOC coding month. This month our goal is to make the diff bar model as accurate and intuitive as possible.

One of the biggest thing which I learnt so far is how to contribute on upstream repositories on which our project depends.

In our case this was with Libgit2, we discovered a bug in Libgit2 while doing our project, and Albfan made this a perfect example to show me how to contribute on upstream, how to raise bugs and how to do discussions for getting it solved.

While this got solved we can’t wait to get the solutions merged. So we filtered out which patches works best for us and I learnt how to apply patches to projects with Flatpak.

I really think the Flatpak team has done a great job on this one, and it was super easy and useful for me to get those patches working with my project. Without flatpak manifest Idk how I would have pulled it off. πŸ™‚

I tried to understand how amazing is Gtk.TextView and I used something called Gtk.TextTag for highlighting the Diff text in appropriate colors.

Red —> Removed Text

Green —-> Insertion Text

In order to make grounds for Three way merge diff view, we are able to make sure now we paint the diff bar in relative manner.

For this, we introduced a reverse direction property which essentially makes the model know which direction we will be painting the diff curves, Right to Left or Left to Right.

Now comes the hard part…

Right now our model works on DiffLineCallback, where we basically pick up each line diff and paint the indicating curve for it. The disadvantage of doing this is that, the curves are getting overlapped and it not looks good.

So I tried to do some pre processing of the data and improve this situation.

and the results look pretty!

While there are still tuning required for the algorithm, and I hope we get this completed real soon.

Now, the most Hard part !!!!!

Visa πŸ˜‰ , It’s really hard to arrange all of your documents required for European visa, really hoping my hard work pays off and I meet you all Gnome Folks in GUADEC soon.

In the end it’s almost one and a half week left for this month to get end, and I have learnt a lot like always!

A month full of learning with Gnome-GSoC

GSoC Month-1 was super fun and challenging.

In this month I was able to work with Libgit2-glib where Albfan mentored me on how to port functions from Libgit2 to Libgit2-glib.

Libgit2-glib now has functionality to compare two-buffers.

This feature I think can now benefit other projects also which requires diff from buffers, for example Builder for it’s diff-view and gedit.

We are using this to polish our prototype and be able to draw diff-better like meld does. This is helping us making our testing really easy which took a lot of time before. Now we can edit and see in real-time how we are getting drawing. And this helped me in narrowing down corner cases much faster.

With, the project I was able to be more familiar with Gtk framework, and I did managed to made quite a pretty prototype for our ongoing testing.

With good mentorship of Alberto, I learnt a bit of gitlab-ci also, and we are now able to reduce the workload of checking code-styles. But now I feel like we have made something which is too harsh on my own code πŸ˜‰

Ah, it looks pretty πŸ™‚

I think this can be great for other projects as well, and we will be starting this with Gitg.

Will love to hear suggestions for improvement and it being adopted by the community.

On our Split-view we are now able to draw really good diff indicating curve like meld does. And with real-time testing the algorithm to draw curves has improved a lot. This is almost ready to shift our gears towards Gitg port.

So, in summary:-

  1. Gitg now recognize where it does not make sense for split-view ex. Images and Binaries.
  2. We are able to create a nice diff-indicating curves which are almost ready to be ported with Gitg
  3. Libgit2-glib can get you a diff for 2 buffers now.
  4. Support for 3-way diff is starting to take shape.
  5. Code-style checks automated at gitlab-ci

With GSoC, I was able to connect more with our community, and I am now participating with Carlos on his newcomers initiative.

It’s fun, and I have tried to improve our newcomers wiki.

Verified the newcomers apps are being build or not, and it’s great to see that every app can be easily build following instructions mentioned at our wiki πŸ™‚ , A great win.

I was also able to work on Gnome-builder yay!, I did a small contribution there with the newcomers plugin for the newcomers-initiative and was able to get Gnome-sound recorder on the list.

In short, GSoC and Gnome gave me the most wonderful month till now, where it allowed me to not just contribute to my project but also to contribute to the overall interest and initiatives going around the community.

Improving #newcomer experience at Gnome

Being an #old newcomer myself , I am still lacking here and there about Gnome , So just few weeks ago I was trying to learn more about our Gitlab instance, thanks to csoriano for not just letting me know about my query but also for letting me help him in this newcomer initiative.

The main motto is:-

“Remove every possible obstacle in the way of a newcomer’s first contribution”

So basically Carlos encouraged me that he also wants someone who has experienced this newcomer journey recently which can help him know what can be improved.

I really like the fact that even though being just 8 months in Gnome I can work with the President of the Gnome Project itself πŸ˜› , this is what I love about open source.

So basically when Carlos got time out of his busy schedule , I was able to discuss few points with him which we can improve:-

1. Remove Bugzilla links and mentions from Gnome wiki

2. It will be cool to have a project recommendation system:-

3. Focus on IRC channels where people can get help


I also proposed the idea of creation of sudo pet projects for example :-

or mention the existing pet projects which developers use to experiment with:- [This one was my starting point]

The point of sudo projects is that , for newcomers it’s really hard to straightaway jump into huge code of projects where they might not even know things like vala , gtk , code-style , …

So these pet projects I believe that can help newcomers play around with the technology and make them learn how workflow goes in Gnome about gitlab, coding style etc.

Carlos liked the idea but it’s complex , hence for now main focus is to improve the guides and make sure they are up to date and ensure they work.

If any newcomer wants to give more feedback or maybe any existing developer wants to give feedback from his past journey kindly please do in #newcomers πŸ™‚

For example exalm gave:-

 “A common obstacle is that people clone projects before forking them on gitlabmake changes and then are told that actually they needed to fork to do a MR”

Here we need to identify things which we can improve and innovate so that our newcomers can easily get on board in the community for contributions.

At last I will say, although I am in GSOC 2019, but I really love the fact that there are so many ways in which I can contribute to this lovely community and one of them is this, finally thanks to Carlos who get me involved in this to help him πŸ™‚ .

Work Done Till Now:-

1.For starting I took it upon myself and tried to replace Bugzilla from the newcomers guide with Issue tracker at Gitlab.

Although I removed it as much as I can , but still if anyone finds mention of Bugzilla where it’s highly focused upon in the newcomers guide please help in the improvement.

Google Summer of Code 2019 with Gnome-Gitg

Hello Everyone,

I am really excited to share with you all that this summer I will be working full-time with Gnome on the project Implement side-by side diff view on the Gitg application.

I am really grateful to the community who considered me the right person for the job and gave me this wonderful opportunity.

I believe in learning and believe me I have never learned anywhere better than being here in GNOME from my last 8 months of journey here.

I have learnt things like:-

  1. Understanding Code base
  2. Basic git skills
  3. Communication skills
  4. Managing time
  5. Reading Docs


These are just a few to name and also few in quantity, a whole mountain of things still remain which I believe I will be getting to learn this summer with Gnome.

I can’t thank enough to Google as well who introduced and sponsored this program. The most important part I like here was that Google gave organisations freedom to choose the project and the students which to me seems like that Google really respects the freedom of Organisations and their vision. So kudos to Google πŸ™‚

I know maybe I am a little low on skills for the project but my motive always comes up if my mentor trust me and I believe he knows my capabilities more than I know myself. I really look forward to work with Albfan and I believe that out of any other benefit which GSOC gives to their students this is the most precious one.

I have so many people to thank for this : Csoriano, Exalm, Andre, Chergert, Bil, Albfan, …..

If I missed any one’s name here’s the final:- Developers of GNOME πŸ™‚

It’s my great fortune to be part of this family.

Thanks πŸ™‚