# Upstart

En informática, Upstart es un reemplazo basado en eventos para el daemon init, el método utilizado por varios sistemas operativos Unix-like para realizar tareas durante el arranque del sistema. Fue programado por Scott James Remnant, un antiguo trabajador de Canonical Ltd.

## Motivación

El daemon init tradicional es estrictamente síncrono, bloqueando futuras tareas hasta que la actual se haya completado. Sus tareas deben ser definidas por adelantado, y solo pueden ser ejecutadas cuando el daemon init cambia de estado (cuando la máquina se arranca o se apaga). Esto hace que no sea capaz de manejar de forma elegante varias tareas en computadoras de escritorio modernas, incluyendo:
* La conexión o desconexión de una memoria USB y otros medios de almacenamiento portables / dispositivos de red mientras la máquina está arrancada.
* El descubrimiento y exploración de nuevos dispositivos de almacenamiento, sin bloquear el sistema, especialmente cuando un disco puede no encenderse hasta que este es explorado.
* La carga de firmware para un dispositivo, lo cual podría tener que realizarse después de sea detectado pero antes de que sea utilizable.
El modelo basado en eventos de Upstart le permite responder a los eventos de forma asíncrona cuando estos son generados.

## Diseño

Upstart trabaja de forma asíncrona supervisando las tareas mientras el sistema esta arrancado. También gestiona las tareas y servicios de inicio cuando el sistema arranca y los detiene cuando el sistema se apaga
La fácil transición y la perfecta retrocompatibilidad con sysvinit fueron objetivos explícitos en el diseño. Por lo tanto, Upstart es capaz de ejecutar scripts de sysvinit sin modificaciones. De esta manera se diferencia de la mayoría de reemplazos de init, que normalmente requieren una transición completa para funcionar correctamente y no son compatibles con un entorno mixto formado por métodos de arranque tradicionales y nuevos.

## Adopción

A medida que Upstart madura, se pretende que sus funciones se extiendan a las tareas gestionadas por cron, anacron, el demonio del comando at (atd) y posiblemente (pero mucho menos probable) inetd.
Las distribuciones en las que Upstart está habilitado por defecto son:
* Upstart fue integrado por primera vez en Ubuntu 6.10 (Edgy Eft) a finales de 2006, reemplazando a sysvinit. Ubuntu 9.10 (Karmic Koala) introdujo el arranque de Upstart de forma nativa. Mark Shuttleworth, fundador de Ubuntu, anunció que Ubuntu comenzaría a migrar hacia systemd.
* Chrome OS usa Upstart.
* Upstart reemplazó a sysvinit en el sistema operativo Maemo 5.
* Upstart es usado en webOS en los teléfonos inteligentes Palm Pre, Palm Pixi, HP Veer y HP Pre 3, junto con la tableta HP TouchPad.
Las distribuciones que usaron Upstart en alguna versión pero han cambiado a systemd en versiones posteriores:
* Debian decidió que systemd será usado por defecto desde la versión jessie, después de considerar Upstart.
* Fedora 9 reemplazó a sysvinit con Upstart, sin embargo, Upstart ha sido reemplazado por systemd en Fedora 15.
* Red Hat incluye Upstart en Red Hat Enterprise Linux 6. Como resultado, también es usado por sus variantes tales como Centos, Scientific Linux y Oracle Linux. En RHEL 7, systemd es el sistema de inicio por defecto al igual que en sus variantes.
* openSUSE incluyó Upstart en la versión 11.3 Milestone 4, pero no por defecto. Upstart fue reemplazado por systemd en openSUSE 12.1.