Difference between revisions of "Category:Unikraft Devel"

From Xen
(Developer's Guide)
(Update work items)
Line 10: Line 10:
   
 
== Core Team - Current Work Items ==
 
== Core Team - Current Work Items ==
  +
=== Feature Completion ===
# support for a xen console
 
  +
* Memory setup on Xen on ARM
# support for xenbus, events, paravirtualized drivers (network initially)
 
  +
* Scheduling support for Xen, KVM, LinuxU and x86, ARM
# pre-emptive scheduler
 
  +
* Scheduling interfaces for
# libpython (i.e., turning Python/cpython into a Unikraft library)
 
  +
* Event/Interrupt support (KVM, LinuxU)
  +
* Console support on Xen
  +
* Reorganization of architecture + platform API (improved separation and placement of functionality)
   
  +
=== Upcoming features ===
== Suggestions for Contributions ==
 
  +
* Minimalistic Shell library
If you're thinking of working on any of these please drop us a line.
 
  +
* Preemptive scheduler
  +
* Device bus abstraction
  +
** Support for Xenbus on Xen
  +
* Network device abstraction
  +
** Support for netfront on Xen
  +
** Support for tapdev on LinuxU
  +
* lwIP Network Stack port
  +
* libpython (i.e., turning Python/cpython into a Unikraft library)
   
  +
# bare metal platform target (x86_64 or ARM32 initially)
 
  +
== Open Work Items ==
# vfs/filesystem support#
 
  +
# adding PCI functionality to libkvm (so we can support drivers)
 
  +
If you're thinking of contributing to Unikraft please drop us a line.
# adding multi-application support (i.e., so we can build an image that runs more than one application)
 
  +
The following list gives you an orientation. You can pick a topic from there or suggest your own one.
# adding support for a high perf I/O framework (DPDK, netmap)
 
  +
We welcome any discussions.
# Adding profiling/tracing capability to Unikraft
 
  +
# SSH + a minimalistic shell
 
  +
* ARM64 support (start with Xen)
# Other languages (e.g., Ruby, node.js)
 
# platform support for containers
+
* KVM support for ARM, ARM64
  +
* VFS/Filesystem support
# using initramdisk to include filesystem into image
 
  +
** Probably starting with in-memory with initramdisk
# Unit testing support, including tool to test diff combos of libs and report on compile/link errors.
 
  +
** 9pfs on KVM and Xen, syscalls directly on LinuxU
# Porting Toybox to Unikraft
 
  +
* PCI bus support (KVM, Xen: pcifront) when device bus abstraction is available
  +
* Bare metal platform target (x86_64 or ARM32 initially)
  +
* Support for virtio-net on KVM
  +
* Memory ballooning support for all platforms
  +
* SSH capabilties for shells
  +
* High-level language support (e.g., ocaml, Ruby, node.js, lua)
  +
* Support for fast networking I/O frameworks (e.g., DPDK [http://dpdk.org/], netmap [http://info.iet.unipi.it/~luigi/netmap/])
  +
* Enhanced profiling and tracing support
  +
* Automated Unit testing
  +
* Stubdomains with Unikraft

Revision as of 11:49, 1 December 2017

Unikraft Development

First off, welcome to the project and thanks so much for your interest! Most of the information you'll need about how to develop for Unikraft you'll find in the main repo's docs directory [1]. We'll use this space mainly to give information about what the core team is currently working on, and to give suggestions about what we would like to have in Unikraft but haven't had the time to work on yet in case you're looking for ideas. We will also post information about past and upcoming releases.

Release Plan

The current idea is to release under 0.x versions (codename: Titan) until we reach a stable low-level platform and architecture API. Although libraries might be added, the focus is on the low-level API. During the 0.x release everyone should expect reorganizations and changes of these interfaces. During this cycle, a major goal is also to add more platforms and architectures (e.g., ARM64, VMware) - this helps us defining the low-level APIs properly.

Starting from version 1.0 (codename: Iapetus) we expect an almost stabilized platform and architecture API. No major changes should be expected on existing interfaces, new APIs might still be added. The focus of this release series will be on adding functionality and variety with libraries.

The codenames are settled on Saturn moons ordered by discovery date [2]. This means, 1.0 will be called Iapetus, 2.0 Rhea, and so on.

Core Team - Current Work Items

Feature Completion

  • Memory setup on Xen on ARM
  • Scheduling support for Xen, KVM, LinuxU and x86, ARM
  • Scheduling interfaces for
  • Event/Interrupt support (KVM, LinuxU)
  • Console support on Xen
  • Reorganization of architecture + platform API (improved separation and placement of functionality)

Upcoming features

  • Minimalistic Shell library
  • Preemptive scheduler
  • Device bus abstraction
    • Support for Xenbus on Xen
  • Network device abstraction
    • Support for netfront on Xen
    • Support for tapdev on LinuxU
  • lwIP Network Stack port
  • libpython (i.e., turning Python/cpython into a Unikraft library)


Open Work Items

If you're thinking of contributing to Unikraft please drop us a line. The following list gives you an orientation. You can pick a topic from there or suggest your own one. We welcome any discussions.

  • ARM64 support (start with Xen)
  • KVM support for ARM, ARM64
  • VFS/Filesystem support
    • Probably starting with in-memory with initramdisk
    • 9pfs on KVM and Xen, syscalls directly on LinuxU
  • PCI bus support (KVM, Xen: pcifront) when device bus abstraction is available
  • Bare metal platform target (x86_64 or ARM32 initially)
  • Support for virtio-net on KVM
  • Memory ballooning support for all platforms
  • SSH capabilties for shells
  • High-level language support (e.g., ocaml, Ruby, node.js, lua)
  • Support for fast networking I/O frameworks (e.g., DPDK [3], netmap [4])
  • Enhanced profiling and tracing support
  • Automated Unit testing
  • Stubdomains with Unikraft

Pages in category "Unikraft Devel"

This category contains only the following page.