Version: Smart Feature Phone 3.0

3.0 Overview

New Gecko

  • Using Gecko version 84.0(Dec. 10, 2020)
  • Gecko changes since version 48
  • Enhanced Service Worker
  • Modern JS (ECMAScript 2021)
  • PWA (Progress Web App) support
  • WebRender
  • WebAssembly
  • WebRTC and WebAudio improve
  • WebGL 2 interface to OpenGL ES 3.0
  • Quantum CSS (parallel CSS engine)
  • TLS 1.0, 1.1 dropped (1.2,1.3 remain)
  • Web Annimation API
  • WebP support
  • Media capabilities API
  • Speech Sysnthesis API
  • Web Authentication API
  • Encryped Media Extension API (EME)
  • Accepts some Webkit prefixed properties and attributes

New Gonk layer

  • Adapt to BSP HIDL interface
    • Unify the hardware abstraction interfaces defined by Google
    • May ease the porting efforts if new BSP version or new chipset coming

Web API changes

  • API domain name change
  • New API
  • Deprecated Web APIs

NewKai-RIL design

There are two RIL services design for KaiOS 2.5

  • Kai-RIL: used for non-QCT platforms, implemented and maintained by KaiOS.
  • QC-RIL(b2g-RIL): For QCT platform only, implemented, maintained and released by QCT.

Since QCT is giving up QC-RIL, we decided to adapt Kai-RL to all chip platflorms in 3.0 via HIDL interfaces.

V2.5 RIL

V2.5 RIL

V3.0 RIL

V3.0 RIL

Service Worker change

  • No permission needed
  • Clients.openApp is not supported, using Clients.openWindow by following W3C standards
  • SystemMessage API supported and onsystemmessage event is introduced
  • Can inspect service workers script by Remote Debugging

Geolocation change

  • Geolocation API is following W3C standards
  • QCT provides iZat (Qualcomm Location) service in both 2.5 and 3.0
  • In 2.5, iZat is tightened up on QC-RIL. It provides GPS, AGPS, Wifi positioning, Cell info location.
  • In 3.0, Kai-RIL connect iZat through HIDL interface. QCT didn’t maintain Wifi positioning and use Skyhook in place.
  • Using iZat service needs agreement from QCT in both 2.5 and 3.0.

New Apps manager

In KaiOS 3.0, mozApps API is removed and new apps manager is implemented.

  • webapps-manager permission
  • App is launched with open api with url, Apps manager supports:
    • App download/downloaded resume
    • Install/sideload package apps
    • Install PWA apps
    • Update/Uninstall apps
    • App signature check
    • Get apps list

App types in KaiOS 3.0

  • Signed App (priviliged app in 2.5)
    • 3rd party packaged app preinstalled in /system, but copied to read-write /data or download from store and store in /data, both can be upgraded without FOTA
  • PWA App (hosted app in 2.5)
    • hosted 3rd apps from store or pwa webside

App origin changed in KaiOS 3.0

  • “app://” are removed, all app origins are “http://”. For example, http://launcher.localhost for launcher app and https://example.com for PWA
  • App manager uses app origin and manifest to tell app types
    • Signed app: http://app_name.localhost
    • PWA: https://example.com

App manifest

  • PWA manifest w3c spec: firefox 82
  • Non-normative(B2G): b2g_features
  • File extension
    • The latest w3c spec[1] says .webmanifest is the official file extension for web apps, but we do have .webapp and .json before the spec defined it.

App manifest required

  • name or short_name: string
  • description: string
  • lang: string
  • id: string
  • theme_color: string
  • background_color: string
  • orientation: string
  • start_url: string
  • icons: Array of object

App manifest optinal

  • dir: string
  • scope: string
  • display: string
  • orientation: string
  • related_applications: Array of object

Permission Management

  • The permission managment mechanism is the same between 2.5 and 3.0.
  • The default permission table is changed in 3.0