[openstack-dev] [tc] supporting Go

Thomas Goirand zigo at debian.org
Mon May 9 23:53:59 UTC 2016

On 05/09/2016 01:33 PM, Hayes, Graham wrote:
> On 08/05/2016 10:21, Thomas Goirand wrote:
>> On 05/04/2016 01:29 AM, Hayes, Graham wrote:
>>> On 03/05/2016 17:03, John Dickinson wrote:
>>>> TC,
>>>> In reference to http://lists.openstack.org/pipermail/openstack-dev/2016-May/093680.html and Thierry's reply, I'm currently drafting a TC resolution to update http://governance.openstack.org/resolutions/20150901-programming-languages.html to include Go as a supported language in OpenStack projects.
>>>> As a starting point, what would you like to see addressed in the document I'm drafting?
>>>> --John
>>> Great - I was about to write a thread like this :)
>>> Designate is looking to move a single component of ours to Go - and we
>>> were wondering what was the best way to do it.
>> We discussed about this during the summit. You told me that the issue
>> was a piece of code that needed optimization, to which I replied that
>> probably, a C++ .so extension in a Python module is probably what you
>> are looking for (with the advice of not using CFFI which is sometimes
>> breaking things in distros).
>> Did you think about this other possibility, and did you discuss it with
>> your team?
> We had a brief discussion about it, and we going to try a new POC in
> C/C++ to validate it, but then this thread (and related TC policy) were
> proposed.
> If Golang is going to be a supported language, we would much rather
> stick with one of the official OpenStack languages that suits our
> use case instead of getting an exemption for another similar language.

If I'm not mistaking, a C/C++ extension for Python is already valid and
accepted (writing things in C one of the possibilities that the Python
language offers, so i don't see why it would be forbidden...). So why not?

On 05/09/2016 08:14 PM, Hayes, Graham wrote:
> We won't be replacing any particular function, we will be replacing a
> whole service.

That's IMO where the problem stands. If you're attempting to rewrite the
service fully just because it's slow, that probably means that you don't
even know *where* it's slow. Have you tried running a profiler?

On 05/09/2016 08:14 PM, Hayes, Graham wrote:
> There is no auth (or inter-service communications) from this
> component, all it does it query the DB and spit out DNS packets.

And just for that, you'd need Go? Writing this in C is IMO very simple
(disclosure: I don't know Go, but I do know C/C++). The MySQL client lib
is really easy to use, and writing a few UDP packet shouldn't be hard

Or is it more complicated than just this? Hard to tell, as I'm not sure
which part of your code is slowing the whole operation down...


Thomas Goirand (zigo)

More information about the OpenStack-dev mailing list