One Minute Bottom Line
|Excellent reference book to the core functionality of Lift, not so hot as a book to learn Lift from.
Scala is a language for the Java Virtual Machine that I have watched with interest for the past couple of years for its Functional (versus Imperative) language characteristics. I was excited a year ago to learn about Lift and how the power of Scala could be harnessed in a web framework. Despite the amazing power of Lift, it suffers from the common problem of most open source projects in its depth of documentation. Don't get me wrong, there are alot more comments in the API than many other open source projects, but there lacks a good, concise place to get some commentary, maybe a little philosophy and hand holding about using the different pieces of Lift.
Derek Chen, Marius Danciu and Tyler Weir have written a book, "The Definitive Guide to Lift" that attempts to fill that void. As contributors to Lift they have the knowledge of Lift and what needs to be brought out for developers to refer to when working with the framework. Overall I would say that they have succeeded in their attempt. They have compiled in their book all of the core pieces of Lift in a well organized manner. Despite this there are a few problems.
First the good stuff:
- It is very concise. They do not blather on needlessly about things that are of little interest when you just want to open up a reference to figure out how to get something done.
- They are thorough in their scope of what they cover. Their coverage on JPA (Chapter 10) and third party integrations (Chapter 11) were especially helpful as I haven't seen any place online that documents these items well.
- Finally there are plenty of code snippets throughout. They don't just give the concept about something and expect you to figure it out in code, they show short, simple examples to help you get moving with that aspect of Lift.
Now for the problems:
- There are multiple references throughout the book to a set of appendices (I believe A-G was the final count). I don't blame the authors directly for this, I would expect the editor or publisher to do some due diligence before going to press to make sure a large chunk of the content isn't missing. There isn't a title page on the book so I'm not quite sure who was involved in this process, but I would have hoped if Apress put their name on it they would have taken care of this. It is unfortunate that something like this would happen in a book that is meant to "..provide a reference for every aspect of designing a Lift application..." (Taken from the back cover of the book.)
- The next issue that I found with the book came as I was reading through the book. I found myself wanting to cross reference some other topic and turned to the back to look it up in the index, but there wasn't any. Again, if this is meant to be a reference book it should allow a user of it to refer to its contents from more than just the table of contents. Hopefully this is something that will be remedied in an updated digital version.
- Sometimes the scope of the book seemed inconsistent. Although I did list its scope as being a positive because it was so thorough about Lift, I felt like it was lacking in supporting material. For example, I would consider AJAX to be a widely understood topic amongst web developers, at least much better understood than Scala is known. Chapter 9 has some great background on the basics of AJAX but they chose not to give even a basic background on Scala.
- Internal references to other sections of the book are confusing. I don't know that I would bring this up so much in a beginner's type book that wasn't meant for referencing later, but in this situation it was frustrating to have the text refer to a different section by title and not sure where that was without either flipping through pages or looking it up in the table of contents. Having the sections of each chapter labeled like 1.1, 1.2, etc. would help solve this problem quickly and efficiently.
- There is no information on a page as to what section or even chapter you are in. Sounds like a small thing right? I thought so too until I tried flipping through the book one day to get at a section I knew was in a particular chapter and I ended up having to hunt for numbers associated with code listings to figure out where I was at.
Overall I would give this book a three out of five stars. I wish I could give it a higher rating than that because the content is good, but if it is a reference and difficult to get at the specific content you want it ultimately has missed its mark.