--- /dev/null
+roadmap for the OpenIsis development
+
+
+Mapa para el desarrollo de OpenIsis
+
+
+* status
+- read-only engine
+- very basic versions of query/formatting
+- multiple language bindings: PHP,Perl,Java
+- webapps work fine (neither complex queries nor formatting)
+
+This is the status since summer 2002, one year after the development started.
+While multithreading ability would be useful when running inside a Java
+servlet engine, webforms do not usually create complex queries,
+do not refer to previous results and the graphical layout is anyway
+driven by HTML code inside a JSP rather than by formatting
+language constructs like "FONTS".
+
+
+* Estado actual
+- motor de sólo-lectura
+- consultas y formateo aún básicos
+- múltiples asociaciones (bindings) en los siguientes lenguajes: PHP, Perl, Java
+- aplicaciones web funcionan bien (sin consultas complejas ni formateo)
+
+Este es el estado desde verano 2002, un año despúes de
+haber comenzado el desarrollo.
+Mientras que sería útil incluír la habilidad de
+manejar multihilos dentro de
+un motor de servlets Java, formularios en web
+generalmente no requieren la realización de consultas
+complejas, no necesitan acceso a resultados anteriores
+y el diseño gráfico ya está incluído en el código HTML
+dentro de un JSP y no requiere de instrucciones
+de formateo como "FONTS".
+
+
+* prepared
+- Tcl/Tk GUI client
+- Lehmann/Yao index with collation support
+- highly efficient multithreading server
+
+Since midth of 2002, we've been preparing the next step,
+which shall lead to a (non web based) graphical user interface
+supporting simultaneous write access.
+In order to support even very demanding applications,
+we sacrificed the simplicity and convenience of direct file access
+in favor of a server based approach.
+After several tests and studies on how this might be integrated within
+the various environments the design phase is mostly finished and
+much of the code has already been written.
+The index structure is borrowed from Postgres/the GiST.
+
+
+* en preparación
+- cliente con interfaz gráfica en Tcl/Tk
+- Indice Lehmann/Yao con alfabetización flexible
+- servidor multihilos altamente eficiente
+
+Desde mediados de 2002 hemos preparado el próximo paso
+que deberá conducir a una interfaz gráfica (no basada
+en web) que posibilite acceeso a escritura simultáneo.
+A fin de dar soporte incluso a aplicaciones con altas
+exigencias, sacrificamos la simplicidad y
+conveniencia de acceso directo a archivos en favor de
+un enfoque basado en un servidor. Después de
+muchas pruebas y estudios sobre cómo podría ser
+integrado en los diferentes entornos, prácticamente
+hemos finalizado con la fase del diseño y ya hay mucho
+código escrito. La estructura del índice es prestado
+de Postgres/the GiST.
+
+
+* aims
+- multi-purpose database and server technology
+- robustness, performance and scalability
+- exploring application areas with tools
+
+While OpenIsis clearly has it's roots in CDS/ISIS,
+we believe the principles of IIF(ISO2709)-based databases to be
+very well suited for a wide range of applications,
+not only in the bibliographical domain.
+
+The more programmers feel ISIS is their database of choice,
+the more will contribute improvements.
+Maybe one day even Koha and Gnuteca will switch over from MySQL/Postgres.
+Therefore we strictly focus on an industrial-strength implementation
+of the core issues and on making them available to techies in various ways
+rather than building elaborated applications offering easy end user access.
+
+
+* Objetivos
+- base de datos y tecnología de servidor multipropósito
+- robustez, rendimiento y escalabilidad
+- exploración de diferentes áreas de aplicación con las herramientas
+
+Aunque las raíces de OpenIsis provienen de CDS/ISIS,
+creemos que los principios de bases de datos
+basados en el formato de intercambio de información
+(ISO 2709) se adaptan muy bien a una amplia gama de
+aplicaciones, no sólo en el ámbito bibliográfico.
+
+Cuanto más programadores eligan a ISIS como base de
+datos, mayores serán los avances contribuidos. Quizas
+incluso Koha y Gnuteca se pasen de MySQL/Postgres a
+ISIS. Como consecuencia nos hemos concentrado en una
+poderosa implementación de las funciones básicas y a
+ofrecerlos a desarrolladores de diferentes formas, en
+lugar de construir aplicaciones completas para el
+usuario final.
+
+
+* variants
+- standalone
+- client and multithreaded server
+- no multi-process writing, single-shot writers possible
+
+The most simple variant is working for some time now.
+In a read-only application, several clients may
+access the database simultaneously. (This *may* even work with *one* writer,
+but details are system dependent, so don't rely upon this).
+
+No two writing processes may have overlapping access to the database,
+since this would require fine-grained file locking (which has lots of
+problems) and rule out agressive caching (which has lots of benefits).
+However, where the complete access to the database, from opening to closing,
+is strictly serialized by one single lock, multi-process write access
+is possible (CGI, PHP).
+
+The approach most stable yet giving highly parallelized access is a
+server acting on behalf of a bunch of clients, as used by every RDBMS.
+
+
+* Variantes
+- estación de trabajo independiente
+- cliente y servidor multihilos
+- sin escritura multi-proceso, funciones de escritura monoestables
+
+La variante más sencilla ya funciona desde algún
+tiempo. Es una aplicación de sólo lectura, varios
+clientes pueden acceder una base de datos en forma
+simultánea. (Esto incluso *puede* funcionar con *un*
+cliente que grabe datos sobre ella, sin embargo los
+datalles dependen del sistema de implementación, por
+lo que ésto no deberá ser tomado al pie de la letra).
+
+
+* application scenarios
+- multi-purpose or customized Tk application
+- PHP or Perl webapp readonly or client
+- Java webapp standalone, server or client
+- multi-protocol C server (Z39.50, HTTP, IMAP)
+
+The basic GUI version will try to mimik the basic features of WinISIS.
+The scripting abilities of Tcl/Tk can be used for customizing applications.
+For experienced users facing complex tasks, this could provide a much more
+demanding, yet also more flexible alternative to worksheets and printformats.
+
+As with today's RDBMS, all language environments can act as client to a
+database server. Java, due to it's one-multithreaded-process architecture,
+may also incorporate the multisession server code locally (via JNI).
+The server proper is not limited to it's native database access protocol,
+but may support a host of session based TCP protocols,
+e.g. Z39.50 using the Yaz toolkit.
+
+
+* Escenarios de aplicación
+- aplicaciones multipropósito o a medida con Tk
+- aplicaciones web en PHP o Perl de sólo-lectura o clientes
+- aplicaciones Java independientes, cliente o servidor
+- servidor multi-protocolo en C (Z39.50, HTTP, IMAP)
+
+La versión con interfaz gráfica reimplementará las
+características básicas de WinISIS. La facilidad de
+Tcl/Tk para integrar scripts puede aprovecharse para
+aplicaciones a medida. Para usuarios experimentados
+que se enfrentan a tareas complejas, ésto es una
+alternativa más exigente, pero también más flexible
+que hojas de trabajo y formatos de impresión (PFT).
+
+
+* server architecture
+- multithreading - multisession
+- various embedded languages possible
+- usually not itself client
+
+The server opens one session for every client to hold references to previous
+query results. All requests on behalf of one client are serialized.
+As a consequence, IO and memory, which are also bound to sessions,
+can be accessed safely within the server without additional locking.
+
+The basic server language, yet another PFT-lookalike, can be augmented
+by embedded versions of the several bindings similar to the well known
+PASCAL formatting exits. While the server could also itself access remote
+databases, this is not recommended since it may hamper availability.
+
+
+* Arquitectura del servidor
+- multihilos - multisessión
+- posibilidad de usar varios lenguajes incrustados
+- generalmente no es un cliente en sí
+
+El servidor abre una sessión para cada cliente para
+almacenar referencias a los resultados obtenidos por
+consultas anteriores. Todas las solicitudes de un
+cliente se serializan, como consecuencia el
+acceso a los archivos y la memoria también se ligan a
+una sesión y pueden accederse en forma segura dentro
+del servidor sin bloquéo adicional.
+
+El lenguaje del servidor es solamente otro tipo de PFT
+y puede aumentarse incrustando versiones de las
+diferentes asociaciones similar a las conocidas
+salidas de formato de Isispascal. Mientras que el
+servidor también podría acceder bases de datos
+remotas, ésto no se recomiendo ya que puede haber
+inconvenientes con la avabilidad.
+
+
+* client architecture
+- TCP or local sockets
+- asynchronous in event based environment (GUI,server)
+- synchronous else
+
+The client connects to the server by means of TCP or the faster Unix sockets.
+The basic programmatic interface will, after sending a request to the server,
+wait until the response is available completely. In some environments like
+the Tk GUI however, it is possible for the client to stay responsive while
+waiting, display some progress bar and then show results as they arrive.
+
+
+* Arquitectura de clientes
+- TCP o sockets locales
+- entorno asincrónico basado en eventos (GUI, servidor)
+- otros sincrónicos
+
+El cliente se contecta al servidor mediante TCP o los
+sockets de Unix que son más rápidos. La interfaz de
+programación básica espera -después de haber enviado
+una solicitud al servidor- hasta que la respuesta esté
+disponible en forma completa. Sin embargo algunos
+entornos como la interfaz gráfica de Tk pueden incluír
+algún tipo de barra de progreso y mostrar los
+resultados en la medida que ingresan a fin de mantener
+el cliente en espera.
+
+
+* relation to technologies
+- use pros, avoid cons
+- bring ISIS power to other techniques
+- but stay independent of single concept like XML
+
+There is no single perfect programming environment for all kinds of tasks
+and all sorts of programmers. In order to support the widest possible
+range of techniques, we must not tie OpenIsis to any particular one.
+
+Using C++, for example, causes problems when linked into another environment
+which fails to properly call constructors and destructors or was compiled
+with another version of "io.h". While relying on a C++ based XML-parser is
+perfectly ok for a given application, it would not be such a good idea for
+a multi-purpose library. Even C-runtime features must be used with caution.
+
+
+* Relación con tecnologías
+- aprovechar los pros, evitar los contra
+- llevar el poder de ISIS a otras tecnologías
+- pero permanecer independiente de conceptos aislados como XML
+
+No hay un entorno de programación perfecto para todo
+tipo de tareas y todos los programadores. Para dar
+soporte al rango más amplio de tecnologías no debemos
+atar a OpenIsis a ninguna en particular.
+
+Usando C++ por ejemplo, aparecen problemas cuando se
+enlazan en otro entorno que falla al llamar
+correctamente a constructures y destructores o cuando
+ha sido compilado con otra versión de "io.h". Mientas
+que un parser XML basado en C++ es perfectamente
+factible en una aplicación dada, no sería tan bueno
+para una librería multi-propósito. Incluso
+características del librería de runtime de C (libc)
+deben emplearse con cautela.
+
+
+* Java features
+- works well in servlet engines
+- full-fledged language with well-designed utilities
+- mature and portable multithreading support
+- JVM license problems, buggy GUI toolkits
+
+The various improvements over the C++/Smalltalk heritage made Java
+the language of choice for object oriented programming in large-scale
+software projects. Servlet engines are the most elaborate environment
+for complex web-publishing tasks.
+
+Unfortunately, the GUI toolkits AWT and Swing are poorly designed
+and implemented. The Sun JVM and JDK are subject to export restrictions,
+and the free JVMs are not very mature.
+
+
+* Características de Java
+- funciona bien en motores servlet
+- lenguaje completo con funciones bien diseñadas
+- soporte para multihilos maduro y portable
+- problemas con la licencia, toolkits GUI deficientes (AWT)
+
+Las diferentes mejores sobre la herencia de
+C++/Smalltalk hacen de Java el lenguaje de elección
+para programación orientada a objetas en proyectos de
+software de gran escala. Motores servlets ofrecen el
+entorno más elaborado para tareas complejas en la
+publicación web.
+
+Desafortunadamente los toolkits de interfaces gráficas
+AWT y Swing están pobremente diseñados e
+implementadas. La máquina virtual Java y JDK de
+Sun están sujetas a restricciones en cuanto a su
+exportación y otras máquinas virtuales Java no están
+demasiado maduras.
+
+
+* Java application
+- multithreaded network application with in-process server
+- synchronous client in pure Java
+- integration based on JDBC or "enterprise beans"
+
+The database frontend for "Institut der Didaktik der Mathematik" is a simple
+example how to take advantage of HTTP session handling and javax.mail classes
+to create an order system. Remote database access can be implemented in pure
+Java (like Oracle's "thin client"), however, asynchronous communication is
+not supported by java.net.Socket. The wealth of existing Java based solutions
+might be basis for integration e.g. with SOAP.
+
+
+* Uso de Java
+- aplicación multihilos en red con servidor de procesamiento interno
+- clientes sincrónicos en Java puro
+- integración basada en JDBC o "enterprise beans"
+
+El interfaz de base de datos para el "Instituto
+de didáctica de la matemática" es un ejemplo simple de
+cómo se puede aprovechar las ventajas de un handling
+de sesión HTTP y de clases javax.mail para crear un
+sistema de solicitud bibliográfica. Se puede
+implementar el acceso a bases de datos remotas en Java
+puro (como el "cliente liviano" de Oracle), sin
+embargo java.net.Socket no ofrece soporte para
+comunicación asincrónica. La abundancia de soluciones
+existentes basadas en Java pueden ofrecer una base
+para una mayor integración, por ejemplo con SOAP.
+
+
+* Tcl/Tk features
+- best portable GUI toolkit
+- very tight integration with ISIS
+- easy scripting for customization
+- not too widespread use
+
+As a GUI toolkit, Tk is unparalleled in portability and ease of use.
+While it can also be used as PerlTk, PythonTk and even JavaTk,
+Tcl is Tk's native language and, among the mentioned, the most easy to learn.
+Since Tcl was conceived as Tool Command Language, features of the
+C library are easily and efficiently made accessible.
+While Tcl is twelve years old and very mature, it is not that well known
+and does not offer such an enormous amount of third-party libraries to use.
+
+
+* Características de Tcl/Tk
+- el mejor juego de herramientas GUI multiplataforma
+- integración muy estrecha con ISIS
+- scripting sencillo para requerimientos particulares
+- uso no demasiado extendido
+
+Como toolkit de interfaz gráfica, Tk no tiene igual en
+cuanto a portabilidad y facilida de uso. Mientras que
+también puede ser usado como PerlTk, PythonTk e
+incluso JavaTk, Tcl es el lenguaje nativo de Tk y
+entre los mencionados, el de más facil aprendizaje.
+Debido a que Tcl fué concebido como un lenguaje
+de control de herramientas, se accede con facilidad y eficiencia a
+las características de la librería en C. Mientras que
+Tcl ya tiene doce años y es muy maduro, no es tan
+conocido y no ofrece una cantidad tan enorme de
+librerías adicionales.
+
+
+* Tcl/Tk application
+- graphical user interface
+- asynchronous singlethreaded client
+- integrated in server
+
+Tcl's most important application is to provide a portable Tk-based GUI,
+which, due to it's nature as a script, can be tailored to the needs of
+each library or augmented by additional functionality like Z39.50
+(indexdata wrote a Tcl/Tk client based on Yaz).
+This GUI provides synchronous access to local databases and asynchronous
+remote access, however, runs itself in a single thread.
+
+Tcl is also well suited as a safe server extension language,
+with one interpreter per session.
+
+
+* Uso de Tcl/Tk
+- interfaz de usuario gráfica
+- cliente asincrónico de proceso simple (sólo hilo)
+- integrado con el servidor
+
+La aplicación de Tcl más importante es de proveer una
+interfaz gráfica portable y basada en Tk que, debido a
+su naturaleza de script, puede ser hecho a medida de
+cada biblioteca o aumentada con funcionalidades
+adicionales como Z39.50 (indexdata escribió un
+cliente Tcl/Tk basado en Yaz). Esta interfaz gráfica
+provee acceso sincrónico a bases de datos locales y
+acceso remoto asincrónico, sin embargo corre en sí
+mismo como un sólo hilo.
+
+
+* Perl features
+- pathologically eclectic rubbish lister
+- best for the lazy, impatient and hubristic
+- unreadable one-way code
+
+The experienced programmers preferred quick-and-dirty language.
+There is rarely a situation in life for which not somebody wrote some
+Perl Module. Usually, however, you can use it but not read it.
+
+
+* Características de Perl
+- "pathologically eclectic rubbish lister"
+- lo mejor para vagos, impacientes y presuntuosos
+- código unidireccional ilegible
+
+El lenguaje rápido-y-sucio preferido por programadores
+experimentales. Se encuentra raramente una ocasión en
+la vida donde alguién NO haya escrito un módulo Perl.
+Sin embargo generalmente lo puede usar, pero no leerlo.
+
+Nota1: (Listador de tonterías patológicamente eclécticas).
+
+
+* Perl application
+- converting
+- reports
+- integration
+- cgi
+
+You wouldn't start writing a complex application in Perl, would you?
+One year later it's nearly impossible to go any further.
+However, behind and between the scenes Perl is as useful as for small
+CGI based web frontends.
+
+
+* Uso de Perl
+- conversión
+- informes
+- integración
+- cgi
+
+Ustedes no comenzarían escribir una aplicacion
+compleja en Perl, ¿no es cierto?
+Un año más tarde es casi imposible de ir más allá.
+Sin embargo, atrás y entre escenas Perl es tan práctico
+para pequeños cgi-frontends para web.
+
+
+* PHP features
+- easy for beginners
+- commonly available on servers
+- with Apache, runs multiprocess
+
+
+* Características de PHP
+- fácil para principiantes
+- generalmente disponible en los servidores
+- multiproceso con Apache
+
+
+* PHP application
+- lightweight web apps
+- integration with existing PHP code
+- for writing, should be used as client
+
+
+* Uso de PHP
+- Aplicaciones web livianas
+- integración con código PHP pre-existente
+- para escritura, debe ser utilizado como cliente
+
+
+* Mail and MIME
+- mailheaders easily stored as ISIS records
+- IMAP queries similar to Type-1/ISIS
+- well established concept for handling multimedia
+
+MIME is not exactly a programming language, but an environment
+worthwhile to support. While media attached to an ISIS DB is locally
+best stored in separate files (just like RDBMS store their "BLOBS"),
+it's type and attributes should be described according to the MIME schema.
+Even where bibliographical rules for such descriptions apply,
+MIME is best suited to give some client app hints on how to display
+or further process such data.
+
+In the long term one could envision basing the cyrus IMAP server on
+ISIS to hold the metadata.
+
+
+* Mail y MIME
+- Encabezamientos mail se almacenan fácilmente como registros ISIS
+- consultas IMAP tienen similitudes con consultas tipo-1/ISIS
+- concepto establecido para manejar multimedia
+
+MIME no es exactamente un lenguaje de programación,
+pero un entorno que merece soporte. Mientras que es
+preferible almacenar archivos multimedia atachados
+localmente a una base de datos ISIS en forma separada
+(justo como las bases relacionales almacenan sus "BLOBS"),
+el tipo y atributos de estos archivos
+deberían describirse acorde al esquema MIME. Incluso
+cuando se aplican reglas bibliográficas en estas
+descripciones, MIME ofrece la mejor forma de informar
+a las aplicaciones cliente como visualizar o procesar
+estos datos.
+
+A largo plazo se podría enfocar de basar el
+servidor IMAP cyrus en ISIS para almacenar los metadatos.
+
+
+* XML
+- structures easily flattened to ISIS records
+- compact storage, fast access
+- can search for all attributes
+
+During the last years virtually every software "moved" to XML,
+actually putting fancy new cloths on their same old data.
+Since bibliographers were among the early supporters of XML's anchestor
+SGML it is not surprising that these cloths can easily be stripped off
+in order to store structures whose XML representation is available
+into an ISIS DB. Each opening tag produces a field with subfields
+holding it's attributes. Fields representing the childs are followed
+by a field denoting the closing tag.
+
+
+* XML
+- estructura que se adapta fácilmente a registros ISIS
+- almacenamiento compacto, acceso rápido
+- permite consultas por todos los atributos
+
+Durante los ultimos años practicamente todo "se movió"
+hacia XML colocando bonitas ropas nuevas sobre los
+mismos datos viejos. Debido a que entre los primeros
+en impulsar SGML -el ancestro de XML- estuvieron
+bibliógraficos, no es de sorprender que estas ropas
+pueden quitarse facilmente para almacenar datos en
+bases de datos ISIS, mientras que las estructuras XML
+siguen accesibles. Cada etiqueta de apertura genera un
+campo con subcampos que almacenan sus atributos. Los
+nodos hijos se representan en campos a los que le
+sigue un campo que significa las etiquetas de cierre.
+
+
+* supported platforms
+- linux fully supported
+- other unixes incl. MacOS X
+- windows w/o multithreading
+
+As of today, linux/intel is the ideal platform.
+On other unixes, we may have to deal with big endian processors
+and support for POSIX threads may vary.
+Windows 9x/Me lacks sufficient multithreading support.
+NT4/00/XP has the necessary calls, but difficult to use.
+
+
+* Soporte para plataformas
+- soporte completo para linux
+- otros unixes incluyendo MacOS X
+- windows sin multi-procesamiento
+
+Actualmente linux/intel representa la plataforma
+ideal. Sobre otros unixes tenemos que manejar
+procesadores big endian y el soporte para subprocesos
+POSIX puede variar. Windows 9x/Me carece de suficiente
+soporte para multihilos. NT4/00/XP incluya las
+llamadas necesarias, pero son dificiles de usar.
+
+
+* proposed file formats
+- plaintext MST
+- XRF 4/2, 5/3, 7/5 or as seems fit
+
+Besides the legacy MST and XRF, OpenIsis will support additional formats.
+A plaintext MST is very similar to ISO2709, representing a record as
+a series of lines. There are neither limits on field length, record length
+or database size nor any alignment or byte order incompatibilities.
+In most cases it will even occupy slightly less space.
+
+The record length should be stored together with the position in the XRF
+instead of the MST, so access requires less IO and the number of bytes
+used for position/length can be allocated as needed.
+
+
+* Formatos de archivo propuestos
+- archivo maestro plano (MST)
+- archivo de referencias cruzadas (XRF) 5/3, 7/5 o como parezca ajustarse
+
+Mas allá de los formatos heredados MST y XRF, OpenIsis
+ofrecerá soporte a formatos adicionales. Un MST en un
+archivo plano es muy similar a ISO 2709, representando
+un registro como una serie de lineas. Tampoco hay
+limitacion de longitud de campo, longitud de registro
+o tamaño de la base de datos, ni alineamiento o
+incompatibilidades de orden de bytes. En muchos casos,
+incluso ocuparía un espacio levemente menor.
+
+
+* application projects
+- common serials database
+- commercial applications (web shop and content management)
+- several web based
+
+
+* Proyectos de aplicaciones
+- base de datos de publicaciones periódicas
+- aplicaciones comerciales (comercios en-línea y gestión de contenidos)
+- varios basados sobre aplicaciones web
+
+
+* roadmap 2003
+- 02: finish index
+- winter: standalone GUI (HTML formatting)
+- spring: server with GUI client
+- Java and Perl overhaul
+- reworked formatting
+- full Type-1 queries
+
+
+* Objetivos para 2003
+- febrero: terminar índice
+- marzo: aplicación GUI para estaciones de trabajo independiente (sobre formato HTML)
+- primavera: servidor con cliente GUI
+- revisión de las asociaciones con Java y Perl
+- retrabajar formateo
+- soporte completo para consultas tipo 1
+
+
+---
+ $Id: Cuba.txt,v 1.6 2003/02/10 17:15:39 kripke Exp $