including openisis 0.9.0 into webpac tree
[webpac] / openisis / doc / Cuba.txt
diff --git a/openisis/doc/Cuba.txt b/openisis/doc/Cuba.txt
new file mode 100644 (file)
index 0000000..af233da
--- /dev/null
@@ -0,0 +1,648 @@
+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 $