Fuchsia OS y Flutter

Frank Moreno
Comunidad Flutter
Published in
5 min readOct 16, 2018

En la última publicación vimos como Android (y el ecosistema de teléfonos inteligentes) fue evolucionando. No obstante, al ver como avanzan las versiones de Android alfabéticamente, podemos inferir que tarde o temprano llegará a su fin, es decir, llegará a la versión Z (actualmente estamos en la P).

Logo de Fucshia OS

Es así que Fuchsia OS parece ser el sistema operativo con el que Google piensa reemplazar a Android en, aparentemente, 5 años. ¿Pero qué beneficios nos trae Fuchsia sobre Android? Para entender esto, primero analicemos sus necesidades del gigante de Mountain View.

Estado de los sistemas operativos de Google

Google tiene dos sistemas operativos principales en el mercado. El primero es, evidentemente, Android, mientras el segundo es Chrome OS. Ambos basados en el kernel de Linux y enfocados en dispositivos móviles (teléfonos, relojes, autos, etc.) y computadoras (Chromebooks) respectivamente.

Vista de Chromium OS (también conocido como Chrome OS)

Chrome OS tiene una cuota muy pequeña de mercado, pero eso no es lo importante. Lo importante es que fue la primera computadora pensada para funcionar con aplicaciones que corran completamente en la nube. Esto conlleva a necesitar poco disco, pues solo necesitas el sistema operativo porque el resto de tus archivos estaría en la nube. A su vez, esto implica computadoras más delgadas y podríamos seguir enumerando sus beneficios, pero muchos consideramos que la idea fue demasiado adelantada a su tiempo, dado que requiere una conexión de internet en cualquier lugar y al cualquier hora con una conexión a internet con un gran ancho de banda, los cuales aún no se tienen en casi ningún lugar.

Muy aparte de lo anteriormente mencionado, otro gran problema que aqueja a Chrome OS es la falta de aplicaciones de terceros, aplicaciones que Android tiene — en este punto, ya puedes ir intuyendo por dónde vamos — lo que motiva a buscar la forma de fusionar ambos sistemas operativos.

Por otro lado, Android también tiene sus problemas. En la actualidad, está regido por tecnología que le pertenecen a otras empresas. Por ejemplo, Java (que si bien no es el actual lenguaje principal, es muy usado) pertenece a Oracle, quien ya le ha generado demandas millonarias. También está Kotlin, que si bien no hay problemas en sí, no es administrado por Google, sino por Jetbrains, limitando las decisiones de aspecto técnicos que pueda hacer el equipo de desarrollo de Android. Aquí es donde nace la pregunta ¿Cómo lograr que una tecnología propia de Google llegue ser aceptada y usada por la comunidad?

La jugada maestra de Google

La necesidad de fusionar ambos sistemas operativos se traduce a la creación de Fuchsia, la cual está programada en C, C++, Python,Go, Rust y Dart.

Captura de pantalla del repositorio “mirror” de Fuchsia en Github

A diferencia de sus predecesores, Fuchsia no está basado en el kernel de Linux, sino en un microkernel llamado Zircon, el cual trabaja en tiempo real, lo que significa que cada tarea que ejecute el sistema operativo va a considerar los tiempos en que deben entregar sus resultados para garantizar una mejor experiencia al usuario, por ponerlo en términos sencillos (en otro momento cubriremos a detalle lo que implica un sistema operativo en tiempo real). Cabe resaltar que esta característica es muy importante, no solo en teléfonos móviles o computadoras, sino en todo tipo de dispositivo de Internet de las Cosas (Internet of Things, IoT).

Pese a usar lenguajes de alto rendimiento como C, C++, Go y Rust y lenguajes para hacer scripts como Python, lo más importante para capturar la atención de los usuarios son las interfaces. Los primeros lenguajes mencionados no permiten hacerlas, no obstante, los programadores tienen que hacer un esfuerzo mayor programando, mientras que con Python, las interfaces son un poco más fáciles de implementar, pero a un costo computacional alto, perdiendo así, el beneficio de sistema operativo en tiempo real.

¿Qué lenguaje Google puede usar para hacer interfaces gráficas y que él tenga el control absoluto sobre su especificación para no tener los mismo problemas que tuvo con Android? La respuesta es Dart, un lenguaje que Google creó en el 2011 como alternativa a Javascript. Sobre Dart se creo un framework llamado Flutter.

El mayor problema de lo anterior es que Dart no es muy aceptado por la comunidad y ahí nace la preguntas: ¿Cómo lograr que de forma orgánica la comunidad adopte Flutter? y ¿Cómo lograrlo antes lanzar dispositivos con Fuchsia para que existan aplicaciones en su tienda?

La respuesta es simple y en la simpleza está la genialidad de su solución: “Build beautiful native apps in record time” o “Crea hermosas aplicaciones nativas en tiempo record”. Esto, acompañado de que sean multiplataforma (para Android y iOS) es la manera más atractiva para atraer a la comunidad y así generar aplicaciones que sean fácilmente portables a Fuchsia cuando este llegue al mercado, pues solo será cuestión de recompilar.

No hay manera de intuir desde ahora si la tienda de Android será la misma que la de Fuchsia, pero existe una buena probabilidad de que sí, puesto que Chrome OS ya ha empezado desde hace un tiempo a aceptar aplicaciones para Android. Para saber más sobre esto, habrá que esperar más tiempo, sin embargo, hay que resaltar que la estrategia tomada es simplemente genial.

¿Por qué Dart?¿Cómo está estructurado Flutter?

Muy a parte de que Google es quien decide las especificaciones del lenguaje, Dart es un lenguaje que tiene compilación En el Momento (Just In Time, JIT) y compilación Antes de Tiempo (Ahead of Time, AOT), usados al momento de correr como script en el navegar (Dartium que para esta fecha ya está obsoleto) y en su máquina virtual respectivamente.

Pese a que Dart compila para una máquina virtual, no es suficiente para ofrecer el alto rendimiento de su lema. Para esto, Flutter Engine (escrito principalmente en C++ y Dart) implementa las bibliotecas principales, incluidas las de animación y gráficos, manejo de entradas y salidas I/O de archivos y de red (network), soporte de accesibilidad, arquitectura de plugins, y herramientas de tiempo de ejecución (runtime) y compilación.

Arquitectura de Flutter

Si bien Flutter Engine es el núcleo del funcionamiento, no se debe confundir con Flutter Framework quien permite el uso de Flutter Engine a través de nuestro código, principalmente en Dart.

Con esto, espero haberte convencido de que Flutter es una tecnología que, si bien es joven y aún en desarrollo, debe estar en tu lista de cosas por aprender porque lo más probable es que sea el nuevo estándar en desarrollo de aplicaciones móviles, de escritorio o, incluso, IoT.

--

--

Frank Moreno
Comunidad Flutter

Rust, Node.js, Go and Flutter developer. I want to create tools for better developer experience with good performance.