On Jan 3, 2008 9:59 AM, phil jones <[EMAIL PROTECTED]> wrote: > > Hi everyone, > > the previous excellent discussion on wrapping emacs seemed to bring up > an interesting topic. > > What would be the right messaging architecture to passing information > between components of an IDE? > > Something which has impressed me recently is Humanized's Enso. ( > http://www.humanized.com/enso/beta/enso-developer-prototype) It's > become indispensible to me in Windows. > > I noticed that you write new services for it as XML-RPC servers and > they provide a simple Python example which is easy to get running. I'm > now thinking of putting a couple of my own Python programs behind an > Enso front-end, which effectively means making them XML-RPC servers. > > So my question is, is this too loosely coupled an architecture for a > pluggable IDE? Is it too heavy? Is it still likely to be too heavy in > a couple of years time?
Really it's a question of in-process, out-of-process, synchronous, or asynchronous. Using Enso, it seems like the idea is to build everything out-of-process synchronous (xml-rpc is typically implemented as a call/return semantic, not a fire/forget/callback semantic). I'm personally a fan if in-process/synchronous for the vast majority of operations. It keeps things predictable. Allowing out-of-process does allow for alternate implementations of parsers, plugins, etc., but it's not something that I personally would want. Having async calls can be convenient (I use them myself), but typically usage is rare, so it may not be a big deal. - Josiah
