Friday, March 16, 2007

SOBs

A lurid headline is a proven way of grabbing attention. SOBs are Serviced Objects, objects that can be downloaded to your machine from a server, and thereafter serviced by it. Any modifications you make to the SOB get saved on the server, and any updates to the SOB by the service provider get delivered to you automatically. The former provides the SOB (and you) with backup, audit trail, and sharing across multiple users or devices. The latter provides for bug fixes and feature updates to the SOB on an ongoing basis.

All of this sounds suspiciously like a web app, except the fact that the SOB gets downloaded - which means it is available off line, can use all the features of your machine and in general doesn’t suffer the limitations of web apps. Another important distinction is that the core underlying technology is hotswapping, so the applications don’t need to be restarted when updated.

The term I usually use for this idea is Objects as Software Services. It is more descriptive than SOB, but could be confused with generic stuff like SOAs and conventional web apps. Another descriptive name would be Live Network-Serviced Applications (LNSA). The “live” distinguishes them from most existing NSAs, which typically need to be taken down before being updated.

This leads to us to NSOOP, Network-Serviced Object Oriented Programming, and its support via NSOOPLs (NSOOP Languages). Though I just made these terms up, that is a big part of what the talk is about: language and platform features that enable LNSAs.

9 comments:

I watched the video, and it has had me thinking ever since. I am an agile coach, and a see a lot of parallels with the ideas in the video and Agile development. The common theme is change and how you deal with it.

The old idea of software as an artefact and of waterfall software development is that some how the development process is deterministic, fixed and pre-defined. This is OK for software that solves fixed problems like a dinks dispenser controller, but IMO when you move onto more people centric applications like the web, or business, the real challenge becomes creating software that deals with change.

So the idea of systems that evolve organically and where bits rot as you describe, is central if software systems are going to grow in complexity and deal with human scale problems like better communication and collaboration amongst individuals and communities.

I see late-binding and what I've labelled 'blue' OOP as central to this and have created a series of blogs posts about Object Technology which were inspired by Alan Kay’s keynote OOPSLA speech in 1997 were he discusses the ‘pink’ and ‘blue’ idea planes. So far the responses to my posts haven’t been that positive.

I think generally, that programmers like the idea of a fixed, static, deterministic model, and aren’t that used to using the other side of their brains :^)

I look forward with interest to see what other tasty tit bits you have in store for us all.

If I were to build such a beast right now, I would use Smalltalk. Lisp would work as well.Lisp and Smalltalk runtimes remain the best suited for this sort of thing, because they are designed to allow live incremental updates to running programs, while being at least moderately performant.

The implementations of popular scripting languages remain immature in comparison, though this will change over time.

When (not if) Javascript implementations improve in terms of performance, they will be very well positioned as a vehicle on which to build on due to their ubiquity in web browsers. We see hints in this direction in, e.g,. Adobe's Apollo release, but it is still a long way from what I'm advocating.One also needs some sort of standardized object store across browsers, and that will take time.

I don't expect any of this to happen tomorrow, but over time I see compiling something Smalltalk-like (conceptually; surface syntax would probably be more conventional) into a web browser/javascript combination as the most likely path toward realization.

Most importantly, The mindset of programmers has to change - and that is the hardest challenge of all. Today people are discussing the merits of things like OSGi, which are light years removed from where you want to be. So be patient.

Oops, hit enter too soon... I meant to say, that given JavaScript VM idea and Dan Ingall's SmallTalk background it may evolve in that direction. But I don't see any technical details about the project :-(

The Rich Internet Application space is indeed heating up. I have been looking at this for the past 3 years, and had many conversations about it with Dan Ingalls. Dan is an amazing guy, and has some very talented people working with him.

Right now, Sun is pushing JavaFX (formerly F3), a project by Chris Oliver. It's based on Java and Swing, and so is politically attractive.

However, it's along way from these technologies to the SOB vision. Adobe's Apollo is a bit closer, but I think it's too early to say how things pan out.