16 comments

[ 1.8 ms ] story [ 55.2 ms ] thread
EasyGraph is an open-source graph computing package based on the Python language, developed by the MSN team at Fudan University. It is the first library to include a comprehensive set of structural hole spanner detection methods, while also covering graph embedding and other traditional graph computing methods. EasyGraph fixes weak links in the field of social networks in existing graph analysis open-source libraries such as igraph and NetworkX. Additionally, it leverages hybrid programming and parallel computing to enhance its runtime efficiency.
I guess this is intended as an alternative to networkx? I've not used nx for a while, it would be interesting to see a comparison. A quick eyeball suggests a not dissimilar API and a smaller feature-set.

What's the use case? Performance? In which case it'd be nice to see benchmarks.

Documentation seems a bit buggy. For example, accessing the link for visualization leads to a 404.

Visualization is something, where NetworkX is not the fanciest lib, rather pragmatic.

Not sure on easygraph, but we have gpu graph viz generation 1-liners for pandas/nx/igraph/cugraph/parquet/arrow @ http://github.com/graphistry/pygraphistry . If easygraph works with the rest of the pydata world, I'd hope just another 1-liner away.

We're now working on louie.ai to make using them all together even easier, all the way to systems like splunk & databricks :)

This seems rather redundant given that graph-tool exists: https://graph-tool.skewed.de

It does visualization fairly well — not to mention that the entire back-end is in C++ with templates + OpenMP for performance.

There's room for a lot of these to grow and solve different problems. As I see the design space for those 2:

I like graph-tool for the variety of algs and CPU performance, focus on modeling, and will refer people to it when they outgrow nx/ix. However, it is (currently) not as approachable as others for example, which matters for social scientists who aren't devs, and for perf, we like cuGraph because both GPU/multi-GPU for the alg subset it does do, which is often 'enough'. Also, graph tool's licensing is not allowed by many of our users, while cugraph and easygraph's are. Generally, these libraries have viz but more just to check the box, and integrations to more dedicated tools improve that story.

These libraries take a lot of work, and both are impressive here. Something I look for is sustainability - will it outlive the life of a grad student or postdoc primary contributor getting their next job, or a professor's interests naturally shifting, or a startup if their next funding round doesn't happen / evilCorp acquihires them. This is extra poignant with redisgraph shutting down. A good tell is if it has been around X years, good chance it'll be around X/2 more, something like that. Very few at that level in the graph world!

graph-tool is LGPL, which means it can be used as a library even in proprietary code. So I don't know how it could not be allowed for your users.

The python API is almost identical to 'EasyGraph'. I'm curious why you consider it less approachable.

graph-tool visualization is killer. Not an after-thought to check a box. You can do animations, visualize interactively (move node positions with the mouse), generate publication-quality SVG/PNG/PDF seamlessly, integrate with other applications using GTK, cairo, etc.

It has been around since 2006, and is maintained by an academic group.

We see many non-academic users (startups, enterprises, gov, ...) where it is common to only allow licenses like Apache, MIT, & BSD for libraries, so LGPL often makes sw not even a contender

Like I said, I'm a fan and refer folks to it when fits. Other libraries focus on strengths like licensing, viz, perf, AI, ease, etc that graph-tool doesn't invest as much in. Ex: competing with Nvidia on GPU computing is doable, but takes a special kind of focus - it's not an accident we have been working with them for years. Graph-tool is strong in general, just not everything to everyone.

It seems entirely nonsensical not to allow LGPL for library code, since it does not add any restrictions compared to BSD/MIT/etc. You should advise your users better in this regard, since they seem to not understand how these licenses work.
LGPL is understood to incur stipulations in scenarios like static linking, which for a dev library, can be a concern. These concerns are not in MIT/BSD/Apache, which is why professional organizations often have rules allowing only the latter. It takes undesirable work by developers to go against their organizational guidelines.

My job isn't to advise users on legal matters nor promote graph-tool, though I do try to increase awareness of options in general as a neutral technical party. The graph-tool's community's decision to use & stick to a relatively unpopular license (outside of academia), and the ensuing issues around legal, practical, and perception... are problems for the graph-tool community to address, not me.

We OSS our work as MIT/BSD/Apache because that's what our users accept and pay us to do. That's all that's in our control.

Python libraries cannot be statically linked.

This has nothing to do with promoting graph-tool, but not promoting disinformation, as you have been doing.

This is shameful FUD against LGPL based on blatant nonsense.

If organizations have rules that don't make sense, the problem is with those rules.

Spreading this kind of misleading narrative is damaging to the community as a whole.

Lost a lot of respect for Graphistry during this interchange.

I'm confused. There was a surprise that LGPL was not seen as equiv as MIT/BSD/Apache by orgs, so I clarified with the typical example of why organizations may have default-deny rules for LGPL libraries bc the static linking restrictions, and that those default-deny rules would require devs in these orgs to get an exception. You made me curious, and this thread was enlightening to me: https://www.quora.com/Can-I-use-LGPL-in-commercial-software . Note the political & bureaucratic work that'd be involved to get a licensing exception, and then the extra SW infra work to do the above.

Again, I try to keep our team technical & neutral about graph DB/lib/etc providers. We get used with a variety of tools, and I personally end up seeing areas where each invests more than others + try to keep discussions to the resulting kind of objective distinction. So I'm genuinely curious what's wrong in my summary, both wrt legal theory and what organizations do in practice. I get frustrated when projects we get pulled into (digital crime, outages, genomics, ...) get hamstrung by something like OSS licensing.

Thank you for pointing this out. We have solved it and relinked it to the correct one.
NetworkX represents all graph nodes as python objects and edges as python references pointing to each other.

Not sure on easygraphs backend representation, but it's not hard to do >100x better in memory usage and speed than nx.

(comment deleted)