Saturday, July 08, 2006

You Don't need no stinkn' IDL

Mark Baker says you don't need no stinkn' IDL:

Interoperability requires agreement, and agreement begets commoditization. If all the interfaces are the same, what would you describe?

And I agree.

As I have said before, I worked on CORBA systems at one point and somewhat "dug" the whole IDL thing. My little brain wanted Web Services to work the same way so when I have used web services I have gone the wsdl2java or xsd.exe route in .NET (no idea what .NET is calling it now .... this was a few years ago). I still think that wsdl2java is far less evil then java2wsdl which is just the most ass-backwards thing I have ever heard of, but the whole thing is an entire waste of time and results in entirely too much coupling and misery.

And it's just wasted coupling and wasted misery. Don't you want to spend your energy on better miserable things then this?

Update a half an hour later: Goodness, that brawl on the SOA Mailing list is still going on re: REST vs. WS-*.

In the context of that Stefan Tilkov, makes another good point on this topic:

OK, let's approach this differently, then - what, exactly, is the point of having an interface definition language if you're not generating code from it?

Removing the operation part from the contract (because it's static in case of REST) means you only need to generate code for the different schemas (if you want to, which I'm firmly opposed to). There's tons of tools to do this (e.g. JAXB in Java) supporting XML Schema. Why would you need anything more if you fix the set of operations?

Ah yes code generation. Another thing I used to think was neat. It's pure evile and don't let anybody tell you different.


Sarge said...

IDLs are like perpetual motion machines and Philosopher's Stones: they're a great story that can't exist in reality. Since the organizations that need to interoperate are run by people and people still haven't found a way to write contracts that don't need adjudication, why do we think we can write an IDL that won't require modification? It's a pipe dream. Many IDLs have been tried and all have failed. It's time to embrace the reality and just move on.

Code generation is great...for your doctoral thesis. It sure is pretty neat that we can write code that writes code for us. But it's like when Scooby Doo and Shaggy build a six-foot-long straw out of ten regular straws: it's unwieldy and prone to falling apart just when you're getting the goods. If you need a higher-level programming language closer to the problem domain, by all means use one. But note that compilers used where it really matters don't use other programming languages as an intermediate language. It's not because they can't; it's because it's smarter not to. If you don't want to write your own programming language, look at one that allows you to extend it, such as Lua.

fuzzy said...

you == not dumb my friend