GSoC 2018 Application

Olly Betts olly at survex.com
Wed Feb 14 21:07:30 GMT 2018


On Mon, Feb 12, 2018 at 08:32:59PM -0500, Mingqiang Liang wrote:
> I am already very familiar with Go, I’d like to take “Implement
> Binding for Go” as my GSoC project, which will make me get more
> familiar with SWIG and Xapian. I don’t think I need help at Go side,
> but I may need some instruction about SWIG and Xapian (such as set up
> a Xapian development environment and write an APP to verify the
> binding actually works, etc).
> 
> What I am supposed to do next step?

The best place to start is to work through the guide we've put together:

https://trac.xapian.org/wiki/GSoC%20Guide

This will take you through cloning and building the source code, and
help you to start getting familiar with modifying it.

A higher priority than writing an app is a set of automated tests of the
wrapped API.  That way we can be confident that the wrapped API works,
and that we'll know if a change to the API or to SWIG breaks the wrapped
API.

You also sent me a private mail (please don't mail mentors privately
- open source discussion should be public by default, and it actually
puts you at a disadvantage in GSoC as other mentors or org admins
won't take such interactions into account when reviewing proposals)
where you also asked:

> There is already a POC implementation at
> https://github.com/mtibeica/xapiango/blob/master/xapian.go , is it
> already works with Xapian and only need some SWIG customizing to make
> the generated files meet Go's name convention? 

The existing work is just a very simple proof of concept - pretty much
the minimum required to get a Go API.  There's a significant amount to
do to make it a nice wrapper which supports all of the API.  Much more
than just a bit of renaming.

Exactly what needs customising varies a bit between the bindings, but
some things which typically need special treatment are iterators,
subclassable functors, and exceptions.

But you should review the Go API produced with a critical eye and try
to identify features that aren't getting wrapped in a way which is
natural to a Go programmer.

Cheers,
    Olly



More information about the Xapian-devel mailing list