Daniel Marjamäki har hittat ett sätt att leva på kodanalysatorn Cppcheck – ett öppenkodsprojekt som han själv grundade och har lett under 17 år.
Affärsidén är helt enkelt följande: att licensera en plugin som ger en säkerhetscertifierad version av verktyget – Cppcheck Premium.
Det betyder att ett bolag som vill ha en certifiering för en säkerhetskritisk produkt inte självt behöver visa att deras verktyg är säkra, utan kan hänvisa till den licensierade versionen.
Pär Jelger |
– Och på det viset spara tusentals ingenjörstimmar, säger vd Pär Jelger.
Cppcheck är ett verktyg för statisk kodanalys. Det finns många verktyg av det slaget, både kommersiella och ickekommersiella, och med olika strategier för att jaga efter buggar. Cppchecks styrkor ska bland annat vara att det arbetar snabbt, är lätt att konfigurera och har en låg andel falsklarm.
Företaget – Cppcheck Solutions – har nu existerat i två år. I slutet av maj fick företaget ytterligare en medarbetare, Frida Mistberg. Det är hennes marknadsföring som ger Elektroniktidningen nys om deras existens.
Daniel skapade Cppcheck för att jaga sina egna spökbuggar. |
Det är ett litet företag med idag fyra anställda. Målet just nu är att växa sakta med fler utvecklare. Omsättningen klättrade upp från hundratusen kronor 2022 till tre miljoner kronor år 2023.
Du kan ha stött på Cppcheck Solutions i orange t-shirts på mässan Embedded World i Nürnberg i april. De besökte bland annat de stora chiptillverkarna.
Cppcheck kommer alltid att finnas som öppen källkod, men nu finns en certifierad betald version. |
– Där har vi flera dialoger på gång. De skickar ut den här typen av verktyg med utvecklingsmiljöerna för sina chip, berättar Pär Jelger.
Ofta distribuerar chiptillverkaren redan öppenkodsversionen av Cppcheck. En certifierad version skulle vara uppenbart intressant för utvecklare inom områden som fordon, medicinteknik och rymd, där det krävs hög säkerhet.
Artikeln är tidigare publicerad i magasinet Elektroniktidningen. Prenumerera kostnadsfritt! |
Verktyget har funnits som öppen källkod i sjutton år. Det används idag av nästan en femtedel av världens alla C- och C++-utvecklare, inklusive för kod till inbyggda system. En fördel är att Cppcheck inte kräver att koden är helt körbar, och därför kan användas i tidiga utvecklingsfaser, även när hårdvaran inte är tillgänglig.
Cppcheck är känt för att år 2014 ha hittat en kritisk sårbarhet i mjukvaran X. Den hade legat dold i hela 22 år och fanns i Unix- och Linuxinstallationer överallt. Den kunde ge fri tillgång, root access, till hela systemet.
Daniel Marjamäki |
– Efteråt blev det en enorm nedladdningstrafik av Cppcheck, och ett enormt patchande av servrar över hela världen, berättar Daniel Marjamäki, teknikchef och grundare.
Öppenkodsprojektet har haft kring femhundra bidragsgivare genom åren, från olika branscher.
– De flesta har något problem, som de löst. De skickar in en patch och sedan så gör de inget mer. Sedan finns det vissa som jobbar aktivt och fortsätter att bidra. Just nu är de en handfull, kanske 10 till 20 stycken.
Daniel Marjamäki startade öppenkodsprojektet av en klassisk orsak: för att klia en egen irritation. Det saknades en statisk kodanalysator för delar av ett projekt i den miljö han jobbade, Borland C++ Builder.
Projektet utvecklade C-kod för styrsystem till traktorer och skogsmaskiner. Bland annat skapades ett grafiskt gränssnitt för programmering av styrsystemen.
Det irriterande var att de kodanalysatorer som fanns inte kunde hantera kompilatortillägg som användes av Builder för dess lösningar för callbacks, events och annat. Ur den klådan föddes Cppcheck.
– Jag startade det som ett litet hobbyprojekt och hade inte några större planer. Inte att det skulle bli så stort som det blev.
Cppcheck har sedan starten utvidgats med fler analysmetoder, men den första metoden var att söka i koden efter redan kända buggar. Han ville helt enkelt sätta stopp för misstag han själv hade en ovana att återupprepa.
– Om jag gör en bugg, så vill jag inte göra den igen. Nu kunde jag skapa jag en kontroll som hindrade mig från att göra den igen.
Kontrollerna spanar efter kodsekvenser som matchar buggarna. Det är en orsak till att Cppcheck har en liten frekvens av falsklarm – verktyget hittar buggar som bevisligen redan förekommit – de är inte teoretiska.
Han byggde med tiden ut sin enkla kodmatchning med preprocessor, syntaxträd, typhantering och en symboldatabas, för att kunna hitta fler typer av fel och öka precisionen.
Cppcheck tolkar koden på egen hand och är därmed kompilatoragnostisk – det vill säga arbetar oberoende av kompilatorn. Därmed kan den hantera kompilatortillägg – den brist som fick Daniel Marjamäki att börja utveckla Cppcheck från första början.
Analysmetoden gör verktyget väldigt snabbt.
– Det slösar inte på utvecklarnas tid. Du behöver inte lägga en halvtimme på att vänta på att den statiska kodanalysen ska bli klar, kommenterar Pär Jelger.
Pär och Daniel kände varandra sedan tidigare och kring 2021 började de diskutera de hur Daniel skulle kunna hitta ett sätt att jobba med Cppcheck på heltid istället för som bara ett hobbyprojekt.
– En bärande princip var att Cppcheck-projektet skulle fortsätta vara open source och att det skulle fortsätta att utvecklas. Alla skulle kunna fortsätta att ha ett bra verktyg av det här slaget. Oavsett om man jobbade med gratisprojekt eller i kommersiella bolag, berättar Pär Jelger.
– Open source-versionen ska fortsätta att vara gratis. Det ska vara lätt att komma igång och använda. Det ska vara snabbt. Det ska inte ge några false positives. Det ska i grund och botten vara det verktyg som Daniel byggde för sig själv en gång i tiden.
Nischen de hittade var säkerhetscertifiering. Det var utvecklarna i communityt måttligt intresserade av att arbeta med.
– Det var ett kommersiellt spår som inte skulle konkurrera med open source-verktygets funktionalitet.
Så företaget byggde en idag Tüv Süd-certifierad tilläggsmodul till open source-verktyget. Därmed kunde det uppfylla en stor mängd standarder. Ett tyskt företag hjälpte till med certifieringen.
– Utan dem hade inte detta gått, eftersom certifieringsprocessen för de högsta säkerhetsnivåerna är väldigt rigorös.
Affärsmodellen är årsprenumerationer. Den första kommersiella versionen släpptes i december 2021.
– Intresset är väldigt stort. Vi har haft femtio kunder i månaden – femtio bolag från hela världen som hör av sig out of the blue och säger ”Hej! Nu ser vi att det finns en betalversion som löser compliance. Det är vi intresserade av.”
– Ändå gör vi nästan ingen reklam, och nästan ingen marknadsföring. Förrän nu.
Företaget fortsätter sitt certifieringsarbete för att bevisa att det uppfyller cybersäkerhetsstandarder och även ny lagstiftning på området, som CRA, EU:s Cyber Resilience Act.
– Det gör vi redan till stora delar på grund av safetycertifieringen. Den löser väldigt mycket.
Hur finansierar ni er?
– Vi växer på egna pengar. Vi har inget riskkapital i bolaget utan vi har vuxit på eget arbete och på egna intäkter. Och planen är att fortsätta göra det.
Det är mycket tal om programspråket Rust och att det kan ersätta C och C++ med sin mindre benägenhet att attrahera buggar?
– Det finns ett stort tryck från bland annat amerikanska myndigheter att övergå från C++ till andra språk. Inte specifikt Rust utan alla minnessäkra språk.
– Samtidigt har även C++ fått ett väldigt starkt fokus just nu på att öka sin safety. Jag tror att det kommer hända väldigt mycket, säger Daniel Marjamäki.
Han pekar på Herb Sutter, en prominent C++-expert, som hävdar att C++ kommer att utvecklas med målet att komma ikapp språk som Java.
– Överlag är vi inte jätteoroliga, säger Pär Jelger.
– Det finns en tröghet. Det har sagts länge att C++ skulle bytas ut mot alla möjliga språk. Men ekosystemet flyttas inte så fort. Det finns tio miljoner C- och C++-utvecklare. Bygger du din produkt på Rust så tar du en teknisk risk att hitta kompetens.
Säkerhet är ett komplett ekosystem av verktyg byggda kring C och C++. Så en växling till Rust skulle att ta många år.
Vad tror ni om generativ AI för kodanalys?
– Det kan vara ett värdefullt komplement, säger Daniel Marjamäki.
– Men ett problem är att det inte är deterministiskt, säger Pär Jelger.
– Alla säkerhetsstandarder av idag kräver determinism. Innan man har bytt ut de regleringarna, så kommer AI aldrig kunna användas mer än som ett sidoverktyg för att granska kod.