graph-tool maintenance sustainability

Yet another benchmarking article reminded me of how pretty damn badass
graph-tool is:
https://www.timlrx.com/2019/05/05/benchmark-of-popular-graph-network-packages/

It got me thinking about the future of the module and that's why I'm writing
in the forum.

Without a doubt, Tiago has pulled off something extraordinary for a
one-man-band. The only thing troublesome with this is that if anything
should ever happen to him the project would probably slowly die off - that
would be an enormous waste.

It seems like the community has established itself good enough to start
participating in active development. I personally have developed a series of
extra tools that I would like to give back but the integration with the main
repo appears to me to be too much of a daunting task. This is obviously
based on ignorance and I'm sure that if the documentation could be extended
with a 'developers' section containing examples on how to extend graph-tool
/ a bird-eye's of how graph-tool works, I reckon we could get more people
engaged with the inner workings of the module and assure maintenance in the
long term.

In order for the transition to be smooth, ideally we should come up with
this type of documentation in workshops/hackathons/meetups (would really
like to get some feedback about this).

P.S.: Should these ideas get any traction from other committed users, I'll
go ahead and nominate Tiago Peixoto for Benevolent Dictator for Life.

Hi Juan,

Without a doubt, Tiago has pulled off something extraordinary for a
one-man-band. The only thing troublesome with this is that if anything
should ever happen to him the project would probably slowly die off - that
would be an enormous waste.

This is hopefully not a very pressing concern!

It seems like the community has established itself good enough to start
participating in active development.

Graph-tool is the workbench I use to do my own research, which I also
happen to put out for wider use.

While I'm happy to take suggestions, improvements, and bug fixes, the
library reflects very strongly my way of doing things, and has never
been setup as a very collaborative project. This does not mean I object
to a wider participation, but it does explains why this is not in the
DNA of the project. (In addition to the fact it's written in C++ with
templates, BGL, etc.)

I personally have developed a series of
extra tools that I would like to give back but the integration with the main
repo appears to me to be too much of a daunting task.

Integration with the main repository should not be stopping you from
making your contributions public. You should put them in your own
separate repository, with documentation, etc. If it proves interesting
and widely useful, it can be integrated at a later point.

This is obviously
based on ignorance and I'm sure that if the documentation could be extended
with a 'developers' section containing examples on how to extend graph-tool
/ a bird-eye's of how graph-tool works, I reckon we could get more people
engaged with the inner workings of the module and assure maintenance in the
long term.

Some of this already exists.

In order to understand the internals, a good place to start is the C++
extension howto:

After you are familiar with the patterns there, you will then realize
that this is how the rest of the library is written.

In order for the transition to be smooth, ideally we should come up with
this type of documentation in workshops/hackathons/meetups (would really
like to get some feedback about this).

This seems premature, as it is any talk about a "transition". The level
of organization you are describing only makes sense for very large projects.

P.S.: Should these ideas get any traction from other committed users, I'll
go ahead and nominate Tiago Peixoto for Benevolent Dictator for Life.

Usually, no nomination is required for this sort of thing. :slight_smile:

Best,
Tiago

Let me add here that *by far* the biggest complaint I get is that
graph-tool is hard to install. So, if people want to contribute, this is
the best place to start: providing more detailed instructions for
particular systems, packages for popular OSs (there is nothing for
RPM-based OSs, for example). I cannot provide installations for every
single system out there, so help is always needed and appreciated.

Best,
Tiago