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 programmatically controlling browsers, and Selenium Grid for running tests in parallel 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 protocol was initially implemented between the Firefox driver and Firefox browser using the XPCOM system.