Book Review: Building OpenSocial Apps

When developing applications on a social platform (or container) such as MySpace or the Yahoo! Application Platform, many developers treat the creation of their applications as if it were the Wild West, with no programming rules or best practices. Building on top of a black box environment is not always easy, but just because a container allows you to do something with your application doesn't mean that you should. OpenSocial is a set of standardized methods to access social data from a container (among other things), providing structure to this cross-container development experience and introducing new concepts in professional social application development.

Don't let the subtitle, "A Field Guide to Working with the MySpace Platform" scare you off. "Building OpenSocial Apps" by Chris Cole, Chad Russell and Jessica Whyte is a wonderful handbook for working within the OpenSocial space. Since the more essential pieces in these development techniques are all standard, we can infer that all of the core concepts in this guide are transmutable between containers - which they are. I normally don't find field guides a great reference utility for working in a new area of technology (that's where the language / topic bibles come in) but this text touches on everything I use / have used / want to use within OpenSocial and social application development.

You can tell the authors have spent a lot of time building applications within the OpenSocial realm because they explain all of the major pain areas and the do's and don'ts of application development in this space. They touch on all of the areas that I had to learn the hard way by trial and error. If I'd had a text like this, specifically the area of how to talk to the parent container, when I was building my first application on MySpace, I would have saved myself a week-long roundtrip between MySpace QA, when they told me I had to adjust the height of the application view as my content changed. Beside the major core social features of OpenSocial, this book covers a lot of great best practices and knowledge tidbits such as why you shouldn't use cookies and how to implement persistent storage on the platform.

The section on OAuth for authentication is one the area I would have liked the authors to expand on. While working with a lot of partners and developers on our platform, the questions around OAuth implementations come up quite a bit. I fully understand why they didn't include more than a use-case look at implementation of OAuth on MySpace. It would have easily filled another 100 pages talking about all of the potential signature issues you could encounter and how to remedy those - plus it would have been the driest 100 pages you might ever have to read.

There are some major implementations in this book that sets it apart in a great way. First, there is a large guide in here on working with OSML (OpenSocial Markup Language). OSML is a rich template system for creating reusable content and is a powerful implementation in OpenSocial. The fact that they go through this extensively with detailed samples and advanced guides impressed me. Another interesting section teaches you how to deal with application growth by using the concepts behind an application lifecycle. The lifecycle concepts in a social app are much different than those of a standard software application. Understanding the core concepts behind this will keep your app performant and help it scale as your user base scales. Lastly, throughout this book I was hoping they would talk about the newer OpenSocial 0.9 spec. Even though we haven't seen very many implementations of OpenSocial 0.9 within containers, the implementations behind some of the tags are significantly different than in the previous spec. Then, when I was nearing the end, I saw a section on porting your application to OpenSocial 0.9. My wishes were answered as they showed you how to upgrade your application.

All in all, I was impressed with "Building OpenSocial Apps" as both a learning resource and reference guide. The sections and explanations are very clear and the code implementations extremely detailed so whether you've just started building applications within an OpenSocial container or have been doing it for a while, this will be a great tool for your development.