Hi all,
as some of you might know, I'll push the Python SDK to the next level
the next few weeks. What this means is outlined below.
I'm really in favour of an open process and I appreciate any
comments/suggestions. Especially I'd like to hear about what the higher
level API should look like.
Looking forward to fruitful discussions here on the mailing list or on
IRC in #libcouchbase (I'm vmx there).
Cheers,
Volker
Plans for the Python SDK
========================
The following steps are in chronological order, but they might
overlap. No estimates are given as it doesn't contain any optional
things, but only the ones that need to be done. Hence it's done when
it's done.
Initially the Python SDK will use the synchronuous mode of
libcouchbase, the asynchronuous mode can be added later on.
Playing with technology
-----------------------
Decide which technology to use. So far it looks like we go for
[libcouchbase][1] wrapped with [Cython][2]. The advantage of
libcouchbase is performance and with Cython we should get it
working on all supported platforms (Linux, OSX, Windows). It
potentially even works with [PyPy][3].
Designing the API
-----------------
Whether the API will be like the Ruby one [5], fully compatible to the
old Python one, both or completely different needs to be decided.
The design should be open and very community driven. Community in this
case means people outside Couchbase, but also developers/evangelists
inside Couchbase. Just everyone who knows Python and likes to have a
nice API for it.
Build a protoype
----------------
Build a prototype that does gets and sets. Try it on all supported
platforms. It doesn't need to have a decent build system yet, but the
process of getting it running should be documented and reproducable.
For Cython you need special header files. I've spent a significant
amount of having this conversion automated. The work is a fork of
cwrap which can be found on [my personal Github repo][4].
So far it looks good and compiles without errors. Though there's still
some minor cleanup needed. I really want to have it outpue a file that
can be used without any changes.
Wrap the low-level functionality
--------------------------------
Wrap the libcouchbase functionality at a very low level. A nicer
Python API can then be built on top of that.
Sane build system
-----------------
Take the time to make the build easy on all supported platforms.
[1]:
https://github.com/couchbase/libcouchbase
[2]:
http://cython.org/
[3]:
http://pypy.org/
[4]:
https://github.com/vmx/cwrap/tree/vmx
[5]:
http://rubydoc.info/gems/couchbase/