6 puntos por GN⁺ 2024-03-28 | 3 comentarios | Compartir por WhatsApp
  • Swift es adecuado para crear interfaces de usuario gracias a su sintaxis limpia, tipado estático y funciones especiales que facilitan la escritura de código
  • Adwaita for Swift aprovecha estas capacidades de Swift para ofrecer una interfaz intuitiva para desarrollar aplicaciones para la plataforma GNOME
  • GNOME es un popular entorno de escritorio de código abierto para Linux, centrado en la simplicidad y la accesibilidad

Ejemplo de código

  • En el ejemplo de código con Adwaita for Swift, se define una vista llamada Counter para mostrar la parte de la interfaz de usuario dentro de una ventana
  • Las vistas pueden anidarse dentro de otras vistas o agregarse como hijas de una ventana, y su contenido puede modificarse desde afuera según su posición dentro de la jerarquía de vistas
  • Esto facilita combinar vistas para generar distintos resultados

Motivación

  • El objetivo es permitir escribir apps de GNOME usando Swift
  • Los bindings existentes de libadwaita y GTK siguen un estilo de programación imperativo que construye la interfaz de usuario mediante una serie de comandos
  • Adwaita for Swift está construido con un enfoque centrado en los datos, por lo que, por ejemplo, si se cambia la variable count al presionar un botón, la interfaz de usuario se actualiza automáticamente

Facilidad de uso

  • En los bindings tradicionales, cada vez que cambia un valor hay que llamar funciones sobre los objetos para que los widgets actualicen su contenido
  • Adwaita for Swift se encarga del resto con solo agregar un identificador único a las variables que deben conservarse

Legibilidad

  • El enfoque centrado en los datos tiene un efecto positivo en la legibilidad
  • Gracias a la definición declarativa de la propia interfaz de usuario, es posible concentrarse en la apariencia y el comportamiento de la app, en lugar de en el método para obtener el resultado

Desarrollo de apps multiplataforma

  • Adwaita for Swift permite escribir apps que se ejecutan en Linux, macOS y Windows con una sola base de código
  • Se puede compartir el código Swift del backend entre apps de SwiftUI y apps de GNOME
  • Usando Swift se pueden crear nuevas apps de GNOME con excelente legibilidad de código y seguridad de memoria

Lanzamiento de apps

  • Adwaita for Swift funciona bien con Flathub, lo que simplifica la instalación y publicación de apps para Linux de escritorio
  • Existe una extensión del Freedesktop SDK para Swift 5 y una herramienta para convertir dependencias de Swift Package Manager en fuentes de Flatpak

Opinión de GN⁺

  • La combinación de Swift y GNOME brinda a los desarrolladores la oportunidad de crear apps en una nueva plataforma y, en particular, la unión entre las potentes capacidades del lenguaje Swift y el entorno amigable de GNOME permite una experiencia de desarrollo eficiente.
  • Este artículo propone un nuevo enfoque para el entorno de escritorio Linux y destaca la facilidad de desarrollo y la legibilidad que ofrece el estilo declarativo frente a los métodos de desarrollo existentes.
  • También resalta las ventajas del desarrollo multiplataforma y la importancia de ofrecer la misma experiencia de usuario en distintos sistemas operativos
  • Como trasfondo técnico, el tipado estático y la seguridad de memoria de Swift pueden contribuir a mejorar el rendimiento y la estabilidad de las apps
  • Desde una mirada crítica, habría que considerar la posibilidad de problemas de compatibilidad o rendimiento en entornos de escritorio distintos de GNOME

3 comentarios

 
bbulbum 2024-03-30

https://stuff.mit.edu/afs/athena/…

La pronunciación oficial de GNOME no es "noum", sino "gnome".

 
neoroman 2024-03-29

Excelente.

 
GN⁺ 2024-03-28
Comentarios de Hacker News
  • Debate sobre wrappers similares a SwiftUI

    • Se menciona un enfoque que ofrece un wrapper declarativo similar a SwiftUI. La premisa central es ofrecer wrappers al estilo SwiftUI para las funciones de GNOME.
    • SwiftUI en sí ha pasado por dolores de crecimiento relacionados con hacer procesamiento/actualizaciones en el hilo adecuado y con lograr correctamente el data binding.
    • Las publicaciones del blog de swift.org o de Apple por lo general no son más que demos pequeñas que muestran el camino que suele funcionar bien. Al hablar de un framework o plataforma nuevos, se quiere ver más evidencia de que los autores entienden los problemas principales, los resuelven y seguirán desarrollando.
    • Los frameworks de UI multiplataforma se vuelven complejos rápidamente y tienen problemas de largo plazo que pueden convertirse en obstáculos para usuarios o clientes, como Flutter o Java/Eclipse.
    • En el caso de Swift, tampoco ayuda que haya varios modelos de concurrencia y comportamientos distintos entre las plataformas de Apple y Linux (oficialmente la UI no está probada).
  • Mención de otros proyectos y herramientas

    • Se comparten enlaces a un wrapper similar a SwiftUI, Tokamak y FlutterSwift para casos de uso embebidos.
  • Experiencia personal compartiendo un proyecto

    • Se comparte la experiencia de haber escrito un pequeño proyecto paralelo usando Vala y gtk4.
    • Le gustó el formato de Blueprint, pero tuvo dificultades por la falta de documentación sobre cómo hacer cosas más avanzadas.
    • Le gusta mucho el lenguaje Vala, pero piensa que sería bueno escribir toda la lógica y los modelos en Vala y luego usar esta librería de Swift para la UI.
  • Comparación con experiencias pasadas

    • Le recuerda a la experiencia de haber escrito apps de GNOME en C# usando Mono hace unos 20 años.
  • Problemas al ejecutarlo en Mac

    • Intentó ejecutarlo en Mac, pero se encontró con el problema de que faltaba adwaita.h.
  • Opinión sobre un "framework soñado" personal

    • Algo open source como SwiftUI y orientado a GTK4 se acerca a su framework soñado de UI de escritorio multiplataforma.
    • La sintaxis de Swift toma tiempo para acostumbrarse, pero una vez que uno se familiariza con todos los conceptos, es un lenguaje muy agradable de usar.
    • La única razón por la que no usa Swift es que el soporte en Linux no es tan bueno como en las plataformas de Apple.
  • Pregunta sobre el soporte 3D en gtk4

    • Plantea la duda de si al usar 3D en gtk4 todavía se está limitado a un contexto OpenGL.
  • Opinión sobre el uso de claves en parámetros de funciones

    • Piensa que introducir claves en los parámetros de funciones fue un error.
  • Debate sobre testing en codebases de Swift

    • Se debate cómo probar un codebase de Swift. Falta documentación sobre testing y no se ofrecen estrategias para mocks, stubs, reportes, cobertura de código, etc.
    • En el caso de apps que usan extensiones de red, solo se pueden probar en dispositivos físicos debido a restricciones de firma.
    • Pregunta si alguien conoce un buen servicio de CI con dispositivos físicos que soporte tanto dispositivos iOS como macOS.
  • Descubriendo que Swift se está volviendo una opción interesante para desarrollo de escritorio

    • Recientemente descubrió que Swift se está convirtiendo en una opción interesante para el desarrollo de escritorio. Además de este ejemplo, agregó Arc para macOS y Windows.