Oma arvaukseni on, että tulevaisuus näyttää tältä kerrottuna kolmellakymmenelläkuudella: “Niitä on kaikkialla. Qt Groupin työkaluilla koodattuja ohjelmistoja pyörii lentokoneiden matkustamoissa, Mercedes Benz -autojen ja aasialaisten sähköskoottereiden mittaristoissa, toimistotulostimien ja jääkaappien hallintapaneeleissa ja lääketieteellisissä kojeissa. Uusia käyttökohteita tulee koko ajan.”
Lukematta artikkelia:
Yhtenä positiivisena skenaariona voisi olla, että tulevaisuudessa 5G:n ja IoT:n voimakkaan kasvun myötä Qt Groupin työkaluilla koodattuja ohjelmistoja pyörii monikymmenkertainen määrä erilaisissa kohteissa, jolloin kuuttia pitääkin nyt arvostaa P/S=40 kertoimella.
Suomen pörssin yksi isoista ongelmista tai haasteista on ollut, että täällä periferiassa tai toisin sanoen “susirajantakaisessa” pörssissä listattujen hyvien laatuyritysten arvostukset ovat olleet usein merkittävästi matalampia versus keskeisissä suuremmissa pörsseissä listattujen verrokkiyritysten. Mitä Suomessa listatun yrityksen alempi arvostus kansainvälisiin verrokkiyrityksiin nähden aiheuttaa? Suomesta puhuttaessa ei turhaan puhuta “tytäryhtiötaloudesta”. Usein on käynyt niin, että aliarvostetettu suomalainen laatuyritys on joutunut ulkomaisen “vihamielisen ostotarjouksen” uhriksi, jonka osakkeenomistajat ovat sitten hyväksyneet hymyssä suin ymmärtämättä omistamansa yrityksen todellista arvoa ja potentiaalia. Preemiot ovat saattaneet olla luokkaa +30% osakkeen edellisen kuukauden keskiarvohinnasta. Toki poikkeuksiakin löytyy esimerkkinä ohjelmistoyritys StoneSoft. Näin ollen yrityksen korkea arvostus ei ole millään tavalla huono asia vaan paremminkin hyvä asia. Summa summarum: Yrityksen korkea arvostus antaa erinomaista suojaa näitä “vihamielisiä” yritysvaltauksia vastaan. Qt-junassa on mukava puksuttaa ylämäkeen. Historiaa tutkittaessa vastaavaa menestystarinaa ei meidän periferiapörssistämme löydy. Ja koko tarinahan on vasta alkamassa!
Aika mielenkiintoinen konsultti yritys löytyi. Kyseessä The Quantitative Consulting & Solutions. Kyseessä siis KDAB:in kumppani ja merkittävä Qt-konsultti Aasiassa. Tehnyt muun muassa Qt-projekteja LG:n ja Denson kanssa. Näistä LG kaikille tuttu elektroniikka valmistaja joka on toimittanut muun muassa IVI(in vehicle infotainment) ratkaisuja esim Hyundai Groupille. Denso taas vastaavia esimerkiksi Toyotalle ja Subarulle(Subaruihin mennyt open source Qt:ta) ollen maailman isoimpia osatoimittajia automarkkinalle.
Kyseinen konsultti yritys siinä mielessä mielenkiintoinen, että he mainostavat tarjonnassaan konsultointia kuinka siirtyä Qt:sta Flutteriin.
Heillä oli myös näkemys Flutterista Qt:n pelikentällä. Lyhyesti referoituna tQCS:n teksti:
→ Qt:n uusi tuleminen alkoi sulautettujen järjestelmien Linuxin yleistyessä
→ Yritys näki bisnesraon ja lähti jahtaamaan isojen asiakkaiden rahoja tuotteellaan, mutta samalla oma kehittäjäyhteisö unohdettiin.
→ Tämä teki tietyillä sulautettujen järjestelmien aloilla kuten autonvalmistajien keskuudessa Qt:n teknologiasta hurjan suositun.
→ Jatkuvat ja pahennusta aiheuttaneet lisenssi ratkaisut saivat kehittäjät etsimään vaihtoehtoisia ratkaisuja.
→ Flutter yhtenä noista vaihtoehdoista kerää jatkuvasti enemmän suosiota todennäköisesti kiitos hyvän dokumentoinnin, intuitiivisen ja suorituskykyisen designin ja vapaamman lisensoinnin.
→ Jokatapauksessa Flutter on vielä nuori teknologia jolla on paljon kehittymisenvaraa varsinkin sulautetuissa järjestelmissä vaikka ison panostuksen kyseiseen teknologiaan ovat tehneet esimerkiksi Toyota(*tulevat IVI:t), BMW(*yli 300 flutter devaajan tiimi) ja Sony.
→ Jos tällä hetkellä täytyisi näiden väliltä valita projektiisi paremmin sopiva teknologia osuisi valinta todennäköisesti Qt:seen. Konsensus open source devaajien keskuudessa on kuitenkin, että tulevaisuus on Flutterin.
Sijoittajan ei varmaan kannata olla huolissaan lyhyen aikavälin liikevaihdon kehittymisestä, mutta toisaalta muistuttaa osaltaan, että huomattavia riskejä on exstrapoloida Qt:n tämän hetkistä menestystä jonnekin 10 vuoden päähän.
Joskus oli muuten puhetta kuinka Qt:n vahvuuksia on toimia pienien resurssien raudoilla ja ettei mutterin vääntämiseen aina jakoavain ole paras ratkaisu. Maailman isoin(?) Qt-konsultti KDAB kirjoittaa tälläistä:
Finally, the size of the processor can introduce serious constraints. While an ARM microprocessor can run nearly any modern toolchain, microcontrollers have a number of constraints and can be more limiting in your language and framework choices. While Qt does offer a trimmed down version to target microcontrollers, it will require a big focus on performance to shoehorn your application into a small micro. You’re probably better off picking a smaller lighter-weight framework that’s designed to go into small applications like Crank Storyboard, if your main focus is on the low end of the hardware performance spectrum.
Tästäkin ohimennen huomio, että hyvät referenssit omaavan Storyboadin takana oleva Crank Software myytiin keväällä SP500-indeksiin kuuluvalle Ametekille.
Hyvää asiaa ja vahvistaa sitä omaa kuvaa että QT lähti bisnes edellä ja meni sinne jossa voi saada tuotteestaan rahaa ja jossa sille on kysyntää. Pitää myös muistaa sääntö että saat sen mistä maksat - jos lisenssit ovat mallia ilmaista niin et voi myöskään odottaa frameworkin tekijöiltä juuri mitään, eli se mitä on juuri nyt tarjolla on se mihin voit luottaa ja loppu on herran hallussa. Jos sen sijaan pistät pätäkkää tiskiin niin softan tarjoavalla firmalla on vahvasti oma lehmä ojassa tarjota parempaa ja parantaa sitä siihen suuntaan mitä asiakkaat toivovat.
Ei ole ilmaisia lounaita ja Flutterissa projektisi on sen jälkeen naimisissa Googlen kanssa ja vaikka kuinka se on open sourcea niin realismi on että jos Google päättää tehdä jotain ikävää (tai tiputtaa koko projektin) niin vaihtoehdot ovat että alat itse jatkokehittää myös frameworkkia open sourcen pohjalta tai vaihdat. Koska et ole maksava asiakas ja Flutter on Googlelle pyöristysvirhe bisneksissä…
Eli… oletko oikeasti tekemässä jotain bisneskriittistä ja haluatko maksaa työkaluista vai voiko projektin framework-softat jättää sen varaan että Googlea nappaa tai open source-yhteisö hoitaa? Halpa lisensointikulu muuttuu tosi kalliiksi jos joudut yhtäkkiä palkkaamaan pari jamppaa puukottamaan frameworkkia että hommat taipuvat.
Niin. Aika moni bisneskriittinen ohjelmisto pyörii nykyään Linuxilla. Esimerkkinä nyt vaikka Amazon(AWS), Google(Android, serverit, Chrome OS) tai vaikka Facebook. Jopa omalla työpaikallani meidän serverit pyörivät Linuxilla. No pointtina, että aika moni on valmis käyttämään open sourcea nykyään myös bisneskriittisissä toiminnoissa.
Sitten on vielä se kokoluokka kysymys. Qt:lla on reilu 300 työntekijää. Pelkästään BMW:llä Flutterin parissa työskentelee heidän oman lehdistötiedotteen mukaan yli 300 henkilöä. KDAB on Qt-projektin toiseksi suurin kontribuuttori itse Qt:n jälkeen. Heidän palveluksessa on noin 100 työntekijää. Jos tuosta vielä Qt onnistui kusaisemaan kehittäjäyhteisönsä muroihin niin voi vaan kuvitella kumpaa teknologiaa voidaan kehittää jatkossa nopeammin vastaamaan käyttäjien tarpeita.
Mutta suomalaisena sentään on positiivista, että sulautettujen järjestelmien markkinalla Qt:lla on vielä teknologiana etumatkaa esim Flutteriin nähden, jos tuota aiemmin referoimaa konsulttitaloa on uskominen.
Puuh. Open source on hyvä asia jos tuote on niin laajasti käytössä että on kriittinen massa tahoja joiden bisnekset kulahtavat jos tuotteen kehitys loppuu. Tämä takaa ettei se lopu. Linuxissa tätä vaaraa yksinkertaisesti ei ole. Pelkästään Facebook yksin voisi rahoittaa kehityksen jos sikseen tulee ja rahaa menisi pieni pyöristysvirhe kahvikassasta. Ja moni muu firma on samassa tilanteessa - koko bisnes pyörii linux-palvelimien päällä. Ei vaaraa.
Onko Flutterilla tällainen kriittinen massa? En suoraan sanoen tiedä. Luottaisin siihen paljon enemmän jos olisi Flutter Inc. jonka olemassaolo riippuu siitä ja jolla on “ankkurikehittäjät” jotka vetävät projektia. Googlen olemassaolo ei siitä riipu ja he ovat tunnettuja tuotteiden sarjamurhaajia. Kyllä, on hyvin mahdollista että Flutterilla on jo tarpeeksi suosiota että se todennäköisesti jatkaa olemassaoloaan vaikka Google päättäisi uudelleenallokoida resurssinsa, mutta se olisi silti melkoinen osuma. Sama ongelma on monella muullakin pienemmällä open source-projektilla. Paljon nojataan muutamaan henkilöön ja myyttiseen communityyn joka oikeasti ei tee juuri muuta kuin natisee ja kenties tarjoaa jotain bugifiksejä kun tarpeeksi osuu omaan nilkkaan ja sorsa on saatavilla.
QTn kohdalla on firma jonka käytännössä ainoa tuote on QT ja joka tekee bisnestä sillä. Tämä takaa tietyn määrän resursseja tuotteen kehitykseen joka todennäköisesti pohjautuu siihen mitä kaupallisesta lisenssistä maksavat haluavat tuotteeseen. Sen päälle siitä on open sourcea “takalaitana” joka antaa turvaa vs täysin propietary-systeemi jos jonain kauniina päivänä sitä takalaitaa tarvitaan. Tämän todennäköisyys on kyllä aika pieni koska on iso pörssiyritys jonka bisnes on tuotetta kehittää ja tukea.
Tällaiset asiat merkkaavat taatusti kun työkaluja valitaan. Pelimoottoripuolella UE ja Unity ovat suosittuja osin koska molemmilla on iso, voittoa tekevä yritys taustalla joka “takaa” kehitystyön koska molemmilla firmoilla tuote on niin iso osa bisnestä (no, Epicillä UE on pienempi osa, mutta Fortniten olemassaolo riippuu UEsta ja muitakin peliprojekteja on, joten…) että riski siitä että tuote vedettäisiin vessasta alas kesken sinun projektisi on käytännössä nolla. Flutterilla? Aika lähellä nollaa, muttei nolla.
Ihan hyvä kysymys alkaisiko jo nykyisellään Flutter elää omaa elämäänsä jopa ilman Googlea. Ainakin iso liuta isoja toimijoita on valmis investoimaan isosti Flutteriin, joten tuo antanee viitteitä, että vähintään sitä “kriittistä massaa” kohti näyttetään olevan menossa. Myös devaaja tyytyväisyys on StackOverflown kyselyyn viitaten todella kovalla tasolla.
Miten tuon sitten tulkitsisi. Tasaista on vääntö, mutta Qt tuntuu olevan vielä suosiossa jenkeissä, plus enemmän artikkeleita. Työpaikkoja maailmanlaajuisesti on tasaisemmin. Katotaas miten menee jako Eurooppa/Amerikka/Aasia LinkedInissä:
Flutter:
1779 kpl European Economic Area
6367 kpl APAC
1060 kpl USA
171 kpl Kanada
Qt:
1734 kpl European Economic Area
6542 kpl APAC
1573 kpl USA
174 kpl Kanada
Jako on kyllä niin tasan kuin voi
Entäs trendi. Tässähän siis skaala on suhteessa itseen. 100 = tuona hetkenä on ollut kautta aikain eniten kiinnostusta (hakuja):
Korjatkaa tarvittaessa, mutta Flutter ei käsittääkseni tällä hetkellä ole mikään kovin poikkivertikaalinen työkalu, kuten Qt on. Aloitetaan vaikka siitä, että dev. tooleja puuttuu pino ja MCU kokonaan. Näin ollen näitä vertaillessa olisi hyvä nostaa myös vertikaalien määrää esille…? Omenat ovat erilaisia kuin appelsiinit jne.
Qt TAM 1.5mrd laitetta, Flutter paljon pienempi embeddedissä
Se on just näin ja kun puhutaan linuxista, niin niistäkin on, ainakin oman kokemukseni mukaan, tuotantokäytössä about 99% jotain tuettuja distroja kuten RedHat. Se, että OSlle, middlewarelle kehitystyökaluille, yms. saa tukea on yrityksille, jonka liiketoiminta nojaa ko. softaan erittäin tärkeää.
Flutter on ollut lähinnä mobiilidevaajien työkalu. Flutter 2 myötä teknologian markkinoidaan olevan markkinoiden laaja-alaisin. Se että Flutter on tunkemassa vasta sulautettuihin järjestelmiin tekee Qt:sta ainakin tällä hetkellä huomattavasti käytetymmän ratkaisun tuolla markkinalla.
With Flutter 2, you can use the same codebase to ship native apps to five operating systems: iOS, Android, Windows, macOS, and Linux; as well as web experiences targeting browsers such as Chrome, Firefox, Safari, or Edge. Flutter can even be embedded in cars, TVs, and smart home appliances, providing the most pervasive and portable experience for an ambient computing world.
Nonetheless, the fact that DART/flutter provides easy-of-coding in cross-platform like HTML/JavaScript, yet provides a highly performant runtime such as C++/Qt, the expansion of DART/flutter into embedded industry including automotive, industrial and medical/healthcare devices are inevitable.
En tiedä luitko aiemmin kun siteerasin muuten KDAB:in kommentin tuosta MCU-puolesta. Heidän mukaansa noille resursseiltaan pienille raudoille löytyy markkinoilta kevyempiä ja parempia ratkaisuja kuin Qt. Tuo selittänee osan esimerkiksi Crank Softwaren vaikuttavasta referenssilistasta. Jakarivertaus toiminee myös Qt:n kohdalla.
KDAB on firma joka suosittelee Open Source versiota Qt:sta asiakkailleen aina jos mahdollista. Ja koska Qt for MCU on täysin eri tuote kuin Qt eikä lähdekoodit ole saatavilla ilman kaupallista lisenssiä, joten on aivan luonnollista että KDAB on sitä mieltä että Qt ei ole hyvä MCU käyttöön (ja ei se sitä olekkaan). Sen sijaan Qt for MCU suhteen saa haastajat kyllä kovan kilpailijan jos rautavaatimuksien ja suorituskyvyn kanssa tehdään vastaavat UI:t ja verrataan.
Inderes voisi järjestää haastattelun, jossa Qt:n tekninen kaveri vastailee tämän ketjun kysymyksiin ?
Kysymykset joko ennakkoon tai livelähetys. Aika paljon ketjun pohdinnat koskevat ohjelmointia.
En ole Qt:llä ohjelmoinut vaikka perusrakenteen ymmärrän ja Dartillakin vain pieniä testejä.
Omasta mielestäni Dart on parannettu JavaScript. Kun JavaScript levisi yleisohjelmointikieleksi, otettiin käyttöön TypeScript tuomaan staattinen tyypitys JS:n
Dartissa on mahdollisuus dynaamiseen ja staattiseen tyypitykseen ja muita parannuksia.
Oman pinnallisen käsitykseni mukaan sulautetuissa Dartissa on kuitenkin samat ongelmat kuin JS:ssä. Dart ei käytä suoraa muistiosoitusta tai muistin varaamista eikä siten aidosti mahdollista laiteläheistä ohjelmointia. Käsittääkseni käännetty koodi (AOT-kääntäjällä tai exe) sisältää aina pienen VM:n jossa mm. roskien keruu.
Kuinka paljon Darttia, JS:ää tai muuta VM:n päällä pyörivää käytetään sulautetuissa ?
En ollutkaan tästä tietoinen. Heidän toimitusjohtajansa Kalle Dalheimer kyllä mainitsi alla olevassa haastattelussa, että suurin osa heidän asiakkaistaan käyttää kaupallisen lisenssin Qt:ta. Siinä suhteessa hieman ristiriitaista tietoa, mutta toisaalta voihan toimitusjohtajilla olla vaikka mitä motiiveja lausuntojensa takana.
Mutta nimenomaan Qt:ssa JavaScriptiä käytetään vain UI-kerroksessa.
Käsittääkseni sekä JavaScript että QML käännetään bytekoodiksi, jota kuvan mukainen QML Engine suorittaa ?
Qt:n eduksi Flutteriin voisi ajatella erilliset kerrokset eli QML/JS käyttöliittymäkerros sekä nopea logiikkakerros C++:lla
Flutterissä koko koodi on samaa Darttia, joka vaatii virtuaalikoneen
Dart/Flutter on teknisesti hieman vastaava kuin QML/JS-kerros, joten lähinnä näitä voisi verrata toisiinsa. Kumpi on tehokkaampi ja parempi käyttöliittymäohjelmoinnin kannalta. Joku näitä työkseen koodaava osaisi kertoa.
Lisäksi toki Qt:n etuna mm. mainitut kehitystyökalut puuttuvat Flutterista
Nyt saattaa mennä hieman tai jopa aika paljon oman osaamisalueen ulkopuolelle, mutta käsittääkseni Flutterin framework on Darttia ja sillä käskytetään Flutter engineä joka on täysin c++. Sitten vielä kohdelaite riippuvaiset embedderit ovat kohdealustalle mahdollisimman hyvin sopivaa kieltä.
Tuolta voi viisaammat ihmetellä arkkitehtuuria jos kiinnostaa: