6 पॉइंट द्वारा GN⁺ 2024-03-28 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • Swift अपनी साफ-सुथरी syntax, static typing, और कोड लिखना आसान बनाने वाली खास सुविधाओं की वजह से user interface बनाने के लिए उपयुक्त है
  • Adwaita for Swift Swift की इन खूबियों का उपयोग करके GNOME platform के लिए application development हेतु एक intuitive interface प्रदान करता है
  • GNOME Linux के लिए एक लोकप्रिय open source desktop environment है, जो simplicity और accessibility पर ज़ोर देता है

कोड उदाहरण

  • Adwaita for Swift का उपयोग करने वाले कोड उदाहरण में Counter नाम का एक view define किया गया है, जो window के अंदर user interface के हिस्से को दिखाता है
  • View दूसरे views के भीतर nested हो सकते हैं या window के child के रूप में जोड़े जा सकते हैं, और view hierarchy में उनकी स्थिति के अनुसार बाहर से उनकी content को बदला जा सकता है
  • इससे अलग-अलग परिणाम बनाने के लिए views को संयोजित करना और आसान हो जाता है

प्रेरणा

  • इसका उद्देश्य Swift का उपयोग करके GNOME apps लिखना संभव बनाना है
  • मौजूदा libadwaita और GTK bindings user interface बनाने के लिए command की एक श्रृंखला इस्तेमाल करने वाली imperative coding style का पालन करते हैं
  • Adwaita for Swift data-centric तरीके से बनाया गया है, इसलिए उदाहरण के लिए button दबाकर count variable बदलने पर user interface अपने-आप update हो जाता है

उपयोग में आसानी

  • पारंपरिक bindings में हर बार value बदलने पर object पर function call करके widget को अपनी content update करने के लिए कहना पड़ता है
  • Adwaita for Swift में जिन variables को store करना है, उनमें बस एक unique identifier जोड़ना होता है और बाकी काम यह खुद संभाल लेता है

पठनीयता

  • Data-centric approach का readability पर सकारात्मक असर पड़ता है
  • User interface की declarative definition की वजह से, परिणाम पाने के तरीके की बजाय app के रूप और व्यवहार पर ध्यान केंद्रित किया जा सकता है

cross-platform ऐप डेवलपमेंट

  • Adwaita for Swift Linux, macOS, और Windows पर एक ही codebase से चलने वाले apps लिखना संभव बनाता है
  • SwiftUI apps और GNOME apps के बीच backend Swift code साझा किया जा सकता है
  • Swift का उपयोग करके नए GNOME apps बनाए जा सकते हैं, और शानदार code readability तथा memory safety हासिल की जा सकती है

ऐप रिलीज़

  • Adwaita for Swift, Flathub के साथ अच्छी तरह काम करता है, जिससे desktop Linux के लिए apps की installation और release सरल हो जाती है
  • Swift 5 के लिए Freedesktop SDK extension और Swift Package Manager dependencies को Flatpak source में बदलने वाला एक tool उपलब्ध है

GN⁺ की राय

  • Swift और GNOME का संयोजन developers को नए platform पर app development के अवसर देता है, और खास तौर पर Swift की शक्तिशाली language features तथा GNOME के user-friendly environment का मेल एक efficient development experience संभव बनाता है.
  • यह लेख Linux desktop environment के लिए एक नया approach पेश करता है और मौजूदा development तरीकों की तुलना में declarative style के ज़रिए development की सुविधा और readability पर ज़ोर देता है.
  • यह cross-platform development के फायदों को रेखांकित करता है और अलग-अलग operating systems पर एक जैसा user experience देने के महत्व को सामने लाता है
  • तकनीकी पृष्ठभूमि के रूप में, Swift की static typing और memory safety app की performance और stability बढ़ाने में योगदान दे सकती है
  • आलोचनात्मक दृष्टिकोण से देखें तो GNOME के बाहर दूसरे desktop environments में compatibility issues या performance problems की संभावना पर भी विचार करना चाहिए

3 टिप्पणियां

 
bbulbum 2024-03-30

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

Gnome का आधिकारिक उच्चारण "नोम" नहीं बल्कि "ग्नोम" है।

 
neoroman 2024-03-29

शानदार है।

 
GN⁺ 2024-03-28
Hacker News टिप्पणियाँ
  • SwiftUI जैसे wrapper पर चर्चा

    • SwiftUI जैसे declarative wrapper देने वाले approach का ज़िक्र किया गया। मुख्य आधार यह है कि GNOME फीचर्स के लिए SwiftUI-style wrapper दिया जाए.
    • SwiftUI खुद सही thread पर processing/update करने और data binding को सही ढंग से संभालने के मामले में बढ़ती हुई परेशानियों से गुज़र रहा है.
    • swift.org या Apple के ब्लॉग पोस्ट ज़्यादातर सिर्फ छोटे demo होते हैं जो कोई ऐसा path दिखाते हैं जो आम तौर पर काम करता है। जब किसी नए framework या platform की बात हो, तो यह देखने के लिए और सबूत चाहिए कि लेखक मुख्य issues को समझते हैं, उन्हें सुलझाते हैं और development जारी रखेंगे.
    • Cross-platform UI frameworks जल्दी complex हो जाते हैं, और Flutter या Java/Eclipse की तरह उनके साथ लंबे समय की ऐसी समस्याएँ हो सकती हैं जो users या clients के लिए रुकावट बनें.
    • Swift के मामले में कई concurrency models और Apple platforms बनाम Linux पर अलग behavior (आधिकारिक तौर पर UI का परीक्षण नहीं हुआ है) मददगार नहीं हैं.
  • अन्य projects और tools का उल्लेख

    • SwiftUI जैसे wrapper, Tokamak, और embedded use cases के लिए FlutterSwift के लिंक दिए गए हैं.
  • व्यक्तिगत project अनुभव साझा करना

    • Vala और gtk4 का उपयोग करके एक छोटा side project लिखने का अनुभव साझा किया गया.
    • Blueprint का format पसंद आया, लेकिन ज़्यादा advanced features कैसे किए जाएँ इस पर documentation की कमी के कारण दिक्कत हुई.
    • Vala भाषा बहुत पसंद है, लेकिन लगता है कि सारी logic और models Vala में लिखकर UI के लिए इस Swift library का उपयोग करना अच्छा रहेगा.
  • पुराने अनुभव से तुलना

    • यह लगभग 20 साल पहले Mono का उपयोग करके C# में GNOME app लिखने के अनुभव जैसा लगा.
  • Mac पर चलाने की समस्या

    • Mac पर चलाने की कोशिश की, लेकिन adwaita.h missing होने की समस्या आई.
  • व्यक्तिगत "dream framework" पर राय

    • SwiftUI जैसा open source हो और GTK4 को target करे, तो वह dream cross-platform desktop UI framework के काफ़ी करीब होगा.
    • Swift syntax की आदत पड़ने में समय लगता है, लेकिन एक बार सभी concepts की आदत हो जाए तो यह इस्तेमाल के लिए बहुत अच्छी भाषा है.
    • Swift का उपयोग न करने की एकमात्र वजह यह है कि Linux पर इसका support Apple platforms जितना अच्छा नहीं है.
  • gtk4 में 3D support पर सवाल

    • यह सवाल उठाया गया कि gtk4 में 3D इस्तेमाल करते समय क्या अब भी OpenGL context तक ही सीमित रहना पड़ता है.
  • function parameters में key इस्तेमाल करने पर राय

    • लगता है कि function parameters में key लाना एक गलती थी.
  • Swift codebase testing पर चर्चा

    • Swift codebase को test करने के तरीकों पर चर्चा हुई। testing पर documentation की कमी है, और mock objects, stubs, reporting, code coverage आदि के लिए कोई strategy नहीं दी जाती.
    • Network Extension इस्तेमाल करने वाले apps के मामले में signing restrictions की वजह से केवल physical devices पर ही test करना पड़ता है.
    • यह भी पूछा गया कि क्या किसी को ऐसा अच्छा physical device CI service पता है जो iOS और macOS दोनों devices को support करता हो.
  • Swift का desktop development के लिए दिलचस्प विकल्प बनना

    • हाल ही में पता चला कि Swift desktop development के लिए एक दिलचस्प विकल्प बनता जा रहा है। इस उदाहरण के अलावा macOS और Windows के लिए Arc को भी जोड़ा गया है.