[clug] Watercooler - was Open Source Developers in CBR

Michael Cohen scudette at gmail.com
Mon Sep 7 02:19:20 UTC 2020

Hi Brenton,
   I have been maintaining a C++ RDF based project for some years now
(https://github.com/Velocidex/c-aff4) and while this is not meant to
be a language flame war would like to share my experiences with you.
Back in the old days the choice of languages was always a tradeoff
between slow but fast to develop (Python/Java) or fast but harder to
develop (C++/C).

However in recent years a number of languages have emerged which make
this tradeoff moot - specifically Golang and Rust both provide fast to
execute **and** easy to develop. The choice is now a no-brainer IMHO -
unless you have a legacy project to maintain C++ is rarely my first
choice (I have been a professional C++ dev for many years so I am
**very** familiar with the language- yet I find development velocity
to be much lower than golang). These days I prefer Golang because I
want to have my cake and eat it too :-).

The other aspect of c++ dev which a lot of people don't mention is the
poor state of portability and the build system. Go and rust have made
great strides with built in cross compilers, reproducible builds out
of the box and a great package management (even better than Python's
pip). I always found C++ build system difficult and unmaintainable -
without a docker file to completely reproduce the dev's build system
it is virtually impossible for anyone to build the thing. Portability
and building and packaging are a critical part of any successful
software project and go beyond just the language. The language
ecosystem is very important.

Finally my experience with RDF was poor at best - it is a nice
theoretical technology but as you point out not well supported and
certainly not popular. If I had to do it all again I would not pick
RDF as a standard but possibly just make my own data structures with
json/protobuf . RDF adds a lot of complexity to the design which is
not often needed and too much abstraction for the problem set. Unless
you have to interoperate with another RDF system I would be wary of
using it in a new design.

At present, I find myself rewriting the above project in golang
because I just had enough of maintaining that C++ mess. YMMV.


On Sun, 6 Sep 2020 at 17:27, Brenton Ross via linux
<linux at lists.samba.org> wrote:
> Thought I might kick this thread off.
> I am currently working on a C++ wrapper for a C RDF library.
> I have a very large project in mind, one that has many different
> components. The details are a story for another day, but at the bottom
> of the stack is RDF. My preferred language for the project is C++ for
> its combination of speed and ability to model objects which are my
> preferred way to solve programming problems.
> I intend to use as many third party open source components as I can for
> the project, mostly just to save my time. I could not find a C++
> library for RDF, just the Redland C library. I did find a C++ project
> that was attempting to create a wrapper for Redland but it was looking
> a bit abandoned and had some problems.
> Hence my first sub-project is to build a C++ wrapper for the Redland C
> library. I started with the source from the existing project, but ended
> just keeping one of its core design features and rewriting most of it
> using C++ features that are more recent than what the original author
> used.
> Since a database is a really boring object I am also building a GUI
> program that I use to try out its functionality.
> Links:
> https://sourceforge.net/p/ocratato-sassy/rdfxx/
> https://sourceforge.net/p/ocratato-sassy/rdfgui/
> Brenton
> --
> linux mailing list
> linux at lists.samba.org
> https://lists.samba.org/mailman/listinfo/linux

More information about the linux mailing list