[gsoc] graph library

Joseph Rushton Wakeling joseph.wakeling at webdrake.net
Wed Mar 27 14:41:26 UTC 2019


Hello Vasyl and everyone,

On Friday, 22 March 2019 at 10:43:05 UTC, Seb wrote:
> I think the best person to ask would be Joseph Wakeling 
> (https://github.com/WebDrake) as he's the author of Dgraph [1] 
> and was a GSoC mentor in the past.

In principle I would love to, but I really don't have the time 
right now, and I don't think that is going to change by the time 
GSoC 2019 goes live :-(

A few thoughts on the more general idea:

I think the idea of a more fully featured graph library is great, 
but I don't think we should build a `std.graph`, as the standard 
library is not really the best place for something like this.

For a graph library to really be useful, it will need a much 
broader range of functionality than is appropriate for a standard 
library (look at pretty much any of the major graph frameworks 
used in science, e.g. igraph, or NetworkX, and they are BIG 
codebases).  It will also need to be flexible: it's likely that 
any such library will want to be flexible in how it revises its 
internal data structures over time, as needs and use-cases change.

So I would recommend that we focus on creating a good library, 
and forget getting anything into phobos.

In terms of design inspiration: it's been a long while since I 
last looked at Boost::Graph but my memory is of a template horror 
that seemed far more complex than it needed to be, and yet whose 
internal data structures were probably not the most efficient.  
Don't take my word on this, I might be wrong (or just out of 
date), but it didn't seem like the best design concept to build 
from.  YMMV, of course ;-)

I also don't see the point in reproducing or closely mimicking a 
C++ API when the degree of C++ support is getting so much better. 
  Why not just use the existing library, or fix any blockers to 
doing so?

So, if we are going to do this, I would recommend:

   * implementing good underlying data structures before focusing 
on the user
     facing API

   * trying to create a friendly, idiomatic D API that does not 
too strongly mimic
     anything from other languages

   * ensuring friendly interop with Python, as a lot of people 
working in science
     will be using Python for their scripting, data science, and 
glue code

Lastly, regarding a remark in the proposal summary: who says 
DGraph is unmaintained? :-)  I'm not actively adding new features 
to it, as I don't have a personal use case, but if anyone has 
bugfixes or PRs, I would happily take a look.

Anyway, hope that helps, and apologies that I can't be of more 
active assistance,

All the best,

      -- Joe


More information about the Digitalmars-d mailing list