-----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
