Hacker News new | ask | show | jobs
by rwmj 3875 days ago
I'll tell you how we do these things in the libguestfs/virt-tools project [1]. The project is written in a mix of C, Perl and OCaml. Mainly C is used for the low-level/library bits, and OCaml is used for the higher-level tools.

- QA: We have some unit tests, but mainly we use a huge test suite that does end to end testing of tools. It uses automake's test framework, so it works across all the languages in the project.

- Builds and releases: We use autotools and tarballs. It's automated using a thing called 'goaljobs' which is like a generalized make.

- The pain points for us all derive from autotools itself, which is both crap and better than all the other build systems[2]. It is at least well understood.

I'd also say the killer advantages of OCaml for me are: Easy calling into C, and compiles to a native binary.

[1] http://libguestfs.org https://github.com/libguestfs/libguestfs

[2] I use the term "build system" in a rather narrow sense of something that (a) runs on Linux (b) lets the end user download a tarball and (c) builds using ./configure && make

1 comments

Thanks for your detailed answer and congrats for successfully maintaining libguestfs.

> I'd also say the killer advantages of OCaml for me are: Easy calling into C, and compiles to a native binary.

Very true. And Ocamlbuild makes wonders.