Why Sourcetrail?

The reality of software development.

As software engineers, we know that we have the skills and capacity to actualize all of our ideas. But sometimes, it’s more difficult than we expect. Professional software development is often a team effort. Working in teams allows us to solve harder problems, but it comes at a cost. When a codebase grows, it becomes increasingly complex to track every addition. Consequently, more and more effort is spent investigating the current implementation while less is spent on writing new features. New Developers will often have to spend days or even weeks browsing legacy code to familiarize themselves with the implementation before actually becoming productive.

Programming languages are not the problem.

Programming languages are constantly evolving. They reduce the overhead a software developer needs to keep in mind by abstracting away more and more limitations of the machine. But regardless of the language, if a project reaches a certain size, it's hard to keep a consistent mental model of the source code's structure. The problem here is not the poor abstraction of the language, but the high information density of code. Every line in the source code has a purpose and as software developers, we spend most of your time searching for those small pieces that are currently relevant. Why can't we take a step back and see how the components connect with each other, without constantly looking at every detail of code?

We already have enough code editors.

When it comes to writing code, we have a multitude of options to suit whatever workflow we desire. What is harder to address is how efficiently we can understand an existing implementation. While there are many great code editors out there, they’re designed for writing code and are not made for navigating the implementation at hand. Sure, every developer has their own strategy of finding information within source code, from searching documentation to looking at tests, or asking the original authors when available. But when you’ve exhausted all these options, you are inevitably left with digging through code. And let’s face it—digging through is something that most programmers would rather avoid.

The computer knows it all!

Understanding the fundamentals of your software architecture shouldn’t be that hard. Seeing which objects are involved in a feature and the paths that it takes through the source files should be a no-brainer. The funny thing about all this? Your computer knows it all. By using a compiler or interpreter, your computer already knows how the language works. It knows what paradigms exist and because it's turning your source code into executable instructions; it knows every single piece of information within the entire codebase, including: where functions are called, how types get instantiated, where variables get changed. Accessing this information was cumbersome for us developers so far, but is easily possible with Sourcetrail.