asami

Asami, the graph database https://github.com/threatgrid/asami
simongray 2021-04-10T11:10:24.222300Z

Does anybody know if Loom is abandoned? seems like no PRs have been merged since early 2019

simongray 2021-04-10T11:10:52.223Z

(sorry to use this channel, but there is no general #graph channel)

quoll 2021-04-10T16:20:58.223600Z

Asami-loom, or Loom itself?

quoll 2021-04-10T16:21:23.224Z

Because yes, it appears abandoned.

quoll 2021-04-10T16:22:13.225300Z

I started getting into Loom when I did Asami-Loom, but couldn’t raise much response from the owner

quoll 2021-04-10T16:23:55.227Z

As soon as I get a moment I want to get back to Asami-Loom and extend the relevant protocol to the durable store in Asami.

quoll 2021-04-10T16:43:47.228900Z

From memory I hit a bug in ClojureScript. I submitted a PR, but I a think someone else submitted one for the same issue and theirs was accepted? Maybe. I forget

simongray 2021-04-10T17:31:55.229Z

@quoll Loom itself. I just made PR for an issue that I circumvented in my code back in 2018 thinking that it would be fixed soon. Now in 2021 seems like not much has happened with Loom since then. It kind of sucks, since Loom and its protocols are used from many different Clojure libraries, but it has some longstanding issues and the author doesn't seem to care about it anymore.

simongray 2021-04-10T17:34:24.229200Z

I'm thinking of either forking it or having it transferred to clj-commons.

3💯
2021-04-16T00:41:00.245500Z

I too am sad about the current state of Loom, which I do use a little. When exploring alternatives, I found: https://github.com/Engelberg/ubergraph, but I didn't end up trying to use it. so I do not have any opinion or experience with it. Transfering/migrating Loom to clj-commons is an interesting idea, what would it take to do that? I don't currently have the time to take that project on personally, but I'd be willing to chip in on a funding effort, and/or maybe if there was an interested developer, perhaps make a pitch to Clojurians Together....

simongray 2021-04-16T07:09:55.245800Z

@dcj Ubergraph is pretty great, but it is “just” a data structure and it also builds on the loom protocols: https://github.com/Engelberg/ubergraph/blob/master/src/ubergraph/core.clj#L16-L56

simongray 2021-04-16T07:11:07.246200Z

Loom is at the intersection of a lot of graph-related libraries in Clojure, so that is why it’s a shame that it goes unmaintained. It feels a bit like the Incanter story with a fast uptake and then stagnation and abandonment.

quoll 2021-04-17T01:27:53.247600Z

Well… it is still being implemented 😉 It was kinda cool to get it working on Asami.

quoll 2021-04-17T01:29:04.249300Z

It’s already moved maintainer once. There’s no reason it can’t move on again. Does anyone know how to get in touch with Aysylu?

1👍
quoll 2021-04-17T01:30:43.250400Z

I first heard about Loom when she did the https://www.cognitect.com/cognicast/076 interview

2021-04-17T05:02:44.250700Z

• [Aysylu Greenberg] (https://github.com/aysylu), <mailto:aysylu.greenberg@gmail.com|aysylu [dot] greenberg [at] gmail [dot] com>, http://twitter.com/aysylu22

quoll 2021-04-10T17:58:51.230Z

I’m with you on this. I can contribute, if you’re interested?

2👍
quoll 2021-04-10T18:01:20.233100Z

I think my private fork has a number of changes, like separating the function that generates the content of dot files from the i/o. That way you can use it in ClojureScript and provide a way for a user to download a generated file from a web page

simongray 2021-04-10T18:21:41.233400Z

hah, the primary issue I’ve been having is the shoddy http://loom.io/dot-str function

1😄
simongray 2021-04-10T18:22:22.234200Z

and I actually needed to solve the same issue since CoreNLP comes with its equivalent that I used instead.

quoll 2021-04-10T18:22:52.235Z

I wish I could say that I addressed it, but all I did was tease out the i/o

quoll 2021-04-10T18:25:39.237100Z

BTW, I saw that I have a PR from you. Thank you! I haven’t looked at it yet, since I’ve been in the kitchen all day, and am just taking a break to look at my phone

simongray 2021-04-10T18:26:17.237300Z

but I also really can't stand that it has these protocols that other libraries implement, but then it doesn't even use them... It's so dumb... And it's been like this for years now.

simongray 2021-04-10T18:26:39.237500Z

PR from me? I don't think so.

quoll 2021-04-10T18:28:15.239400Z

Ah! I thought it was to Asami-Loom. I was mistaken… it was a PR for aysylu/loom. How did I end up on the email notifications? :thinking_face:

simongray 2021-04-10T18:28:26.239600Z

Weird :thinking_face:

simongray 2021-04-10T18:34:48.239800Z

But anyway your help is very welcome should I proceed with it.

quoll 2021-04-10T18:37:38.242900Z

A lot of people seem to like the Loom API, so I like the idea of supporting it. It’s a bit frustrating though, as I only recognize nodes that have edges, and all edges are labeled and directed. It took a bit of work to fit into that picture

1👍
simongray 2021-04-10T18:53:09.243100Z

I just like the idea of some common API and a common set of protocols, but loom is a half-hearted attempt

simongray 2021-04-10T18:53:35.243700Z

it’s a shame

quoll 2021-04-10T18:53:40.244Z

Are you proposing that we work on a new one? 🙂

simongray 2021-04-10T19:03:26.244200Z

not really… just that if I were to fork loom, I would probably change a bunch of stuff that I find poorly implemented, which might break some callers in the process…

simongray 2021-04-10T19:09:59.244400Z

mostly the fact that edges have this nice Edge protocol, but in every function where it matters, edges are represented as two args n1 and n2. Edges should be represented as a single arg IMO. Representing edges as two nodes everywhere precludes certain graph types from existing in loom and complects the meaning of an edge and the 2-tuple vector that loom considers an edge.

simongray 2021-04-10T19:11:09.244600Z

I also don’t like the fact that labels aren’t something generic which you can fetch using a label function (assuming you’ve implemented a protocol for the datatype), but rather a weirdly specific :label key in a map.

simongray 2021-04-10T19:12:15.244800Z

too much of loom is weirdly implementation-specific

simongray 2021-04-10T19:16:27.245200Z

it should be entirely based on its own protocols