Hacker Newsnew | past | comments | ask | show | jobs | submit | egraether's commentslogin

The heavy server load is also caused by lots of downloads. You can get the latest Sourcetrail 2019.4 now also from GitHub https://github.com/CoatiSoftware/Sourcetrail/releases


Thank you!


Applying the tool on your codebase should be easy. For us, using the Clang Compilation Database format, that already holds all configurations to build a project was of great value for faster C and C++ project setup.

You cannot convince developers to use a tool with just words. They need to experience the benefits first hand. And getting to the benefits should happen as fast as possible after starting to test the tool.


Sourcetrail dev here. Thanks for the feedback!

Yes, Python indexing speed is still slow, mostly due to the underlying framework that needs a lot of time to resolve symbol names. We hope we can improve this.

The crash on closing was already reported: https://github.com/CoatiSoftware/SourcetrailBugTracker/issue... I opened another issue to not inform about indexing when only renaming source groups: https://github.com/CoatiSoftware/SourcetrailBugTracker/issue...


Sourcetrail dev here. To my knowledge, without going into too much detail:

* Sourcetrail has a tighter integration between source code and graph visualization, because it offers less features than a full blown IDE like Visual Studio and can keep the UI more simple. Users of Sourcetrail can use either code or graph to navigate and both update simultaneously. In Code Maps the visualization stays the static until explicitly updated by the user.

* Sourcetrail's visualization is centered around one currently active symbol. Then other nodes are positioned up/below/left/right of it to encode additional meaning into the layout. Nodes are bundled together to de-clutter. In Code Maps the user starts with a certain symbol and then adds more and more symbols to the visualization, building a map. Filters can be applied to de-clutter.

* Sourcetrail needs to index all source code upfront, but afterwards querying and visualization generation is fast. I'm not certain, but to my knowledge Code Maps indexes only on demand/only partly upfront, so queries are not as instant.

If you are interested in Software Visualization, you can watch my recent talk at ACCU 2019, where I go through some design decisions of our visualization: https://www.youtube.com/watch?v=Gvmp3Gzhv8o


Thanks a lot.


Sourcetrail dev here. Thanks for your extensive feedback!

A lot of things have changed since Sourcetrail was called Coati (about 2 years ago). We put a lot of work into improving indexing speed, handling multiple configurations/different languages within one project and reducing "sluggishness" in the UI. Sourcetrail runs now smoothly on code bases with multiple MLoC.

But I agree with your suggestion regarding data-flow analysis. That is what understanding unfamiliar source code often really comes down to. We also had some user requests to go that direction. We never really looked into this area so far, because it is a lot harder to collect the data (dynamic analysis) and it needs a whole new user interface.

While the data collection is solvable (Visual Studio debugger can do it, I think), I'm not sure whether it is really possible to come up with an effective user interface that shows which paths the different values take.

To explain why this is hard, let me use a metaphor: With data-flow you need to deal with a new dimension: time. Sourcetrail can handle dependencies between definitions really well, before the code is executed: space. What you want is a tool that combines the two into a space-time exploration tool of source code. Not sure if possible at all, but very interesting to think about. :)


I just watched your talk, and found it very interesting, thanks for sharing it!

I hope you can do the data flow analysis. That would be so cool and SO useful.

Python certainly has the ability to collect the data. A couple existing tools make use of this.

For example, MonkeyType and Birdseye observe the values that are passed around by tracing execution during test runs (or even during a production run, but the performance impact can be substantial). https://github.com/Instagram/MonkeyType https://github.com/alexmojaki/birdseye

Even more information can be gleaned from the gc module (see https://mg.pov.lt/objgraph/ for a tool using it).

These tools make good progress, but I'd be very interested to see what a software-visualization expert would come up with.

I'd also love to see how a concurrent execution tree can be visualized. For example, the wonderful Trio concurrency library is built on a tree of concurrent tasks. It would be so cool to see which events are happening at the same time. I've never seen a visualization of how it'd work. (The Trio team is also extremely friendly on their Gitter chat.) https://github.com/python-trio/trio

Structured logging is yet another exciting area. Can we generate visualizations from logs in OpenTracing/OpenCensus format? Some existing work is https://github.com/jonathanj/eliottree

Gary Bernhardt's "A whole new world" talk https://www.destroyallsoftware.com/talks/a-whole-new-world proposes extracting data from logs and highlighting important lines from tracebacks and and slow lines from trace timings in the editor.

I haven't used Structurizr, but it seems interesting. Do you have thoughts on it? https://structurizr.com/ has a python port at https://github.com/sixty-north/structurizr-python


Thanks, this looks really nice! It doesn't seem to resolve symbol names however, so you can't see how different functions/definitions are related to each other and navigate between them. But the same author is working on another project that seems to go in that direction: https://github.com/Bogdan-Lyashenko/codecrumbs


That looks really awesome! Thanks for sharing or I'd miss it.


You should give Sourcetrail a try! It's a tool for browsing and understanding unfamiliar source code based on LLVM/Clang LibTooling.

https://www.sourcetrail.com/



Thank you for your input! I wouldn't call it a feature request though, I'd say it's another tool. But, you are right, exploration of dynamicly analyzed code would also greatly benefit understanding.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: