Sourcetrail 2017.4

Author: Eberhard Gräther

Sourcetrail, our source explorer for C, C++ and Java, is now free for non-commercial use! With our new release version 2017.4 we decided to abandon our Private/Academic License option and instead make Sourcetrail freely available to all C, C++ and Java developers for non-commercial purposes. The new release also offers a new on-screen search feature, full Java language coverage, improved C++ template indexing and much more (please continue below for more information).

Now Free For Non-Commercial Use

With the release of Sourcetrail 2017.2 in June this year we started providing free Private/Academic licenses to OpenSource contributors and students. A lot of developers made use of this offer, which also produced some extra workload for us. Student applications had to be checked and OpenSource contributions needed to be verified. In turn, offering the Private/Academic License in our store became less relevant. Who was really left to make use of it?


My lightning talk about Sourcetrail at CppCon 2017.


Last month I was attending CppCon and it quickly became apparent, after explaining our license/discount model to several developers, that it has grown too complicated. It was obvious that we needed to make a change.

Our Initial Licensing Model

Our initial licensing model consisted of a Commercial and a Private/Academic License. Sourcetrail is a new kind of tool, so it was aimed at verifying whether or not developers would at all be willing to spend money on a product like this. All our initial users were paying customers, which created a tight feedback loop that greatly benefited our progress.

But our focus has changed since. Sourcetrail is now a finished product and gathering feedback is not as important anymore. Instead we need to shift our attention to help developers overcome their hesitance to integrate a source code exploration tool into their development workflow. Having interested users jump through hoops of test licenses and discount applications, that also involve sharing their e-mail address with us, is not beneficial to that.

And even if the license fee is small, developers just don’t like to pay for developer tools. Their employers should deal with this instead.

The New Non-Commercial License

We came to the conclusion that it’s time to abandon our Private/Academic License. We want to thank every developer that has purchased it. You have pushed our product development with both your feedback and financial support. Thank you for that!

Instead we switch to a free for non-commercial use model now, which we define similar to Creative Commons licenses:

Non-commercial use means not primarily intended for or directed towards commercial advantage or monetary compensation.

To opt in to our Non-Commercial License option, simply choose the Non-Commercial Use option on your first start of Sourcetrail and confirm that your use is solely non-commercial. Commercial users will still need to provide a license key, purchased from our store, or use a Test License for evaluation first.

Select your license option after launching Sourcetrail.

We put a lot of effort into making Sourcetrail the best tool available for getting to know unfamiliar source code. It has been accelerating productivity of our current users for months now. With this change we hope that Sourcetrail will become more accessible to all developers out there.

New in this Release:

  • Free for non-commercial use license
  • On-Screen search in graph and code
  • Full Java support with Eclipse JDT and project setup from Gradle
  • Updated C/C++ indexer to Clang 5.0.0
  • Better coverage of C++ template member specializations
  • Distinguish between C++ lvalues and rvalue references
  • Type filters for search autocompletions
  • Fixes and improvements to our Visual Studio plugin’s clang Compilation Database exporter, with special thanks to @dakotahawkins for contributing

You can download Sourcetrail 2017.4 here. The full changelog is available here. We will outline the most important features new to this release below.

On-Screen search in graph and code

So far we didn’t have a way to search within the currently visible contents of the graph and code views. This was especially annoying since we are all used to a search feature in our code editors and web browsers. Accordingly, there was high demand for this feature by our current users. I’m happy to announce that it’s finally implemented.

On-Screen search finds matches in both the graph and code views.

You can display the On-Screen search bar at the bottom of the main window using the menu action Find -> Find On Screen, or by simply using the shortcuts Ctrl/Cmd + D or /. After entering the search query, matching text in graph nodes and source code will be highlighted. Use the arrow buttons on the right of the search field to navigate the matches and move them into view. You can also just press Enter and Shift + Enter for this. If you want to just match within either the graph or code view, you can select the preferred views with the checkboxes next to the search field. To close the On-Screen search bar click the x icon or press ESC.

Full Java support with Eclipse JDT and project setup from Gradle

We are proud to announce that we made great progress on our Java support and are now ending the beta status for that language. We switched our Java indexer to Eclipse JDT which covers more language semantics and also greatly reduced the runtime of the indexer.

Additionally we also extended our Java project creation to provide a setup for Gradle projects. Simply enter the path to your build.gradle file and Sourcetrail will extract all .java source files and .jar dependencies.

New Java project setup option Gradle on the left, choosing the build.gradle file on the right.

Better coverage of C++ template member specializations

We finally implemented some missing links in template specializations. So far we only showed specialization relationships between classes and their methods. Now we also cover static and non-static member variables, enums and enum constants. With that it’s easier to see specialization relationships and follow them when activating one of these symbol types.

Before and after comparison of template member specialization edges of different member types.

Distinguish between C++ lvalues and rvalue references

Sourcetrail now records wether a type is used as an lvalue or as an rvalue. This allows you to see where your move constructors and move assignments are actually called.

Use Sourcetrail to see where move constructors are used.

Type Filters for Search Autocompletions

With the new release you can use filters in the search bar to see only those symbols with a certain node type (e.g. you can just search for methods or files).

Use filters in the search field to only see autocompletions with specific symbol type

Closing comments

Thanks for reading and please share if you like where we are heading! And don’t forget to download the new release build.

Follow us: mail - Twitter - Facebook - Google+

Sourcetrail 2020.2

Update to LLVM/Clang 10, Python indexer updates, revised Linux Tarball package and some fixes and usability improvements. Continue reading

Sourcetrail 2020.1

Published on March 31, 2020

Sourcetrail is now free and open-source software

Published on November 18, 2019