-
Notifications
You must be signed in to change notification settings - Fork 70
Outreach preflight checklist
This page lists the assumptions and requirements for a potential outreach project (aka "the stuff that needs to be in place before an outreach project starts").
The table below shows some of the skills that the students will need for a successful outreach project.
Category | Type | Task | Notes |
---|---|---|---|
project | preferred | Familiarity with GitHub | Forking a repo, issues, labels, PRs, projects, etc |
tooling | essential | Familiarity a high quality text editor, ideally with LSP support | Common examples are vim , emacs , and Visual Studio. |
tooling | essential | Familiarity with the git version control system or a similar version control system |
|
environment | essential | Familiarity with the Linux command line | General concepts and the bash shell |
skills | essential | Experience in at least one programming language | C/C++, Java, Python, etc |
hardware | essential | Permanent access to a Linux environment for development and testing | VPS systems should have support for virtualisation (Linux kernel KVM support), and have sufficient RAM memory for all students to run Kata simultaneously ;) |
learn | helpful | Familiarity with the markdown document format | All Kata docs are written in the GitHub flavoured markdown variant |
tooling | recommended | Understand the implications of copying text files between Linux and Windows / Mac system (hint: line endings) | Only applies if you are not using a Linux environment for development |
project | recommended | Familiarity with "containers" and differences to VMs (virtual machines) | Have you used docker, containerd? QEMU, VirtualBox, VMware, Parallels, etc? |
project | required | Read and agree to our code of conduct | |
project | essential | Read the Kata contributing guide | Skim and refer back as necessary |
copyright | possibly required | Check who owns the copyright for your contributions | See the copyright section. |
Notes:
- If a student doesn't have some of these skills, the mentors will help, but if all the skills listed are new to a student, they may need to reconsider as there may not be sufficient time to learn the prerequisite skills before starting on the main project.
You will need to decide whether you want to work in small teams (if permitted by your organisation?) or as individuals.
See the Outreach-student-faq for some thoughts on this.
All Kata Containers source files must contain a license header and a copyright header.
If you create any new source files where the language supports adding comments, you will need to specify the copyright header. The following are "rules of thumb" only: it is your responsibility to determine the correct copyright owner:
-
If you work for a company or organisation, they will generally require you to specify their name as the copyright holder.
-
If you are studying at an educational establishment, please check with your tutor to see who will own the copyright.
-
If you are an individual not associated with a company or organisation, you will generally specify your name(s) in the copyright header.
The name(s) specified must be your actual name(s), not aliases, nick-names, GitHub usernames or social media usernames.
Note: If in doubt, ask someone for help!
-
Each student will need "permanent" access to a Linux environment (ideally Ubuntu or Fedora) for development and testing.
Here, permanent means, "full, uninterrupted access for the duration of the outreach project".
-
Ideally, each student will have their own system, but sharing of server environments may be possible, with care.
-
If your personal system is not running Linux, although it is possible to run Kata Containers on Linux using virtualisation technologies on Microsoft Windows and Apple Mac systems, this will require additional setup and incur a performance overhead.
Important:
Students will need access to a suitable system before the outreach project starts.
Environment | O/S | Rating | Notes |
---|---|---|---|
Dedicated mini server / desktop | Linux | Ideal | |
Linux laptop / desktop | Linux | Almost ideal | Care needs to be taken if this is the students main system. |
VPS environment | Linux | Good to ideal | Must support nested virtualisation. |
Windows or Mac system with virtualisation | non-Linux | variable/depends | May require BIOS changes. Complex setup. Performance may be an issue. |
The system must have virtualisation enabled to allow the creation of Virtual Machines (VMs). If the environment itself is virtualised, nested virtualisation must also be enabled.
Note:
If you are really not able to get access to a system that supports virtualisation (to allow you to run Kata Containers), you can still participate. However, you will be restricted to working on tasks that are not directly related to creating containers. For example, you may be able to make contributions to areas such as:
- tooling
- unit tests (these do not create virtual machines)
- documentation
Note:
- The figures in the table below are approximate minimum values, except for GitHub Codespace which shows actual values, correct at the time of writing.
- The figures combine minimum values for rust development and the running of a Kata Container.
- The Kata Containers configuration file does allow you to adjust some of the resources used to run a Kata Container.
System | Usable for development? | Can run Kata? | Performance | Virtualisation | memory (RAM) | Disk space | CPU | Notes |
---|---|---|---|---|---|---|---|---|
"Bare metal" Linux server (a physical computer) | yes | yes | best | [^1] | 4G / user | 3G / user | 1 / user | |
Personal Linux system | yes | yes | good | [^1] | 4G | 3G | 1 | |
Personal non-Linux system | yes | maybe | ok | [^1]. Nested virtualisation performance overhead | 4G | 3G | 1 | Need to install Linux in a VM first |
Linux VPS | yes | maybe | varies | May disallow VMs! [^2] | 4G / user | 3G / user | 1 / user | Depends on system spec & available CPU features |
GitHub Codespace (a VPS) | yes | no [^3] | ok | [^3] | 4G | 16G | 2 | Figures are actual values |
Key:
[^1]: You may need to enable virtualisation in the BIOS / setup menu.
[^2]: A VPS needs to allow virtualisation (and possibly nested virtualisation) to be usable. Not all cloud providers offer virtualisation support.
[^3]: Although the GitHub Codespace environment supports virtualisation, it appears that environment is a restricted Docker-based one that does not provide systemd. Although it is possible to install containerd and Kata Containers in this environment, it does not function as expected since:
- containerd is unable to mount resources.
- Kata Containers will not run with QEMU since the
kmod
tools (modprobe
et al) are not available.
This means the vhost_vsock
and vhost_net
kernel modules cannot be
loaded (required for QEMU). Although Kata could be made to work (by
reconfiguring it to use Cloud Hypervisor which does not require kernel
support for VSOCK), we cannot work around the issue with containerd.
-
Check if the system is capable of running Kata Containers
Notes:
- Ironically, you need to install Kata to determine if your system is capable of running Kata! 😄
- You may need to enable virtualisation in the BIOS / setup menu as it is sometimes disabled by default.
-
Install standard development tools
-
For Debian/Ubuntu systems, run:
$ sudo apt -y install build-essential
-
For Fedora/Redhat type systems, run:
$ sudo dnf -y install @development-tools
-
If the team are all using a single system, you will need to increase the specification of the system (CPU, disk, memory). The table below summarises why:
Task | Main resource used | Notes |
---|---|---|
Run a Kata Container | memory | |
Rust compiler | CPU, memory, disk | |
Editor with LSP support | CPU, memory, disk |
Each student will need an account with the following free services.
Category | Type | Task | Notes |
---|---|---|---|
project | required | A GitHub account | |
project | required | A Slack account |
Term | Description | Notes |
---|---|---|
LSP | Language Server Protocol | System providing advanced capabilities in editors |
VM | Virtual Machine | |
VPS | Virtual Private Server | A "cloud system" |