CloudABI: Cloud computing meets fine-grained capabilities
Channel: Linux.conf.au 2016 -- Geelong, Australia
Date: 2016-02-06

Ed Schouten
https://linux.conf.au/schedule/30012/view_talk
CloudABI is a new runtime environment that attempts to make it easier to use UNIX-like operating systems at the core of a cloud/cluster computing platform.

Instead of using full machine virtualization (Xen, bhyve, KVM) or techniques that attempt to virtualize namespaces (FreeBSD Jails, Linux cgroups), CloudABI makes it possible to safely run user-provided executables directly on top of a UNIX kernel. The entire setup has very low CPU/memory overhead, but there's also no need for any complex configuration.

Compared to other UNIX ABIs (Linux, FreeBSD, etc), CloudABI is relatively compact. The number of system calls is low (~60) and all data types and structures have been decoupled from the public C runtime environment, meaning that it is relatively straight-forward to add support for CloudABI to other operating systems. Implementations for FreeBSD, Linux and NetBSD already exist. This allows users of such computing platforms to run the same executables without targeting a specific operating system. There is no need to recompile.

CloudABI uses Clang as its C/C++ compiler. It ships with a modern C library that is specifically designed to work in a capabilities-centric environment. The C library is almost entirely thread-safe and has high testing coverage. CloudABI attempts to abstract away traditional UNIX concepts that are not applicable to pure cloud/cluster computing environments, such as UNIX process credentials management (local users and groups), file system access control management and terminal interaction.

In this presentation I will discuss several design aspects of CloudABI and how it can be used to make UNIX software more reliable, more secure and easier to test and deploy.