You've been part of a Unikraft hackathon and you've made it so far. Now the time has come to show the Unikraft world what you are really made of. A true Dragon Slayer!
We've prepared quite a number of challenges for you. Prove your worthiness by passing them and, in doing so, adding your name to the list of hero contributors to the Unikraft project. Each challenge will get you points of valor, dubbed HP (hackathon points), that will be collected in the hackathon scoreboard of valor.
See the items added in the
Hackathons GitHub project.
You will get HP for submitting an issue or a solution that works. Solutions are submitted as pull requests. Take some time to learn how to work with Git, and how to open pull requests (PRs) on GitHub. If a pull request is accepted upstream, you get double HP. After solving one challenge, pick another one. We recommend you start small, then move up to more difficult challenges.
Challenges generally fall into the categories below.
You can venture beyond the challenges in the
Hackathons GitHub project.
Test as many Unikraft applications as you can, with different configuration options (i.e. different architectures, different filesystems, etc.).
Use both KraftKit and the Make-based system for building, and both KraftKit and
qemu-system for running.
Submit any issue you bump into.
5 HP are awarded for each submitted issue.
Build or extract applications as dynamic PIE binaries and add them to the
You need to submit a directory, representing the root filesystem of the application, consisting of:
README.md detailing how the application is to be built, configured and run on Linux and on Unikraft;
as an example, see the
README.md for Python
These applications aren't required to run on Unikraft in order to do a submission and get HP. If something doesn't work, submit an issue and get HP for that.
30-50 HP are awarded for each submitted application, depending on its complexity.
Add support for running application with
Add a new section to the
run.yaml file, that will look like this:
- name: app-namerootfs: path-to-dynamic-apps-app-directorycommand: run-commandmemory: amount of memory needednetworking: True / False depending on the application
To test your changes, while inside the
app-elfloader directory, first run the
generate.py script (
If all went well, find scripts in the
scripts/run/ directory named
Build the elfloader by running
./scripts/build/make-qemu-x86_64-9pfs.sh, then run
./scripts/run/qemu-x86_64-9pfs-<appname>.sh to see if the application is working.
If the run fails, it might be because of an issue in Unikraft, unrelated to your changes.
Submit you pull request anyway to the
Also submit an issue with the error to the Unikraft core repository, and get extra HP.
10 HP are awarded for every added application.
Fix build warning messages
Use different build environments (different operating systems, different compilers), different targets (different platforms, different architectures) and different configuration options (different filesystems, different library support, debugging options) to configure and build Unikraft applications. If there are build warnings, create a fix and submit a pull request.
5-10 HP are awarded for each fix.
Update library versions (and make sure the new version builds and runs)
Unikraft uses multiple external libraries that are required by Unikraft applications to run. These libraries are developed outside Unikraft by other open source communities. Periodically, we want to update the versions used by Unikraft, to benefit from most recent features.
20-30 HP are usually awarded for each library update.
Look for issues in the core
unikraft repository or any other repository in the
unikraft GitHub organization.
Select an issue that intrigues you;
it's good to first ask for feedback from the hackathon mentors, to ensure it's feasible to solve the issue during the hackathon.
Proceed to work on the issue.
Once solved, test it as much as possible.
Submit solution as a pull request and get HP.
HP will be awarded according to the complexity of the fix.
Feel free to ask questions, report issues, and meet new people.