Tag browsing: MeeGo

N9, MeeGo, una idea

November 23rd, 2011

Hoy se esta presentando el Nokia N9 en Argentina, en un fiesta en la que casi con seguridad el 99% de los invitados no tiene conocimiento de la idea, del concepto, del trabajo y del potencial que encierra el N9, gente que se queda con los colores y con el aspecto exterior del dispositivo, que es algo importante, pero que es solo una parte de algo mucho mas complejo, de algo muy poderoso, porque estoy seguro de que muchos ingenieros, desarrolladores y diseñadores en Nokia, se quedaron en su trabajo luego de Febrero 11 solo para demostrarle al mundo de lo que eran capaces de hacer, el N9 es producto de la genialidad y de la bronca, de gente que quiso que una idea no muriera, que no quedase enterrada en un cajón de un laboratorio en Espoo, el N9 nació para ser diferente, y fue diferente, diferente en su diseño, diferente en su UI, con un concepto como el Swipe, que le otorgo su personalidad, diferente y único, 100% hackeable, no es necesario hacerle jailbreak o rootearlo para liberar todo su potencial, cuando compras un N9, vos sos el dueño del N9, no tenes que pedirle permiso a nadie para instalar apps, podes bajarlas de Nokia Store o bajarte un .deb desde un sitio web o de un repositorio alternativo, podes desarrollar lo que quieras en el, no es necesario pagar un fee anual a nadie, el N9 es tuyo, las limitaciones las pones vos.

Open, es la idea detrás del N9, es el dispositivo que mas se acerca al ideal de un teléfono 100% Open Source, un sistema abierto que permite que crezca alrededor un ecosistema de usuarios, no de intereses, un dispositivo pensado para crear, no solo para consumir o con el único objetivo de edificar una gran granja de usuarios para luego vender su información personal y sus hábitos de consumo al mejor postor.

Terminal, la killer app del N9/950
Terminal, la killer app del N9/950

Open es en lo que creo, es por ellos que creo en el N9, no me importa lo que digan los analistas de mercado, los especialistas, los gurúes o la masa, Open es una idea que aun no es comprendida por el publico en general, ni esta a la altura de la mayoría, es por ello que escribo este post, estas lineas son mi homenaje a Nokia y a todos aquellos que pelearon por esta idea he hicieron posible el N9. Gracias

N9 Unfollow, nadie ha descrito mejor lo que el N9 significa

Announcements, Community, Opinion, Personal , , , 2 responses

[Actualizado] Integrando Mapas con QML

November 14th, 2011

El objetivo de este post es mostrarles de forma practica, un par de opciones para que puedan integrar mapas en sus aplicaciones Qt, tanto en Symbian como en MeeGo, la primera opción hace uso de la Location API incluida en QtMobility, la segunda opción permite integrar servicios como Google Maps, Bing Map o Nokia Maps (ex Ovi Maps) haciendo uso de QtWebKit.

Usted esta aquí

Las opciones que describo en este post permiten ubicar en el mapa un punto especifico, este punto lo podemos obtener de diversas maneras, desde una DB, ingresando los datos manualmente u obteniendo las coordenadas desde el GPS del dispositivo, para hacer esto ultimo solo debemos primero, agregar a nuestro proyecto la dependencia a la Location API de QtMobility

import QtMobility.location 1.2

Luego vamos a declarar unas propiedades en las cuales almacenaremos la longitud y la latitud que obtendremos usando el elemento PositionSource, para luego mostrarlos usando un elemento Text.

property double mapLat
property double mapLong
mapLat: positionSource.position.coordinate.latitude
mapLong: positionSource.position.coordinate.longitude

PositionSource {
    id: positionSource
    active: true
    updateInterval: 1000
}

Text {
    color:"#fff"
    text: "Latitud: " + mapLat + "<br/>" + "Longitud: " + mapLong
    anchors.horizontalCenter: parent.horizontalCenter
    anchors.verticalCenter: parent.verticalCenter
}

QML & Maps - Get Position Demo

Simulando el GPS

Si no cuentan con un dispositivo para probar, pueden simular el uso del GPS usando la opciones de Location que vienen incluidas en Qt Simulator.

QML & Maps - Qt Simulator

QtMobility Location API

Esta opción hace uso de algunos de los elementos QML que nos provee la Location API, en este ejemplo usaremos un elemento Coordinate, para almacenar la latitud y la longitud que obtenemos del PositionSource, luego crearemos un elemento Map, el cual a su vez contiene una MapImage, tanto la propiedad center del Map, como la propiedad coordinate del MapImage van a usar los datos de la Coordinate previamente declarada.

property double mapLat
property double mapLong
mapLat: positionSource.position.coordinate.latitude
mapLong: positionSource.position.coordinate.longitude

PositionSource {
    id: positionSource
    active: true
    updateInterval: 1000
}

Coordinate { 
    id: defaultMapCenter
    latitude: mapLat
    longitude: mapLong
}

Map {
    id: map
    anchors.fill: parent
    plugin : Plugin {name : "nokia"}
    size.width: parent.width
    size.height: parent.height
    zoomLevel: 16
    center: defaultMapCenter

    MapImage {
        id : pin
        coordinate: defaultMapCenter
        source:"images/pin.png"
    }
}

QML & Maps - Qt Mobility Sample

QtWebKit y Nokia Maps

Esta opción quizás no se integra de forma 100% nativa de la misma manera que podemos hacer usando la Location API, pero tiene la ventaja de que podemos usar a nuestro proveedor preferido y ademas nos permite reutilizar código que hayamos creado con anterioridad, este ejemplo hace uso de la API de Nokia Maps y para comenzar crearemos una pagina web con el siguiente código (ver abajo) y la incluiremos en nuestro proyecto, el código en si no tiene mucha magia, al principio hay una referencia a la librería de Nokia Maps, luego inicializamos el mapa, configuramos los elementos que vamos a utilizar en el, el nivel de zoom, una posición por default y finalmente crearemos la función setLocation que sera la encargada de ubicar el pin y centrar el mapa usando las coordenadas obtenidas por el PositionSource

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Ovi Maps</title>
<script src="http://api.maps.ovi.com/jsl.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
    var map;
    function initialize() {
        map = new ovi.mapsapi.map.Display(document.getElementById("map"), {
        components: [
            new ovi.mapsapi.map.component.ZoomBar(),
            new ovi.mapsapi.map.component.Overview(),
            new ovi.mapsapi.map.component.TypeSelector()],
            'zoomLevel':16,
            'center':[-34.603000, -58.380000]
        });
        
        ovi.mapsapi.util.ApplicationContext.set("defaultLanguage", "es-ES")
        map.addComponent(new ovi.mapsapi.map.component.panning.Drag());
        map.addComponent(new ovi.mapsapi.map.component.panning.Kinetic());
    }

    function setLocation(lat, lon) {
        pin = new ovi.mapsapi.map.Marker([lat, lon], { icon: "images/pin.png" }),
        map.objects.add(pin);
        map.setCenter(new ovi.mapsapi.geo.Coordinate(lat,lon));
    }
</script>
</head>
<body onload="initialize()">
    <div id="map"></div>
</body>
</html>

Del lado del QML, lo primero que haremos sera importar a QtWebKit como dependencia.

import QtWebKit 1.0

Luego crearemos una WebView que va a cargar la pagina web anteriormente creada.

Solo resta esperar que se dispare el evento onLoadFinished que ejecutara la función updatePosition que usando el metodo evaluateJavaScript le pasara a la función setLocation que se encuentra en la pagina web, los parámetros que necesita para centrar y ubicar el pin en el mapa.

property double mapLat
property double mapLong
mapLat: positionSource.position.coordinate.latitude
mapLong: positionSource.position.coordinate.longitude

PositionSource {
    id: positionSource
    active: true
    updateInterval: 1000
}

function updatePosition(mapLat, mapLong){
    mapView.evaluateJavaScript("setLocation("+mapLat+","+mapLong+");");
}

WebView {
    id: mapView
    url: "map.html"
    preferredWidth: parent.width
    preferredHeight: parent.height
    scale: 1
    onLoadFinished: {
        updatePosition(mapLat, mapLong);
    }
}

QML & Maps - QtWebKit + Nokia Maps Sample

Algunas consideraciones

Todos los ejemplos descriptos anteriormente son básicos, no intenten usarlos directamente en aplicaciones reales sin antes crear cierta lógica para manejar los fallos y demoras que acompañan siempre a las aplicaciones que dependen del uso del GPS.

¿Cual opción usar?

Mas allá de las ventajas antes descriptas, como por ejemplo, la flexibilidad de proveedores, la reutilización de código o la integración de forma nativa, hay un punto muy importante que deben tener en cuenta a la hora de decidir que camino seguir, este punto es la performance, mi experiencia me ha demostrado que la Location API no tiene un buen rendimiento cuando es usada en Symbian si lo comparamos con MeeGo, el obtener los datos del GPS puede demorar bastante, desde mínimo 5 segundos hasta 30 segundos o mas, en cambio en MeeGo este proceso es casi instantáneo, esto en parte se puede subsanar en Symbian usando un BusyIndicator y pidiendo paciencia al usuario, esta lentitud también se ve reflejada a la hora de cargar el Map, el cual puede tardar entre 5 y 10 segundos en completar su tarea en Symbian, todo lo contrario en MeeGo, en el cual la carga es casi inmediata usando WiFi y demorando no mas de 2 segundos si usamos 3G, es por ello que la opción QtWebKit + Nokia Maps puede llegar a ser útil en algunos casos, ya que su performance no es deslumbrante pero si un poco mejor que la que proporciona la Location API en Symbian, ademas de que es mas consistente y regular en los tiempos de carga del mapa, lo que ayuda a que su rendimiento sea mas predecible.

El porque de esta diferencia de performance de la Location API entre Symbian y MeeGo no he podido dilucidarlo aun, puede ser la diferencia de velocidad entre los dispositivos (N8/C7 680Mhz vs. N9/N950 1Gz ) o una falta de optimización en la versión para Symbian, por mientras pueden usar alguna de las opciones antes detalladas según el caso de uso que quieran resolver.

Actualización – 15/11/2011

Hoy luego de algunas pruebas usando Qt Mobility 1.2.1, versión que esta incluida en el nuevo Qt SDK 1.1.4, pude comprobar que la performance de la versión para Symbian de la Location API ha mejorado bastante, no esta al nivel de la versión para MeeGo aun, pero entra en el terreno de lo usable.

Development , , , , , , No response

N9 Apps

October 29th, 2011

N9 Apps, es un directorio de aplicaciones para dispositivos Nokia N9/950, el sitio esta muy bien diseñado, es claro, simple y fácil de usar, del lado del usuario final hay opciones para listar las aplicaciones por fecha de alta o reputación, es posible dejar comentarios en las apps y calificarlas, también se encuentra disponible una sección para dejar ideas o pedidos de apps para desarrollar, por su parte, los desarrolladores cuentan con su propio espacio, en el cual podrán subir sus apps, la cuales podrán describir de forma detallada y enlazarlas a su perfil tanto sea personal como el de su empresa.

El proyecto recién comienza y la cantidad de apps es mínima, estimo que su intención no es competir Nokia Store, sino mas bien crear una comunidad en torno a las apps, orientada quizás a un publico mas calificado que el común que visita Nokia Store, ademas de ser un buen lugar para difundir aquellas apps, que por alguna razón no puedan o no quieran ser publicadas en Nokia Store.

Solo el tiempo dirá, si N9 Apps, como Apps for MeeGo (que aun esta en gestación), logran crear una comunidad a su alrededor para hacerlos proyecto perdurables.

N9 Apps – Homepage

N9 Apps – App View

Community, Development , , , , No response

Mer, reconstruyendo MeeGo

October 3rd, 2011

Mer

En uno de los puntos de mi post anterior, hablaba sobre la continuidad de MeeGo y una de las opciones es que la comunidad se haga parte cargo del proyecto o parte del mismo, bueno, parece que algo de esto va a pasar, y la iniciativa ya tiene nombre, Mer.

Mer, un poco de historia

Mer o Maemo Reconstructed nació en Octubre de 2008, luego del anuncio de Maemo 5 el cual seria el OS incluido en el Nokia N900, Maemo 5 no era compatible con los Nokia 770, N800, N810, esta decisión hizo que la comunidad decidiera reconstruir a Maemo, tomando los componentes open source incluidos en Maemo por Nokia, y agregarle encima todo lo necesario para convertir a Maemo 5 en una verdadera distro Linux orientada a dispositivos móviles e independiente de la plataforma.

Luego con el advenimiento de MeeGo y dado que muchos de los objetivos propuestos eran similares a los que se querían lograr con Mer, se decidió concentrar los recursos en MeeGo dejando a Mer inactivo.

Reconstruyendo MeeGo

La idea de reconstruir MeeGo viene analizándose desde hace unos meses, el anuncio de Tizen, no hizo mas que acelerar el proceso para que estas ideas salgan a la luz y luego de analizar varios escenarios de colaboración que incluían a la gente de Debian, openSUSE o el mismo Tizen, se decidió continuar como un proyecto independiente, ya que las contribuciones que se harán por parte de Mer, serán subidas a upstream, por lo que mas tarde o mas temprano terminaran siendo parte de Debian, openSUSE o Tizen si lo creen necesario.

Los objetivos

Los siguientes son algunos de los objetivos planteados para ser llevados a cabo por el proyecto:

Diseño modular

Inicialmente el proyecto se va a centrar en desarrollar el Core, elementos como la UX y las adaptaciones a diferentes plataformas de hardware serán divididos en proyectos separados, pero todos bajo el paraguas de la comunidad en torno al Core.

La idea es tener un Core Linux + HTML5/QML/JS portable para poder comenzar a crear productos con el, para ello se han selecciona 302 paquetes de MeeGo, con los cuales es posible bootear con una UI basada en Qt junto al stack estándar de MeeGo, un ejemplo de esto lo pueden ver en el siguiente vídeo.

Distribución de referencia

El trabajo realizado en la versión Community Edition, continuara, pero basandose en el Core de Mer, esta hará las veces de modelo de referencia para los proveedores y servirá para obtener feedback acerca de los entregables y los problemas que pueden surgir por los cambios introducidos.

¿Como participar?

Aunque aun quedan punto para nada triviales por solucionar, como por ejemplo, temas relacionados con el hosting, build systems o asuntos legales, el proyecto ya esta en marcha y estas son algunos de los lugares en donde podremos seguir su progreso y participar en el mismo.

Announcements, Community , , 1 response

MeeGo, Tizen, Meltemi, la espera continua

September 29th, 2011

Han pasado ya un par de días desde el anuncio de la muerte de MeeGo (o al menos ese es el deseo de Intel y Samsung) y el nacimiento de Tizen, y digo muerte de MeeGo, porque a pesar de que Intel, la Linux Foundation y los socios de LiMo tratan de vender este anuncio como la fusión de dos proyectos en los que se usara lo mejor de ellos, lo cual a mi entender no es mas que un puñado de expresiones dichas pour la galerie para atajarse de la mala acogida que pensaban podía tener y que efectivamente ha tenido la noticia en la comunidad.

Desde el momento del anuncio hasta ahora, hay mas dudas que certezas acerca de este nuevo proyecto, lo único oficial que sabemos es que para el primer trimestre de 2012 estará disponible la primera release del SDK, que las aplicaciones serán desarrolladas usando HTML5, que va ser compatible con WAC y que sera posible crear aplicaciones nativas, aunque no se han dado muchos detalles acerca de esto ultimo.

¿Donde quedo Qt?

Cuando leía por primera vez el anuncio, veía las palabras, HTML5, APIs, transición, comunidad, pero en ningún lugar se hacia mención a Qt, desde el momento en que fue publicado este comunicado hasta ahora, lo único que quiere saber la comunidad, es que carajo va a pasar con Qt, y la respuesta del otro lados ha sido nula, lo que hace pensar que el soporte sera también nulo.

La comunidad MeeGo y Maemo esta muy decepcionada por la decisión de dejar de lado a Qt, haciendo primar el aspecto político antes que el técnico, esto no hace mas que demostrar que tanto Intel, Samsung y resto de los miembros que conforman Limo, no entienden como funciona el Open Source, y que la Linux Foundation no es mas que un sello de goma, que no tiene ni voz ni voto en las decisiones importantes, el hecho de que Qt este moviéndose a un modelo de Open Governance no sirvió para quitarse el olor a Nokia que tiene, y Samsung que quiere liderar el proyecto Tizen, le bajo el pulgar a Qt, aprovechando la situación de desesperación por la que esta pasando Intel en su búsqueda de un socio que use sus eternamente prometidos, pero nunca presentados, chips de bajo consumo en dispositivos móviles.

La decisión de dejar de soportar Qt, no solo genero el pataleo entre los seguidores de MeeGo y los aficionados al Open Source, sino que también esta afectando a muchas empresas que habían apostado por MeeGo, como plataforma y a Qt como entorno de desarrollo, donde mas patente queda esto, es en la versión IVI de MeeGo, donde la gente del consorcio GENIVI apoyo fuertemente su desarrollo y ahora ha quedado en el limbo, o empresas como Asus que hace poco comenzó a vender netbooks con MeeGo preinstalado o como Metasys, que actualmente esta distribuyendo netbooks con MeeGo en escuelas de Brasil.

¿HTML5 versus Qt?

HTML5 versus Qt no es el punto, el punto es porque solo HTML5 como entorno de desarrollo, eso es lo que la comunidad que creció alrededor de MeeGo reclama, y si Tizen no puede proveer una manera amigable de integrar Qt en el stack de desarrollo, alguien mas lo va a hacer, es lo bueno del Open Source.

La continuidad de MeeGo

Según el roadmap, en Octubre de 2011 debería ser liberada las versión 1.3 de MeeGo, todo indica que a pesar del cambio de planes, el lanzamiento sera hará efectivo, la pregunta es, ¿podrá seguir MeeGo su desarrollo independientemente de Intel?, ¿la Linux Foundation permitirá que un tercero o la comunidad sigan usando la marca MeeGo?, y es que aunque parezca una opción remota, es posible que alguien quiera tomar la posta y ayude a continuar con el desarrollo de algunas de las múltiples personalidades de MeeGo, por ahora no hay novedades al respecto, veremos si en los próximos días esto cambia.

Meltemi y la invasión de los Qt Phones

Ayer el WSJ tiro como “primicia” que Nokia estaría trabajando en un nuevo OS, basado en Linux para teléfonos de bajo coste, el OS cuyo nombre código es Meltemi y del cual se viene filtrando información desde principios de año vendría a formar parte de una nueva línea de dispositivos que reemplazaría a los S40 actuales, esto unido a los últimos lanzamientos de móviles S40 con procesadores de 1Gz, hacen que la idea de llevar Qt al Next Billion no suene tan descabellada y permitiría a Nokia competir contra los cada vez mas baratos, móviles básicos equipados con Android provenientes de China.

Si ven las ultimas entrevistas dadas por Marko Ahtisaari y otros ejecutivos de Nokia, en ellas tratan de dejar bien en claro que debemos ver al Nokia N9, no como un móvil con MeeGo, sino como el primero de muchos Qt Phones que están por venir, y que muchas de las innovaciones y conceptos presentados con el N9, serán aplicados en próximos productos,  esto es algo que suena prometedor e interesante, pero que también hace que uno se pregunte ¿se puede seguir confiando en Nokia luego de Febrero 11?, la respuesta es un ni (ni un No, ni un Si), aun hay bronca y algo de frustración por el acuerdo con Microsoft, pero también es justo decir que desde ese día, Nokia a venido cumpliendo con todo lo que dijo iba a hacer, Symbian Anna (con algo de retraso) esta distribuyéndose, Symbian Belle esta a la vuelta de la esquina y los cambios hechos en el han sido profundos y muy bien recibidos, por el lado de Qt, el trabajo sigue a paso firme y moviéndose a un modelo de Open Governance para transparentar aun mas el proceso.

Afortunadamente en unos días mas, entre el 24 y 27 de Octubre se van a estar realizando los Qt Developer Day 2011 y la Nokia World,  eventos en los cuales se hablara sobre el futuro de Qt, Harmattan y si hay suerte quizás veamos algún avance de Meltemi.

La espera continua

En este punto de los acontecimientos, hay mas dudas que certezas, es difícil confiar en la palabra de empresas que piden apoyo por parte de los developers, pero que piensan a muy corto plazo, si no basta ver el ejemplo de HP, que mato a WebOS luego de pocos meses en el mercado y se llevo puesto el trabajo de miles de developers que creyeron en la promesas de HP, empresas que a diferencia de la era PC en donde la compatibilidad y la interoperabilidad era lo mas importante, se centran en crear cárceles para el usuario, cárceles que ellos llaman ecosistemas.

El sueño de muchos, de un OS para móviles, verdaderamente Open Source y que pueda ser instalado en una multitud de dispositivos de diferentes fabricantes se vuelve cada vez mas lejano, mientras tanto vamos a tener que seguir aguardando, usando opciones a medio camino como Android, Harmattan o Meltemi y apoyando, con sus pros y contras a proyectos como Tizen.

Announcements, Community , , , , , No response