For an extensible system, changes should be easy to apply. If I have to learn a new build tool, recompile the app and restart it, I am exponentially less likely to bother.
- Emacs. Changes are extremely easy to apply: you write a function, you evaluate it.
- Smalltalk. The same.
Linux kernel. Modules make it more extensible than other monolithic kernels. While I can’t re-define functions on the fly, Linux kernel allows re-loading modules on the fly.
- Micro-kernels are arguably even more extensible.