This book aims to become a standard introduction to Sproutcore, an open source framework for building native-style apps with HTML and Javascript. Sproutcore is comprehensive, well-designed, and highly tuned as a result of its early adoption by Apple for powering the Mobile Me and iWork.com web apps. Yet Sproutcore's massive scope and its history of development at a secretive company have worked against it. Until recently only the most motivated and stubborn non-Apple developers have had cause to study its voluminous source code and comparatively sparse documentation well enough to truly learn it.
Fortunately, with the help of the approachable and growing community of Sproutcore developers--a community which exists because of maintainer Charles Jolley's determination to keep his project genuinely open--the situation is rapidly improving. This book is one of several efforts to help mainstream developers learn to use Sproutcore to write apps that are as fast, fluid, and flexible as any native app, yet that can be accessed in nearly any web browser merely by clicking on a link.
This book has three sections. This section, the Introduction, explores briefly what it means to say that Sproutcore helps you write native-style web apps, and describes the technological features of Sproutcore that help you to do so. Since you will probably be eager to get your hands dirty at that point, the second chapter of the Introduction describes how to install Sproutcore, describes the components of the installation, and points you to several hands-on tutorials.
The second section, "Sproutcore Basics", is a tour of the individual components of Sproutcore that every Sproutcore developer should be familiar with. After having read it, you should be able to build a straightforward app with little trouble. Important "gotchas" and tips are highlighted and annotated, where necessary, with links to reference documents or the more detailed third section that provide more context.
Finally, the third section, "Sproutcore in Detail", revisits most of the components discussed in "Sproutcore Basics" at a more reference-like level of detail. After having read this section, you should be well equipped to dive into the Sproutcore reference documentation and source code without feeling lost.
Some words of warning before you proceed: Sproutcore requires a very different mindset than traditional front-end web development. It is not a tool for writing progressively enhanced web documents but is for writing apps, distinct from your content, that treat HTML and Javascript as an execution platform. To use it well requires mastering a large number of libraries and tools that work together and cannot be learned overnight. More profoundly, Sproutcore requires you to put aside certain web development habits. Sproutcore's designers observed that download and browser rendering times are decreasing at a steady rate while round-trip times to servers simply cannot, and therefore designed Sproutcore to render your apps's HTML using Javascript on the client. In general they encourage you to move as much application logic to the client as possible. This may feel wrong. This book is here to help you grasp the thinking behind these decisions and thereby work with the grain of Sproutcore rather than against it.