# Akri Runtime-2022-Annual Review REQUIREMENTS: https://github.com/project-akri/akri/issues/614 ## Background Akri is a Kubernetes Resource Interface that exposes heterogeneous leaf devices (such as IP cameras, OPC UA servers, and USB devices) as resources in a Kubernetes cluster. Akri continually detects nodes that have access to these devices and schedules workloads based on them. Simply put: you name it, Akri finds it, you use it. ### Why Akri At the edge, there are a variety of sensors, controllers, and MCU class devices that are producing data and performing actions. For Kubernetes to be a viable edge computing solution, these heterogeneous “leaf devices” need to be easily utilized by Kubernetes clusters. However, many of these leaf devices are too small to run Kubernetes themselves. Akri discovers them using common protocols (OPC UA, ONVIF, udev, etc.) and registers them as resources using the [device plugin framework](https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/). Connectivity isn't a given at the edge, so Akri handles the dynamic appearance and disappearance of leaf devices. Akri's controller automatically brings down Pods that use devices that are no longer online and redeploys them when devices reconnect. Additionally, Akri was built to be extensible. Akri currently supports ONVIF, udev, and OPC UA Discovery Handlers, but community members can add more. ## Sandbox Acceptance Akri was accepted into the CNCF Sandbox on September 14, 2021. ## Development metrics [Akri's devstats dashboard](https://akri.devstats.cncf.io/). The numbers of Akri contributions, contributors, and issues has remained consistent over the last year, with the number of merged PRs showing an upward trend. On average, Akri averages [88 contributions a month](https://akri.devstats.cncf.io/d/74/contributions-chart?orgId=1&var-period=m&var-metric=contributions&var-repogroup_name=All&var-country_name=All&var-company_name=All&var-company=all&from=now-1y&to=now) with an average of [6 PRs merged a month](https://akri.devstats.cncf.io/d/74/contributions-chart?orgId=1&var-period=m&var-metric=mergedprs&var-repogroup_name=All&var-country_name=All&var-company_name=All&var-company=all&from=now-1y&to=now). PR activity has been increasing with it's all time high of 23 merges in one month occurring in April, 2023. Furthermore, the project has seen an increase in the number of repeated contributors and there has been a recent increase in feature development. One of Akri's goals in joining the CNCF was to expand beyond it's Microsoft maintainership. Since becoming a sandbox project, we've added three new maintainers, almost doubling the project's maintainer counts, and maintainers now span across three companies. The project has [35 contributors](https://akri.devstats.cncf.io/d/22/prs-authors-table?orgId=1) from at least 14 companies, including Microsoft, SUSE, VMWare, Fermyon Technologies, and more. Maintainers have stayed engaged in development, with the "PR Time to Engagement" staying consistent with an average of 6.69 hours over the last year. * The community has grown since Akri entered the CNCF Sandbox. * We have held monthly meetings since September 2021. The meeting notes could be found [here](https://hackmd.io/UUqW3_GgQDimQ5b23rS9rg), and the recordings can be found [on YouTube](https://www.youtube.com/channel/UC90VZDjT8C7ca7zcuFi6oEQ). * Number of contributors: [10](https://akri.devstats.cncf.io/d/22/prs-authors-table?orgId=1&var-period_name=Before%20joining%20CNCF&var-repogroup_name=All) -> 35 * Number of stars: 630 -> 960 * Number of helm chart installs (measured in Akri agent container downloads): [2,975 of `v0.10.4`](https://github.com/project-akri/akri/pkgs/container/akri%2Fagent/86463296?tag=v0.10.4) (released 2 months ago) and [19,657 of `v0.8.23`](https://github.com/project-akri/akri/pkgs/container/akri%2Fagent/47340592?tag=v0.8.23) (released 8 months ago) * The [#akri](https://kubernetes.slack.com/messages/akri) channel on Kubernetes has 279 members since its creation upon joining the CNCF ## Maintainers We now have maintainers from 4 different companies. * Kate Goldenring (Fermyon) @kate-goldenring * Edrick Wong (Amazon) @edrick-wong * Nicolas Belouin (SUSE) @diconico07 * Adithya Jayachandran (Microsoft) @adithyaj * Johnson Shih (Microsoft) @johnsonshih * Roaa Sakr (Microsot) @romoh * Jiri Appl (Microsoft) @jiria * Brian Fjeldstad (Microsoft) @bfjelds * Yu Jin Kim (Microsoft) @yujinkim-msft ## Project progress and adoption The Akri community has released five versions since joining CNCF, with 18 different contributors to these releases in total. Akri has also since participated in many CNCF talks and hosted booths at the Project Pavillion in KubeCon EU 2022 and 2023. You can view some of our talks here: - [Wasm Day 2021](https://www.youtube.com/watch?v=8hF9hnUJyCY) - [KubeCon EU 2022](https://www.youtube.com/watch?v=CMthyqMhuq4) - [KubeCon NA 2022](https://youtu.be/0Gnh86queVQ) - [Kubernetes on Edge Day EU 2023](https://youtu.be/hT7bGNKEZk4) There has also been involvement from Microsoft's AKS Edge Essentials and how it works with Akri to address challenges at the edge. Akri has been mentioned in their docs and various talks which you can find here: - Akri docs on AKS Edge Essentials - [Discovering OPC UA servers](https://learn.microsoft.com/en-us/azure/aks/hybrid/aks-edge-how-to-akri-opc-ua) - [Discovering ONVIF cameras](https://learn.microsoft.com/en-us/azure/aks/hybrid/aks-edge-how-to-akri-onvif) - [WASM I/O 2023](https://youtu.be/L6IhonIUOKU) - [Arc Jumpstart](https://youtu.be/KLA3N8xbYPE) ## Project goals This is the Akri project's first Annual review after joining the CNCF Sandbox. Since acceptance into the sandbox, Akri has added the following features: - support for Job brokers - enabled secrets, configMaps, and volumes to be mounted in brokers - support for mounting connectivity information for multiple devices/instances in a Pod - udev discovery handler can discover multiple node devices - support for the latest Kubernetes versions - ...and more. View the full release notes [here](https://github.com/project-akri/akri/releases). Some feature development goals for 2023 for Akri are: - Integrated K8s native device secrets management solution - Support more IoT protocols - Get Akri to 1.0 - view our roadmap [here](https://hackmd.io/@akri/HkiDQ7rDh). In the 2023 year, we'd also like to increase participation in monthly community meetings and grow contributor count. ## How the CNCF can help to achieve the upcoming goals In the past year, the Akri project has received significant support from the CNCF, such as Project Pavilion and Office Hour opportunities at Kubecon. Going forward, we plan to work closely with the CNCF on the following additional areas. * Strategy to recruit and retain contributors. * Guidance and support for the project's technical documentation. * Opportunities to collaborate with other CNCF projects. ## Incubation readiness Akri's feature development has accelerated; however, we want to have a push towards a stable Akri `v1.0` before we apply for incubation in the upcoming months. As a part of this effort, we hope to: - implement production-ready features (list can be found [here](https://hackmd.io/@akri/HJqQWiQs9)) - revisit the security/threat model and update the scenarios as necessary - implement ongoing and to-do threat mitigiation strategies - create more E2E testing scenarios to run on every release for a more full validation of the stability of the releases