2013-07-04

A month ago, a mail hit the OpenStack mailing list
entitled "The OpenStack Community Welcomes Developers in All Programming
Languages".
You may know that OpenStack is essentially built using Python, and therefore
it is the reference language for the client libraries implementations.
As a Lisp and OpenStack practitioner, I used this excuse to build a
challenge for myself: let's prove this point by bringing Lisp into
OpenStack!



Welcome
cl-openstack-client,
the OpenStack client library for Common Lisp!

The project is hosted on the classic OpenStack infrastructure for third
party project, StackForge. It
provides the continuous integration system based on
Jenkins
and the Gerrit infrastructure used to review contributions.

How the tests works

OpenStack projects ran a fabulous contribution workflow, which I already
talked
about,
based on tools like Gerrit and
Jenkins.

OpenStack Python projects are used to run
tox, to build a virtual environment and
run test inside. We don't have such thing in Common Lisp as far as I know,
so I had to build it myself.

Fortunately, using Quicklisp, the fabulous
equivalent of Python's PyPI, it has been a breeze to set this up.
cl-openstack-client just includes a basic shell
script
that does the following:

Download quicklisp.lisp

Run a Lisp program to install the dependencies using Quicklisp

Run a Lisp program running the test suite using
FiveAM, that exit with 0 or 1
based on the tests results.

I just run the test using SBCL, though adding more
compiler on the table would be a really good plan in the future, and should
be straightforward. You can admire a log from a successful
test
run done when I proposed a patch via Gerrit, to check what it looks like.

Implementation status

For the curious, here's an example of how it works:

Unfortunately, the implementation is far from being complete. It only
implements for now the Keystone token retrieval.

I've actually started this project to build an already working starting
point. With this, future potential contributors will be able to spend
efforts on writing code, and not on setting up the basic continuous
integration system or module infrastructure.

If you wish to help me and contribute, just follow the OpenStack Gerrit
workflow howto or feel free
to come by me and ask any question (I'm hanging out on #lisp on Freenode
too).

See you soon, hopping to bring more Lisp into OpenStack!

Show more