# Tora (Bases de Datos Oracle)

TOra (Toolkit for Oracle, «Caja de Herramientas para Oracle») es un conjunto de herramientas multiplataforma de software libre creado para ayudar a los administradores y desarrolladores de aplicaciones de bases de datos Oracle. También suministra soporte para MySQL y PostgreSQL.
Es una herramienta muy valorada por los mismos ya que la herramienta que proporciona Oracle, el Enterprise Manager, no es demasiado intuitiva. Los desarrolladores para Oracle de Red Hat Linux afirman hacer un uso intensivo de la misma.
Independientemente del sistema operativo sobre el que se instale, necesita como paso previo que esté instalado el cliente de Oracle correspondiente a la misma o superior versión de base de datos sobre la que queremos actuar. Dicho cliente se puede instalar en su forma mínima, de modo Runtime.
Está disponible para los siguientes sistemas operativos:
* Todos los sistemas que soporten POSIX (GNU/Linux, BSD y en general sistemas operativos tipo UNIX)
* GNU/Linux, Solaris
* Microsoft Windows 32-bits (95/98/NT/2000/XP)
Para los sistemas operativos tipo Unix necesita que estén instaladas las biblioteca de KDE. La versión Windows ya está compilada con las biblioteca Free Qt de Trolltech.
Actualmente TOra se distribuye bajo licencia GPL y solo se encuentra en inglés.

## Historia del proyecto

Henrik Mauritz Johnson inició el proyecto en diciembre de 2000 con la meta de crear una herramienta para GNU/Linux que le permitiese interactuar con bases de datos Oracle con las mismas prestaciones que las existentes para Windows en aquel momento. Comenzó con licencia GPL manteniendo el copyright la compañía GlobeCom AB para la cual trabajaba Henrik. En diciembre de 2001, el copyright de TOra 1.2.0 cambió pasando a pertenecer a la empresa Underscore AB, propiedad del propio Henrik, que comercializó la versión Windows utilizando bibliotecas gráficas propietarias y manteniendo la versión en sistemas GNU/Linux con licencia GPL.
Henrik Mauritz Johnson mantuvo un único control del directorio CVS de TOra encargándose de incluir tanto el software que desarrollaba como los parches suministrados por otros colaboradores de la comunidad del software libre. Durante el año 2004 hubo serias dudas sobre la continuidad del proyecto motivadas por la lentitud de desarrollo y porque el 20 de enero de 2004 Quest Software adquirió el copyright de TOra pasando Henrik a ser su empleado. A finales de 2004 Quest Software dejó de comercializar TOra ya que contaba con su propia herramienta para Windows: Toad para Oracle.
Finalmente, en febrero de 2005, y cuando ya se estaba pensando en realizar una bifurcación de TORa, Henrik Mauritz Johnson entregó, con la autorización de Quest Software, el control del proyecto a Nathan Neulinger que junto con un nuevo conjunto de desarrolladores lo revitalizó. A partir de la versión 1.3.15 ya solo existen licencias GPL tanto para entorno GNU/Linux como para el entorno Windows al usarse en este último las bibliotecas libres para Windows Qt Free de Trolltech.
En un primer momento el fundador de proyecto, Henrik Mauritz Johnson, era a la vez el único desarrollador del mismo. Sin embargo a medida que se conoció el proyecto, otros usuarios de TOra contribuyeron al mismo enviado sobre todo parches para las distintas versiones publicadas. El fundador del proyecto mantuvo en su poder la decisión de incluir o no el software que otros le enviaban y era más bien un proyecto personal que una comunidad de desarrolladores. En el año 2005, tras el cambio de administrador del proyecto a Nathan Neulinger, si se organizó una comunidad de desarrolladores de software libre más cercana al estilo bazar que al estilo catedral de Eric Steven Raymond en su publicación The Cathedral and the Bazaar: no existe una política de liberación de versiones definida en tiempo, los desarrolladores son a la vez usuarios del software a los que se van asignando tareas de las publicadas como pendientes sin más necesidad que comunicarse con el administrador del proyecto (y demostrar que puede hacerse cargo de ella).
En cuanto al modelo de negocio de TOra como proyecto de software libre, no hay que olvidar que a una edad temprana del proyecto (antes de cumplir un año) ya existía una licencia comercial para Windows del propio Henrik a través de su empresa Underscore AB en paralelo con las versiones libres para GNU/Linux con licencia GPL. Se podría pensar en el típico caso de modelo de negocio tipo Loss leader de los propuestos por Frank Hecker en Setting up shop: The business of open-source software; es decir, el éxito de TOra en el mercado de GNU/Linux le permitía a Henrik vender TOra para entornos Windows. Sin embargo cuando Henrik comenzó a trabajar para Quest Software (y éste adquirió el copyright de TOra) no está claro si ésta lo hizo eliminar la competencia de TOra sobre TOAD (posicionador de mercado según El caldero mágico) o para aprovechar la experiencia de Henrik como desarrollador. Analizando la historia del proyecto, se podría afirmar que es de aplicación el modelo propuesto en The Magic Cauldron por Eric Steven Raymond para el software libre: un valor de uso incrementado por la adición de las mejoras de los usuarios interesados en las mismas (según los mismos desarrolladores actuales afirman en un hilo del foro en 2005) pero en cuanto al valor de venta, este se había perdido, al menos para las versiones GNU/Linux, al estar totalmente licenciado GPL.

## Estructuras organizativas/asociativas o de decisión

El proyecto está compuesto de un administrador, Nathan Neulinger, y once desarrolladores. Se apoyan en la infraestructura suministrada por sourceforge para comunicarse básicamente mediante dos listas de correo:
* tora-cvs. Lista usada para comunicar actualizaciones del CVS.
* tora-develop. Lista ampliamente usada, es el modo principal de comunicación entre desarrolladores del proyecto.
Existe otra lista de correo, tora-announce, creada para comunicar la disponibilidad de nuevas versiones, sin embargo no se han registrado entradas en ella desde el año 2004 por lo que se la puede considerar inactiva.
Otras formas de comunicarse tanto entre desarrolladores como con usuarios son:
* Foros públicos: existe un foro de petición de ayuda Help y otro de uso general Open Discussion ambos bastante activos.
* Listas de Feature Requests y Bugs se usan respectivamente para solicitar nuevas funcionalidades al proyecto y para avisar de la existencia de errores.

## Estado del proyecto

Según se desprende de la justificación del propio proyecto, TOra ha estado siempre ligado a la evolución de Oracle al usar sus bibliotecas cliente. Con el transcurso de los años pasó a depender de una empresa de la competencia (Quest Software) lo que estuvo a punto de causar su desaparición. Quest Software es dueña del copyright de TOra como se puede comprobar examinando los listados del código fuente. En la página web del proyecto se publicita la herramienta comercial para Windows: Toad para Oracle.
Actualmente la última versión estable es la 2.1.3 que fue liberada el 19 de septiembre de 2010.

## Radiografía

Estado actual de TOra :
| Página web | http://tora.sourceforge.net/ |
| Inicio del proyecto | 2001 |
| Versión actual | 19 de septiembre de 2010 |
| Líneas de código fuente | 209.845 |
| Estimación de Esfuerzo de Desarrollo (persona-año / persona-mes) | 54,83 / 657,97 |
| Estimación de tiempo (años) | 2,45 |
| Estimación del n.º de desarrolladores en paralelo | 22,35 |
| Estimación de coste (Ajustada al 2005) | $7.406.878 |
La versión más moderna de TOra, la 3.0.20, consta de 209.845 líneas de código fuente, lo que para una empresa normal de software implicaría el uso de 54,83 desarrolladores-año durante un periodo de 2,45 años. El coste total del proyecto lo obtenemos de multiplicar los desarrolladores-año por el periodo que dura el proyecto por un factor de sobrecarga de costes (debido a otros costes asociados a la empresa como personal implicado en el proyecto además del programador, costes logísticos y de vida de la empresa, etc. de 2,4) que resulta 7.406.878 dólares.
El número de desarrolladores que deberían trabajar en paralelo lo obtenemos de dividir el número de desarrolladores-año entre el periodo de duración del proyecto (54,83/2,45) obteniendo una cifra de 22,35 desarrolladores trabajando simultáneamente.
Para realizar el anterior análisis del código fuente del proyecto se ha usado la herramienta SLCCount de David A. Wheeler. SLOCCount (Source Lines Of Code Count) usa, por defecto, el modelo COCOMO básico en modo orgánico y estima el esfuerzo y el tiempo dedicado (incluye los trabajos de diseño, generación de código, prueba y documentación) suministrando unos parámetros de effort=2.4, exponent=1.05 y Schedule=2.5, exponent=0.38. Estos valores dados para el modelo básico orgánico se ajustan bastante bien a los del proyecto TOra: equipos pequeños de desarrolladores de software (12 en TOra) con necesidades mínimas de innovar algoritmos, con entorno de desarrollo estable (salvo cambio de versión de Oracle y requerimientos relajados (no existen compromisos de liberación de versiones en tiempo). En cuanto al salario promedio utilizado se ha escogido el suministrado como promedio para un analista/programador para el año 2005 por la revista Computer World que asciende a 64.708 dólares.
Según el análisis efectuado por SLOCCount, el lenguaje más utilizado es el C++, seguido de shell y de python. En la siguiente tabla se muestran los datos obtenidos:
Lenguajes de programación utilizados en TOra 2.1.3 :
| Lenguaje | Líneas de código | % |
| C++ | 191.993 | 91,49% |
| sh | 17.549 | 8,36% |
| python | 159 | 0,08% |
| ansic | 75 | 0,04% |
| xml | 69 | 0,03% |
| Total | 209.845 | 100% |

## Versiones

Versiones de TOra :
| Versión | Fecha | Comentario |
| TOra 0.0.7 | 26/03/2001 | |
| TOra 1.0.0 | 30/08/2001 | Primera versión estable |
| TOra 1.1.5 | 27/11/2001 | El copyright pasa a Underscore AB |
| TOra 1.2.0 | 03/12/2001 | Versión Windows comercial |
| TOra 1.2.1 | 19/12/2001 | La versión Windows incluye soporte MySQL |
| TOra 1.3.2 | 15/01/2002 | Soporte MySQL y ODBC |
| TOra 1.2.2 | 21/01/2002 | |
| TOra 1.2.3 | 11/03/2002 | |
| TOra 1.3.5.1 | 18/04/2002 | |
| TOra 1.2.4 | 27/06/2002 | |
| TOra 1.3.6.1 | 05/07/2002 | |
| TOra 1.3.8 | 08/10/2002 | |
| TOra 1.3.9.1 | 12/02/2003 | |
| TOra 1.3.9.2 | 16/02/2003 | |
| TOra 1.3.10 | 25/07/2003 | |
| TOra 1.3.11 | 09/08/2003 | |
| TOra 1.3.12 | 20/10/2003 | |
| TOra 1.3.13 | 20/01/2004 | Quest Software adquiere el copyright |
| TOra 1.3.14 | 29/06/2004 | |
| Tora 1.3.15 | 01/02/2005 | Solo incluye licencia GPL |
| Tora 1.3.16 | 06/03/2005 | |
| Tora 1.3.18 | 18/07/2005 | |
| Tora 1.3.20 | 08/02/2006 | |
| Tora 1.3.21 | 28/02/2006 | |
| Tora 1.3.22 | 18/09/2007 | |
| Tora 1.3.23 | 25/03/2008 | |
| Tora 2.0.0 | 05/11/2008 | Qt4 |
Existen diversas versiones anteriores a la primera versión estable que no se han consignado aquí por claridad. También existen versiones alfa entre versiones estables, algunas con solo un día de diferencia que tampoco se han consignado.

## Instalación

El requisito previo para cualquier instalación de TOra es tener instalado el cliente para Oracle correspondiente al menos en su versión mínima Runtime.
* Windows. Se distribuye en versión instalador ejecutable.
* GNU/Linux. Existen paquetes rpm para las distribuciones que lo soporten (Red Hat) y Debian cuenta con paquetes deb en sus repositorios, aunque sin soporte para Oracle. Para obtener una versión con soporte para Oracle en ésta y otras distribuciones es necesario compilarlo.

### Compilación

Las fuentes se distribuyen en un archivo comprimido denominado tora-1.X.YY.tar.gz (donde X e YY pertenecen al número de versión). Es posible realizar la compilación en las plataformas: Red Hat (y derivados), Debian (y derivados) y Microsoft Windows.
Es conveniente leer los comentarios existentes en el archivo INSTALL sobre como compilar los fuentes para obtener los binarios. En general se efectúa en tres pasos:
* En primer lugar, es necesario ejecutar el archivo ./configure para preparar el paquete para el tipo de sistema que vamos a crear los binarios.
* Mediante make compialmos el paquete.
* Mediante make install se instalan los programas, datos y documentación.

#### Windows

Existe un directorio, Windows, que contiene los archivos necesarios para generar un binario para este sistema operativo además de configurar su instalador. Y permite legalmente realizar un enlazado con la biblioteca cliente avisando en ese caso que la licencia final del binario creado será la GPL y con las licencias libres Qt Free Edition de Trolltech.

#### GNU/Linux

Existen los directorios Debian y rpm que permiten generar los paquetes de instalación para las distribuciones tipo Debian y Red Hat respectivamente. En la lista de dependencias se incluyen libqt3-mt-psql, libqt3-mt-odbc, libqt3-mt-mysql correspondientes a los clientes de bases de datos que como se dijo anteriormente deben ser instalados previamente.