Expertiză · Aplicații desktop
Aplicații care se instalează pe calculator. Pe macOS am construit două; pentru Windows și Linux pagina asta e ofertă, nu istoric.
Construim aplicații native pentru macOS, cu nucleul de logică separat de ecran, ca aceeași logică să meargă și pe telefon. Pentru Windows și Linux/Ubuntu nu avem încă nimic livrat și scriem asta ca atare, cu condițiile în care am accepta lucrarea. Prima întrebare rămâne dacă îți trebuie într-adevăr o aplicație instalată.
Ofertă, cu condițiiRegula e mecanică și o aplic mecanic. Pe macOS avem două implementări proprii, construite și rulabile: o aplicație de bară de meniu cu 25 de fișiere Swift, care refolosește 15 fișiere din nucleul unui proiect de iPhone, și o a doua aplicație, mai simplă, care e un înveliș WebKit peste o aplicație web. Ambele au binar compilat pe această mașină. Dar serviciul, așa cum e numit, acoperă trei familii de sisteme, iar pentru două dintre ele — Windows și Linux/Ubuntu — am căutat serios și am găsit zero: niciun proiect .NET sau Qt propriu, niciun `tauri.conf.json`, niciun Electron scris de noi, niciun `.desktop`, niciun ambalaj deb, rpm sau AppImage. În plus, niciuna dintre cele două aplicații de macOS nu a fost vreodată împachetată într-un instalator distribuibil. Cu doar una din trei platforme acoperită și zero distribuții, pagina se scrie ca ofertă cu condiții. Când vom livra prima aplicație de Windows sau de Linux, se schimbă valoarea, nu textul.
Prima întrebare pe care ți-o punem nu e pentru ce sistem, ci dacă îți trebuie într-adevăr o aplicație instalată. Merită instalată când are nevoie de ceva ce browserul nu-i dă: acces direct la senzori sau la periferice, prezență permanentă în bara de sistem, lucru fără internet, acces la fișierele de pe disc fără ca omul să le încarce de fiecare dată, sau rulare în fundal când fereastra e închisă. Dacă niciuna dintre acestea nu e cerută, un site care se deschide dintr-un link e mai ieftin de construit, de actualizat și de întreținut — și ți-o spunem, chiar dacă lucrarea iese mai mică.
Pe macOS avem două aplicații construite. Prima e o aplicație de bară de meniu: 25 de fișiere Swift proprii, plus 15 fișiere de nucleu luate direct din proiectul de iPhone al aceluiași produs — aceleași fișiere, nu o copie. Se construiește cu un script care cheamă direct compilatorul Swift, țintă `arm64-apple-macosx14`, legând unsprezece cadre de sistem, între care SwiftUI, AppKit, CoreMotion, Vision și UserNotifications. Binarul rezultat are 6.516.128 de octeți. A doua e mult mai simplă și e cinstit să spunem cât: trei fișiere Swift, un înveliș WebKit peste o aplicație web, cu sandbox și runtime întărit activate, compilat universal pentru procesoare Intel și Apple. Sunt două lucruri diferite și le numim diferit.
Ce nu avem, spus în clar. Windows: zero. Am căutat proiecte .NET, WPF, WinForms, WinUI, fișiere `.xaml`, `.appxmanifest`, `.msi`, `.wxs` — tot ce am găsit pe disc aparține unei biblioteci C terțe, vendorizate într-un alt proiect, pe care n-am scris-o noi. Linux desktop: zero — niciun fișier `.desktop`, niciun ambalaj deb sau AppImage construit aici. Electron sau Tauri scrise de noi: zero. Și, la fel de important: niciuna dintre cele două aplicații de macOS n-a fost vreodată împachetată într-un instalator. Există ca pachete `.app` construite local, semnate ad-hoc, fără identificator de echipă.
Ce transferă totuși experiența de până acum, și e partea care contează pentru un proiect nou: disciplina de a ține nucleul de logică separat de interfață. În proiectul de macOS, fișierele de calcul și de politici nu importă interfața, așa că se compilează și se rulează pe Mac ca program obișnuit, fără simulator; suita lor de logică rulează în câteva secunde. Aceeași separare face ca portarea pe alt sistem să fie o problemă de înveliș, nu de rescriere. Pe asta ne bazăm când spunem că am putea face Windows sau Linux — nu pe o experiență pe care n-o avem.