# Gears

Gears (anteriormente llamado Google Gears) fue un software ofrecido por Google, que permitía crear aplicaciones webs más poderosas, añadiendo nuevas capas de aplicación al navegador. Su licencia era BSD y, a febrero de 2009, la última versión pública fue la 0.5. A partir de finales de 2011 el proyecto fue cancelado y cerrado por la integración que posee HTML 5 cuando a las tecnologías que incluía Gears en su momento.
Gears consistía en una aplicación que se instalaba como una extensión de navegador, que agregaba una API que permitía programar en javascript algunas interacciones con los componentes instalados localmente por la aplicación.
Este software estaba incluido en Google Chrome y poseía extensiones para instalarse en Internet Explorer 6.0+, Mozilla Firefox, Safari y Opera Mini (a partir de la versión 9.5), y funcionaba en los sistemas operativos Windows 2000, XP, Vista y 7, Windows Mobile 5 y 6, MacOS y Linux de 32 bits.

## Componentes

Gears estaba formado por tres componentes principales:
* Un servidor local, encargado de cachear y servir los datos (HTML, Javascript, imágenes, etc.).
* Una base de datos, que almacena los datos.
* Un controlador, formado por varios hilos que sincronizan los datos en un segundo plano.
Otros componentes que han sido importantes dentro de este software fueron:
* La API de Geolocalización, que permitía ubicar a una persona dentro del mundo según la posición de la cual se conecte.

### Servidor local (LocalServer)

El servidor local poseía la función de almacenar, en forma local, los datos de las páginas webs, instalándose como una capa adicional entre el navegador y el servidor web, funcionando de una manera similar a la caché del navegador web, pero a diferencia de esta, se interponía antes del requerimiento para servir el archivo, por lo cual se evitaba el envío de una solicitud HTTP para optimizar el tiempo de respuesta de la aplicación, mientras que la caché del navegador hacía un requerimiento HTTP para comprobar la vigencia del documento.
El servidor local podía rescatar cualquier documento HTTP o HTTPS que cumplía con:
* que se encontrara almacenado previamente,
* que se encontrara habilitado el caché para el sitio web, y
* si se requería una cookie, acorde al valor que poseía.

### Base de datos

La base de datos era el componente que permitía almacenar datos que no correspondían a una página web o un elemento embebido de un sitio. El motor de base de datos empleado era SQLite y el objetivo de este componente era almacenar datos de una aplicación en forma persistente.
Esta base de datos no podía ser accedida por otro sitio que no fuese el autorizado por el usuario, y podía ser editada localmente en el computador donde se almacenaban los datos.
La inclusión de este componente permitía, al desarrollador, disponer de un almacenamiento de tipo relacional en la máquina huésped, pero como era editable por el mismo, no debía almacenarse información de importancia para el sitio.
La versión de SQLite utilizada ocupaba algunas configuraciones especiales e incluía la extensión de búsqueda de cadena completa o full-text search fts2.

### Controlador de hilos (WorkerPool)

El controlador de hilos permitía ejecutar acciones en segundo plano sin bloquear ni entorpecer la ejecución del hilo principal del navegador, con el objetivo de correr aplicaciones en una instancia nueva. Una aplicación de esto era la sincronización de datos entre la página y la caché que poseía el servidor local.
Hay que destacar que el controlador no corría en forma paralela a la ejecución del navegador, sino que solamente se ejecutaba cuando la página web se mantiene activa, por lo cual el refresco de página o la salida de la misma provocaba que el controlador no se ejecutara.

### Geolocalización

Uno de los elementos más innovadores que poseía Gears, era la habilidad de geoposicionar una conexión dentro del planeta sin la necesidad de contar con un sistema de GPS, tan solo basándose en la conexión que poseía el usuario. Sin embargo, este tipo de geolocalización no era en tiempo real, por lo cual no podía ser considerado tan exacto como el sistema GPS.
El desarrollo de este tipo de componentes se orientaba a la internacionalización de las páginas webs según la ubicación de la persona, para lo cual podía cargar los datos climatológicos del lugar donde se encuentre o las últimas informaciones de tránsito dependiendo de la red que se conecte.

## Versiones

| Versión | Fecha | Descripción |
| 0.1 | 2007-05-31 | Lanzamiento inicial como Google Gears |
| 0.2 | 2008-02-22 | |
| - | 2008-05-28 | Proyecto renombrado a Gears para reflejar el espíritu de este proyecto |
| 0.3 | 2008-06-11 | Se añade el soporte para Mozilla Firefox 3 y permite la creación de iconos en el escritorio. |
| 0.4 | 2008-04-22 | Se añade la API de Geolocalización, manejador de eventos para la subida de archivos, progreso de transferencias y traducción a 40 idiomas. |
| 0.5 | 2008-11-24 | Actualización de SQLite, Geolocalización se puede obtener por las Antenas de WiFi y se mejoró el manejo del tipo de dato blobs en el Servidor Local. |

## Aplicaciones

A marzo de 2009, las aplicaciones que le han sacado más provecho a Gears son para sistemas de bitácoras y mensajería, debido a la sincronización en segundo plano que permitía la API.
La mayoría de las aplicaciones que usaban Gears son de Google, que se usaba en Gmail, YouTube, Docs, Google Reader, Picasa móvil y Google Calendar. Otras aplicaciones populares eran la búsqueda de mensajes de MySpace, Zoho (Writer y Mail), Remember The Milk y Buxfer.
Wordpress, a partir de la versión 2.6, incluyó el soporte de Gears, enfocándose a la reducción del uso del servidor, mediante la caché de los elementos de la interfaz de administración (imágenes, scripts, etc).
Gears podía ser habilitado en sitio donde no se encontraba soportado, mediante el uso de Greasemonkey, script que fue creado por uno de los ingenieros de Gears.
Yahoo! también se unió a los sitios web que usaban Gears, esto como parte del contrato comercial que hizo con Google. Gears se usaba principalmente en algunos recursos de Yahoo! Search.

## Creación

Un antiguo empleado de Google Danny Thorpe (actualmente empleado de Dell) creó la API Google Gears. Bret Taylor, líder del grupo de desarrollo de productos de Google, dijo que buscaba ser capaz de acceder al Google Reader mientras usaba la conexión de la compañía, la cual frecuentemente tenía un acceso defectuoso a Internet.