Wednesday 18 March 2009

Seaside at The Chasm

I've seen two references this week to Geoffrey Moore's Crossing the Chasm. I haven't read it yet but I've added it to my list.

Kent Beck describes the book's theory of market segments like this:

  1. Enthusiasts — will try new things for the sake of novely
  2. Innovators — will try new-ish things for the sake of business improvement in spite of some risks
  3. Early majority — will adopt proven products provided there is no perceived risk
  4. Late majority — will follow in adopting established products
  5. Laggards — the name says it all

He then goes on to highlight these observations of Moore's with regard to high-tech products:

  • The gap between innovators and the early majority is particularly wide (the “chasm” of the book title), stymying many promising innovations
  • Marketing is fundamentally word of mouth, but people in one segment don’t converse with people in other segments. This creates a chicken-and-egg problem in gaining traction in a segment.
  • Messages that work for one segment don’t work for the next. The time to switch is when a product seems to be gaining momentum, because that segment will soon be exhausted.

Eric Sink adds:

One of the ideas in [the] book is that new innovations don't go mainstream until they become a "whole product".

Now Kent is talking about JUnit Max and Eric is talking about Distributed Version Control Systems (like git, Mercurial, and Bazaar) but this got me thinking again about Seaside's positioning and how to grow our user community. I think GLASS, by providing integrated persistence, is a big positive step towards making Seaside seem like a "whole product". But what else is missing? Deployment/admin tools and documentation spring to my mind and I'm hoping to make a start on the latter with some of the posts on this blog. But what else?

Growing support by major Smalltalk vendors helps reduce the apparent risk within a small segment of the market but, for many people, Smalltalk itself is seen as a major risk. So part of making Seaside less appealing would involve either de-emphasizing its use of Smalltalk (not really going to work—people will notice eventually) or reducing the apparent risk of Smalltalk itself. That's no small task and the vendors, I'm certain, have this at the front of their minds. Still if anyone has any thoughts on how Seaside in particular can contribute to that effort, I would love to hear them.

One of the major perceived risks associated with Smalltalk, of course, is the relatively small number of developers using it. Thus we have a feedback loop there: more users means less risk, which means more users, and so on.

So three important questions, I think, are:

  1. What does Seaside need in order to be considered a complete product?
  2. What can Seaside do (other than growing the community) to reduce the perceived risk of adoption?
  3. What can Seaside do (other than reducing perceived risk) to grow the community?

No answers yet; just questions. If you have any thoughts, please share.


Anonymous said...

Julian, Good post!

To throw a thought out there...perhaps one of the missing pieces for Seaside lies along the web designer/web developer axis...

As a (long time) developer, I know that I shouldn't be the one designing the look and feel of a website (unless the target audience is myself:).

So I imagine that getting web designers to accept/learn about Seaside may be as important as bringing more developers to Smalltalk.

Anonymous said...

I hope that Webvelocity is a big hit. The appeal of seaside with some small doses of smalltalk.

If successful it should bring in more users that will have a reason to dig into smalltalk.

Also we need an up to date basic text to point new users too. Smalltalk community has many published books for free. But many are older. Some make no mention of the web either.

We need a Pickaxe or camel book that is widely available.

Anonymous said...

Namespaces would be nice. It seems strange to me that a community that prides itself so much on the readability of it's code requires you to prefix all your class names with an abbreviation to avoid conflicts.

Anonymous said...


One of the things that Rails has done well is manage the "full stack" -- everything down to the persistence layer. It's a just-add-water sort of proposition: bring your own database, and it'll work.

GemStone and WebVelocity are going to help with this, though I'm not excited about the latter's ties to relational databases. I have yet to find an object-relational framework that I like better than just plain objects.

If there was a standard Seaside persistence strategy, e.g. Ramon Leon's SandstoneDb, then Seaside itself could be considered "full stack". You could still bring your own database (Glorp or GemStone) if you wanted to be different.

It's just that right now, Seaside leaves you out on your own in this regard. That's a big barrier to entry, especially if Smalltalk is also unfamiliar territory.

Julian Fitzell said...

Dale, definitely agreed. I have had a vision in the back of my mind of a platform that would support the designer as effectively as the developer. Perhaps something I should carry on with - so far it has felt like the community was too small to merit the effort (ironic, I know!).

Anonymous, it will definitely be interesting to see what market segment ends up taking up Web Velocity. And agreed books will help - I know there are several efforts underway with major publishers in this regard.

Michael, namespaces is really a Squeak issue more than a Seaside or Smalltalk issue but agreed that it is tacky. Maybe Pharo can take this on... :)

Ken, I definitely agree but "full stack" to me seems a bit like "whole product" - it's a bit vague as the basis of a strategy. Is persistence the only thing needed for Seaside to earn that term?

Ramon Leon said...

> Is persistence the only thing needed for Seaside to earn that term?

Sort of. What full stack means to the crowd that cares about that term, is that the web framework and the persistence framework are well integrated so everything just works without forcing the developer to have to "think" to hard about anything.

In Rails this means a default project layout that you must use. Views go here, Models go there, Controllers go there, and Models automatically persist to the configured database, which is one setting in the config file in the root of the app.

You create a model, run the migration script which sets up the db, and bam, everything just works. Calling save on a model just works, calling find on a models class just works. Validation rules in the models are integrate with the web frameworks form generator code so building validated web forms is trivial, due to the integration.

Contrast to what you'd have to do in Seaside to get Glorp hooked up and working. No chance in hell. Takes a shitload of code to even get off the ground. You have to write Glorp mappings, rig up some kind of connection pool, rig up a custom Seaside session class to hold the Glorp session. Build and store all the configuration for the db somewhere.

By the time you get anything even close to work working, the Rails guy is nearly done because it's a full stack framework where all this basic setup stuff is already done.

I wrote SandstoneDb so I'd have a simple image based db that just works, no configuration or fancy stuff you have to create first and configure. You create your model classes, restart your image once and just start using them directly in Seaside.

The only issue is it's a prevalence type system, so it doesn't scale beyond 20 or 30 thousand object clusters because of the time associated with loading them up on image startup. Works great for small projects though, like my blog.

It is however, exactly what those full stack people are looking for, a Rails like API that just works without much thinking or setup required.

Of course, you could use Magma, Glorp, or OmniBase, but there's not a chance in hell of a newbie who's looking for a full stack solution of ever getting those running. It takes too much work. Those *full stack* developers are ex PHP devs who don't know anything about databases to begin with, which is why the full stack model of Rails was so immensely popular, it just works.

Anonymous said...

Seaside so far is just a framework - as of today only yet another way to generate HTML. Yes it is easy and yet it has some nice features like using continuations for workflow. But thats not enough.

What is missing are UI components you can easily combine to build something useful. If these components will work in most browsers people will see a value and build business applications with Seaside. This would also be a chance that some work get funded.

See GWT for example.

Or have a look at Eclipse E4 (

Provide something like this, combined with easy persistence (see Rails) for popular databases like Oracle and MSSQL and you will catch people ...

Adopting jQery is not enough - show people how to build web applications in Seaside (beside tests for drag and drop effects and WACounter ;) together with good examples and/or tutorials.

It also looks like seaside developers tend to worship standards and work on Mac - thats OK, but web development has to deal with a majority of non-standard browsers like IE. So testing of components on different browsers is required too.

Anonymous said...

The number of smalltalkers might be low, but there is a rather large pool of experienced people who have programmed in it some time ago. That makes this innovation somewhat different, and we should be able to use that as a risk-reducing factor.

Sean T Allen said...

I wrote about many things then eliminated down to what I think are going to be the three biggest issues for the next group of people coming in:

GUI component library that is easy to plug and play.

Tools to convert xhtml/html into smalltalk. ( This is huge to get the designers ). Programmatic html rather than templates is a huge hurdle to clear. Transition needs to be eased.

Easy persistence and scalability ( gemstone would seem to be the answer here. )

Anonymous said...

For dummies
I am an amateur programmer and when I saw smalltalk for the first time, I just couldn't belive something that clever could even exist. And it exists for more then 30 years. Same thing happend when I found Seaside. The only problem is that it is very hard too learn both of them. There are many very good smalltalk tutorials and I am trying to learn basics of the language. It will take some time because I am playing with it in my spare time and the language itself is very different from anything I used so far.
Problem with Seaside is bigger, there are no tutorials for beginer programmers, hobbyists, enthusiasts and that sort of people. I know your first concern are professional developers, but I think you should write something for us, small programmers. Something that explains basics of the language and basics of the seaside, with lots of simple examples. It is possible to google for "php tutorial" and find many tutorials that teach absolute beginers how to install, configure, run and use php, apache, mysql, html, css and everything else. Actually, I think that we need a "for dummies" book.
There are some fine seaside blogs that are written for beginers but they are scattered across the web and many of them are outdated. A good begining is shaffer's tutorial, but it is painfully outdated.
Don't discount amateurs, they are the basis of every community. And some of them are future professionals.

rush said...

What can Seaside do (other than growing the community) to reduce the perceived risk of adoption?
I think that dabbledb helped a lot in that regard. So helping current folks move towards such highly visible apps (by having energy to talk to them, and answer their questions) could help and lower percieved risk in the future.

What can Seaside do (other than reducing perceived risk) to grow the community?Even more of documentation, demos, blogs tutorials and wiki's.