&gt; Interesting architecture, having the core communicate with the GUI front-end over pipes via JSON. That certainly eliminates a whole class of pain around inter-language glue.<p>If my experience is anything to go by, then it also <i>introduces</i> a whole new class of pain around gluing things together.<p>You can alleviate a lot of it by using a real and backward&#x2F;forward compatibly extensible(!) schema language for the interchange language. Your interchange language should also support some form of &#x27;algebraic data types&#x27; just for maintaining general sanity.