-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


- ----------  Mensaje reenviado  ----------

Subject: Para desarrollar aplicaciones bajo GNU/Linux: un cimarron que no es 
amargo
Date: Viernes 13 Febrero 2004 18:42
From: Federico Heinz <[EMAIL PROTECTED]>

Amigos,

les quiero contar de un sub-proyecto de PAPO que V�a Libre est� llevando
a cabo, y que creo que es de inter�s para todos los que quieren
desarrollar aplicaciones administrativas bajo GNU/Linux. Para los
impacientes: se llama "cimarr�n", y lo pueden bajar de la p�gina de PAPO
(http://papo.vialibre.org.ar), por cvs an�nimo (para tener una versi�n
m�s actualizada y con m�s funcionalidad --- esto est� avanzando muy
r�pido) con el comando:

        cvs -z3 -d [EMAIL PROTECTED]:/cvsroot/papo co cimarron

(para que esto funcione, tienen que tener ssh versi�n 2 instalado, y en
algunas distros, van a tener que exportar la variable de entorno CVS_RSH
con el valor 'ssh', es decir "export CVS_RSH=ssh")

Mientras lo bajan, les cuento la historia: cuando empezamos PAPO,
salimos a buscar un ambiente en el cual basar el desarrollo. Ten�amos
una serie de requerimientos, el m�s fuerte era que ten�a que ser
multi-todo: multi-capas, multi-UI (gr�fico, caracter, web),
multi-plataforma, multi-base de datos... Dimos muchas vueltas, nos dio
la impresi�n de que GNU Enterprise cumpl�a con nuestros requisitos, y
comenzamos el desarrollo bas�ndonos en ese proyecto.

Con el paso del tiempo, lamentablemente, comenzamos a descubrir
problemas serios con nuestra elecci�n: para ser multi-todo, GNUe hab�a
sacrificado una serie de cosas que consideramos importantes, pero por
sobre todas las cosas, ten�a un problema de dise�o que nos complic�
mucho la vida: es un solo aparato monol�tico que abarca desde la UI
hasta la conexi�n SQL: tiene su lenguaje de descripci�n de pantallas (en
XML), su application server (que s�lo est� dise�ado, y falta para la
implementaci�n), su interfaz a la base de datos... y no se puede
mezclar. Si vas a hacer GNUe, ten�s que agarrar todo, no pod�s usar s�lo
un pedazo, o reemplazar un pedazo por algo que te guste m�s.

Al final, la versi�n 0.2 de PAPO est� ah�, funciona en varios lados,
pero no estamos conformes. Por un lado, la presentaci�n del sistema es
muy espartana, pero m�s que nada, lo que hay debajo de capot no nos
satisface: la l�gica de negocios est� muy atada al GUI, la falta del
servidor de aplicaciones para "sostener" nos forz� a encontrar
soluciones bastante ad-hoc y muy procedurales. Como consecuencia,
decidimos que obviamente GNUe no es lo adecuado por nuestro proyecto, y
buscamos con qu� reemplazarlo.

Encontramos algunas cosas muy piolas, que antes no hab�amos visto (o a�n
no estaban). Decidimos seguir con Python, como lenguaje, por
considerarlo de los menos "atemorizadores" para novatos, y encontramos
un sistema de persistencia objeto/relacional para Python (stand-alone o
bajo Zope) inspirado en el Enterprise Objects Framework de Apple. Se
llama Modeling (http://modeling.sf.net/), y se los recomiendo tres
veces. Es un muy buen trabajo de S�bastien Bigaret que hace un muy buen
balance entre magia y simplicidad (es decir: no invierte enormes
cantidades de magia en resolver cosas que se pueden arreglar f�cilmente
con un poquito de esfuerzo de parte del programador). S�bastien adem�s
es un l�der de proyecto de esos de los que a uno le gustar�a que hubiera
m�s: considerado, atento, capaz, muy buen comunicador.

Para application server encontramos tantos distintos, que decidimos
postergar la decisi�n para m�s adelante, sabiendo que al menos siempre
tenemos la posibilidad de usar a Zope como opci�n de fallback.

Nos queda el tema del UI, y all� no encontramos nada que nos
satisficiera. No quer�amos pegarnos a GTK o a QT, y ni siquiera a una
interfaz gr�fica. Por lo dem�s, la mayor�a de los widget sets que andan
dando vueltas por ah� est�n dise�ados para manejar una interacci�n muy
compleja con el usuario: la idea es que con ellos uno pueda escribir
*cualquier* aplicaci�n. Pero los programas administrativos por lo
general tienen un modelo de interacci�n muy simple, y la funcionalidad
"excesiva" de los widgets lleva a que el programa deba ser m�s complejo
que lo que hace falta. En realidad, a algunos nos gust� Entity, pero ese
proyecto ha muerto para renacer como Oblingua en alg�n momento del
futuro, pero no sabemos cu�ndo.

Ah� nace, entonces, Cimarr�n. Se trata de un juego de widgets abstracto,
que define cosas como campos de entrada de texto, de fechas, checkboxes,
etc, sin decir *nada* acerca de su apariencia en pantalla, y un modelo
de interacci�n simplificado. Una aplicaci�n desarrollada usando Cimarr�n
crea instancias de esos widgets, los que a su vez crean instancias de
los widgets concretos con los que interact�a el usuario. El chiste est�
en que los widgets concretos pueden estar implementados en cualquier
cosa. Actualmente los tenemos implementados en GTK y GTK2, como
ejemplos, y se pueden hacer las clases correspondientes para que la
aplicaci�n funcione usando QT (deber�a ser f�cil), o curses (m�s
laburo), o...

Todav�a no tenemos un formato XML para describirlo est�ticamente, ni un
constructor de GUI gr�fico, sino que hay que construir las instancias
usando c�digo, pero ninguna de estas cosas deber�a ser complicada.

A esta altura ya debe haber bajado (no es muy grande). No hay
documentaci�n formal a�n, pero estamos trabajando en mejorar la
consistencia de los comentarios y los docstrings en el c�digo, y hay
ejemplos de c�mo hacerlo andar (algunos pueden requerir que instalen
Modeling y PostgreSQL). Los invito a que lo prueben, le peguen, lo
critiquen... �y sobre todo contribuyan! :-)

Abrazos,

        Fede

PS: �Por qu� "cimarr�n"? Bueno, lo que pasa es que est� pensado
siguiendo el pattern "Model-View-Controller", tambi�n conocido como
"MVC". Se nos ocurri� que un nombre lindo para algo que implementa MVC
pod�a ser "MaVeriCk"... pero lamentablemente no fuimos los primeros en
pensarlo: hay como cinco proyectos que se llaman as�, y no quisimos
repetir el fiasco de Firebird, pero "maverick" se traduce al castellano
como "cimarr�n", y busc�ndolo en el diccionario nos encontramos con que
tiene varias acepciones:

        cimarr�n, -rrona

        1 adj. [animal dom�stico] Que huye al campo y se hace montaraz.
        -
        2 adj.-s. Am�r. Esclavo que hu�a buscando la libertad. -
        3 adj. [animal] Salvaje, por oposici�n al domesticado; [planta]
        silvestre, por oposici�n a la cultivada.
        4 R. de la Plata. [mate] Sin az�car.
        5 Chile. Holgaz�n, perezoso. -
        6 adj.-s. MAR. Marinero indolente. -
        7 m. Colomb. Aromo, �rbol leguminoso.

De todas ellas, la �nica que no nos pareci� pertinente fue "�rbol
leguminoso", as� que lo adoptamos.

- --
GnuPG Public Key: gpg --keyserver wwwkeys.eu.pgp.net --recv-key BD02C6E0
Key Fingerprint: 04F4 08C5 14B7 2C3D DB21  ACF8 6CF5 0B0C BD02 C6E0

- -------------------------------------------------------



- -- 
- --
Sebasti�n D. Criado - [EMAIL PROTECTED]
L.U.G.R.o - http://www.lugro.org.ar
GNU/Linux Registered User # 146768
- -------------------------------------------------------------------
"Si el Universo fuera un programa estar�a hecho en C, y correr�a sobre
un sistema UNIX"
                                                   An�nimo.

                        
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQFALlhz8hmHQ8ZCg0IRAhBBAJ0UYA8lWoizeGNJIyoYxG88yUM3PQCgtFHC
5rjD93H5Fvy3gQap7lXpel8=
=H+Hz
-----END PGP SIGNATURE-----


_______________________________________________
Lugro mailing list
[EMAIL PROTECTED]
http://www.lugro.org.ar/mailman/listinfo/lugro

Responder a