5.5 Handhelds: Aplicaciones y Desarrollo de Software Open/Free

5.5.1 Introducción

Aunque los requerimientos no surgieron de las entrevistas, dado el bajo costo por el que se puede conseguir una computadora de mano (handheld) y la utilidad que esta tiene tanto para corredores (vendedores que visitan a los clientes) como para facilitar la organización del tiempo del personal jerárquico, decidimos incluir un breve relevamiento de las herramientas existentes para desarrollo de software para handhelds bajo Linux.

En particular, investigamos sobre Palms, por tratarse de handhelds populares, de amplia difusión y bajo costo (U$S 145 Palm Zire en USA, U$S 180 en Uruguay, precios de julio de 2004) en nuestro país.

La motivación es la de proveer a un pequeño negocio con facilidades de operación remota, mantener una lista de contactos de la empresa (clientes, proveedores, etc.), permitir a vendedores contar con una lista actualizada de precios, stock y productos y eventualmente mantener estos datos actualizados en tiempo real (p.ej. mediante tecnologías como GSM y/o Mensajería Instantánea).

Existen varias áreas en las que se cruzan los PDA y GNU: en el intercambio de información con la computadora de escritorio, en el sistema operativo del PDA y en las herramientas de desarrollo Open/Free para PDAs.

5.5.2 Intercambio de información entre PDA y Desktop

5.5.2.1 Palm

Primeramente relevamos software para intercambiar información entre el Palm y una máquina con Linux.

Kpilot reproduce las funcionalidades suministradas con las PalmPilot. Destacamos que por estar desarrollado para KDE puede intercambiar información entre la Palm y otras aplicaciones (p.ej. Korganizer).

El paquete pilot-link contiene utilidades para interactuar con nuestra PalmPilot (funciona para todo PDA que utilice PalmOS), incluyendo las esenciales (copia de seguridad, restaurar, instalar, sincronizar, convertir entre formatos, etc.). También tiene un depurador para utilizar en el desarrollo de nuestras aplicaciones.

J-Pilot [98] es similar al software que provisto con las Palms pero tiene más funcionalidades. Para correr precisa GTK+ y el paquete pilot-link. Por estar vigente (la última versión liberada fue el 2004-02-29, y es la 0.99.7) y por la madurez de desarrollo así como por la riqueza de funcionalidades (ver apéndice 7.1) es nuestra elección.

5.5.2.2 Pocket PC

Actualmente hay un proyecto para sincronizar Pocket PC con computadoras de escritorio corriendo GNU/Linux, a saber: SynCE [100] que no es muy amigable al usuario. Esto es otra ventaja para inclinarnos a las Palm.

5.5.3 Herramientas de Desarrollo

5.5.3.1 Compiladores y otras herramientas

Junto a estos software existen los emuladores, como Xcopilot, de especial utilidad para desarrolladores o bien para entrenamiento en el uso sin tener que comprar el dispositivo.

Hay dos abordajes al desarrollo: el de intercambio de información (ampliamente cubierto por pilot-link y J-pilot) y el desarrollo de aplicaciones para PalmOS sobre GNU/Linux. Para el mismo se requieren herramientas de desarrollo específicas, un emulador para probar las mismas y el PalmOS © SDK.

Hay herramientas de GNU específicas que soportan la programación en C y C++ para Palm OS. Destacamos además las bibliotecas (en C y C++) que incluye palm-link que permite conectarse, administrar, manipular e integrar los datos del Palm con otras aplicaciones. Estas bibliotecas están protegidas por las licencias GPL y LGPL (ver apéndice 7.2).

Por razones de espacio omitimos la forma de instalar un ambiente de desarrollo adecuado (herramientas, bibliotecas, recompilación de kernel, etc) y simplemente a modo de ejemplo copiamos un programa de 'hola mundo' para Palm.

#include <PalmOS.h>


// -----------------------------------------------------------

// PilotMain is called by the startup code and implements a

// simple event handling loop.

// -----------------------------------------------------------

UInt32 PilotMain( UInt16 cmd, void *cmdPBP, UInt16 launchFlags )

{

EventType event;


if (cmd == sysAppLaunchCmdNormalLaunch) {


// Display a string.

WinDrawChars( "Hello, world!", 13, 55, 60 );


// Main event loop:

do {

// Doze until an event arrives.

EvtGetEvent( &event, evtWaitForever );


// System gets first chance to handle the event.

SysHandleEvent( &event );


// Normally, we would do other event processing here.


// Return from PilotMain when an appStopEvent is received.

} while (event.eType != appStopEvent);

}

return;

}


5.5.3.2 Sistema Operativo y API

Hasta hace poco existía la discusión sobre si GNU/Linux era adecuado como sistema operativo embebido en dispositivos como PDA; no esta originalmente diseñado para ello, pero al aumentar la capacidad de los pda (ram, rom, flash y capacidad de procesamiento) junto con mejoras en la modularidad del diseño del kernel, lo hicieron posible.

Los manufacturadores de PDAs pueden abaratar costos incluyendo GNU/Linux como sistema operativo de sus dispositivos. Se bajan costos de licenciamientos y los de desarrollar un sistema operativo que provea conectividad con computadoras de escritorio, soporte de red estable y una buena GUI.

Compaq aprovecha el software libre para promover interés y convocar desarrolladores (cualquiera puede participar) asegurando el progreso de GNU/Linux en iPAQ y asegurando la producción y el interés sobre las iPAQ.

Los emprendimientos en ésta área tienen dos objetivos: portar el kernel y desarrollar ambiente de operación (gui, API's y utilidades). Ya existen distribuciones de Linux para la línea iPAQ 5xxx y la Zaurus de Sharp (p.ej. Desktop/LX Pocket PC Edition (DL-PPC)).

Mencionamos sucintamente algunos ambientes de operación con sus principales características:

El principal interés de esta área es la posibilidad de emplear herramientas Open/Free en el desarrollo, independientes de un SO propietario.

5.5.4 Conclusiones

5.5.4.1 Sobre desarrollo

Nuestras conclusiones fueron que aunque desarrollar para handheld es tan simple como programar en Visual C++, uno se encuentra contra dificultades inherentes a la diversidad de modelos y la falta de soporte de emulación de Palms y desarrollo en el mundo GNU/Linux, requiriendo la intervención de profesionales informáticos.

El desarrollo de un software como el propuesto es viable utilizando únicamente herramientas Open/Free. No abordamos el tema de comunicación en tiempo real, pero pensamos que sería de interés hacerlo en el futuro.

5.5.4.2 Sobre aplicaciones

La disponibilidad de software es razonablemente amplia para justificar la prueba, aunque dependerá del uso que el pequeño negocio pueda darle y el gasto que esté dispuesto a hacer. En particular, existe software de intercambio de información maduros y probados que permiten utilizar Palms con tranquilidad.

Para otro tipo de aplicaciones, un pequeño negocio deberá, en caso de intentarlo, abordar la diversidad de ofertas de handheld y requerirá asesoramiento especializado para poder elegir el modelo y el software que necesita.

5.5.4.3 Conclusiones generales

Observamos que, sin ser las vinculadas al Jpilot y pilot-link, las referencias que encontramos son algo anticuadas. Parece un terreno poco explorado en nuestro país y con potencial; amerita una investigación adecuada.

Existe una diferencia en lo que hace al desarrollo de aplicaciones para PDA usando GNU/Linux y herramientas Open Source cuando el sistema operativo del PDA es GNU/Linux y cuando no lo es. El área es prometedora, pero los costos de Pocket PC pueden hacerlo privativo de pequeños negocios y por eso nos inclinamos por las Palm, por ser más livianos, pequeños y hacer el trabajo básico perfectamente bien.

Estudio del Open/Free (GNU/Linux) como plataforma de servicios de red en entornos empresariales
Daniel Caraballo - Mario Madera - Marcelo Odin
Tutor: Ariel Sabiguero Yawelak
2004 - 2005.