The Polylith team has just released a big update to the Polylith architecture.
Now it's even simpler to grow software out of composable LEGO-like building blocks.
The whole team is here to answer your questions.
Can you sum up what's new, or point me to a changelog? I took a serious dive into it in late 2019, but ended up pausing because of tooling deficiencies - mainly dealing with symlinks, iirc.
I was really impressed with how it encouraged decoupling, and it has positively affected how I write code and think about dependencies.
We've simplified the architecture, by reducing the number of concepts down to just three: components, bases, and projects. The tool is simpler, gives faster feedback, and a better visualisation of your projects, due to (amount other design changes) switching from Leiningen to tools.deps.
The original version of the tool used:
- Leiningen to compile and build the artefacts
- symlinks to keep the code in one place (but allow for reuse in multiple artefacts)
- "workspace interfaces" (empty component interfaces) to guarantee the decoupling between components
The new version of the tool uses:
- tools.deps to build the artefacts and remove the need for symlinks
- static code analysis to remove the need for "workspace components"
Nice! I went through the poly tool readme and I'm really impressed with the improvements. One thing I don't see highlighted that I'm curious about: have you used it to build cljs projects? Since shadow-cljs has deps.edn integration, I think it could theoretically work, though the repl might be a bit twitchy.
I was really impressed with how it encouraged decoupling, and it has positively affected how I write code and think about dependencies.