[GSoC Proposal] Port the Version Control API to Drupal 7

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
cvangysel's picture

Abstract

The Version Control API is an engine for Drupal integration with a variety of version control systems. It delivers an interface to these systems for use with various development-oriented modules, like Project.

The project has gone a long way since it was first started (also as a Summer of Code project). Currently it is being maintained by Marco Villegas and Sam Boyer, who also led the migration of Drupal.org to the Git version control system.

This project aims to port the Version Control API, the Version Control API Git Backend, Version Control Project* integration and everything related to my Summer of Code project of last year to Drupal 7.

Problem

The Version Control API is complicated - especially considering it tries to be as generic as possible - and huge. It's optimized to track thousands of repositories and it runs on Drupal.org.

That last one is important, as it's currently one of the show-stoppers mentioned on the Port Drupal.org to Drupal 7.

One of Drupal's most important selling points is its diversity, extensibility and flexibility. The importance of the Version Control API is not only limited to Drupal's own site, but imagine the possibilities for various organizations who wish to run their own version control services.

Solution

This project aims to port the Version Control API, the Version Control API Git Backend, Version Control Project* integration and everything related to my Summer of Code project of last year to Drupal 7.

Some work on this issue has already been done but there's still a long way to go. Some tests aren't sufficient anymore (even for the 6.x version) and need to rewritten.

Implementation

  1. Do some work on the tests in the 6.x-2.x branch.
  2. Port the Version Control API (base module) to Drupal 7.
  3. Port the Version Control Project* Integration module to Drupal 7.
  4. Port the Git backend to Drupal 7.
  5. Port everything related to Development Activity logging, Activity Streams and Development Statistics, and the Version Control API to Drupal 7.

Planning

I've got finals starting May 29th and that end July 2nd (5 weeks), however the different tests are well-spread and I will be able to work on my project during that time. Last year I had a busier semester and then I succeeded in finishing my project.

  • Before May 21
    Finish my Bachelor Thesis which is inspired by the current Drupal.org Git Daemons and should eventually replace them. New features in my implementation would result in push capabilities over HTTP and per-branch authorization.
  • May 21
    Start of Google Summer of Code 2012
  • May 21 to June 21
    Version Control API
  • June 22 to July 13
    Version Control Project* Integration
  • July 13
    Midterm evaluation
  • July 13 to July 27
    Version Control API - Git Backend
  • July 28 to August 13
    Version Control API Activity integration
  • August 13
    Suggested 'pencils down' date
  • August 13 to August 20
    Finish all the loose ends
  • August 20
    Final evaluation

About the author

I'm Christophe, a 21-year old Computer Science student at the University of Antwerp, whose main interests are in web development, software engineering and distributed systems.

I've got extensive experience with various programming languages (C++, PHP, Java, Python, ...). I've got a background in web development (with and without Drupal) and last year I wrote my own Web Framework which was inspired by Drupal and Joomla.

Currently I'm working on my Bachelor Thesis, which consists of writing a Python-based Git server-side daemon that's inspired by the current Drupal.org Git Daemon.

Why me?

  • I know the Version Control API - I completly researched it and wrote code for the project during last year's edition of Summer of Code. The code behind the module is not trivial, and having experience with it gives me a head start.
  • I literally have been working with Git for the past year, and then I'm talking about the plumbing part of Git.
  • I finished Google Summer of Code last year and I've already completed lots of projects of all different sorts.

Contact me?

E-mail, Facebook, Google+, my profile on Drupal.org or just plain ol' IRC (#drupal-vcs).

Comments

Eric Duran has already done a

webchick's picture

Eric Duran has already done a port of VCAPI to Drupal 7 at http://drupal.org/sandbox/ericduran/1275132 and http://drupal.org/sandbox/ericduran/1288456.

Given that, could you explain a bit more how your project would keep you busy for 3 months? Are there other things you could do to extend VCAPI instead?

Dayum, I saw the work on the

cvangysel's picture

Dayum, I saw the work on the D7 port of the VCApi but thought that it wasn't complete; I didn't know about vc_git.

Guess I'll have to look for a different project. ;-)

Well, I'm not totally sure

webchick's picture

Well, I'm not totally sure how complete it is, but it seemed close enough that it's probably not a good candidate for GSoC by itself. However, I would LOVE to figure out another VCAPI-related project you could work on over the summer. :)

What if we rewrote

cweagans's picture

What if we rewrote versioncontrol_git to use libgit2 instead of glip? That could be a really cool project.

--
Cameron Eagans
http://cweagans.net

There is one issue about it:

marvil07's picture

There is one issue about it: Use libgit2 php binding when available, it was postponed in favor of integrating first repo-sync plugins on versioncontrol, but that's now integrated, so I reopened it.

BTW versioncontrol_git does not use any library now, it just use shell calls(I know, we want to change it).

In the other side that should be only one item on a GSoC project battle plan.

I'm currently talking to the

cvangysel's picture

I'm currently talking to the Drupal Commerce people to get a GSoC project on Commerce for during the summer. Expect to see a new proposal from me in the beginning of next week. ;-)

My new proposal can be found

cvangysel's picture

My new proposal can be found here.