At dinner last night with Scott Moody (the founder of Throw – which was acquired by Excite in 1998), we began talking about the difference on the web between groups and individuals. While we slurped down our intensely spicy Vietnamese soup, Scott suggested that much of the current generation of web software has a conceptual design flaw – namely that it has been created for individuals (one) rather than groups (many) even though it is used by many (and the great utility of most of the software is when it is used by many).
We batted the idea around for a while as the plates of food covered with fire came and went. Amy and I have been struggling with this problem as we’ve tried to collaborate on a few things recently using new web-based software and haven’t been able to get everything “just right” (ask Amy about organizing “our” photos). When I reflect on the challenges, it comes back to the notion that the software we are using is really designed to be used by a single user (vs. a group of users). There is no concept of workflow, no shared storage, no intra-process communication, and no notion of shared conflicts that need to be resolved.
When I first started designing PC-based custom database applications in the 1980’s, we used to differentiate between “single-user” and “multi-user” mode, as data sharing issues were different (non-existent) in single-user mode and you could do performance optimization that you couldn’t do in multi-user mode. As hardware became faster and the database software built in more levels of abstraction, this distinction disappeared. However, we had long since shifted our designs to multi-user mode in almost all cases as it was the general case (where single-user mode was simply multi-user model with #users=1).
It seems like the same issue applies here. There are some specific cases where multi-user design has been embedded in the app (wiki’s immediately come to mind), but many of the current web apps are decidedly single-user or – even if they support “multiple-users” – clearly have a single-user feel to them making their design suboptimal for a group of more than one users.
So – is many a special case for one or is one a special case for many? All Lisp programmers know the answer – do you?