Qt Group - Episk resa till en teknikjätte

Kappas keppana, tulipas taas tehtyä temppu ja palattua Qt omistajaksi kun tuli ostattua muutama erä Qt kaksikymppisiin kursseihin. Täällä foorumilla on ollut varsin hyvä määrä keskustelua sijoitus sentimentistä, mutta hetkeen en ole lukenut kamalan syväluotaavaa analyysiä Qt:sta teknisestä vinkkelistä. Itselleni Qt:n tekninen tilanne ja tuleva ovat pienen tauon jälkeen teräväittyneet, joten uskallan jakaa mietteitäni. Sen verran taustaa että olen SR SWE automotiivi maailmasta, joka ei kuitenkaan käytä tai ole käyttänyt Qt:ta vuosikymmeneen omin kätösin. Ennen automotiivi hommia työnkuvaus oli analogi tekniikasta ja sulautetuista järjestelmistä. Kerron tämän sen takia, että se antaa kontekstia siitä mistä tulen ja mimmoisen ruudun läpi Qt:ta katselen.

Tästä tulee melkoinen tekstiseinä enemmän tai vähemmän hyvin jäsnneltyä teksitä…

## IAR hankinta

IAR:n bisnes on kääntäjä. Tarkemmin sanottuna C/C++ kääntäjä. Miksi kukaan haluaisi maksaa C-kääntäjästä jos GCC:ta tai Clangia saa käyttää mielinmäärin miten haluaa ilman että tarvii maksaa rahaa tai kysellä lupia. Syitä on nyrkillinen mutta niistä muutama on oikesti merkittävä.

Isoin ja määräävin syy on sertifikointi, joka puolestaan on vaatimus usealla avain alalla johon koodia tuotetaan. Automotivessa tämä on ISO26262, IEC 61508 (ja ilmeisesti lainaten kanssa ISO26262) teollisuudessa ja IEC 62304 medikaali puolella. Ilmailussa (siviili ja sotilasilmailu) on myös nippu omia standardeja, jotka vastaavat nyanssieroin edellämainittua. Sotilaspuolella puolestaan MIL-STD-xyz tai kansallinen vastine. Nämä on keksitty aikoinaan, jotta eri alan toimiat voivat leikkiä samassa hiekkalaatikossa ilman jatkuvaa standardien ristiin mappaamita. Nämä standardit määräävät sekä tuotantoprosessia sekä teknistä toteutusta. Nämä kaksi yhdessä johtavat sitten siihen missä IAR (ja muut vastaavat työkalut) astuvat kuvaan.

Puhun nyt yleistäen C-kääntäjistä mutta pätee myös muihin kääntäjiin. Esim Rust. Nykyajan kääntäjät ovat tooodella fiksuja. Usein turhan fiksuja. Moderni kääntäjä osaa tutkia ja ennustaa suoritus polkuja ja optimoida rakenteita sillä tavalla että kehittäjä ei voi luottaa siihen, että kuinka milläkin arkkitehtuurilla, mitä koodi oikeasti tekee. Puhutaan hyvin-hyvin autistisen tason ongelmista. 2 esimerkkiä

- Kun tehdään kryptografiaa on tärkeä että kryptomassat prosessoidaan aina const-time ajassa, jotta aikadomainin side-channel hyökkäys järjestelmää vasten ei toimi. Jos tarkkoja ollaan const-time ei itsessään vielä riitä vaan pitää myös olla järjestlmä kuormallisesti const. Moderni kääntäjä ei ymmärrä tätä konseptia ja vaikka kuinka laitat optimiontiliput nolliksi niin silti lopputulos voi olla haastava selvittää. Tässä jokin aika näin artikkelin jossa Botanin pääkehittäjiä syletti juurikin tämä ongelma. IAR tarjoaa tällaisiin sovelluksiin ratkaisuja. Ja vieläpä sellaisia ratkaisuja jotka toimivat kääntäjä versiosta toiseen luotettavasti.

- Kun tehdään realiaikavastetta vaativia ratkaisuja, on hyvin-hyvin tärkeää että input-output on deterministinen. Tässä tapauksessa prosessori valmistajat laittavat kapuloita rattaisiin. Modernit MCU:t (mikrokontrollerit) ovat sen verran kehittyneitä ettei markkinoilla oikein ole todelliseen realiaikaan ja ennustattavuuteen kykeneviä prossuja. Edes kaikki ns. realiaika prossut (esim STM32R-sarja) ei ole kyllin realiaikainen kaikkiin tarkoituksiin. Syitä on monia mutta yleisin maton reuna johon kompastua on ytimen pipelinejen määrä ja näiden schedulointi. Tämä niche ongelma on sen verran haastava ja työläs ylläpitää sadoille eri prosessoreille, ettei open source projekteilla ole ollut kiinnostusta ratkaista ongelmaa. IAR:n kaltaisella työkalulla tämä on mahdollista.

Kuinka IAR kääntäjä tekee tämän on lyhyesti ja yksinkertaistaen niin että siinä missä GCC ja Clang luovat geneerisen binäärin joka vastaa optimistista lopputulosta 99% käyttökohteista ja ytimiä mm. optimoiden rakenteita, looppeja ja osotteita, niin IAR:n käänätäjässä on prosessori spesifejä inline ASM blokkeja tai sääntöjä joilla voidaan varmistaa juuri haluttu toiminta juurikin oikeassa kohdassa. Näitä sitten liputetaan kääntäessä tarvittavan mukaan.

Tämä on prosessi joka on todella kallis tehdä miestyötunneissa. Silikoneja kun on satoja ellei tuhansia ja uusia tulee jatkuvasti markkinalle. Ja nyt ei edes puhuta vain ARM Cortex-X ISAsta vaan myös vaihtoheto ISAsta kuten RISC-V (RV32 ja 64), Renesassin omat, AVRt, TI:n MSP, PowerPC jne.. Ja lisäksi 8 bitistä 64 bittiin. Huomioitavaa että IARlla ei ole virallsita tukea x86lle. Tästä voikin jo selkesti lukea että IAR elää ja loistaa nimeomaan sulautettujen mikroposessori hommien maailmassa. Mutta kattaa myös isot Cortex A ytimet. Eli sovelluskohteita on myös HPC maailmassa. Jotta kehitystyö toimii hyvin ovat silikoni vendorit ja IAR syvässä symbioosissa keskenään. IAR tarvii tuotteilleen rautaa ja silikoni vendorit tarvitsevat kehitystyökalut joita heidän kohdemarkkinan asiakkaat tarvitsevat. Huomiona että en ole aivan varma missä menee IAR ja silikonitoimittajan tontin viiva. Voisin kuvitella että IAR vastaanottaa dokumentoinnin ja testiraudan silikoni valmistajalta ja toteuttaa konsultoiden IAR laajennoksen

Ensimmäinen analyysi AIsta ja Qtsta tulee tässä: tämä kallis per-malli-kehitystyö nopeutuu ja halventuu Ailla merkittävästi. Työ on juuri sellaista jossa tekoäly loistaa. Ei tarvise keksiä uutta vaan analysoida tuhansia sivuja dokumentointia ja järkeillä se käännösohjeiksi. Sanoisin näin että hyvällä tekoäly adaptaatiolla Qt (IAR) on tässä netto hyötyjä. Tätä hommaa ei pelkällä tekoälyllä voi silti kuka tahansa tehdä koska lopputuloksen testaaminen vaatii oikean (esituotanto, jotta työkalut on valmiita launchissa) silikonin ja tähän ei open source projektit kykene.

## Qt ja ASIL

Tästä aikasemmasta pohjustaen on aika helppo vetää yhteen linkki IAR:sta Qt:n tarjoamiin ratkaisuihin. Seuraavaksi avaan omalla kohdalla relevanttia ISO26262 speksiä ja siitä johtuvaa ASIL-luokitusta.

ASIL on A-D luokitus joka kuvaa osakokonaisuuden fuktionaalista turvallisuus vaatimustasoa. A-luokka on kaikkein matalin luokka ja se kattaa esim komponentteja kuten ajamiseen liittymättömät zone-ecut ja vastaava valaistus. B kattaa suurimman osan instrumenttipaneelista, jarruvalot ja peruutus kameran/tutkan. C kattaa dynaamisen alustan tietokoneen ja adaptiivisen vakkarin ja loput mittareista. D kattaa suurimman osan absoluuttiseen turvallisuuteen liittyvät astiat kuten airbagit, jarrut ja abs, ohjaustehostin ja nykyautossa myös ADAS. Tästä on varmaan helppo huomata, kuinka IAR kääntäjä löytää tiensä autoon kuin autoon.

Seuraava asia on ASIL-luokan riippuvuus käyttöjärjestelmään. Fiksu lukija varmaan hoksaa että esim airbageissa tai ABS jarruissa ei ole käyttäjärjestelmää ollenkaan. Airbagit ovat täysin elektro-mekanisia MEMS laitteita ja ABSt ovat joko ASICja taikka baremetal ratkaisuja, joissa jokin Matlab malli käännetään realiaika vaatimusten mukaan ja tuutataan piirille. Jos hypätään D-luokan ADAS järjestelmään niin törmätään 9.69 kertaa kymmenestä QNXään. QNX on BlackBerryn tekemä mikrokernel (hox, ei monoliittinen kernel kuten about kaikki muut OSt) käyttöjärjestelmä joka on itsessään ASIL D sertifioitu toimittaessa. Tällä hetkellä QNX on realistisesti ainut vaihtoehto ASIL D ja C tasoille. A ja B tasoilla sitten onkin vaihtoehtoja kuten uusi suomesta juurensa kantava Elektrobitin LISA joka on hypervisor + EB Ubuntu pino. Jälkimmäinen avointa koodia.

Kun päästään käyttöjärjestelmä tasolle niin päästään sulavasti UI elementteihin jolloin Qt:n tuoteperhe astuu kuvaan. Qt:n Qt Safety Renderer on valmiiksi ASIL D toimitettuna. Tämän takia C ja D luokissa realistisia vaihtoehtoja ei ole monia ja joista Qt on objektiivisesti paras ja goto-valinta. On myös mahdollista että tier1/OEM tekee tämän kokonaan itse, mutta on niin kallista ja hidasta että miksi keksiä rengas uudestaan. Ja jotta tulee sanottua niin tähänkin on muutamia Qt:ta vastaavaia optioita.

A ja B luokissa on jo enemmän valintaa. Qt on täälläkin teknisesti todella hyvillä. Vasrinkin mittaristossa Qtlla on yksi ässä, Boot 2 Qt. Eli Qt voidaan ajaa suoraan bootloaderista ilman käyttöjärjestelmän abstraktiota. Tämä on erittäin hyvä kun BOMsta halutaan nipistää (vähemmän muistia ja laskentatehoa) ja kun halutaan nopea vasteaika käynnistykseen. Qt ei rajoita myöskään UIn designiä sillä Qt tukee sekä 2D ja 3D renderöintiä.

Infoteiment puolella on tällä hetkellä kahta selkeää trendiä. Bestspoke oma ratkaisu ja Android auto. Bestspoke ratkaisussa Qtlle on oikesti tilaa mutta Androidin tapauksessa tämä on lähinnä teoreettista, vaikkakin mahdollista. Tässä on kuitenkin hyvä ymmärtää että nykyautossa infotaiment ei välttämättä ole homologinen järjestelmä vaan saattaa koostua useista ratkaisuista. Ja nämä ovat aina erillään mittaristosta johtuen funktionaalisen turvallisuuden määräyksistä.

Nyt toivottovasti lukijalle on tullut selväksi kuinka modernin auton ohjelmistoon vaikuttaa moni asia, yhtenä suurena rajoittajana ASIL luokka. Qt osti muutamavuosi juurikin tähän erikoistuneen firman, joka siis tuottaa testaus palveluita ASIL-luokille. Riippuen luokasta testattavaa on enemmän tai vähemmän. Vastaavasti mitä vähemmän valmiin sertifioidun palikan (kuten Qt tai QNX) päälle lisää omaa, niin sitä vähemmän on testattavaa. Etukäteen sertifioidut palikat on tämän takia houkuttelevia sillä se säästää kehitys ja ylläpito vaiheessa suuresti testaukselta. Tässä tilanne on win-win. Jos Qt teknologia valitaan, on testattavaa teorissa vähemmän. Jos Qt:n teknologiaa ei valita on testattavaa enemmän ja suurempi tarve testausteökaluille ja lisensseille. Tässä asiassa en ole asiantuntija kuinka hyvä penetraatio FrogLogilla oli ei-Qt testaukseen.

## Qt ja sattumanvaraisen saannin muisti (ja sen saatavuus)

Tekoäly pointti nro 2. Mutta tämä on epäsuora. On melko selkeää että RAMn hinta vapailla markkinoilla on räjähtänyt. Ja tämän varmaan jokainen sisäistää. Useammalla jää kuitekin hoksaamatta että sekundäärinen shokki joka tästä tulee on vielä rajumpi. 3 RAM valmistajaa tuottaa ~90% maailman DDR5 muistista. Muutama päivä sitten Blomman aamussa oli juttu kuinka C-suite kavereita saa monoa kun Etelä-Korean RAM ostomatka meni vihkoon. Käytännössä kaikessa elektroniikassa pleikkarista autoon on RAM muistia. Samassa Blomman aamussa kerrottiin että 2026 tuotanto oli myyty loppuun ennen tammmikuun loppua. Tämähän on aivan katastrofi. Sony sano että PS6 julkasu menee pari vuotta taaksepäin. Jään kauhulla odottamaan kuinka lyhyen tikun sekundääri markkinoilla käteen jäävillä ostajilla ei ole tuotetta jota myydä. Harmittaisihan se jos olisit VW ja sulla on 200k Porche tehtaalta ulkona mutta siitä puuttuu 2 RAM kampaa.

Uuden kapasiteetin saaminen kestää 2-3v minimissään. Design adaptaatio kestää kuukausia riipuen tuottessta ja sen integraatio tasosta. En usein maalaile piruja mutta tässä kyllä täytyy olla doomeri ja sanoa että tämä ei tule päättymään hyvin. Monissa sovelluskohteissa matalammat RAM suoritusarvot ovat hyväksyttyjä. Uskoisin että aika monessa firmassa mietitään miten käy millekkin tuotteelle kun DDR5 vaihtuu DDR4 alapäähän tai DDR3 yläpäähän. DDR5 ei edes ole pelkkä nopeus standardi vaan pitää sisällään myös built-in ECC ominaisuuksia jotka voivat joissan sovelluskohteissa olla korvaamattomia (esim autot).

Tämä ei suoraan sada Qt:n tai kenekään muunkaan laariin, mutta on totta että Qt on selkeästi resurssi nuuka moneen vaihtoehtoon verrattuna sekä OSn sisällä että sularina. Mikäli jokin tuote päätyy vaihtamaan matalamman laadun RAM moduulin tuotteeseen niin se _voi_ vaatia myös ohjelmiston adaptointia. Tällä alalla klassisesti sanotaankin että HWta voi kompensoida softalla. Mutta vain tiettyyn pisteeseen asti.

En sanoisi että tällä olisi merkittävää vaikutusta Qt:n. Ellei homma ylly ihan maailmanlopun menoon. Mutta silloin vaakakupissa painaa myös tehtaan piippuun jääneet tuotteet ja jakelulisenssit.

## Qt ja Flutter

Sitten oma henk. koht. mielenkiintoisin otsikko. Sivutoimisesti toimin Flutter devaajana ja arkkitehtina. Flutter ja Toyota on mielemkiintoinen pari. Toyotalla on jo vuosia ollut pöhinä dioissa että Flutteria on putkessa. No nyt se olisi tulossa pihalle tämän vuoden rav4:ssa. Kuten aikaisemminkin tällä foorumilla mainittu, ei Flutter bootloaderista ole mikään triviaali juttu. Toyota on ratkaissut tämän omalla bestspoke bootstrap ratkaisulla joka ilmeisesti lataa Flutterin embedder APIn kautta renderimoottorin jota sitten käytetään Flutter sillan päätteenä. Luin että tämä olisi joko ASIL B tai A tasolla. Sertifikaatista ei ole varmuutta myöskään. On eri asia olla funktionaalisesti jollain tasolla ilman sertifikointia. Toyota päjäytti tämän vuoden alussa kanssa Flutter perlimoottorilla nimeltä Fluorite, joka on julkaistu avoimena sorsana. Ilmeisesti varsin performantti yksilö. En ole itse testannut. Lisää luettavaa ja keskustelua https://www.reddit.com/r/programming/comments/1r0lx9g/fluorite_toyotas_upcoming_brand_new_game_engine/.

En tiedä menetänkö tässä kredibiliteettiä C99/11 miehenä, jota siis käytän pääasiassa palkkatöissä, mutta henk. koht. mielipide on että Flutter (ja alla oleva dart) on kaikkein mukavin ja tuottavin ohejelmointikieli mitä olen ikinä kokeillut. Hyväilee juuri oikeita kohtia meikäläisen aivossa.

99.420% Flutterin sovelluskohteista on applikaatio tasossa. En näe itse Flutteria ja Qt:ta toistensa kilpalijoina vaikka jakavatkin osan samasta arvokerroksesta. Flutter on harmikseni todellinen pyöristys virhe sekä iOS/Android, desktop että web puolella. Todella toivoisin että framework adaptoitaisiin laajemmin.

## Muut teollisuuden vertikaalit

Kuten joku näppärä hoksaa niin tässä on käyty Qt:ta läpi semivahvan autoteollisuus linssin läpi. Kuten aikaisemmin mainittiin niin vastaavia sertifikaatti rajotteita löytyy myös muilta teollisuus aloilta. Nostaisin mahdollisuudet defenssi puolella.

Qt hyväksyttiin jokin aika sitten FACE sertifikaatilla (Future Airborne Capability Environment). Tämä on USAn ilmailuteollisuuden sertti, on laatuleima esim F35 hävittäjään ja muihin projekteihin. Tämä on tulevaisuuden defenssiin liittyvistä prospekteista se kaikkein tärkein. FACE avaa ovet käytännössä koko USAn puolustus teollisuuteen ja sitä kautta myös atlantin tälle puolelle. Maajärjestelmistä löytyy myös vastaavia serttejä ja niitäkin on Qtlla vino pino. Julkiset referenssit on tämän alan hommissa usein nihkeissä mutta ainakin Saab Defence käyttää Qt:ta. Mitä ymmärsin niin sovelluksen kohde on ilmavalvonta ohjelmisto. Olisiko tutkajärjestelmässä tai lennonjohdossa. Mene ja tiedä.

## Markkinan voimat

Jos on asunut kiven alla niin on selvää että Qt:n kurssin syväsukellus on sekä itseaiheutettua mutta myös sektori vetoista. Kaikkia SaaS firmoja on rankaistu vuoden alusta 30-80%. Atlassian, Adobe, Salesforce, Workday ja kumppanit. Ei ole helppoa ei. Tekoälypaniikki iskee joka toinen viikko.

Oma näkemys ohjelmisto alalta on että uskon vahvasti Jevons paradoksiin. Eli siihen kun jokin asia helpottuu niin sen sijaan että sen tuotto/tarve pysyy vakiona tuottavuuden kasvaessa, käykin niin että kysyntä kasvaa nopeammin. Verrokkina traktori ja maanvijely. Tai juna-hevonen ja liikkuvuus.

Monet teknologia apostolit julistavat että devaaja ei enään koodaa vaan promptaa. Spotifyn joku päällikkö taisi menneellä viikolla näin julistaa. Samalla junnujen työmarkkina koki syvä-jään. Tilanne ei ole ihan niin paha kuin otsikot antaa ymmärtää. Jenkeissä junnu positioiden määrä on hieman alempi kuin ennen korona-kiimaa. Mutta selkeästi alempi kuin olisi ollut ilman AI aaltoa. Olen melko varma että tämä tulee puraisemaan IT alaa kollektiivisesti pepusta kun brain drain pysyy vakiona mutta uuden talentin putki on katkaistu. Saa nähä miten menee.

Jevonsin paradoksiin vielä viitaten uskon että pitkässä juoksussa devaajalisenssien ja yeisesti sovelluskohteiden määrä tulee kasvamaan, ei vähenemään, tästä johtuen. Uskon myös, ohi aiheen, että suurista monoliittisista tuotteista ajaa aika jollain jänteellä ohitse ja tilalle tulee pieni, agiileja bestspoke ratkaisuja. AI:n tarjoama tehostaminen mahdollista tälläisen mallin joka nykyisellään ei ole bisnesmielessä kestävä. Eli edellisen parin vuosikymmenen ohjemisto konsolidaatio kokee suhdanne käännöksen ja fragmentaatio alkaa. Uskon että tämä on kuitenkin hyvin hidasta.

Autoteollisuudessahan on ollut kunnon kulutusjuhlan krapula nyt pari vuotta. Upouudet projektit on kivenalla ja nykyisiä jatketaan pidempään kuin oli suunniteltu. 1 gen SVD kehitys meni monessa firmassa yli, jäi piippuun tai jotain muuta kipuilua. Rahat ja aika on käytetty, teknologia jää vanhaksi mutta uutta pitäisi tehdä, samalla kun marginaalit on pienentynyt ja uudet haastajat syö markkinosuuksia. Uuden auton hinta on karannut 10v aikana kymmeniä prosentteja ja kuluttaja kipuilee edelleen ostovoiman kanssa. Vika suoraan ei ole BEVssä tai SVD:ssä. Myös reguloinnilla on iso osa. Nykyautoissa on paljon pakollisia komponentteja joita ei 10v sitten ollut. On kuljettaja kameraa, hätä puhelinta, enemmän testejä jne. Uuden perhe Skodan hinta 10v vs tänäpäivänä inflaatio korjattuna on melko radikaali. Saksan autoteollisuus joka on kipuillut teknologiauudistusten kanssa saa nyt pienen hengähdystauon kun RED3 ja mahdollisset Kiinan suojatullit turvaavat marginaaleja.

Itsellä ei ole faktatietoa miten iso osa asiakas piirakkaa autoteollisuus on Qtlle, mutta en yllättyisi jos se ei olisi suurin yksittäinen. Uskon kuitenkin että pahin on takana päin ja että esim defenssi puoli tuo uusia pitkäaikaisia asiakkuuksia.

## Loppusana

Itse pidän sijoitus caseista joista ymmärrän ja jotka ovat tuotteeltaan oikeasti hyviä. Mielestäni Qt lukeutuu tähän. Samalla lailla kuin myös salkkuni suurin positio, Nordic Semiconductor. Uskon markkinatilanteen muuttuvan ja tässä tulevassa nousussa hyvien tuotteiden tuovan kassakoneeseen kilisevää. Se mitä tämä malli ei ota huomioon on, osataanko tätä myydä. Löytääkö kehittäjä teknologian. Tätä pitäisin Qtssa oikeana sijoitusriskinä.

234 gillningar