6 puan yazan GN⁺ 2024-03-28 | 3 yorum | WhatsApp'ta paylaş
  • Swift, temiz söz dizimi, statik tipleme ve kod yazmayı kolaylaştıran özel özellikleri sayesinde kullanıcı arayüzleri oluşturmak için uygundur
  • Adwaita for Swift, Swift’in bu özelliklerinden yararlanarak GNOME platformu için uygulama geliştirmeye yönelik sezgisel bir arayüz sunar
  • GNOME, Linux için popüler bir açık kaynak masaüstü ortamıdır ve sadelik ile erişilebilirliğe odaklanır

Kod örneği

  • Adwaita for Swift kullanılan kod örneğinde, pencere içindeki kullanıcı arayüzü bölümünü göstermek için Counter adlı bir görünüm tanımlanır
  • Görünümler başka görünümlerin içine iç içe yerleştirilebilir veya pencereye alt öğe olarak eklenebilir; ayrıca görünüm hiyerarşisindeki konumuna göre içerikleri dışarıdan değiştirilebilir
  • Bu sayede farklı sonuçlar üretmek için görünümleri birleştirmek daha kolay hale gelir

Motivasyon

  • Amaç, Swift kullanarak GNOME uygulamaları yazmayı mümkün kılmaktır
  • Mevcut libadwaita ve GTK binding’leri, kullanıcı arayüzünü bir dizi komut kullanarak oluşturan emirsel bir kodlama stilini izler
  • Adwaita for Swift veri merkezli olarak inşa edilmiştir; örneğin bir düğmeye basıldığında count değişkeni değişirse kullanıcı arayüzü otomatik olarak güncellenir

Kullanım kolaylığı

  • Geleneksel binding’lerde, bir değer her değiştiğinde widget’ın içeriğini güncellemesi için nesne üzerinde bir fonksiyon çağrılması gerekir
  • Adwaita for Swift’te ise saklanacak değişkenlere yalnızca benzersiz tanımlayıcılar eklemeniz yeterlidir, gerisini kendisi halleder

Okunabilirlik

  • Veri merkezli yaklaşım, okunabilirlik üzerinde olumlu etki yaratır
  • Kullanıcı arayüzünün deklaratif olarak tanımlanması sayesinde, sonuca nasıl ulaşılacağından çok uygulamanın görünümüne ve davranışına odaklanabilirsiniz

Çapraz platform uygulama geliştirme

  • Adwaita for Swift, Linux, macOS ve Windows’ta tek bir kod tabanıyla çalışan uygulamalar yazmayı mümkün kılar
  • SwiftUI uygulamaları ile GNOME uygulamaları arasında arka uç Swift kodu paylaşılabilir
  • Swift kullanarak yeni GNOME uygulamaları oluşturabilir ve yüksek kod okunabilirliği ile bellek güvenliği elde edebilirsiniz

Uygulama dağıtımı

  • Adwaita for Swift, Flathub ile iyi çalışır ve masaüstü Linux için uygulamaların kurulumu ile dağıtımını basitleştirir
  • Swift 5 için bir Freedesktop SDK uzantısı ve Swift Package Manager bağımlılıklarını Flatpak kaynaklarına dönüştüren bir araç mevcuttur

GN⁺ görüşü

  • Swift ile GNOME’un birleşimi, geliştiricilere yeni bir platformda uygulama geliştirme fırsatı sunuyor; özellikle Swift’in güçlü dil özellikleri ile GNOME’un kullanıcı dostu ortamının birleşmesi verimli bir geliştirme deneyimi sağlayabilir
  • Bu yazı, Linux masaüstü ortamına yönelik yeni bir yaklaşım ortaya koyarken, mevcut geliştirme yöntemlerine kıyasla deklaratif stilin sağladığı kolaylık ve okunabilirliği vurguluyor
  • Çapraz platform geliştirmenin avantajlarını öne çıkarırken, farklı işletim sistemlerinde aynı kullanıcı deneyimini sunmanın önemine dikkat çekiyor
  • Teknik arka plan açısından, Swift’in statik tiplemesi ve bellek güvenliği uygulamanın performansını ve kararlılığını artırmaya katkı sağlayabilir
  • Eleştirel açıdan bakıldığında, GNOME dışındaki masaüstü ortamlarında uyumluluk sorunları veya performans problemleri ortaya çıkma ihtimali de göz önünde bulundurulmalıdır

3 yorum

 
bbulbum 2024-03-30

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

Gnome’un resmi telaffuzu "gnom" değil, "genom"dur.

 
neoroman 2024-03-29

Harika.

 
GN⁺ 2024-03-28
Hacker News yorumları
  • SwiftUI benzeri wrapper üzerine tartışma

    • SwiftUI’ye benzer deklaratif bir wrapper sunan yaklaşımdan bahsediliyor. Temel varsayım, GNOME özellikleri için SwiftUI tarzı bir wrapper sağlamak.
    • SwiftUI’nin kendisi, işlemleri/güncellemeleri doğru thread’de yapma ve veri bağlamayı doğru şekilde ele alma konusunda büyüme sancıları yaşıyor.
    • swift.org veya Apple’ın blog yazıları çoğunlukla iyi çalışan yolu gösteren küçük demolardan ibaret. Yeni bir framework veya platform tartışılırken, yazarların temel sorunları anlayıp çözeceğine ve geliştirmeyi sürdüreceğine dair daha fazla kanıt görmek isteniyor.
    • Çapraz platform UI framework’leri hızla karmaşık hale geliyor ve Flutter ya da Java/Eclipse gibi, kullanıcılar veya müşteriler için engel olabilecek uzun vadeli sorunlar taşıyor.
    • Swift açısından bakıldığında, birden fazla concurrency modeli ve Apple platformları ile Linux’taki farklı davranışlar (resmî olarak UI test edilmemiş) işleri daha da zorlaştırıyor.
  • Diğer projeler ve araçlardan bahsedilmesi

    • SwiftUI benzeri wrapper, Tokamak ve gömülü kullanım senaryoları için FlutterSwift bağlantıları paylaşılıyor.
  • Kişisel proje deneyiminin paylaşılması

    • Vala ve gtk4 kullanarak küçük bir yan proje yazma deneyimi paylaşılıyor.
    • Blueprint formatı beğenilmiş, ancak daha gelişmiş özelliklerin nasıl yapılacağına dair dokümantasyon eksikliği nedeniyle zorlanılmış.
    • Vala dili çok beğeniliyor, ancak tüm mantık ve modelleri Vala ile yazıp UI için bu Swift kütüphanesini kullanmanın iyi olacağı düşünülüyor.
  • Geçmiş deneyimlerle karşılaştırma

    • Bunun, yaklaşık 20 yıl önce Mono kullanarak C# ile GNOME uygulamaları yazma deneyimine benzediği söyleniyor.
  • Mac’te çalıştırma sorunu

    • Mac’te çalıştırmayı denemiş ama adwaita.h eksik hatasıyla karşılaşılmış.
  • Kişisel "hayal framework" hakkındaki görüş

    • SwiftUI gibi açık kaynaklı olup GTK4’ü hedefleyen bir yaklaşımın, hayal edilen çapraz platform masaüstü UI framework’üne yakın olduğu düşünülüyor.
    • Swift sözdizimine alışmak zaman alıyor, ancak tüm kavramlara alışıldıktan sonra kullanımı çok rahat bir dil olduğu belirtiliyor.
    • Swift kullanılmamasının tek nedeni, Linux desteğinin Apple platformlarındaki kadar iyi olmaması.
  • gtk4’te 3D desteği hakkında soru

    • gtk4’te 3D kullanırken hâlâ OpenGL context ile sınırlı olunup olunmadığı soruluyor.
  • Fonksiyon parametrelerinde anahtar kullanımı hakkındaki görüş

    • Fonksiyon parametrelerine anahtar eklemenin bir hata olduğu düşünülüyor.
  • Swift kod tabanının test edilmesi üzerine tartışma

    • Swift kod tabanının nasıl test edileceği tartışılıyor. Test konusundaki dokümantasyonun yetersiz olduğu, mock object, stub, raporlama, code coverage gibi konularda strateji sunmadığı belirtiliyor.
    • Network extension kullanan uygulamalarda, imzalama kısıtlamaları nedeniyle testlerin yalnızca fiziksel cihazlarda yapılabildiği söyleniyor.
    • Hem iOS hem de macOS cihazlarını destekleyen iyi bir fiziksel cihaz CI hizmeti bilen olup olmadığı soruluyor.
  • Swift’in masaüstü geliştirme için ilginç bir seçenek haline gelmesi

    • Son zamanlarda Swift’in masaüstü geliştirme için ilginç bir seçenek haline geldiğinin fark edildiği söyleniyor. Bu örneğe ek olarak macOS ve Windows için Arc da anılıyor.