Las siguientes son preguntas que me hice y un link que hay en ese hilo que puso Tincho responden para GJS, pero son validas para Vala:
¿Qué es GTK?
GTK es un conjunto de herramientas de aplicación. Proporciona widgets e instalaciones para crear potentes aplicaciones gráficas. Está escrito en C, pero proporciona enlaces de lenguaje a muchos otros lenguajes de programación. Es por eso que podemos usar GTK con GJS.
Se basa en varias otras bibliotecas que también tendremos que usar:
GLib: biblioteca central con tipos de datos, bucle principal, funciones de utilidad
Gio: acceso al sistema de archivos, comunicación D-Bus, configuración de la aplicación
GObject: sistema de objetos, lea más abajo
¿Qué es GObject?
GObject es una biblioteca orientada a objetos para C. Dado que JavaScript también es un lenguaje orientado a objetos, GJS tiene instalaciones que nos permiten usar GObjects como objetos de JavaScript. Por ejemplo, los widgets de GTK son GObjects y podemos crear instancias de ellos, acceder a sus propiedades y llamar a sus métodos como clases regulares de JavaScript.
¿Qué es Meson?
Meson es un sistema de construcción. Se encargará de que instalemos los archivos de nuestra aplicación en los lugares correctos. Además, se envía con módulos que facilitan aún más la realización de algunas tareas necesarias.
El uso de un sistema de compilación bien conocido garantiza que las personas que deseen compilar y distribuir nuestra aplicación no tengan problemas.
¿Qué es Flatpack?
Flatpak nos brinda un entorno conocido para desarrollar y distribuir aplicaciones de escritorio. Se basa en tiempos de ejecución: si una aplicación se compila y ejecuta con un tiempo de ejecución específico en su computadora, también se compilará y ejecutará en la computadora de otra persona si usan Flatpak con el mismo tiempo de ejecución.
En este libro, usaremos el tiempo de ejecución de GNOME, ya que proporciona las dependencias GJS, GTK4 y Meson que necesitamos para nuestra aplicación. Se divide en dos: la plataforma, que solo contiene las bibliotecas necesarias para ejecutar aplicaciones, y el SDK, que contiene las bibliotecas y herramientas necesarias para crear aplicaciones.
Nuestro uso de Flatpak será muy básico, consulte la documentación oficial de Flatpak para obtener más información sobre sus capacidades.
"Es mejor saber todo de muy poco que muy poco de todo" - anonimo