Hey HN!<p>Recently, I'm thinking a lot about "practical software freedom" as branded by GNU Guile (aka. "customize and extend while running" + self documenting/live introspection).<p>I really understands how cool that can be when it's done well, and I see many successful project doing it this way (Guix, and Emacs obviously, but also outside of LISP world there is awesomewm and many others).<p>I've already tried integrating Guile in some hobby projects written in other languages, so I understand how it works, although I don't use it on a daily basis.<p>On the other hand, most of the time I'm using (and tweaking) programs that are extended and configured externally through IPC (e.g. sockets, d-bus), like i3 or NetworkManager. I'm more familiar with running helper programs (or a front-end) that I wrote in the language of my choice with a library, using d-bus discoverability features when available or after reading some documentation.<p>I often hear that this second way is "only almost as powerful as having a real programming langage built-in", but I'm not sure I understand why. I realised I don't really know the practical pro and cons of each way.<p>From where I stand, I see three main advantage of the IPC's way and none for Extension Language (sorry) :
- It's language-agnostic, at the reasonable cost of writing libraries (vs the cost writing and maintaining e.g. a Lua->Scheme compiler like Guile's folks are doing)
- It can be extended remotely through network
- When using d-bus almost everything is standardised and runtime cost is <i>never</i> an issue (at least from what I've seen so far in 10+ years).<p>Obviously the reason why I'm seeing things like this is because I never had the opportunity to learn the advantages of the Guile's way, so... I'd like to learn some bits from you :)<p>I know there's a lot of enthusiasm here for LISP-related tech here, so if you feel like proving me wrong and explaining me why the extension language path is better, I'm all yours!<p>PS: I really don't want to start a flame war lisp vs not-lisp or d-bus vs not-d-bus, I'd like the conversation to stick mainly to IPC vs Extension Language. Thx!