+++ /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 $