The Future of O/S

Avishai Ish-Shalom (@nukemberg)

CTO @ Fewbytes

An operating system (OS) is a collection of software that manages computer hardware resources and provides common services for computer programs

- Wikipedia: Operating systems

O/S, circa 1993

  • Debian, Slackware
  • Windows NT 4

1993 Hardware

  • Pentium just arrived!
  • 16MB of RAM
  • ~ 100MB hard drive

How did we use computers

  • Almost no multi-tasking
  • Personal computers, some SMB servers
  • Many application on a node
  • Minimal networking
  • Maintained by humans, frequent config changes
  • Lifespan: years

How do we use computers today

  • Servers, appliances
  • Lots of networking
  • Automated management
  • On servers, 1 service per node
  • Lifespan can be minutes

Virtualization changed the world

  • Hypervisor took over resource managment and containment
  • Common drivers
  • VM is the new process

The problem with privileges

The problem with containment

while true; mkdir t; cd t; done

- Glauber Costa, Resource isolation: The failure of operating systems and how we can fix it
  • Application resource limits
  • Application privileges
  • Process centric, not user centric

Qubes

  • Every app runs in a seperate VM
  • Based on Xen
  • Project started around 2010

The problems with packaging

  • Debian buzz had 474 packages
  • Software projects were split to libraries, docs, development tools/headers to save space
  • Dynamic linking to save RAM and ease security upgrades
  • Dependency management to prevent conflicts and ommisions

Debian wheezy has ~13k packaged software, CentOS 6 ~2k

But there are 1M projects on Github alone

Maintainers can't keep up

Dynamic linking no longer makes sense

  • (almost) impossible to satisfy dependencies
  • No RAM or disk space issues anymore
  • Single app on node

Omnibus

  • Huge all-in-one packages
  • No dependencies, everything in the package

The problem with maintenance and configuration

  • Gazillion configuration interfaces
  • Many control interfaces (e.g. reload)
  • No telemetry and monitoring services
  • Resource ownership information

NixOS

  • Embedded configuration managment
  • Declerative, functional, transactional
  • CM snapshots
  • Project started around 2009

The problem with automation

yes | ./install.sh
  • O/S built for human control
  • Automation support 2nd class
  • Packages do too much
  • Config file formats

OpenLMI

  • System management API
  • Local and remote
  • Available in Fedora 19

JeOS

  • It's all about the Application
  • Runtimes do a lot
  • No need for users, permissions, scheduling, etc
  • Erlang on Xen
  • OSv
  • CoreOS

Appliances

  • High level application APIs
  • Application level permissions
  • Native cloud integration

Android, IOS, Windows mobile, Firefox OS

Distributed computing

Programming for 128 cores is a lot like programming for 64 core-duo nodes

The Grid

  • Aggregation of clusters
  • Resource scheduler, job management
  • Monitoring
  • Job containment
  • API
  • Global file system/storage

Plan 9

  • Natively distributed O/S
  • Started ~1987, released 1992
  • Had many advanced features, still influencing O/S

Mosix (HUJI)

  • SSI grid
  • Started 1977, linux since 1999
  • Live process migration
  • Automatic resource management

Welcome to the future

  • Orleans (Microsoft)
  • Borg/Omega (Google)
  • Mesos (Twitter, AirBnB)
  • Hadoop YARN (Yahoo)

sudo halt -p

  • Current O/S are legacy
  • Appliances
  • Thin containers
  • Grids