On Tue, Oct 01, 2019 at 12:53:50PM +0100, Daniel P. Berrangé wrote:
On Tue, Oct 01, 2019 at 01:36:07PM +0200, Bjoern Walk wrote:
> Daniel P. Berrangé <berrange(a)redhat.com> [2019-09-30, 03:48PM +0100]:
> > In this case, our existing C language for writing our production code is
> > not well suited for the task we're applying it too. You could make an
> > argument that the virt-host-validate could be written in Python, but
> > I think it is preferred to keep all our deployable code written in
> > compiled languages, leaving the scripting languages for our supporting
> > build system.
>
> Any hard arguments on why that's preferential? I don't see a reasoning
> as to not ship python code as many other project do just fine.
The various core system tools which involve python have a history of
poor performance. For example, we previously used "firewall-cmd" for
talking to firewalld and it caused a massive performance hit, because
of all the time spent during startup processing imported modules. This
is seen again in OpenStack with its command line tools being so terribly
slow - it takes 1.5 seconds just to load the client & do nothing.
There's the classic difference of dynamic vs compiled languages where
with the former many basic syntax errors don't appear until you hit
them at runtime unless. Only mitigated if you invest a tonne of time
in unit testing every possible codepath.
Both are good points, but they are greyscale rather than black/white. It
depends on the size and complexity of the script. It also contradicts the use
of declarative language when you are offloading lot of the logic into the input
file. I also think that both points are very much relevant to the build system
as well, just not that visible because not all parts of the build system are
used/modified by everyone.
Using compiled languages also enables us to share code between the
tools and library. This would enable us to actually embed the host
validation functionality into the virt driver, so its exposed as a
normal API in libvirt.
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|