cleanup and documentation updates
[webpac] / openisis / doc / Cuba.txt
diff --git a/openisis/doc/Cuba.txt b/openisis/doc/Cuba.txt
deleted file mode 100644 (file)
index af233da..0000000
+++ /dev/null
@@ -1,648 +0,0 @@
-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 $