Fork me on GitHub
#polylith
<
2023-09-17
>
tengstrand04:09:14

I just https://clojurians.slack.com/archives/C06MAR553/p1694925153126529 that Polylith in a Nutshell has been updated!

👍 8
polylith 7
lodin04:09:54

I have read a couple of explanations and also seen the original videos explaining Polylith, but I must be missing something and looking at it with the wrong eyes. It seems to be "polymorphism at build time", and that makes my mind go to .h files and Makefiles. The interface idea seems to be an incarnation of .h files and linking, and the incremental build idea seems to also be make-like (`make` does not rebuild a target if timestamps has not changed, and works recursively). I found in a footnote that a difference is that a brick specifies its libraries, but not dependencies on other bricks. It this the core contribution of Polylith, or am I missing something? Thank you for your patience. 😅

tengstrand05:09:17

Yes, it's polymorphism at compile/build time! But that's not all. C already has this compile time separation where the .h header files represents "compile time interfaces" and .c files the implementation, so that would be the way to go if you use Polylith in C. In the Clojure implementation of the Polylith tool, you don't have to specify the dependencies in a file (similar to a Makefile), instead, this is figured out by the tool. Here we talk about incremental testing, and not incremental builds, and that is not so common out there, and with Polylith it's pretty easy to add support for that, because we already have the dependencies calculated, and small decoupled "snippets of code". The new high-level building blocks together with the standard directory structure, allows us to build tooling around Polylith and more easily reason about our systems. Here are some https://polylith.gitbook.io/polylith/conclusion/production-systems to give you an idea. The decoupling between development and production and the single development experience, is not something you automatically get, regardless of language.

👍 1
lodin04:09:54

I have read a couple of explanations and also seen the original videos explaining Polylith, but I must be missing something and looking at it with the wrong eyes. It seems to be "polymorphism at build time", and that makes my mind go to .h files and Makefiles. The interface idea seems to be an incarnation of .h files and linking, and the incremental build idea seems to also be make-like (`make` does not rebuild a target if timestamps has not changed, and works recursively). I found in a footnote that a difference is that a brick specifies its libraries, but not dependencies on other bricks. It this the core contribution of Polylith, or am I missing something? Thank you for your patience. 😅