Dmitry Tantsur writes:

This is pretty subjective, I would say. I personally don't feel Go (especially its approach to error handling) any natural (at least no more than Rust or Scala, for example). If familiarity for Python developers is an argument here, mastering Cython or making OpenStack run on PyPy must be much easier for a random Python developer out there to seriously bump the performance. And it would not require introducing a completely new language to the picture.

In one sense you are correct. It is easier for a Pythonista to pick up Cython and use that for performance specific areas of code. At the same time, I'd argue that OpenStack as a community is not the same as Python at large. There are packaging requirements and cross project standards that also come into play, not to mention operators that end up bearing the brunt of those decisions. For example, Debian will likely not package a PyPy only version of Designate along with all its requirements. Similarly, while 50% of operators use packaged versioned, that means 50% work from source control to build, test, and release OpenStack projects.

You are correct that my position is subjective, but it is based on my experiences trying to operate and deploy OpenStack in addition to writing code. The draw of Go, in my experience, has been easily deploying a single binary I've been able to build and test consistently. The target system has doesn't require Go installed at all and it works on old distros. And it has been much faster.

Coming from Python, the reason Go has been easy to get started with is that it offers some protections that are useful such as memory management. Features such as slices are extremely similar to Python and go routines / channels allow supporting more complex patterns such as generators. Yes, you are correct, error handling is controversial, but at the same time, it is no better in C.

I'm not an expert in Go, but from what I've seen, Go has been easier to build and deploy than Python, while being faster. Picking it up has been trivial and becoming reasonably proficient has been a quick process. When considered within the scope of OpenStack, it adds a minimal overhead for testing, packaging and deployment, especially when compared to C extensions, PyPy or Cython.

I hope that contextualizes my opinion a bit to make clear the subjective aspects are based on OpenStack specific constraints.

--

Eric Larson | [email protected] Software Developer | Cloud DNS | OpenStack Designate Rackspace Hosting | Austin, Texas

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: [email protected]?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to