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.
Please check the community guidelines on submitting changes and the review process.
Challenges generally fall into the categories below.
You can venture beyond the challenges in the Hackathons
GitHub project.
Submit issues
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 dynamic-apps
repository
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 PythonThese 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 app-elfloader
Update the run.yaml
file inside app-elfloader
to add support for existing applications in the dynamic-apps
repository.
Follow the already existing examples for helloworld
and nginx
.
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 (./scripts/generate.py
).
If all went well, find scripts in the scripts/run/
directory named qemu-x86_64-9pfs-<appname>.sh
.
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 app-elfloader
repository.
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.
Steps are:
20-30 HP are usually awarded for each library update.
Fix issues
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.