LLNL / Surfactant

Modular framework for file information extraction and dependency analysis to generate accurate SBOMs
MIT License
19 stars 13 forks source link

Investigate Cytoscape for visualizing SBOMs #129

Open nightlark opened 6 months ago

nightlark commented 6 months ago

https://cytoscape.org/

mcutshaw commented 6 months ago

This is something I might be interested in assisting with. What was the plan for the library on the Python side? Or is the idea to just make a viewer in JS?

Edit: Just discovered the CYT-640-web-ui branch, so I would assume just in JS.

nightlark commented 6 months ago

The plan is sort of tbd -- from the people at ORNL who told me about Cytoscape, it sounded like the main way to interface with it is a (REST API https://cytoscape.org/what_is_cytoscape.html#section-features?) that provides the Cytoscape GUI with information to display (nodes/edges/etc).

From browsing the cytoscape website, it sounded like the Cytoscape GUI is more mature and has more features than the Cytoscape.js library.

If you want to look into adding Cytoscape support as maybe a plugin/subcommand, go for it; if it helps, we can schedule a Teams meeting to discuss ideas (or during the Surfactant WG meeting).

mcutshaw commented 6 months ago

I might look at outputting to a GML format as it looks like Cytoscape will consume that, and its a standard format, so it might be able to be imported into other tools a well. https://manual.cytoscape.org/en/stable/Supported_Network_File_Formats.html

nightlark commented 6 months ago

That looks like it would be interesting. It's not clear how much additional metadata can be attached to nodes in the GLM format (there might be some benefit in this area with a more active communication method with Cytoscape), but outputting a GLM file looks like it would be a pretty easy way to start visualizing things.

I'd imagine it would be similar to outputting a graphviz dot file (https://github.com/LLNL/Surfactant/issues/71) -- @theStache may have something that could be used as a starting point for outputting a GLM file.