Introducción
Introducción del curso
Este curso es un proyecto nuevo que empiezo para aprender a programar aplicaciones que funcionen en los terminales que usen Ubuntu Touch. En el proceso iré generando documentación con todas las fases de creación de una aplicación, desde la toma de requisitos pasando por la implementación y finalmente la publicación en la tienda de Ubuntu. Uno de los problemas que encontramos en Ubuntu Touch es la falta de aplicaciones tanto en número como en funciones de las mismas. No espero cambiar esa situación a corto plazo, pero una forma de cambiarla es programando aplicaciones y ayudando a otros usuarios a que hagan lo mismo. Sólo de esta forma podrá cambiar la situación en un futuro.
Este curso no es una clase magistral en la que explico las cosas y los demás las hacen de forma automática. La idea es publicar capítulos y con la realimentación de los usuarios completar la documentación del curso. Si en un bloque concreto hay más interés se puede profundizar más. Lo mismo se aplica si hay conocimientos que doy por supuestos y hay usuarios que carecen de los mismos. No hay ningún problema en preguntar las dudas en los medios asociados al curso.
La documentación estará estructurada en un libro de Gitbook. El acceso es libre y cualquier usuario puede leerlo en el navegador o en los formatos:
Es posible añadir comentarios al libro aunque es necesario tener una cuenta creada en Gitbook. El código fuente de los ejemplos y las aplicaciones estará alojado en Launchpad usando Bazaar como control de versiones. En la misma página hay una lista de correo en la que podréis preguntar las dudas. Aparte de la lista de correo podéis usar el canal #ubuntu-phone-es del IRC de Freenode o el grupo de Telegram del curso.
De forma paralela a los recursos que he comentado antes también hay un tablero de Trello con el estado del curso. Por último quiero agradecer a los usuarios que me han animado a empezar esta locura, entre ellos están kain_X_X o LarreaMikel. Un curso de este tipo no lo puede hacer un único usuario. Sólo cuando participan muchas personas se puede evolucionar y conseguir metas más grandes.
Conocimientos previos necesarios
Por la temática del propio curso es necesario tener una base mínima con los conceptos básicos de programación. En el curso se va a emplear principalmente QML para el interfaz del usuario y JavaScript o C/C++ para la lógica. Ayuda conocer cualquiera de los dos lenguajes aunque no será algo crítico. En cada capítulo se explicarán los elementos básicos y se incluirá una bibliografía para que el usuario la consulte si tiene dudas. Las dudas también se pueden preguntar en cualquiera de los medios que he comentado antes.
Las herramientas de programación de Ubuntu Touch (SDK) están preparadas para la distribución Ubuntu. Será por tanto necesario utilizar Ubuntu o cualquiera de las distribuciones que la toman como base. Si no cumplimos este requisito tampoco es un problema grave ya que se puede hacer lo mismo con una máquina virtual o usando un Live USB. Puedo hacer un resumen si alguno está en uno de estos dos casos.
Para hacer más cómodo de seguir el curso, sólo pondré las partes más importantes del código fuente. El resto de los archivos estarán en un repositorio de código fuente (Git) en Launchpad. Vendría bien conocer el funcionamiento básico de Git pero se hará una explicación previa para los usuarios que no lo conozcan.
Objetivos
El primer objetivo del curso es aprender a programar aplicaciones para Ubuntu Touch y el segundo pasarlo bien. La programación es una tarea que absorbe mucho tiempo y tiene que gustarte lo que estás haciendo. Las aplicaciones pueden ser sencillas o complejas, lo importante es que resuelvan una necesitad que tenemos. Por ejemplo, una aplicación que tenga un listado de las plantas del jardín y nos avise cuando tengamos que regarlas.
Aunque no lo parezca el tiempo que dedicas a la programación como tal es muy reducido comparado con el estudio previo que tienes que hacer de una aplicación. Un buen diseño en la lógica de la aplicación puede reducir el tiempo de desarrollo de forma importante. De la misma forma un mal diseño puede hacer que acabemos tirando el código a la papelera de reciclaje y empezando de nuevo porque es más sencillo.
Tipos de aplicaciones
Ubuntu Touch tiene tres tipos de aplicaciones. Podemos encontrar aplicaciones Web (webapps), scopes y aplicaciones nativas. Una aplicación web es básicamente una pestaña del navegador Web que se ejecuta de forma independiente. Tiene un icono propio en Unity (el lanzador de aplicaciones) y puede contener información remota de cualquier tipo. Por cuestiones de seguridad una aplicación Web no tiene acceso al contenido local del terminal.
El scope es el segundo tipo de aplicación que encontramos en Ubuntu Touch. En cierta medida se comporta como una pantalla que muestra información al usuario. La información puede ser externa, por ejemplo la previsión del tiempo, o interna en forma de agregador de información. Un ejemplo de este caso sería el scope "Hoy" porque muestra la información de diferentes aplicaciones.
Por último tenemos las aplicaciones nativas. En este caso las aplicaciones pueden acceder a todos los recursos del teléfono y son en principio más complejas que las aplicaciones Web y los scopes. Las aplicaciones están confinadas en Ubuntu Touch y sólo pueden acceder a su información propia. Si queremos acceder a la información de otras aplicaciones es necesario acceder al content-hub. Como ejemplo de aplicación nativa tenemos el calendario.
Evolución del curso
Un detalle que quiero comentar (y que os cansaréis de que lo repita a lo largo del curso) es que este curso no es una clase magistral. Es importante que participéis ya sea con dudas, sugerencias o errores. El orden de los capítulos puede variar y los capítulos que ya estaban cerrados se pueden abrir para añadir nuevo contenido. Es algo vivo y que sólo puede mejorar si todos intervenimos en él. No importa que las dudas sean muy básicas ni el que dirán el resto de usuarios. Si sigues el curso es para aprender.
En la lista de correo el acceso es público y cualquiera que tenga una cuenta de Launchpad puede entrar. No hay ningún tipo de filtro excepto varios casos de sentido común:
- Las consultas tienen que estar relacionadas con el curso.
- No se admite spam de ninguna clase.
- No se admiten ataques a los usuarios de ningún tipo.
Cuando se dé alguno de esos casos primero se avisará y si el usuario continúa con su actitud tendrá que salir de la lista de correo. Por privado se podrá poner en contacto conmigo y si sus explicaciones son razonables entrará de nuevo en la lista. Espero no tener que llegar en ningún momento a ese extremo pero lo comento por si se cuela algún troll.
El curso no está preparado en el sentido que lo escribiré semana a semana. Por esta razón es posible que se cuele algún gazapo a medida que lo hago. Si se diera el caso no dudéis en indicarlo para modificarlo y hacer poco a poco un curso consistente y que sirva para muchos usuarios. Es una oportunidad de crear contenido que no existe en la red y darle un empujón a Ubuntu Touch. Ignoro si tendrá futuro en el tiempo pero las cosas no cambian si no haces que cambien.