This document discusses best practices for building large GWT applications and introduces the Errai project. It addresses challenges like decomposing applications into components, handling coupling between components, and dealing with services that components depend on. Solutions proposed include compile-time composition using deferred binding, MVC and pub/sub architectures, and bootstrapping capabilities via messaging. The Errai project aims to consolidate GWT efforts by providing a messaging bus, workspace framework, and widget library to help build federated, asynchronously communicating applications.