Community Bonding Period - GSoC 2016

Submitted by rakesh on Wed, 06/08/2016 - 22:44

Finally the hard work paid off.

It all started from a mail which had contents something like:

Hi Rakesh Verma,Welcome to GSoC 2016!Your proposal "Solving content conflicts with merge algorithms in Drupal 8" has been accepted! We look forward to seeing the great things you will accomplish this summer with Drupal."

It was really a very great moment and I had to almost control myself from shouting out loud.
That was the moment I had been dreaming about from last year approximately.
It's really a great feeling to be a part of the GSoC community and cherry on the cake is I will get to contribute to Drupal community. I have been using drupal since my high school days to make websites and blogs and it feels really great that the community has given me a chance to contribute back to it.

What is Drupal: 
Drupal is content management software. It's used to make many of the websites and applications you use every day. Drupal has great standard features, like easy content authoring, reliable performance, and excellent security. But what sets it apart is its flexibility; modularity is one of its core principles. Its tools help you build the versatile, structured content that dynamic web experiences need. Drupal has nearly 101560 users actively contributing.
Drupal is actively participating in Google summer of code program from 2005. Yes, from the first GSoC ever.
The project I am working on is a very interesting project and It would not only be helpful to drupal users but anyone using PHP will be able to use the libraries to implement a recursive 3 way merge algorithm to solve a merge conflict.

Project: Solving content conflicts with merge algorithms in Drupal 8

Problem: ​"With the introduction of Multiversion module in Drupal 8, we suddenly have a very powerful content revision API that can handle branching and conflict DETECTION but there is not yet a way to solve revision conflicts". The more detailed description of the project is available here.

Solution: We'd be creating libraries to perform a recursive 3 way merge algorithm which would find a common ancestors from the nodes which needs to be merged and would create a base entity on the comparison basis from the base node(Parent) and the 2 other nodes which needs to be merged.

Mentors: Dick Olsson(dixon_) 
                Andrei(Jeqq)
                Tim Millwood(timmilwood)
Timeline:
During the community Bonding period (From 23 April to 23 May):
I got to learn a lot from the mentors. We had meeting at least twice every week over hangouts and zoom(Cloud team meeting tool). I consider myself very lucky as from the very start of this project, I was introduced to very professional and skilled people from Acquia as well and I get to learn a lot from them in every meeting.
I got a very clear understanding of my project as well as the approach we would be taking to ensure success in the project. I had to set my up system accordingly as the module being in Initial stages was not very much compatible with the Windows operating system. Other than this, I got myself a Jet Brains License and got PHPstorm editor and Xdebug to make the journey a little easy(Again, suggested by mentors only).

Coding Phase-I: 
Since, the community bonding period is over and now it's the time to start the coding part, we have set up a road map and issues over drupal.org only. I will be updating the issues on daily basis. We have also set up a github repository where we will be updating the code of this project.

Task1: We're following the timeline breakdown which I proposed in my proposal. As per the proposal, we will be working on creating PHP libraries to find a Lowest common ancestor of 2 nodes in a DAG.

I am super excited about this project but my mentors are even more happy.
That's all for now but I will be updating the blog on weekly basis as well.

The primary blog would be "rakeshverma.in" but I believe it'd take a little time before I upload it on servers but once it's up, we will be all set and ready to keep you updated along with the progress on the project.

Let's code the summer away.