De ce PWA (nu) înlocuiește aplicațiile native?

pwa
native-apps

(Ionuț Staicu) #1

Continuarea discuției de aici.

Pleci de la premise greșite, și anume că:

  1. Modificarea unei teme nu este suficientă și că toți clienții au nevoie de lucruri custom;
  2. PWA va fi adoptat la scară largă în detrimentul aplicațiilor native (e.g. cum faci notificări push pe iOS?)
  3. „toti vor trebui sa invete multe in 2018 pe web development/frontend.”

Legat de ultimul punct: în fiecare an există lucruri ce „vor schimba lumea” și în fiecare an există lucruri fără de care „vei muri de foame”. Cu toate astea, ghici ce? Nu e cazul.

Hai să nu ne mai mințim singuri că folosim tehnologii ce vor schimba lumea sau că de anul viitor vor fi miezul. Uită-te la Flash, a fost nevoie de vreo cinci-șase ani până când programatorii AS au început să aibă probleme în a-și găsi de lucru și încă vreo doi până când au murit de tot.

Tu vrei să spui că dacă până pe 31 decembrie croșetez șosete, brusc, de pe 1 ianuarie nu voi mai avea clienți, pentru că toți vor căuta… șosete împletite, nu croșetate? :facepalm:

WordPress crește continuu de zece ani, clienții cer - literalmente! - modificarea temelor existente iar tu vii și spui că PWA, că trebuie să învețe multe, că nu știu ce? Ha. Ha. Ha.


Știrea de mai sus este, pe cât de lungă pe atât de vagă. Ce înseamnă IT industry? Suport tehnic? Programatori? Asamblare hardware? Paznicii de la o fabrică de HDD-uri nu lucrează tot în IT industry?


PWAs are coming to iOS 11.3: Cupertino, we have a problem
56,000 layoffs and counting: India’s IT bloodbath this year may just be the start
(István F.) #2
  1. https://webkit.org/blog/8042/release-notes-for-safari-technology-preview-46/

Made Service Workers enabled by default (r225789)

PWA-urile sunt deja dezvoltate la scara larga pentru fiecare aplicatie semnificativa: Tinder, uber, facebook, twitter, aliexpress, ebay, flipboard, pinterest, trivago, forbes, olx, outlook.com, gmail, netflix, airbnb.

Majoritatea se misca mai bine ca aplicatiile native.

Nu zic ca o sa dispara joburile pe android/ios, dar daca apare o firma care baga bani in marketing pentru realizarea de pwa-uri vs aplicatii native firmele care ofera outsourcing pe android/ios native o sa piarda o buna parte din proiectele foarte profitabile si raman doar cu proiecte complexe. Acest lucru inseamna ca practic cei entry level abia isi vor gasi ceva munca.


(Ionuț Staicu) #3

Safari Technology Preview Release 46 is now available for download for macOS Sierra and macOS High Sierra

Cu riscul de a devia discuția mai mult, ești un pic în eroare:

  1. Workers sunt un pas în direcția notificărilor push, dar nu sunt interschimbabile. Deci Apple va trebui să implemnteze SW ȘI push.
  2. Chiar dacă ar anunța Apple push notification pentru iOS, cel mai devreme ar fi live în septembrie-octombrie, în iOS 12.
  3. Plus câteva luni, pentru adopție și ignorăm pentru moment device-urile ce, din varii motive, nu sunt actualizate

Deci programatorii iOS, cel puțin, sunt în siguranță lejer încă un an. Și având în vedere fragmentarea Android, nici nu are rost să îi luăm în calcul pe ăștia!

Așa, dacă am lămurit notificările, hai să lămurim și cum vezi tu lucrurile: binar. Nu la modul 1010100110 ci la modul ori una, ori alta. Excluzi căile de mijloc, excluzi compromisuri, excluzi tot.


PWA nu este - cel puțin pentru următorii 2-3-5 ani - o alternativă la aplicațiile native. PWA este, dacă vrei, versiunea lite a aplicațiilor native.

Cu toate astea, toate cele înșirate de tine au… ghici ce? Aplicații native. De ce?


(Ionuț Staicu) #4

Am mutat lucrurile un pic și mi-am dat seama că am omis acest punct:

Ai idee cum faci un tabel (sau o listă) extrem de lungă să meargă OK în html/js? Varianta optimă este shadow dom, altfel ai probleme pe telefoane/tablete mai slăbuțe. Adaptezi, hăcuiești și - mai important! - testezi pe minimum zece dispozitive, faci profiling șamd.

Tocmai ai pierdut o săptămână pentru o treabă ce se putea face în cinci minute, nativ. Dar heeei, ai economisit un salariu!

Mă uitam pe forumul Discourse și la problemele avute de-a lungul timpului cu performanța sau cu diversele quirks pe mobile: position: fixed pe iOS, lipsa unui event la afișarea/ascunderea tastaturii șamd.


Dincolo de performanță, ne întoarcem la partea de UI: cum procedezi cu elementele native de UI? Le reconstruiești în html, pentru că… de ce nu?.

În plus, fiecare platformă are și ea features & quirks. E.g. cum implementezi într-un PWA 3D Touch?


Apple a pavat drumul PWA cred că de la iOS 2, când a permis utilizatorilorPin to Home Screen, iar site-urile salvate în felul ăsta se deschideau fără UI de Safari și funcționau - mai mult sau mai puțin - ca o aplicație nativă. (Parcă Basecamp a funcționat așa o foarte bună perioadă de timp.)

Aproape zece ani toată treaba asta a fost complet ignorată. Dar dacă vine de la Google, e cea mai tare invenție de la pâinea feliată…


Tind să cred că nu ai înțeles foarte bine ce înseamnă, de fapt, PWA și, implicit, ai așteptări nerealiste.


(cosmos) #5

Legat de pwa.

Acum cateva zile Catalin Banul a postat despre Tinder(pwa). Am incercat aplicatia si am observat o ciudatenie la gestul de “swipe”.
Aplicatiile native sunt bine integrate cu look and feel ul sistemului de operare, au o liberate mai mare in folosirea resurselor(senzori, gps etc).
Pt o aplicatie nativa orice dezvoltataor trebuie sa respecte niste guideline-uri.

Am acesta problema pe Safari. Ori imi dispare tastatura, fereastra de scriere este mica, ori alte bugulete ciudate.

Mi-ai adus aminte de o poza. O voi posta pe thread-ul vesel.
Js-ul a devenit un limbaj puternic cu multe functii ceea ce ingreuneaza browser-ele vechi. Browser-ele de pe mobil nu au fost tocmai primele care sa suporte standardele, spre deosebire de cele desktop.

Vad acele PWA precum niste site-uri mai fancy. Sunt interesante, imi place ca poti sa le folosesti si “fara net”

Merci ca mi-ai curatat topicul :))


(István F.) #6

Toti va legati de ios, e motivul pentru care am spus ca de anul vor fi schimbari majore, doh.

Gen nimic din ce ati precizat nu vor mai fi probleme. JS e la fel de rapid ca Java pe browserele mobile in mod ironic. (Exceptie daca ai ceva telefon racheta)


(cosmos) #7

Ios-ul are limitari spre deosebire de Android.
Una din lucrurile pe care poti sa le faci cu pwa este sa pui shortcut pe home screen, ca o aplicatie nativa
Acest lucru nu il pot face pe IOS cu Safari. Nici cu Chrome

Telefoanele racheta costa. Mai am un J5 ca telefon de serviciu. Sunt situatii in care pana si scroll-ul pe o pagina sacadeaza. Intr-adevar, am ultima versiune de Chrome

Oricum, prefer sa folosesc o aplicatie web bine pusa la punct in detrimentul unei aplicatii native care ocupa spatiu si consuma trafic.


(Ionuț Staicu) #8

Tu chiar crezi că în trei zile toate telefoanele slabe vor dispărea? :troll:

Nu știu dacă tu realizezi, dar nu toate telefoanele rulează (sau pot rula) ultimele versiuni ale OS-ului. Android 6.0 are marketshare mai mare decât Android 7.0. Cu ~50% mai mare, nu mărunțiș, și a fost lansat acum mai bine de un an!

iOS 11 încă se bate cu iOS 10, și are deja câteva luni de la lansare.

Dincolo de adopția OS-ului, Apple și Samsung au 50% din piață. Presupunând prin absurd că Samsung face doar telefoane hi-end, ce ne facem cu cealaltă jumătate de utilizatori, pe dispozitivele cărora JS nu va fi la fel de rapid ca Java?


(István F.) #9

Ati inteles iar gresit, JS e la fel de rapid ca Java pe un telefon SLAB. Pe un telefon de ultima generatie Java va fi mai rapid. Bine, nu in toate cazurile, dar la cele care conteaza da.

Am un Allview P5 Life care valoreaza 100 de lei azi si inca n-am dat de un site care sa imi blocheze scroll-ul. Fiecare telefon pe android are ultimul chrome.

Telefoanele vechi oricum sunt cei mai buni clienti, eu de exemplu folosesc messenger si facebook din browser fiindca n-am loc pe telefon respectiv nu vreau sa fiu monitorizat 24/7, notificarile le primesc la fel de frumos.


(Ionuț Staicu) #10

Știi că telefoanele vechi sunt fix alea care nu sunt actualizate, iar toate bunăciunile alea din JS de care ești atât de entuziasmat… sunt degeaba?


(István F.) #11

De la android 4 incoace ai acelasi chrome, daca nu ai update la chrome normal ca nu ai loc nici de alte aplicatii native. Pe iOS vor fi diferente fiindca Apple nu are nici un interes sa faca update la telefoanele vechi, respectiv le incetineste cu modificarile aduse iOS, deci oamenii nu vor face update.

Cine e de vina ? Apple. In plus e in interesul lor sa mentina AppStore-ul profitabil, scot la fel de multi bani din aplicatii cat scot din dispozitive.

Hai sa zicem ca totusi avem nevoie de suport iOS 9-10 si cineva ne plateste foarte bine pentru acest lucru, simplu, realizam o aplicatie react native sau nativescript pe baza codului pentru pwa.


(Ionuț Staicu) #12

Câteva idei:

  • PWA nu este ceva concret, este un mod de lucru, un concept, dacă vrei. La fel ca și „responsive design” sau „accesibility” - sunt concepte care există de la început, doar că nu aveau un nume;
  • În afară de câteva porcărioare ce au potențial de a descărca bateria și/sau de securitate, Apple permite „instalarea” scurtăturilor spre un site, iar click pe o astfel de scurtătură îți va deschide un webview fără nici un fel de chrome (aici mă refer la chrome-ul browserului, nu la browserul chrome, da?). De aproape zece ani. Toate features promovate de google acum cu PWA? Sunt deja acolo. De mulți ani!
    • De unde rezultă că „e in interesul lor sa mentina AppStore-ul profitabil” este o ușoară inepție în acest context.
  • De ce te-ar plăti cineva foarte bine pe tine pentru varii hack-uri când ar putea plăti un programator iOS/Android și s-ar pricopsi cu o app nativă?

Repet, nu zic că PWA e un lucru rău. Sau nou. E un concept vechi de aproape zece ani și în nici un caz nu este aici pentru a înlocui aplicațiile native ci doar - dacă vrei - să ofere o versiune lite. Poate - POATE! - peste câțiva ani (2-3 minimum) se va schimba un pic situația, dar până atunci? Va fi suficient loc și pentru programatorii nativi.


Până acum doar bănuiam că vorbești pe lângă, dar m-am convins că vorbești mai mult din ce ai citit pe diverse bloguri, mai puțin din experiență.


(cosmos) #13

Ce complicat a devenit front-end ul in ziua de astazi :slight_smile:


(István F.) #14

Tocmai mi-ai dovedit ca vorbesti in necunostiinta de cauza, eu prin pwa nu inteleg doar o scurtatura. Ma intereseaza service worker, accesul la api-uri native cu mici diferente (bluetooth/gpu/background tasks/notificari/camera/senzori/usb).

Tu te referi la crearea unei scurtaturi, WebKit inca nu are suport service worker stabil si tu vii ca exista de 10 ani. PWA = Service Worker, fara aceste api-uri ai o pagina web stocata pe telefon, nu ne intereseaza acest lucru. Aici nu e vorba de un webview, e vorba de acces la api-uri native din sistemul de operare direct din browser, de acces la workers in background cu JS/webasm fara ionic, fara phonegap. Practic daca ai auzit de phonegap, acum poti face orice s-a facut cu el direct din browser, CU PERFORMANTE MULT MAI BUNE.

La momentul actual pe frontend se utilizeaza cele mai solide pattern-uri de programare inventate pana la momentul actual, cred ca tu vrei sa zici ca mai cream aplicatii cu jQuery. (bine mai sunt si oameni care scriu chestii aiurea vanilla pentru performanta maxima) Discourse nu e cel mai bun exemplu, nu e un PWA adevarat, se foloseste doar de notificari.

Deci nu inteleg la ce te referi prin hack-uri in cazul pwa-urilor, la momentul actual poti sa faci aplicatii complexe fara sa te folosesti de vreun hack. CSS Grid e solid, flexbox e solid, JS cu ES6/7 e solid ca orice alt limbaj, api-urile native sunt bune pentru majoritatea aplicatiilor. Doar un programator fara experienta nu va folosi pattern-uri bine cunoscute. Ai acces inclusiv la chestii gen 3D Touch, login din aplicatii.

PWA-urile au avantaje majore la aplicatiile simple:

  1. Nu trebuie sa instalezi nimic, ocupa mult mai putin spatiu, mult mai putin efort necesar din partea utilizatorului
  2. Ai acelasi codebase pentru fiecare dispozitiv. Poti refolosi business logic.
  3. Inca nu pot inlocui aplicatiile native, dar cu web assembly, cu suport service worker in iOS, cu api-uri gen bluetooth/usb deja se cam schimba balanta si foarte multe aplicatii se pot realiza asa.
  4. Se deschid semnificativ mai rapid fiindca chrome le tine agresiv in cache/snapshot.
  5. Update-urile sunt mult mai simple, Chrome e o aplicatie de sistem, e printre primele aplicatii care primesc update cand se face update. De la android 4 incoace primesti update la ultimul chrome fara exceptii. Safari iarasi e o aplicatie de sistem, e singurul browser permis pe iOS.
  6. Sunt mult mai sigure la cracking, o aplicatie JS se poate obfusca foarte avansat cu multe trucuri fara sa iti respinga cinva aplicatia din appstore, ca doar nu trebuie sa poata fi citit codul sursa.

#15

Ce vrei sa spui?


(István F.) #16

Toate browserele pe iOS folosesc webkit = safari, doar ca au alta interfata. Ma refeream ca si in cazul iOS Safari primeste update-uri obligatorii, aplicatiile au update-uri optionale.

Daca nu credeti ca Apple intentionat nu implementeaza feature-urile disponibile in Chrome ca sa nu piarda utilizatori din appstore poate articolul de mai jos va va convinge :


(cosmos) #17

Intr-adevar, toate folosesc webkit. Firefox si Chrome sunt mai avansate la capitolul functii pt user
Unui utilizator nu ii va pasa ce motor de randare are browser ul

Ecosistemul Apple este destul de inchis. Nu permite folosirea altor motoare


(Alex) #18

PWA va fi tot timpul cu cel putin un layer peste o aplicatie nativa ceea ce ar fi imposibil sa faci o aplicatie web care sa mearga mai bine / mai eficient decat o aplicatie nativa. Programatori banana sunt pe ambele parti si vor fi tot timpul aplicatii care sunt facute aiurea ( web si nativ ). Cat despre partea de dezvoltare nativa pe Android / iOS nu cred ca o sa dispara, probabil ca va avea o scadere ce se va simti temporar dupa care clientii o vina cu cerinte mai complexe care pot fi facute usor si eficient nativ ceea ce o sa aduca o crestere pe dezvoltarea nativa.
Sau se vor face schimbari pe Android / iOS si vor imprumuta multe lucruri de pe web care sunt bune si va fi o evolutie pentru aplicatiile native.


#19

Nu stiam.

Dar mi se pare aiurea oricum.

Nu ma bag in restul discutiei pentru ca nu am cunostinte, dar voi lasa https://pwa.rocks/ asta aici, sa nu fiu total offtopic.
De acolo am folosit doar Flipboard. Mi se pare OK, se simte ca nu este nativa, are o intarziere mica cand ai anumite actiuni, dar este OK - telefonul meu este si mai vechi, poate si de aceea.


(Ionuț Staicu) #20

De asta zic că PWA este ceva abstract și vag. Pe mine nu mă interesează decât o parte din lista ta, dar poate pe X îl interesează altceva (sau toate). Dar realist vorbind, nu știu câți webdevs au lucrat la mai mult de o aplicație care folosește măcar UNUL din acele features înșirate de tine. Sau câți vor avea ocazia să o facă.

Ducând lucrurile un pic mai departe, putem spune că o aplicație care nu folosește toate features din lista ta nu este PWA? :smiley:

Prin urmare, ne rămân chestiile normale - care, repet a treia oară - se puteau face de ani de zile pe iOS (tind să cred că și pe Android, dar nu sunt sigur). Diferența majoră? Încărcai assets prin manifest.json, nu printr-un service worker.


position:fixed. Succes în a-l folosi pe iOS fără hackuri pe o pagină cu formulare.


Deci tu vrei să spui că același cod, rulat pe același dispozitiv, va avea performanțe mai bune doar pentru că va rula în browser, nu în webview?