Entra en escena, Livecode 5.0

Livecode LogoHace mucho ya hablé de Livecode, aunque al parecer, la entrada se perdió en el cambio de blog. La idea de escribir esta entrada, es porque estamos evaluando de nuevo esta herramienta, muy seriamente, para adoptarla para migrar nuestros proyectos actuales, y basar en ella los futuros, sobre todo, tras la salida de la nueva versión 5, que incluye soporte para Android.

Sí, ya sé que soy impulsivo, y que cambio de lenguaje como quien cambia de camisa, pero las decisiones que suelo tomar, siempre suelen basarse en algún tipo de fundamento, y siempre va acompañado de un análisis del mercado. En Komenco nos encontrábamos desarrollando “felizmente” bajo Velneo. Una herramienta que nos gusta mucho, de una empresa española, con una comunidad envidiable respecto a otras plataformas de desarrollo, y con una filosofía basada en cloud más que interesante. Pero ciertas reuniones con clientes, han hecho que surjan distintos proyectos nuevos, que nos han obligado a plantearnos la posibilidad de migrar los proyectos ahora, antes que sea demasiado tarde.

 Antecedentes

Por un lado, nos han surgido proyectos de movilidad, bajo Android e iPhone. Velneo ha sacado en su nueva versión v7.8 un cliente beta para Android (para niveles 3 y 4), que además de ser Beta, requiere de conexión con el vServer para funcionar. La idea no es mala,  todo lo contrario, pero no nos sirve. Nosotros requerimos que nuestras aplicaciones funcionen autónomas del lado del cliente, y luego sincronicen con el servidor, y además, para iOS no ha salido nada y no se sabe tampoco si está en planning o para cuando. Existiría la posibilidad de montar la aplicación sobre Tablets con Windows XP/7, pero entonces obligaríamos al cliente a migrar sus dispositivos, cuando muchos de ellos ya disponen teléfonos Android. También existe la posibilidad de montar las aplicaciones de movilidad sobre PhoneGAP, y que comuniquen con la aplicación Velneo por sockets, pero entonces estamos diversificando, y el equipo requiere el doble de conocimiento para mantener dos aplicaciones en dos lenguajes distintos, algo, que en Komenco, acabando de comenzar, no nos podemos permitir, y más aún cuando mi filosofía es, siempre y cuando sea posible, usar el mismo lenguaje “para todo”.

Por otro lado, el cliente también nos han pedido que requieren una pequeña intranet web que ellos mismos pudieran ampliar y modificar. También podría desarrollarse perfectamente en Velneo, con el módulo vModApache, pero que exista vModApache no implica que Velneo sea una herramienta para desarrollar web (ya que no lo es), y por último, los datos deben ser cómodamente gestionados por un DBA e integrados con otras herramientas y por todos es sabido que la BBDD de Velneo es cerrada, y se requieren herramientas propias de Velneo, o tirar de ODBC para poder acceder a los datos, sin contar, que Velneo no es una herramienta pensada, que no quiere decir que no pueda, con otras BBDD. Tema vetado.

Por supuesto, el entorno que elijamos, debe estar totalmente respaldado por una empresa consolidada.

Alternativas

Tras darle muchísimas vueltas al asunto, nos encontrmos con distintas opciones viables.

  • Windev, WebDev y Windev Mobile de la empresa PCSoft.
  • RealStudio de la empresa RealSoftware.
  • Livecode de la empresa Runrev LTD.

Seguramente existan muchas otras herramientas existentes, pero de todas las que se estuvieron estudiando, estas tres, fueron las que más nos gustaron.

WinDev/WebDev/WinDev Mobile

Windev ya lo conocemos. Ya he programado en WLanguage, y es una herramienta muy potente, además de disponer en la actualidad de licencias de V15. Tras navegar un buen rato por internet, y acordarme de haberlo usado en el pasado, decidimos descartarlo. Por un lado por el tema económico, del que hablaré más adelante. Las principales razones por la que se descartó, fué que la Suite de PCSoft, sólamente corre en Windows. Los desarrolladores deben programar forzosamente desde Windows, y además, sobre un IDE bastante pesado e inestable. En el pasado ya me hizo alguna que otra jugarreta, y no fué en un proyecto precisamente grande. Además, las indagaciones por internet no han sido muy satisfactorias. Me he encontrado con una comunidad bastante quemada, quejándose de, inestabilidad, cantidad ingente de novedades que se presentan a bombo y platillo tras un año sólamente de la aparición de la versión anterior, y además, de las cuales, novedades sólo son una cuarta parte, y de ahí, habría que eliminar las que no funcionan, o estan mal implementadas.

RealStudio

Realstudio era otra alternativa. Me gustaba la simplicidad del lenguaje (a pesar que no me guste Basic, pero ésto es otro tema) que no restaba potencia a la herramienta. IDE que funciona en Windows/Mac/Linux, con deploy nativo en Windows/Mac/Linux, y con un modo Web Edition, que permite generar aplicaciones CGI para correr en la web, como si fuera una aplicación de escritorio. Pero algo fallaba, y ese algo, era la movilidad. RealStudio, actualmente no tiene ninguna solución para movilidad, salvo el Web Edition. Diréis que al fin y al cabo, los terminales si tienen conexión a internet, pueden trabajar perfectamente sobre una Web, pero recordar, que uno de los requisitos, es que pueda trabajar desconectado. Existen muchas razones que pueden provocar que el dispositivo móvil, por alguna u otra razón, no tenga cobertura, se caiga la red, mil razones, que no queremos que puedan interferir en el trabajo de nuestros clientes, ya que, si no hay cobertura en cierto lugar, la responsabilidad, no sería del operador, si no nuestra por no tener prevista una solución ante ésta situación. Para mantener conexión constante, hubiéramos continuado con Velneo, con el que relativamente, estábamos bastante contentos. Existía la alternativa de usar Realstudio + PhoneGAP. Esta solución no me terminaba de desagradar. Los proyectos Web y Escritorio podríamos afrontarlos con RealStudio, y PhoneGAP para movilidad (mucha movilidad, ya que PhoneGAP funciona en muchas plataformas), pero entonces, me acordé de Livecode y la belleza de su lenguaje…

LiveCode

Livecode era la última alternativa. A finales de 2010, ya fué una herramienta que estuve “estudiando” para basar nuestras soluciones, y sinceramente, la única razón por la que no acabé comprándola, fueron unos problemas en el pago de la solución. Por aquel entonces, disponía de una tarjeta Maestro, pero necesitaba una tarjeta Mastercard/VISA que me permitiera realizar la compra, y el intentarlo desde una transferencia bancaria internacional (la sede de Runrev se encuentra en Edimburgo) no fué satisfactoria. Podría haberme esperado al Lunes, y haberla hecho desde mi banco, pero mi impaciencia de aquel entonces hizo que lo descartara (lo sé, soy impulsivo, ya lo dije, pero he madurado) y me decantara al final por Velneo (hecho, que por cierto, no me arrepiento para nada, si no fuera por la prisa que me corre ahora).Livecode corre sobre Windows/Mac/Linux, y despliega en Windows/Mac/Linux. Para movilidad permite generar aplicaciones para iOS y Android, y para web, permite generar una aplicación que corre directamente en el navegador a través de un plugin propio, o bien instalar el RevServer (que es un CGI) para poder programar en scripting como hace PHP, mezclando HTML y código Livecode. Livecode tampoco es que sea perfecto. El plugin para web no está actualizado (aunque de todas formas no pensábamos usarlo), el despliegue para Android al parecer tiene alguna carencia aún, y Runrev tiene una política al parecer bastante curiosa con el licenciamiento de actualizaciones de sus productos hacia  nuevas versiones. Pero su lenguaje (me quiere sonar que se llama Transcript)su manera de trabajar, me llamaba demasiado la atención.

Conclusión

Tras perder una semana, como habréis podido imaginar por el título de la entrada, nos hemos decantado por Livecode por diversas razones.

Despliegue

Livecode nos permite programar desde Windows, Mac y Linux pudiendo hacer despliegue de la aplicación en Windows, Mac, Linux, iOS, Android, y Web, pudiendo abarcar con la misma herramienta los proyectos con sus requerimientos que tenemos actualmente, así como cualquier solución que se nos pueda presentar.

Lenguaje

Transcript es un lenguaje de programación “bello“. Escribir, mantener código, e incorporar nuevos desarrolladores, es totalmente entendible por otros programadores debido a que se programa como si estuvieras escribiendo inglés. No sé explicarme correctamente, por eso os pego un ejemplo de código.

De serie, trae funciones para todo tipo de necesidades, y si algo faltara, puede implementarse, o bien directamente en Livecode, o usando externals. Una

on mouseUp
put “Hello World!” into field 1
pass mouseUp
end mouseUp

De serie, trae funciones para todo tipo de necesidades (XML, sockets, bases de datos,manejo de archivos comprimidos, etc..etc..etc..), y si algo faltara, puede implementarse, o bien directamente en Livecode, o usando externals. Un detalle, es, que LiveCode, está escrito en LiveCode, eso ya dá un indicio de la potencia del lenguaje.

Versatilidad

LiveCode es una herramienta multipropósito. Podemos afrontar, no sólo aplicaciones empresariales, si no también contenido multimedia, juegos, etc… Además, todo el entorno, al estar construido sobre Livecode, tenemos acceso a él y podemos “alterarlo” a nuestras necesidades. Es programación basada en eventos, donde objetos interactúan unos con otros mandándose mensajes que recorren el message path“siguiendo una jerarquía, y que nosotros podemos capturar, dándonos un control absoluto del entorno. El control DataGrid, sin ir más lejos, no es un control como tal. Es un grupo de controles, agrupados (valga la redundancia), con un comportamiento ya programado que nos hace tener la impresión que es un único control, pero podemos desagrupar, controlar totalmente su comportamiento para nuestras necesidades, y volver a agrupar, obteniendo a partir de ahí un control totalmente distinto. Si, sé que no es nada nuevo, y que ésto existe desde hace eones, pero la facilidad con la que podemos tratarlo, si que no la he visto en otros lenguajes. Además, en LiveCode no hace falta “editar/compilar/depurar”. Cuando trabajamos sobre una stack ésta se está ejecutando en ese mismo instante, pudiendo controlar y modificar en todo momento el comportamiento de la aplicación a tiempo real.

Potencia y estabilidad

Para finalizar, lo que más me ha gustado de LiveCode. Es el conjunto de potencia y estabilidad. El IDE es muy muy ligero y estable, apenas enterándose el ordenador que tiene un completo entorno de desarrollo funcionando en ese momento, y las aplicaciones generadas son rápidas como un rayo. Si, es cierto, que a los 15 minutos llegué a colgar el IDE, pero también hay que admitir que fué culpa mía por tocar donde no debía y sin saber.

Finalizando

Como siempre he dicho, cada programador tiene unas necesidades, y el entorno de programación debe amoldarse en la medida de lo posible a éstas, así como el programador debe poner de su parte, ya que cada entorno tiene sus peculiaridades. LiveCode no es una excepción. Tendrá sus defectos, como todos, ya que no existe la herramienta perfecta, pero tras el estudio que hice en su momento, más el actual, diría que LiveCode es la herramienta que mejor se amolda actualmente a nuestras necesidades.

Para quienes les haya picado la curiosidad, en su web (que se encuentra, hoy 22/10/2011 a las 12:00 caída por un problema en sus servidores), podéis descargar un Trial para probar la herramienta, y creo que todos los Sábados se realiza un evento por streaming llamado LiveCode.tv Event donde programadores en LiveCode exponen sus proyectos y curiosidades. En estos eventos, los ponentes se comunican con los observadores mediante una aplicación llamada ChatRev, precisamente desarrollada en LiveCode.

Me gustaría enlazaros a una parte del primer LiveCode.tv Event que ví (de 1 hora de duración), donde Bjoernke, un experimentado programador en LiveCode, está mejorando un pequeño Generador de consultas SQL, y desarrollando modificaciones en tiempo real que le van pidiendo por ChatRev, mostrando la potencia que tiene este entorno. Por cierto, Bjoernke es un cachondo, no dejéis de revisar su canal de UStream.