This document discusses Selenium, an open source tool used for automating web application testing. It describes the different components of Selenium including Selenium IDE for recording and playback of tests, Selenium WebDriver for programmatic control of browsers, and Selenium Grid for distributed testing across multiple machines. It discusses the architecture of Selenium WebDriver, how it uses layers of libraries with Google Closure Library at the bottom. The document focuses on how the remote WebDriver protocol was developed to provide a uniform interface across language bindings and details how this was initially implemented based on the Firefox driver and Mozilla's XPCOM system.