Ako zalazite na GitHub, vjerojatno ste prošloga tjedna primijetili da je među ‘trending’ temama završio jedan projekt domaće radinosti - Shoutemov UI toolkit za React Native. O čemu se zapravo radi, koliko se dugo na ovom ‘libraryju’ radilo te kako je jedan tvit podigao projekt na novi nivo, otkrivaju njegovi voditelji, Davor Čuljak i Tomislav Tenodi.
No, krenimo iz početka. React Native je zapravo Facebookov proizvod, library koji je ovaj tehnološki gigant open sourceao nakon Reacta. A sam React je, objašnjavaju Davor i Tomislav, web framework za razvoj web aplikacija koji je zbog svoje jednostavnosti i mogućnosti velikog ponovnog korištenja dijelova koda u kratkom roku postao iznimno popularan.
Objavljen je početkom 2013. godine, a u siječnju 2015. godine, na tada već poznatoj konferenciji React.js u San Franciscu, najavljen je React Native. React Native je library koji koristeći React omogućava developerima da pišu nativne aplikacije u JavaScriptu.
A kako je Shoutem builder za izgradnju mobilnih aplikacija, interes za Reactom i React Nativeom bio je logičan. Shoutem, naime, radi na otvaranju platforme kako bi joj se vanjski developeri mogli pridružiti i koju bi mogli proširivati novim funkcionalnostima. Ili, kako to Davor i Tomislav objašnjavaju, željeli su napraviti WordPress za aplikacije, čime se ekstenzije ponašaju kao WP pluginovi.
Kako je nastala i nestala skepsa prema React Nativeu
No, mnogi su bili skeptični prema Reactu i React Nativeu kad su objavljeni, a drugačije nije bilo ni sa Shoutemovcima jer, kako kažu, svi pokušaji do tada da se u JavaScriptu napravi aplikacija koja bi kvalitetom i performansama bila usporediva sa nativnom aplikacijom nisu davali dovoljno dobre rezultate. Davor pojašnjava:
Istražili smo sve mogućnosti: pisanje ekstenzija isključivo nativnim kodom, Native Scriptom, ReactJS-om, mnogim hibridnim tehnologijama koje smo do tada koristili i React Nativeom. To je bio dugotrajan proces prototipiranja, koji je kao rezultat iznjedrio React Native. Tu smo odluku donijeli početkom ove godine, dok su mnoge stvari u React Nativeu bile u povojima. Razlog zašto smo se odlučili za RN je prvenstveno bila sama vizija RN-a da se jednom naučeni ekosustav pisanja mobilnih aplikacija može koristiti za istovremeni razvoj iOS i Android aplikacija, omogućavajući potpuno nativne aplikacije pisane JavaScriptom.
Rast popularnosti React Nativea
Meanwhile in mobile world: React Native passes Android as well! https://t.co/AKhx6d4OLX #reactnative pic.twitter.com/qkttgiPkdQ
— Tomislav Tenodi (@TomislavTenodi) September 14, 2016
Da je React Native u značajnom porastu pokazuje činjenica kako je prošli tjedan taj pojam “prešišao” na tražilicama i Android Development i iOS development. Jedan od razloga za to Shoutemovci vide u spomenutoj zajednici – sve je open sourceano, core contributori ne kriju način na koji su došli uspjeha, niti Facebookove planove s libraryjima. Ujedno, sami contributori uživaju veliku podršku React publike.
Drugo, vrlo je važno slušati zahtjeve tržišta. Oduvijek postoji želja da se dobre aplikacije naprave koristeći web tehnologije. Troškovi izrade aplikacije su niži jer se s istim codebaseom mogu napraviti aplikacije za iOS i Android. Kompanije koje imaju web developere mogu raditi i mobilne aplikacije, a broj JavaScript developera je danas veći nego broj iOS i Android developera.
Treći razlog leži u činjenici da je dvije godine prije React Nativea Facebook izdao ReactJS namijenjen razvoju web aplikacija, koji je zbog svoje jednostavnosti i lakoće učenja vrlo brzo postao izrazito popularan. Osim toga, koristi koncept komponenti koji omogućuje pisanje modularnog koda, što rezultira bržim razvojem i jednostavnijim održavanjem velikih projekata – a to velikim kompanijama s velikim projektima može donijeti znatne uštede, napominju Shoutemovci. S React Nativeom, Facebook je primijenio istu formulu, ali ovaj put na razvoj mobilnih aplikacija.
A što je Shoutem UI toolkit?
No, što je zapravo onda Shoutem UI toolkit? Dio je to plana otvaranja Shoutemove platforme za vanjske developere, odnosno dio seta alata koji će im olakšati razvoj. UI toolkit za React Native prvi je u nizu, a iako već postoje dostupni setovi UI komponenti, od kojih su mnogi vrlo dobri, Shoutem je svojim toolkitom odlučio napraviti nešto drugačije. Tomislav pojašnjava:
Shoutem UI Toolkit je spoj 3 open-sourcana libraryja koji omogućuju developerima profesionalno dizajniranje mobilnih aplikacija. Ti libraryji (ui, theme i animation) napravljeni su tako da je njihovo korištenje jednostavno, deklarativno i nalikuje rješavanju problema na webu. Tom deklarativnošću i “webolikom” rješavanjem React Native dodatno približavamo web developerima.
Da ne glumimo lažnu skromnost, cilj nam je napraviti nešto slično što je Twitter napravio sa svojim Bootstrapom.
A kao potvrdu da su na dobrom putu, osim što je toolkit postao trending na GitHubu, tu je i tvit Vjeuxa, odnosno Christophera Chedeaua, poznatog frontend inženjera iz Facebooka te jednog od glavnih contributora React Nativea.
Facebook is likely not going to open source a UI library for React Native. @shoutem wonderfully fils that gap! https://t.co/fdGrU1ZBuF
— vjeux ✪ (@Vjeux) September 15, 2016
Tomislav pojašnjava kako su Vjeuxa upoznali ranije ove godine te od njega doznali kako Facebook ima toolkit koji se koristi interno, ali ga ne planiraju open sourceati jer nije generički i jer se žele fokusirati na daljnje poboljšanje svojih libraryja.
Ove godine, na ReactEurope, najvažnijoj React konferenciji u Europi koja se prije ljeta održavala u Parizu, predstavljali smo vrlo ranu inačicu platforme, ali dobili smo povratne informacije od jako puno ljudi koji su bili prilično oduševljeni stvarima koje radimo. Na naše oduševljenje, puno njih bili su zaista važni u zajednici, a jedan od njih bio je i Vjeux. Kad vam netko od takvih ljudi dođe na štand, postane gužva. 🙂
Prilikom otvaranja Shoutem platforme, znali smo da ćemo mnogo naših resursa uložiti u poboljšanje same React Native zajednice, kako bismo sami mogli napraviti što bolju platformu. Iz tog razloga, od samog početka smo započeli komunikaciju s glavnim ljudima u Facebooku zaduženim za razvoj Reacta i React Nativea. Spomenuto događanje bila je odlična prigoda za započeti i nastaviti komunikaciju sa zajednicom. Osim Vjeuxa, ostvarili smo, ali i održali, kontakte s još važnih ljudi iz React Native zajednice.
Budućnost React Nativea – i Shoutemove platforme
Shoutemovci predviđaju zanimljiva vremena pred nama, gledajući kako se React Native ubrzano razvija – kroz dvotjedne release cikluse contributori, koji većinom nisu iz Facebooka, sami imaju ambiciju poboljšati library, što je nešto što se gotovo nikad nije vidjelo u open source svijetu, napominju.
Na jednom od predavanja, Nick Schrock, koautor GraphQL-a, je upravo iskazao da React Native nije prvi koji pokušava riješiti problem cross platform developmenta. No, “Ideas don’t work, before they work” – da bi ideja uspjela, potrebne su tri stvari: taste (odnosno, koliko su ljudi spremni to koristiti), timing (je li tržište spremno za tu ideju) i technology (je li arhitektura ispravna). Prva dva su očigledno zadovoljena: taste – po broju korisnika koji koriste React i React Native te timing – po sučeljima iOSa i Androida koja sve sličnije izgledaju. No, ovdje presuđuje tehnologija.
Shoutem je zašao u jednu zanimljivu i perspektivnu nišu, a uskoro se može očekivati i open-sourcanje još nekoliko librarya koji su u međuvremenu razvijeni, otkrivaju. Među njima je i Shoutem RIO (Redux-IO), nadogradnja na popularni Redux čiji je cilj developerima olakšati upravljanje podacima i stanjem aplikacije.