Should I learn Lift?

This was the question I had about 3 years ago. I think I used Scala for about 3 months before I heard about Lift. And because I always liked web development, I figured this was a good way to learn Scala.

Fast forward to today, I left my job at Oracle/MySQL and joined Elemica, so I could work full time using Lift and become a Lift committer. I'm one of the most active members in the community, by participating on the mailing list, as well as writing about Lift.

How was the journey?

It wash't easy, you can even say I started with the wrong foot. My first interaction with the Lift project was entering two tickets about some bug I thought I found, which 1- turned out not to be a bug, 2- was not how people did things in the community.

It was so bad that David even wrote an email to the mailing list, reminding people that it is better to discuss bugs/issues on the list, before posting bugs on the issue tracker.

But reading about Lift, how it was based on a View First philosophy and that security was a core aspect of the framework, were some of the reasons why I decided to stick around, regardless of the "little" issues I first had.

So I kept reading as much as I could, I subscribed to the mailing list and was reading every single email, I tried answering questions, but at first my answers were;t that helpful, and then one of the older members would come in and give proper answers :).

Learning Lift was frustrating at times, I remember trying to do simple things, and I just could not figure out how to do them, I would spend, literally, 4 hours trying something, and after I would ask on the list, an answer would come in just a few minutes (that was the nice thing about Lift).

At times the frustration was so high, that I seriously thought of leaving Lift for the Play framework about 4 times. But I knew that leaving Lift wasn't the solution, so I stuck around, and I'm very happy I did!

Turning point.

There was this magic moment, I can't really remember when it was, or how exactly it happened, but there was a turning point where things just made sense, it was that moment when I knew where to go for an answer, and how previous committers would've designed a feature. This was a great personal milestone.

But, how could you get there?

In my case, I spent a lot of time reading the source code of Lift itself, in no particular order, but I would just pick a section and try to understand what it did. Reading the emails on the mailing list helped a lot too.

And all along, working on a personal Lift application was a big help. That's where I got a chance to try different features.

Blogging about Lift has also been very helpful, so helpful that, the first few months of work at Elemica involved doing things I had previously blogged about.

Job market?

It all sounds good, Scala is an interesting language, Lift is a great framework but, at the end of the day, most of us need to have a job. I'm happy to say that knowing Lift will get you a job.

At Elemica, we have been looking to add at least one more developer to our team. About a week or two ago I saw a tweet that VMware is looking for a contractor to join their team (using Scala/Lift). And during the past few months, there have been several postings about different job positions.

And if you are into building a product of your own, Lift is a great framework to use, while the learning curve is hard at first, it really saves you a lot of time/headaches as you get into it.

What about Typesafe?

This comes up here and there, people seem worried that Typesafe includes the Play framework in their stack, instead of Lift.

First, David has said how he declined an invitation to have Lift as part of the stack. That announcement was almost a year ago, and Lift does't show any signs of disappearing, just the opposite, the community is very alive.

We have added many new features, and there are more in the pipelines.

There is a long list of companies offering commercial Lift support.

We recently released Lift 2.5-M1 and are working on the next milestone.

And to be honest, I'm glad we are not part of the Typesafe stack. No that I have anything against them, but when a company has investors, chances are that they will have to make difficult decisions, meaning, they may have to sacrifice community needs, to fulfill investors needs.

The way we do things in Lift is very community driven, if a committer has an itch for a feature, they implement it. But there is no pressure from external sources.

Final notes.

  1. Lift is an awesome, proven framework.
  2. We have a thriving community.
  3. If you need commercial support, you have options.
  4. If the docs are not clear, ask on the mailing list, and we'll help you.