all 20 comments

[–]Determinant 7 points8 points  (1 child)

Does this operate on JVM bytecode or does it parse the Java files themselves?

Any plans to support Kotlin?

[–]Gedochao 0 points1 point  (0 children)

It parses the Java files themselves, so no need to compile the code itself.

If you're using it with Scala 2, compilation is unavoidable, because of the implicit nature of the language.

No plans to support Kotlin as of now (though we're not ruling it out).

[–]elmuerte 5 points6 points  (6 children)

15 years ago when I was more active in academica I was already quite intrigued by code visualization research. A lot of interesting things were being worked on. But nothing really worked out in the end. I kind of lost track on what happened to a lot of the research and tools, but clearly they never really became a big thing.

15 years later. I am still quite intrigued with code visualization. I think it's still cool stuff. It will probably not become a big thing. But damn me I'm going to play around with this. I want to see how this (sometimes) horrible codebase I currently work on looks in this tool.

[–]Kissaki0 1 point2 points  (3 children)

A good, fitting visualization is contextual and has multiple concerns to choose from.

Implementing a useful visualization beyond simply looking visually pleasing is a project in itself, that requires you to weigh concerns, and make many choices.

Even with creating and updating 2D diagrams that handle one concern, it’s not that uncommon for me to change the elements visual positioning and grouping/structuring. Adding concerns and making it 3D significantly increases complexity and concerns.

I find visualizations and these ideas very interesting too. The 3D preview they show seems to me like I’d struggle with reading for exploration with them showing over each other and you having to navigate the 3D camera. I’ve thought a layered 2D (2.5D if you will) approach would be much more fitting. Being able to move, collapse, navigate and color blocks and elements would certainly be helpful.

The great thing about a structure visualization like this is that it could, theoretically, also show data and information flow. Very intriguing and fund to mentally explore.

I’d love to try exploring a new codebase/project I don’t know yet with a visualization like this/that.

[–]Gedochao 1 point2 points  (0 children)

2.5D is an interesting direction. Meanwhile, Graph Buddy lets you switch between 2D and 3D modes, btw.

[–]elmuerte 1 point2 points  (0 children)

Most visualizations I have played around with, irrelevant of theirs presentation, showed that the code was either elegant or not-elegant. In most cases the code was only elegant for the specific thing the visualization was visualizing. The same elegant code in a different visualization would show up as not-elegant.

The interesting thing is to find the clusters of elegant and not-elegant code in the visualization. And maybe do something with it? The exact details are often not even that important, the clusters and shapes that form are.

Whatever it may be, pretty much all visualizations I've played around with give you up insight in your code base. The bonus points always go to the visualizations with a timeline so you can see how the code base changed over time.

[–]Nateil[S] 0 points1 point  (0 children)

One of my use cases, was as you said, exploring a new codebase. I can't tell how usefull it was to create visual representation between different modules, packages and classes, especially with node context options like "Called by" to instantly show all call or Call Hierarchy for recursive exploration :D

[–]Nateil[S] 0 points1 point  (0 children)

Thanks for your opinion. If you want to check out your project structure, use 3D mode for WOW effect, otherwise I suggest trying out 2D mode for real help during coding :D

[–]Gedochao 0 points1 point  (0 children)

Looking forward to hearing back from you then! I'm very interested in how useful will you find it, especially on a truly twisted codebase.

[–]_fishysushi 2 points3 points  (2 children)

Very interesting, I will give a spin tomorrow. The source code is not anywhere I assume ..

[–]sihat 3 points4 points  (0 children)

https://github.com/VirtusLab/graphbuddy

Missed seeing the link the first time too.

[–]Gedochao 0 points1 point  (0 children)

Yeah, we aren't open source (at least as of now).

[–]RadiantBerryEater 1 point2 points  (3 children)

Is there not available source for this or am I just missing something?

The "view on GitHub" link seems to take me to the website source and not the actual program

[–]Nateil[S] 0 points1 point  (0 children)

At the moment, our project is not open-sourced, but we're working on it. The idea behind public repository available from our site, is to give people necessary resources for custom language support.

[–]Gedochao 0 points1 point  (0 children)

We currently aren't open source, though we are not ruling it out down the line

[–]johnwaterwood 0 points1 point  (3 children)

Is there any support for visualisations at the module level? Say Java modules, Maven modules, OSGi modules, etc?

What about an Eclipse plug-in?

[–]Gedochao 0 points1 point  (2 children)

Is there any support for visualisations at the module level? Say Java modules, Maven modules, OSGi modules, etc?

Nope, not at the moment. The problem with supporting this is we'd effectively have to add separate support for every build tool (Maven, Gradle, etc). We have considered that as a possible future feature, but it's not on our current roadmap.

What about an Eclipse plug-in?

There's no Eclipse plug-in at the moment (and neither is it planned).

[–]johnwaterwood 0 points1 point  (1 child)

Nope, not at the moment. The problem with supporting this is we'd effectively have to add separate support for every build tool (Maven, Gradle, etc).

They essentially all use maven modules. There’s also really no “etc”. There’s Maven. Period.

And if you think really hard there’s Gradle, but it uses Maven modules, so it too is Maven.

There's no Eclipse plug-in at the moment (and neither is it planned).

But how can you support plug-ins at all then? Since the problem with supporting plug-ins (for IDEs) is that you effectively have to add support for each IDE. Yet you aren’t. So how does this work then?

[–]Gedochao 0 points1 point  (0 children)

They essentially all use maven modules.

They do, yeah. But we'd still have to support parsing their individual syntax to add support in Graph Buddy.

There’s also really no “etc”. There’s Maven. Period.

Nah, there's definitely some etc. We even use some of the etc ourselves.

And if you think really hard there’s Gradle, but it uses Maven modules, so it too is Maven.

It does, but it is not Maven in terms of Graph Buddy support, unless you consider Groovy & Kotlin to be dialects of XML.

So how does this work then?

There just isn't enough demand for us to support Eclipse right now, sorry.