
Llevo bastante tiempo pensando en como se podría implementar un gestor de Proyectos Libres (de cualquier temática) usable por cualquier persona, y que su desarrollo fuese lo más ordenado y lo menos doloroso posible.
Durante estos años he estado probando algunos lenguajes, usando y evaluando aplicaciones web más o menos maduras, tomando contacto con diferentes técnicas de la WWW pero sin encontrar nada que me produjese demasiado entusiasmo. Pero últimamente he de reconocer, que estoy muy interesado por las posibilidades de la Web 2.0.
Últimamente también me he empezado a preocupar por encontrar algo parecido a librerías y software libre en general que pudiese reusar, sobre todo relacionado con Web 2.0. Por ahora no he encontrado nada todo lo completo que me gustaría, o por lo menos nada parecido a las librerías que puedes encontrar en los lenguajes más populares.
Por otro lado estoy a la búsqueda de herramientas gráficas que nos ayuden en la tarea de programar aplicaciones Web 2.0.
Y las conclusiones que he sacado es que hay que hacer un gran trabajo manual sobre todo con la parte de diseño de la aplicación.
Y todo esto me ha llevado a replantearme un poco todas las técnicas que conozco de programación de la WWW.
¿Sería posible otra forma de programar en la WWW?
Imaginemos que tengo una herramienta como glade (por poner un ejemplo) para construir interfaces de usuario pero orientadas a web.
Imaginemos que en vez de generar la interfaz de usuario de un programa GTK, lo que genero es la interfaz de usuario de una aplicación Web 2.0 (dentro de las posibilidades y limitaciones que tienen los navegadores más o menos modernos).
Imaginemos esta interfaz de usuario de mi aplicación web, no como una clásica página web, con su scroll, su adelante y atrás, sus formularios con sus botones de "Enviar", etc., sino como una aplicación con el aspecto más o menos similar de una aplicación de escritorio.
Imaginemos, siguiendo con el ejemplo de gtk/glade, que un GtkButton genera un botón en la página web del navegador con sus propiedades para interactuar con él (y con el estilo que hayas elegido), una GtkTable produzca la equivalente table en html, una GtkEntry pues su equivalente form/input, y así con el resto de propiedades trasladables.
Imaginemos que mi aplicación se dedica a tratar las señales y los eventos que genera mi nueva interfaz de usuario (el usuario se ha colocado sobre tal parte de la página, ha pulsado tal botón, con estos datos), e interactúa con la interfaz de usuario en función de las señales y los eventos que recibe de forma dinámica gracias a Ajax (por ejemplo) con una mínima carga de páginas nuevas.
Imaginemos que estás páginas generadas tiene el tamaño y el comportamiento de una ventana normal de aplicación de escritorio sin más scroll que los necesarios.
Pero imaginemos que existiese un lenguaje y unas librerías con licencias GPL que facilitasen la programación de estas aplicaciones web.
Imaginemos que nuestra página inicial se limita a algo cercano a esto:
<html>
<script src="/javascripts/some-library.js" type="text/javascript"></script>
<body onload="javascript:main()">
<div id='body'>
</div>
</body>
</html>
Y va cargando el resto de la interfaz de usuario dinámicamente, en función de la interactuación de los usuarios.
Imaginemos que no necesitamos plugins privativos en nuestro navegador para ejecutar estas aplicaciones.
Imaginemos que programamos, de esta forma, aplicaciones típicas de escritorio y que se liberan como Software Libre.
¿Conoces alguna referencia al respecto? ¿Alguna iniciativa relacionada que destacar? Comentarios siempre bienvenidos.
Actualización 16-10-06:
Es curioso como el código de:
http://code.google.com/webtoolkit/documentation/examples/kitchensink/demo.html
<html>
<head>
<meta name='gwt:module' content='com.google.gwt.sample.kitchensink.KitchenSink'>
<link rel='stylesheet' href='KitchenSink.css'>
<title>Kitchen Sink</title>
</link></meta></head>
<body>
<!-- This script is the bootstrap stuff that simply must be there; it is sent down uncompressed -->
<script language='javascript' src='gwt.js'></script>
<iframe id='__gwt_historyFrame' style='width:0;height:0;border:0'></iframe>
</body>
</html>
es bien parecido a mi ejemplo de este artículo (escrito unos meses antes de que se publicara gwt).
A modo de ejemplo (aunque no está programado con gwt): docs.google.com. Quien tiene valor de programar algo así si no es con este enfoque de programación.
Creo que después del camino marcado por google con el gwt, hay un antes y un después en la programación web.
El inconveniente más gordo que me he encontrado hasta ahora es que los navegadores tienen que usar sí o sí, javascript, así que lo siento mucho (por ahora) por los navegadores en modo texto.
Solo dar las gracias a Rapto por sus comentarios. Estoy programando más animado que nunca usando pyjamas (y eso que está en una fase muy inicial). Lo dicho, gracias
Actualización 19-10-06:
No hay como alejarse del teclado para que se te ocurran soluciones para tus problemas. Esta vez ha sido estando en la horizontal, como me ha pasado tantas veces (en la cama se me encendió la lucecita y comencé a pensar en este artículo hace ya unos meses). La cocina, también es fuente de inspiración.
Bueno, al grano: Creo que he encontrado la forma de solucionar el problema de la usabilidad, la navegación en modo texto e incluso el indexado de webs del tipo descrito en este artículo.
Para ver el problema, si accedes a http://code.google.com/webtoolkit/documentation/examples/kitchensink/demo.html
con un navegador de texto verás una magnífica página en blanco. ¿Y que verá google? Pues lo mismo. Uuuch!
Pero volvamos al escritorio. Si yo genero un documento con openoffice, lo que quiero es que mi indexador-buscador (beagle) sea capaz de leerlo e indexarlo. Lo que no necesito es que mi buscador sea capaz de recorrerse todos los espacios y recovecos del openoffice para dar con el documento y sus lindeces. Que más le da a él, el openoffice.
Pues en la web lo mismo. Para navegadores en modo texto y para buscadores, yo les tengo que mostrar mis documentos, mis artículos, mis imágenes, los contenidos de mi web, pero no tengo porque hacerle recorrer toda mi aplicación web (todos los menús, todas las posibilidades de clicks) ni tampoco él sabrá hacerlo.
De esta forma una cosa como es publicar mis contenidos, lo puedo hacer con cualquier lenguaje web de los de toda la vida, y ya la floritura (que si quiero poder cambiar el color de cualquier parte de mi web, o formatear tal cosa, o meter anotaciones colaborativamente a cualquier parte de un texto, o chatear en una sala con colaboradores), pues lo hago con gwt/pyjamas o similares.
Los buscadores indexarán bien los contenidos, las personas con discapacidades podrán acceder también a ellos (aunque no participar tan activamente) y yo podré añadir todas las florituras (léase aplicaciones) que quiera sin mucho sufrimiento (que si compatibilidad entre navegadores, etc).
Por ejemplo, google no va a indexar docs.google.com entre otras cosas porque está toda basada en javascript y no puede, pero sí los documentos que se generen allí (si el usuario quiere compartirlos con la humanidad).
Uf, que de posibilidades…