Happy 5th Anniversary Lift

It was five years ago that I founded the Lift Web Framework project.

At that time, the Scala community was very small and academically focused. Lift was one of the first external libraries for Scala and Lift is now the venerable, longest-lived external library in the Scala ecosystem.

The Lift community has grown to over 3,000 people and more than 50 committers. There are multiple books on Lift and hundreds of sites built on Lift.

Lift has demonstrated the power of community and a different approach to web frameworks. Lift-powered apps scale. Lift-powered apps are secure. Lift-powered apps don’t make the news because they just work and this frees the developers to add features to the sites.

Most importantly, though, is the Lift community. It’s a community full of helpful, engaging people who help each other and help grow the quality of Lift as a whole.

Five years is an excellent milestone and it’s a great starting place for the next phase of Lift.

Some of Lift’s differences include:

  • DOM manipulation rather than String manipulation. This means that Lift apps are secure because DOM elements can be properly escaped and the internal representation can be converted to the appropriate output format including XHTML and Html5. DOM manipulation means true separation between markup and business logic as well as support for designer friendly templates.
  • Snippets are DOM transformers. Lift templating isolates the dynamic rendering of a web page in snippets that transform incoming DOM to outgoing DOM. This functional approach to templating is composable, easier to maintain, and easier to build complex sites.
  • Stateful. Interactive Lift apps are secure and the developer can focus on business logic rather than serializing state. Lift’s statefulness leads to more scalable and easily managed sites. Lift also allows stateless sites. But with Lift, the developer controls the line between state and interactivity.
  • Comet/server push. Lift pioneered Comet/Server push in web frameworks. Lift’s comet continues to be radically superior to what other web frameworks offer. Lift supports many Comet components per page, all multiplexed through a single connection. Lift’s Comet components support Lift’s DOM manipulation so you don’t get cross-site scripting vulnerabilities in Comet. Lift’s Comet supports versioned push so that if there are multiple incremental changes to a component while the client is disconnected (e.g., mobile broadband on a train), the changes will be delivered in order when the client re-connects.

Bottom line, Lift does Seven Things better than any other web framework.

The road to 1.0

It took 2 years from the time Lift was launched until we launched version 1.0 of the framework. We spent those two years exploring concepts and getting the APIs to a state where they could exist over a long term without significant breakage or deprecation.

Many apps and sites were built with Lift pre-1.0. Many developers used Lift’s master/SNAPSHOT releases and they were (and continue to be) stable enough to run real, production sites on.

When we launched Lift 1.0 on February 26th 2009, Lift was mature, stable and well-used. Lift lived up to its billing as secure, scalable, and developer friendly.

In the last few years, Lift has only gotten better.

Shifting to Html5, Designer Friendly, and RestHelper

In 2010, Lift shifted from XHTML-based to supporting Html5. Lift received a bunch of other enhancements to help it mature and grow:

  • Support for Html5 while retaining the core concepts of DOM manipulation such that the way that Lift apps manipulated the DOM did not make a difference. Snippets still transformed incoming DOM to outgoing DOM. The DOM retained the same representation. The change to support Html5 was the template to DOM parser and the DOM to bytes renderer. In fact, XHTML templates can be sent out as Html5.
  • Lift’s templates became “Designer Friendly” where every single template in a Lift app can be valid XHTML or Html5, viewed in a browser and shared between designers and app developers in the same source code repository without “shredding” or non-valid markup.
  • DOM transformation got much easier and more designer-oriented with Lift’s CSS Selector Transforms. The CSS Selector Transforms are functions that transform DOM => DOM and are completely in keeping with Lift’s snippet/view first philosophy.
  • Lift’s RestHelper makes building secure, high performance web services as simple and flexible as Scala’s pattern matching.

The above changes are a core part of Lift, but other projects and modules built on top of Lift’s powerful core continue to distinguish Lift. For example Reactive Web is the first set of functional-reactive tools for a mainstream web framework. Lift’s abstractions also allowed a developer to make Lift usable from Netty with one day’s worth of effort.

Committer team maturing

In addition to Lift’s codebase maturing, Lift’s committer team has also matured. There are over 50 Lift committers. In 2011, David Pollak who founded Lift, stepped down as Lift’s Benevolent Dictator for Life. David continues to commit to Lift and is still the most active member of the Lift mailing list, but as the committer team has grown, it was time for David to become a person among excellent peers, rather than a dictator.

Lift Co.

On the 5th anniversary of the Lift project comes the birth of Lift Co.

Lift Co., founded by two Lift committers, David Whittaker and Andreas Joseph Krogh, provides Lift support with response time SLA, Lift Training, and consulting. Lift Co. provides geographic diversity with folks from the United States, Europe and India on the team. Lift Co. consultants include Lift committers David Pollak and Indrajit Raychaudhuri.

David and Andreas founded Lift Co. to help grow the whole Lift ecosystem and welcome partnerships with other Lift consultancies so that large-scale Lift adopters have a range of services and service providers to choose from.

Looking forward

Lift has grown far beyond what David Pollak expected when he founded the project five years ago. Lift continues to grow and gets better based on the ideas, feedback, and contributions from the whole Lift community. Lift will continue to develop as the best platform to build interactive and secure web applications. Lift will get better, and perhaps slimmer, based on the evolving needs of the whole Lift community.