6 pontos por GN⁺ 2024-03-28 | 3 comentários | Compartilhar no WhatsApp
  • Swift é adequado para criar interfaces de usuário graças à sua sintaxe limpa, tipagem estática e recursos especiais que facilitam a escrita de código
  • Adwaita for Swift aproveita esses recursos do Swift para oferecer uma interface intuitiva para o desenvolvimento de aplicativos para a plataforma GNOME
  • GNOME é um ambiente de desktop open source popular no Linux, com foco em simplicidade e acessibilidade

Exemplo de código

  • No exemplo de código com Adwaita for Swift, é definida uma view chamada Counter para exibir a parte da interface de usuário dentro da janela
  • As views podem ser aninhadas dentro de outras views ou adicionadas como filhas de uma janela, e seu conteúdo pode ser modificado externamente dependendo da posição na hierarquia de views
  • Isso facilita combinar views para gerar diferentes resultados

Motivação

  • Tornar possível escrever apps para o GNOME usando Swift
  • As bindings existentes de libadwaita e GTK seguem um estilo de codificação imperativo, construindo a interface de usuário com uma sequência de comandos
  • Adwaita for Swift é construído com foco em dados, então, por exemplo, ao pressionar um botão e alterar a variável count, a interface de usuário é atualizada automaticamente

Facilidade de uso

  • Nas bindings tradicionais, é preciso chamar funções em objetos para que os widgets atualizem seu conteúdo sempre que um valor muda
  • No Adwaita for Swift, basta adicionar um identificador único às variáveis que precisam ser armazenadas, e o restante é tratado automaticamente

Legibilidade

  • A abordagem centrada em dados tem um impacto positivo na legibilidade
  • Graças à definição declarativa da própria interface de usuário, é possível focar mais na aparência e no comportamento do app do que em como obter o resultado

Desenvolvimento de apps multiplataforma

  • Adwaita for Swift permite escrever apps que rodam em Linux, macOS e Windows com uma única base de código
  • É possível compartilhar o código Swift de backend entre apps em SwiftUI e apps para GNOME
  • É possível criar novos apps para GNOME usando Swift e alcançar excelente legibilidade de código e segurança de memória

Lançamento de apps

  • Adwaita for Swift funciona bem com o Flathub, simplificando a instalação e o lançamento de apps para desktop Linux
  • Há uma extensão do Freedesktop SDK para Swift 5 e uma ferramenta que converte dependências do Swift Package Manager em fontes Flatpak

Opinião do GN⁺

  • A combinação de Swift e GNOME oferece aos desenvolvedores a oportunidade de criar apps em uma nova plataforma, especialmente ao unir os recursos poderosos da linguagem Swift com o ambiente amigável do GNOME, possibilitando uma experiência de desenvolvimento eficiente.
  • Este artigo apresenta uma nova abordagem para o ambiente de desktop Linux e destaca a conveniência e a legibilidade do desenvolvimento em estilo declarativo em comparação com métodos tradicionais.
  • O texto enfatiza as vantagens do desenvolvimento multiplataforma e ressalta a importância de oferecer a mesma experiência de usuário em diferentes sistemas operacionais
  • Como base técnica, a tipagem estática e a segurança de memória do Swift podem contribuir para melhorar o desempenho e a estabilidade dos apps
  • Sob uma perspectiva crítica, é preciso considerar a possibilidade de problemas de compatibilidade ou desempenho em ambientes de desktop diferentes do GNOME

3 comentários

 
bbulbum 2024-03-30

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

A pronúncia oficial de Gnome não é "noum", e sim "guinôm".

 
neoroman 2024-03-29

Excelente.

 
GN⁺ 2024-03-28
Comentários do Hacker News
  • Discussão sobre wrappers semelhantes ao SwiftUI

    • Foi mencionada uma abordagem que oferece um wrapper declarativo semelhante ao SwiftUI. A premissa central é disponibilizar um wrapper no estilo SwiftUI para recursos do GNOME.
    • O próprio SwiftUI vem passando por dificuldades de amadurecimento relacionadas a processar/atualizar na thread correta e fazer o data binding funcionar adequadamente.
    • Os posts no swift.org ou no blog da Apple geralmente são apenas pequenos demos que mostram caminhos que tendem a funcionar bem. Ao discutir um novo framework ou plataforma, gostaria de ver mais evidências de que os autores entendem os principais problemas, conseguem resolvê-los e continuarão o desenvolvimento.
    • Frameworks de UI multiplataforma rapidamente se tornam complexos e trazem problemas de longo prazo que podem virar obstáculos para usuários ou clientes, como aconteceu com Flutter ou Java/Eclipse.
    • No caso do Swift, isso não ajuda por causa dos vários modelos de concorrência e dos comportamentos diferentes entre as plataformas da Apple e o Linux (oficialmente, a UI não é testada).
  • Menção a outros projetos e ferramentas

    • Foram fornecidos links para um wrapper semelhante ao SwiftUI, Tokamak e FlutterSwift para casos de uso embarcados.
  • Compartilhamento de experiência com projetos pessoais

    • Foi compartilhada a experiência de ter escrito um pequeno projeto paralelo usando Vala e gtk4.
    • Gostou do formato do Blueprint, mas teve dificuldade por falta de documentação sobre como realizar recursos mais avançados.
    • Gosta muito da linguagem Vala, mas acha que seria bom escrever toda a lógica e os modelos em Vala e depois usar esta biblioteca Swift para a UI.
  • Comparação com experiências passadas

    • Isso pareceu semelhante à experiência de cerca de 20 anos atrás, quando escrevia apps para GNOME em C# usando Mono.
  • Problema de execução no Mac

    • Tentou executar no Mac, mas encontrou um problema de ausência de adwaita.h.
  • Opinião sobre um “framework dos sonhos” pessoal

    • Algo open source como o SwiftUI, mas voltado para GTK4, seria próximo do framework de UI desktop multiplataforma dos sonhos.
    • A sintaxe do Swift leva algum tempo para se tornar familiar, mas, depois que se pega todos os conceitos, é uma linguagem muito agradável de usar.
    • O único motivo para não usar Swift é que o suporte no Linux não é tão bom quanto nas plataformas da Apple.
  • Pergunta sobre suporte a 3D no gtk4

    • Foi levantada a dúvida se, ao usar 3D no gtk4, ainda se fica limitado a um contexto OpenGL.
  • Opinião sobre o uso de chaves em parâmetros de função

    • Há a opinião de que introduzir chaves nos parâmetros de função foi um erro.
  • Discussão sobre testes em codebases Swift

    • Foi discutido como testar uma codebase em Swift. Falta documentação sobre testes, e não há estratégias para mocks, stubs, relatórios, cobertura de código etc.
    • No caso de apps que usam extensões de rede, os testes precisam ser feitos apenas em dispositivos físicos por causa das restrições de assinatura.
    • Foi perguntado se alguém conhece um bom serviço de CI com dispositivos físicos que ofereça suporte tanto a aparelhos iOS quanto macOS.
  • Descoberta de que Swift está se tornando uma opção interessante para desenvolvimento desktop

    • Recentemente foi percebido que o Swift está se tornando uma opção interessante para desenvolvimento desktop. Além deste exemplo, também foi mencionado o Arc para macOS e Windows.