Últimamente en Ender nos estamos planteando la posibilidad de comenzar a desarrollar aplicaciones para dispositivos móviles relacionadas con nuestros sistemas. Cada vez los usuarios están más acostumbrados a migrar las funciones que tradicionalmente realizaba un ordenador hacia sus teléfonos, netbooks u otros dispositivos de menor capacidad de proceso. Y en el mundo empresarial, hacia el que nos orientamos, las extranets cada vez realizan un mayor número de funciones en sustitución del software ‘tradicional’. Es fácil ver que ambas tendencias se combinarán en el futuro, y si bien los terminales móviles de gama alta no deberían tener ningún problema en utilizar una extranet básica, siempre será mucho más eficiente utilizar una aplicación específica.
Por tanto, allá vamos, a explorar las posibles opciones. Desarrollar para dispositivos móviles no es como desarrollar para ordenadores. En los ordenadores, la opción es clara: IBM PC compatible con alguna de las distintas versiones de windows acumula el noventa y pico por ciento del mercado. Salvo que controles la infrastructura sobre la que va a correr la aplicación, no queda otra opción que programarla para windows, por pura estadística. En el mundo móvil el panorama es muy distinto… No hay, ni de lejos, un claro dominador del mercado de los sistemas operativos para móviles: Android (5% en 2009), Blackberry (21%), Windows Mobile (9%), iPhone OS (15%), Symbian (49%), Palm (>3%)… Además, los propios porcentajes son engañosos: Los mayores porcentajes los poseen sistemas operativos que llevan más (bastante más) tiempo en el mercado, y por tanto han tenido tiempo para que un mayor número de dispositivos de varias generaciones funcionen sobre ellos… lo que no significa que en el futuro sigan haciéndolo.
De hecho, tanto Symbian como Blackberry parecen sistemas destinados a morir. Cada día son menos los nuevos terminales que corren sobre estos SOs, siendo sustituidos por Android, Windows Phone (antiguo Mobile) o versiones nativas de linux. Por tanto no parecen una buena opción como elección, hoy por hoy.
Windows Phone está siendo adaptado como sistema por bastantes terminales, cuenta con la ventaja de tener una gran integración con los PC que corren sobre windows, pero no parece terminar de convencer a los usuarios. Sin duda, si hoy por hoy hay dos sistemas operativos para móviles estrella son Android y iPhone OS. Son con diferencia los más avanzados técnicamente, y ambos están “en pañales”, mostrando sólo el comienzo de su potencial, por lo que todo el mundo apuesta por uno o por otro para convertirse en el “Windows” de los teléfonos móbiles.
Android es hijo de Google. Es un sistema operativo libre y abierto, que permite que cualquier fabricante lo incluya en su dispositivo. Así, no sólo existen en el mercado teléfonos móviles que lo lleven, también hay toda una gama de otros dispositivos (tablets, netbooks, etc) que funcionan sobre él.
Iphone OS, a su vez, es propiedad de Apple y es el sistema sobre el que corren tanto los iphone como los nuevos ipods. Ningún otro fabricante puede utilizarlo, pero el golpe que apple dio al mercado de los smart phones con el iphone (acaparando un buen porcentaje del mercado en muy poco tiempo), y el hecho de que el dispositivo estrella de apple (iPod, lider indiscutible de otro mercado casi tan grande como el de los terminales móviles) también lo emplee hacen que sea una opción muy atractiva para los desarrolladores de aplicaciones.
En resumen: Se trata de elegir desarrollar para iPhone o para Android. Y no se trata sólo de elegir la opción que te lleve a un mayor número de clientes, o la que tenga mejor perspectiva de futuro. Como vamos a ver, el problema es mucho más profundo.
Mucha gente no conoce como funciona el proceso de desarrollo de una aplicación, así que vamos a explicar un par de conceptos claves. Para desarollar software existe una gran variedad de lenguajes… El “lenguaje” original de los procesadores de los ordenadores, como casi todo el mundo sabe, es un lenguaje binario. Largas cadenas de ceros y unos que hacen que el procesador haga una cosa u haga otra. Obviamente, “hablarle” directamente al procesador es casi imposible por lo extremadamente complejo, para eso existen los lenguajes de programación. Los lenguajes son abstracciones de este lenguaje binario. Es decir, si quieres que el ordenador imprima en la pantalla “hola mundo” no es necesario que te aprendas cómo ordenárselo en binario, sino que según el lenguaje que escojas escribiras algo parecido a write(‘hola mundo’) o print(‘hola mundo’). A partir de ahí, ese lenguaje se traducirá automáticamente al lenguaje del procesador para que el ordenador entienda lo que quieres que haga.
La cuestión es que hay cientos, miles de lenguajes. Muchos son similares, todos hacen más o menos lo mismo, pero sigue habiendo cientos. Algunos son más apropiados para unas tareas y otros para otras, pero al final, casi cualquier cosa se puede hacer con cualquier lenguaje y es sólo una opción personal. A su vez, cada lenguaje tiene un gran número de “librerias”. Las librerías son packs de código que te permiten realizar alguna acción complicada sin tener que programarla una y otra vez. Por ejemplo, para calcular una raiz cuadrada no haremos todos los pasos que serían necesarios cuando la resolvemos “a mano”: Le indicaremos al ordenador que vamos a usar la librería “matemáticas.lib” y con ella podremos simplemente usar la llamada “raizcuadrada(25)”. Es un concepto un poco extraño para alguien que no ha programado nunca, pero en realidad es la base de la programación profesional. Un programa normalmente usa un número bastante grande de estos componentes, conteniendo al final tanto o más código importado y ensamblado como código propio y original.
¿Por qué explicar todo este rollo? Porque sino no es fácil explicar por qué la opción de desarrollar para iPhone es tan mala. La razón: La licencia de desarrollo de Apple. Apple tiene una concepción de sus productos que intenta dejarlo todo atado y bien atado. Pretenden controlar todo, desde la fabricación de los componentes hasta el software que corre en ellos. Y lo han llevado un paso más allá con el desarrollo para iphone. En desarrollo de software no es habitual tener que pagar una licencia para desarrollar programas para una plataforma. Pagar por poder usar ciertos programas o componentes sí, pero no por “el derecho” de desarrollar software. Pero Apple, en su intento por controlar qué se desarrolla y que no para sus sistemas, la ha introducido. Cien dólares de licencia anual para ser un desarrollador certificado por Apple. Sin esta certificación, tus programas no estarán en la tienda iphone, y por tanto no podrán funcionar en ningún teléfono ni ipod (Ya que no se puede instalar software en estos dispositivos de ninguna otra manera). La licencia no es costosa, pero tiene problemas mucho más profundos que el dinero: Apple se reserva el derecho de echar por tierra todo tu trabajo. Puedes desarrollar una aplicación y que al final Apple decida no aprobarla, tirando abajo meses de trabajo. Y lo que es aún peor, se reservan el derecho de cambiar las condiciones que rigen qué es aceptable o qué no. En su última revisión de la licencia incluyeron una nueva cláusula que restringe los lenguajes en los que se puede programar a los tres o cuatro elegidos por ellos, y prohibe, directamente, el uso de librerías externas que no hayan proporcionado ellos mismos. En el mundo de la programación, esto es como decirle a un mecánico que no puede utilizar ninguna herramienta, excepto un destornillador de un modelo y tamaño específicos, para hacer cualquier cosa.
Android, por el contrario, es un sistema operativo libre. Su código fuente está disponible para cualquiera que quiera verlo. Cualquiera puede desarrollar aplicaciones sin tener que pagar nada, sin que nadie pueda decirte que no, sin que nadie tire por tierra tu trabajo. No hay prohibiciones en Android. En ese sentido, es muy parecido a lo que ocurre en el mundo del PC: Cualquiera puede hacer cualquier cosa, de la manera quiera hacerla. Las opciones son infinitas. Todo esto se ve claramente en el hecho de que el número de aplicaciones disponibles para android crece exponencialmente, y que cada vez más fabricantes de terminales lo ofrecen como base de sus dispositivos.
Durante todo el año pasado, el crecimiento del iPhone parecía imparable. Su tecnología era mucho más avanzada que la de los sistemas operativos rivales y el usuario lo notaba y elegía. El lanzamiento de Android y su generalización en los últimos meses parece enfrentarse directamente a esta tendencia. Android rivaliza (o supera) al iPhone OS en tecnología, y los teléfonos que lo incluyen suelen ser de una gama tan alta como el iphone.
La diferencia, para nosotros, es que Apple, en su intento por controlarlo todo, ahoga a los desarrolladores. Las condiciones que impone son draconianas, prácticamente nunca vistas en el mundo del desarrollo del software. No tienes derechos sobre tu propio producto, te limita las herramientas que puedes utilizar para desarrollarlo, te arriesgas a que sus propias condiciones cambien unilateralmente. Y esto no son condiciones en las que queramos desarrollar.
Android, para nosotros, es el futuro.