Re:Why We Use Go
by Manishearth on Tuesday May 26, 2015 @11:41PM
(#9609202)
That's still a large codebase, now you need to jump back and forth between API docs to be sure you're giving it the correct type.
Openstack is a very good example of a very large python codebase split into smaller projects. But it's still a large codebase. It's still hard to work with different components and the only thing that happens to hold it together are loads and loads of tests and lints which try to come close to what static analysis could provide.
Related - Openstack Swift investigating using Go: http://lists.openstack.org/pipermail/openstack-dev/2015-Apri...
Swift has a very fortunate position here. Specifically, the interaction surface is very low (mainly user app<->Swift and Glance<->Swift) and the interface is very restricted. It's just an object store.
It may be a great project for migration, just like Glance (although that one doesn't need that much performance).
The projects I don't think will ever be able to move are Neutron and Nova. Even parts of Nova are so tightly connected that it would need a major redesign before rpc can really split scheduler and other pieces into different projects. Also Keystone probably has too many integration layers / plugins by now to migrate to anything.
(I'm glad that this happened BTW, the more languages in OpenStack, the better isolated and simpler the interfaces will become)
Large codebases, ewww. Instead separate things into smaller projects, each easily maintainable on it's own.