code not burgers

I know your problem: you are a student, and the Google Summer of Code has started, but you haven't found a project worth doing. Or, perhaps you have submitted a proposal already, but you're not psyched about it. You really wanted to munge bytes on disk using Scheme. I totally dig it.

That is why you should make a proposal to make a library for accessing Git datastores from Guile. Great idea, right? You probably had it too!

The scope of the work would be to write the equivalent of Git's "plumbing" layer in Scheme. The first step would be to be able to git cat-file any object in the database. Then you would need to be able to insert into the database, via git-hash-object, and then to be able to update a ref with git-update-ref.

At the same time, all of this functionality should be available on the command line, via something like a gilt executable: gilt cat-file foo, for example.

The reason why this work is interesting is N-fold:

  • Having a Git library will be nice. Indeed a number of software projects use Git as a database.

  • Having a Git implementation that can be linked to Guile will be good too. (Guile is LGPLv3+, Git is GPLv2 only.)

  • It will be interesting to see how fast a Scheme-only solution will be. Raw SHA1 calculation will probably still have to be done in C though.

  • Finally it's going to be total fun! It's a good scope for an SOC project: you can implement as far as you get, and you learn skills like how to do real-world development in Scheme, producing fast code.

Interested? Time is running out. 9 April appears to be the deadline. Requirements are a proficiency with Git, and you should implement a command-line Guile program that returns the MD5 or SHA-1 hash of the file given as its argument. It's OK to copy the MD5 or SHA-1 implementation from elsewhere, but document that; I just want to know if you can actually wire up the pieces correctly, and beyond that, is your Scheme in good taste.

So, should this thing be up your alley, send me a mail, or visit #guile during the European daytime, and let's talk!

3 responses

  1. Benjamin Otte says:


  2. wingo says:

    Are you goading me to ungild? Perhaps geld would be a better name, then.


  3. Samium Gromoff says:

    I've been contemplating writing a plumbing layer in Common Lisp for quite some time already.

    The benefit over guile, is, of course, native compilation.

    If ported to ECL[1], this could be actually be made linkable to C programs, as it is capable of producing .so/.dll files.

    1. Embeddable Common Lisp,

Comments are closed.