Coordination, composition, and coupling: Polyphonic C#
- Not immediately REST-related, but tangentially interesting...
Anybody looked at Polyphonic C#?
Luca Cardelli and friends are plowing some fertile ground yet again.
My initial reaction: this (the idea of chords and declarative
coordination / orchestration through method signatures) is perhaps the
most significantly innovative thinking about the coordination problem
since Gelernter's Linda. (Granted, Polyphonic C# is a re-hash of some
thoughts that have been showing up in theory-land (the join-calculus
offshoot of Milner's pi-calculus) and in language-land (some offshoots
of O'Caml) but this simplifies, unifies, and brings this to real-world
But I'm concerned about it. While it does tackle the coordination /
orchestration problem, it does so within the traditional framework of
type-specific interfaces / OOP. I'm worried that this might
significantly increase coupling and impede composition. It seems to
move counter to the nuevo-retro feel of e.g. REST and the newish
emphasis on generic interfaces, composibility, and "wide" values.) In
contrast, the pi-calculus lays groundwork for solving the coordination
problem while keeping coupling dynamic (potentially run-time
configurable) and while explicitly emphasizing composition. Linda, in
contrast, didn't have much to say about orchestration per se (states
are implicitly captured in the history-driven use of the Linda
sublanguage) but made decoupling in both time and space paramount.
I'm conflicted on this. It sure does look new, neat, and useful. But
I'm worried that it takes a fundamentally broken model and hides the
warts under a sexy new veneer --- tackling one rather smallish problem
while actually exacerbating several other existing problems.
Extending this idea to the Web would seem to me to be pushing down that
nasty SOAP-RPC road.
Maybe there's a way to capture this kind of declarative
interface-driven orchestration in something like Mark's RDF-Forms.
Just musing out loud...
PS - mention of something called "Web combinators" in the refs in one
of those. Anybody here w/ first-hand info on this? I can chase links,
but a paragraph summary of the above would be useful. My guess is that
it's nasty type-specific adaptoid stuff, no?