4 ms·
One part of the article that resonates with me is the need for composable software that uses a more sophisticated mechanism than Unix pipes to connect component
by linguae 4y ago
One part of the article that resonates with me is the need for composable software that uses a more sophisticated mechanism than Unix pipes to connect components to provide an integrated experience. Over the past few years I've been interested in the idea of component-based software through IPC protocols and metaprogramming. This year I've been playing around with Plan 9, and I've found its ideas of component-based software through the 9p protocol interesting. I also got to spend some time using acme, which is one of the editors that comes with Plan 9. What makes acme interesting is that I can run external commands in the editor to perform various tasks, ranging from text manipulations to tasks such as compiling code. Each output shows up as its own window pane. One could create a sort of IDE using acme's ability to run external commands.
While acme can seamlessly support external commands, a limitation, however, is there is no metaprogramming facility for changing the functionality of the editor itself. This makes acme less powerful than Emacs, which has the Emacs Lisp subsystem for extending and modifying the behavior of the editor. For example, suppose I wanted to add syntax highlighting to acme. Doing so requires modifying acme's source code. However, if acme provided some type of metaprogramming interface to the editor, then I could write code adding syntax highlighting. Ideally, this metaprogramming interface should be language-agnostic and take advantage of the 9p protocol. This would make acme just as powerful as Emacs, and in fact would give acme an advantage since extending acme won't require a specific language.
Come to think of it, some of this metaprogramming capability may already be present in Plan 9 through the use of the /proc directory, thus obviating the need for application-specific metaprogramming mechanisms, though its offered at the binary level. I'll have to investigate this some more, though.
My thought is that sophisticated IPC protocols and support for application-level metaprogramming can provide the rich interoperability that the writer of the article wants for creating composable development environments.