6 poin oleh GN⁺ 2024-03-28 | 3 komentar | Bagikan ke WhatsApp
  • Swift cocok untuk membangun antarmuka pengguna berkat sintaksnya yang rapi, pengetikan statis, dan fitur-fitur khusus yang memudahkan penulisan kode
  • Adwaita for Swift memanfaatkan kemampuan Swift tersebut untuk menyediakan antarmuka yang intuitif bagi pengembangan aplikasi untuk platform GNOME
  • GNOME adalah lingkungan desktop sumber terbuka yang populer untuk Linux, dengan fokus pada kesederhanaan dan aksesibilitas

Contoh kode

  • Dalam contoh kode yang menggunakan Adwaita for Swift, sebuah view bernama Counter didefinisikan untuk menampilkan bagian antarmuka pengguna di dalam jendela
  • View dapat disarang di dalam view lain atau ditambahkan sebagai child dari jendela, dan isinya dapat dimodifikasi dari luar sesuai posisinya dalam hierarki view
  • Hal ini mempermudah penggabungan view untuk menghasilkan berbagai hasil

Motivasi

  • Agar aplikasi GNOME dapat ditulis menggunakan Swift
  • Binding libadwaita dan GTK yang sudah ada mengikuti gaya pemrograman imperatif yang membangun antarmuka pengguna menggunakan serangkaian perintah
  • Adwaita for Swift dibangun dengan pendekatan berpusat pada data, sehingga misalnya ketika tombol ditekan untuk mengubah variabel count, antarmuka pengguna akan diperbarui secara otomatis

Kemudahan penggunaan

  • Binding tradisional mengharuskan pemanggilan fungsi pada objek agar widget memperbarui isinya setiap kali nilai berubah
  • Adwaita for Swift hanya perlu menambahkan pengenal unik pada variabel yang ingin disimpan, lalu menangani sisanya

Keterbacaan

  • Pendekatan yang berpusat pada data memberi dampak positif pada keterbacaan
  • Berkat definisi deklaratif dari antarmuka pengguna itu sendiri, kita dapat lebih fokus pada tampilan dan perilaku aplikasi daripada cara untuk mendapatkan hasilnya

Pengembangan aplikasi lintas platform

  • Adwaita for Swift memungkinkan penulisan aplikasi yang berjalan di Linux, macOS, dan Windows dengan satu basis kode
  • Kode Swift backend dapat dibagikan antara aplikasi SwiftUI dan aplikasi GNOME
  • Dengan Swift, aplikasi GNOME baru dapat dibuat sambil mencapai keterbacaan kode yang sangat baik dan keamanan memori

Rilis aplikasi

  • Adwaita for Swift bekerja dengan baik bersama Flathub, sehingga menyederhanakan instalasi dan rilis aplikasi untuk desktop Linux
  • Tersedia ekstensi Freedesktop SDK untuk Swift 5 dan alat untuk mengonversi dependensi Swift Package Manager menjadi sumber Flatpak

Opini GN⁺

  • Kombinasi Swift dan GNOME memberi pengembang peluang baru untuk mengembangkan aplikasi di platform baru, terutama karena kemampuan bahasa Swift yang kuat berpadu dengan lingkungan GNOME yang ramah pengguna untuk menghadirkan pengalaman pengembangan yang efisien.
  • Artikel ini menawarkan pendekatan baru terhadap lingkungan desktop Linux dan menekankan kemudahan serta keterbacaan pengembangan melalui gaya deklaratif dibandingkan pendekatan pengembangan yang sudah ada.
  • Artikel ini menyoroti keunggulan pengembangan lintas platform dan pentingnya memberikan pengalaman pengguna yang sama di berbagai sistem operasi
  • Dari sisi latar belakang teknis, pengetikan statis dan keamanan memori pada Swift dapat membantu meningkatkan performa dan stabilitas aplikasi
  • Dari sudut pandang kritis, perlu dipertimbangkan kemungkinan munculnya masalah kompatibilitas atau isu performa di lingkungan desktop selain GNOME

3 komentar

 
bbulbum 2024-03-30

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

Pelafalan resminya, GNOME dibaca bukan "noom", melainkan "guh-nome".

 
neoroman 2024-03-29

Luar biasa.

 
GN⁺ 2024-03-28
Opini Hacker News
  • Diskusi tentang wrapper yang mirip SwiftUI

    • Disebutkan pendekatan yang menyediakan wrapper deklaratif mirip SwiftUI. Premis utamanya adalah ingin menyediakan wrapper bergaya SwiftUI untuk fitur-fitur GNOME.
    • SwiftUI sendiri masih mengalami masa pertumbuhan terkait menjalankan/pembaruan pada thread yang tepat dan memastikan data binding bekerja dengan benar.
    • Tulisan blog di swift.org atau Apple umumnya hanya berupa demo kecil yang menunjukkan jalur yang kebetulan bekerja dengan baik. Saat membahas framework atau platform baru, ada keinginan untuk melihat lebih banyak bukti bahwa para pembuatnya memahami isu-isu utama, menyelesaikannya, dan akan terus melanjutkan pengembangan.
    • Framework UI lintas platform cepat menjadi rumit, dan memiliki masalah jangka panjang seperti Flutter atau Java/Eclipse yang bisa menjadi hambatan bagi pengguna atau klien.
    • Dalam kasus Swift, hal ini tidak terbantu oleh adanya beberapa model konkurensi dan perilaku yang berbeda antara platform Apple dan Linux (secara resmi UI tidak diuji).
  • Penyebutan proyek dan alat lain

    • Memberikan tautan ke wrapper mirip SwiftUI, Tokamak, dan FlutterSwift untuk use case embedded.
  • Berbagi pengalaman proyek pribadi

    • Berbagi pengalaman menulis proyek sampingan kecil menggunakan Vala dan gtk4.
    • Menyukai format Blueprint, tetapi mengalami kesulitan karena kurangnya dokumentasi tentang cara melakukan fitur yang lebih canggih.
    • Sangat menyukai bahasa Vala, tetapi berpikir akan lebih baik menulis semua logika dan model dalam Vala, lalu menggunakan pustaka Swift ini untuk UI.
  • Perbandingan dengan pengalaman masa lalu

    • Merasa ini mirip dengan pengalaman sekitar 20 tahun lalu saat menulis aplikasi Gnome dalam C# menggunakan Mono.
  • Masalah menjalankan di Mac

    • Mencoba menjalankannya di Mac, tetapi mengalami masalah karena adwaita.h tidak ada.
  • Pendapat tentang "framework impian" pribadi

    • Sesuatu yang open source seperti SwiftUI dan menargetkan GTK4 terasa dekat dengan framework UI desktop lintas platform impian.
    • Sintaks Swift memang butuh waktu untuk dibiasakan, tetapi setelah terbiasa dengan semua konsepnya, ini adalah bahasa yang sangat nyaman digunakan.
    • Satu-satunya alasan tidak menggunakan Swift adalah karena dukungannya di Linux tidak sebaik di platform Apple.
  • Pertanyaan tentang dukungan 3D di gtk4

    • Mengajukan pertanyaan apakah saat menggunakan 3D di gtk4 masih tetap terbatas pada konteks OpenGL.
  • Pendapat tentang penggunaan key pada parameter fungsi

    • Berpendapat bahwa memperkenalkan key pada parameter fungsi adalah sebuah kesalahan.
  • Diskusi tentang pengujian codebase Swift

    • Membahas cara menguji codebase Swift. Dokumentasi tentang pengujian kurang memadai, dan tidak menyediakan strategi untuk mock object, stub, pelaporan, code coverage, dan sebagainya.
    • Untuk aplikasi yang menggunakan network extension, pengujian harus dilakukan hanya pada perangkat fisik karena pembatasan penandatanganan.
    • Menanyakan apakah ada yang mengetahui layanan CI perangkat fisik yang bagus untuk mendukung perangkat iOS dan macOS sekaligus.
  • Menemukan bahwa Swift menjadi opsi menarik untuk pengembangan desktop

    • Baru-baru ini menyadari bahwa Swift sedang menjadi opsi yang menarik untuk pengembangan desktop. Selain contoh ini, juga menambahkan Arc untuk macOS dan Windows.