Saturday, September 30, 2006

Shared Nothing: the next big issue for UCAs (Underdogging Chasm Activists)

You know the drill. Some problem X occupies the minds of those geeks (who are paid to/who can afford to/who cannot but) spend time looking over the horizon at what is coming next.

For each problem X, a family of possible approaches jocky for position on the leaping side of the chasm

From time to time and underdog actually ends up winning. From time to time and underdog ends up winning REAL BIG.

Maybe HTML/HTTP is the biggest WIN BIG underdog of all time. In its day, TCP/IP was an underdog. So was the concept of a PC. So was RDBMS...

In technology (and in sport come to think of it) I have the genetic marker that predisposes me to root for an underdog pretty much every time. Call it a character flaw if you like.

I've spent (and continue to spend) time shouting across the chasm wearing the tee-shirt of some underdog: SGML, Python, Desktop Ubuntu, REST...

Those are the happy memories because, to varying degrees, I've seen these progress across the chasm. (Ok. On the way, SGML was stripped down and renamed to XML but that is just a detail.)

Mind you, I also spent some time rooting for underdogs that never made it. Like a gambler, I'm better at remembering the good times rather than the bad times.

I rooted for Clipper[1]. I rooted for SMART (a DOS based 4GL so old I cannot find a href to it!). I rooted for DSSSL. I rooted for Lotus Improv...

I'm still very hopeful about underdogs like temporal decoupling/SEDA, Jython, Relax NG, semantic steganography, XML pipelining...

Anyway, the reason for this post is that as a fully paid up Underdogging Chasm Activist (UCA), I have a new tee shirt. Waaaayyyyy out there on the encumbent side of the chasm, truly embedded in current thinking about s/w is the concept of a thread and the concept of shared resources across threads and semaphores and spin locks...

My latest t-shirt claims this is not the way to go. Programming is hard enough without lacing the entire exercise with deep non-determinism.

My latest t-shirt claims that a "shared nothing" model baked right into the programing language - such as that epitomised by Erlang - is a much saner way to deal with the phenomenal processing power of tomorrows 80 core processors.

Yes, you can layer a shared nothing architecture on top of a language that does not hand-hold you towards a shared nothing design, but the scope for error is huge. Remember the days of malloc anyone? Same idea. You can do sane memory management in C but the scope for error is high. Too high given that s/w enineering needs more practitioners than there are coding gods.

Anyway. Here I am shouting across that chasm. Shared Nothing is the future folks.

[1] Fans of code blocks looking at, say, Ruby, might like to read about the history of code blocks in Clipper.

No comments: