Knigge was born out of a desire to standardize dealing with behaviours and their implementations.
As great fans of
mox we longed for an easy way to swap out implementations from the configuration which lead us to introduce a facade pattern, where a module’s sole responsibility was loading the correct implementation and delegating calls.
This pattern turned out to be very flexible and useful but required a fair bit of boilerplate code.
Knigge was born out of an attempt to reduce this boilerplate to the absolute minimum.
You can read about our motivation in depth in our devblog.