Tanagram: Tools for complex codebases, inspired by 5 years of building at Stripe
tanagramdev.comWill be watching closely. Complex codebases are a bit of a hairball and I'm actually curious what techniques you can use to focus attention in on all the links that actually matter in the service of safe change management. It is a surprisingly difficult task to pull all these (sometimes) illegible threads, and, given my experience, I'd be surprised if a tool can actually snipe it one-shot.
But I'm optimistic here given your current approach—entrypoints and illuminated indirection ("related code you didn't know existed"—feels like what I'd want ready to hand.
The problem is only going to get worse with all the AI generated slop code filling PRs now, too. Goddangit
Thanks! Getting all the possibly-relevant related code isn't too hard; the hard part is filtering down to what's relevant. So I think specific use cases (e.g. "how do I get from a known entry point to some method/property/etc") is gonna be key.
I love the semantics of the UI here; helping humans wade through what the code _means_ as well as what it is doing.
"These tests/prod methods/data models/etc are impacted" really matters to me because that's most likely what I'm trying to do when I'm grepping for `verified` and adding a bunch of path constraints `!model !test`, etc. Leveraging that further for automations like "run all impacted tests" is another game changer for many companies.
Can this help me draw flowcharts and the like? I recently did a bit of a refactor and "show me the stack of calls from the API layer leading to method m" was a lot more work than it should have been!
We're long overdue for tools like this. Especially with the (commendable) rise in code review. The downside of code review with large codebases is that I'd get pulled into parts of the codebase which my team ostensibly owned, but where no one on the current team had significant context. Usually these code reviews were part of bigger rewrites/refactors where the author/their tech lead knew more, but not necessarily all.
This turned into theater. We had no choice but to rubberstamp. The “review” was more of a heads up than a real review request because no one can get up to speed without becoming a blocker. Something to improve monitoring reflexes or reaction time in an incident. Frankly these days an LLM would easily clear the bar for the “review” part of those reviews. But even the LLM's context could be significantly enhanced with a tool like Tanagram that has actual architectural context. Looking forward to updates!
Thanks Mahmoud! Does the code review aspect of this demo resonate more with you than the authoring part?
Certainly useful for authoring, since that's what I do most now as a founder. Most of my code is pretty fresh. While I can give you some feedback, I probably wouldn't pay more than a couple bucks a month. Meanwhile the larger, older codebases at more mature companies have much greater need and budgets.
Love the idea.