UI State Management
Technology is the limiting factor of ideas. Web 1.0 was powered by ASP, C++, J2EE, and occasionally, when after six months of trying people realized they still can’t reliably instantiate a stateful session bean, Perl. It shouldn’t come as a surprise that most of the failing Web 1.0 applications were glorified shopping carts — it took about two million dollars to build an online store.
Web 2.0 is powered by MVC. We’ve transcended shopping carts. MVC lets you build really simple applications really fast. The idea is that simple applications are what people want. I suspect that what people really want, Black Swans aside, is simple UI to really complex processes that take up their time and money — something that cannot easily be done with MVC, the way it is normally used.
As the applications get more complex, managing state of user interface components becomes more and more difficult. At some point one runs into a complexity asymptote that cannot be crossed without jumping to a different abstraction. Components (or widgets) provide an abstraction that allows crossing this invisible line.
Slava Akhmechet, Continuations-Based Web Applications in Common Lisp With Weblocks