Comparison against tach?
Hey! I stumbled across this tool as at my company we heavily use tach as it is extremely helpful in managing our monorepo. However, tach is unmaintained so we need to look for alternatives.
I was wondering if you are aware of tach and what you would see as large differences between their approach and your approach? Or would you even be interested in forking tach or merging it with import-linter? Just curious about your thoughts and feeling out the waters here.
Thanks for your great package and making it available open source!
NB: not affiliated to tach or gauge.sh in any way, just a very happy user that is now on the hunt for alternatives
Hi, thanks so much for raising the issue.
I am aware of Tach but haven't used it in a real project myself. I don't intend to fork or merge it with Import Linter. But it's a great idea to provide some kind of comparison / migration guide.
First impressions are that Tach is much stronger on user interface / getting started, in particular in generating initial configuration based on a pre-existing code base - Import Linter doesn't do that. But I think Import Linter should be able to lint a code base in the same way as Tach (possibly with more options) so I would be interested to add support for anything on the linting side that is currently only possible with Tach.
If you (or anyone else reading this issue) do try moving to Import Linter, I would be interested to know what your experience is. Perhaps we could write it up as a blog post, linked to from the README.
Nice, thanks for your quick response! I like the collaboration idea. When we prioritize researching this alternative I will let you know about my findings.
Op do 17 jul 2025 om 09:33 schreef David Seddon @.***>:
seddonym left a comment (seddonym/import-linter#276) https://github.com/seddonym/import-linter/issues/276#issuecomment-3082945343
Hi, thanks so much for raising the issue.
I am aware of Tach but haven't used it in a real project myself. I don't intend to fork or merge it with Import Linter. But it's a great idea to provide some kind of comparison / migration guide.
First impressions are that Tach is much stronger on user interface / getting started, in particular in generating initial configuration based on a pre-existing code base - Import Linter doesn't do that. But I think Import Linter should be able to lint a code base in the same way as Tach (possibly with more options) so I would be interested to add support for anything on the linting side that is currently only possible with Tach.
If you (or anyone else reading this issue) do try moving to Import Linter, I would be interested to know what your experience is. Perhaps we could write it up as a blog post, linked to from the README.
— Reply to this email directly, view it on GitHub https://github.com/seddonym/import-linter/issues/276#issuecomment-3082945343, or unsubscribe https://github.com/notifications/unsubscribe-auth/AI3UPMNUFRTITRCKAIFNWFL3I5GVXAVCNFSM6AAAAACBWZBNLSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTAOBSHE2DKMZUGM . You are receiving this because you authored the thread.Message ID: @.***>
@gwdekker I've never heard of Tach before, but it looks like the functionality regarding (external) dependency management overlaps with deptry, which I'd recommend checking out if you haven't done so before.
Also, for what it's worth, I've made a script that wraps grimp to automatically infer plausible layered architecture contracts for an existing project:
https://github.com/usethis-python/usethis-python/blob/main/src/usethis/_integrations/project/imports.py
I include this in a CLI that lets you automatically add the corresponding Import Linter configuration, which you can run using uv:
uvx usethis tool import-linter
Also, for what it's worth, I've made a script that wraps grimp to automatically infer plausible layered architecture contracts for an existing project
Wow your tool is so cool @nathanjmcdougall, I'll be giving that a try. Thanks for sharing.
I gave usethis a try and my favourite bit was Import Linter. It forced me to think about some difficult questions about my code base which I'm still grappling with. Already, my project structure is more logical. Very cool. Thanks.
@gwdekker I'm currently working on a tool very similar to tach. I call it TangleGuard: https://tangleguard.com/
It's currently a desktop app. A CLI version will be released soon too. Rust is currently the only supported language, but if there is any interest, I can add support for Python too. Let me know :)