Hackathon Challenges

Listing of hackathon challenges, together with awarded points

Hackathon Challenges#

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. 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.

Challenge Types#

Challenges generally fall into the categories below. You can venture beyond the challenges in the Hackathons GitHub project.

  1. 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.

  2. 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:

    • the application binary ELF
    • required application dynamic libraries (shared objects)
    • application-specific configuration, data or runtime files
    • a detailing how the application is to be built, configured and run on Linux and on Unikraft; as an example, see the 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.

  3. 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.

  4. 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:

    1. Choose an external library repository.
    2. Choose the upstream version you want to use, probably the most recent one.
    3. Update the build, configuration and source code files inside it to the updated version.
    4. Test with all Unikraft applications using that library.
    5. Submit changes as a pull request in the library repository.
    6. Get HP.

    20-30 HP are usually awarded for each library update.

  5. 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.

Edit this page on GitHub

Connect with the community

Feel free to ask questions, report issues, and meet new people.

Join us on Discord!

Getting Started

What is a unikernel?Install CLI companion toolUnikraft InternalsRoadmap

© 2023  The Unikraft Authors. All rights reserved. Documentation distributed under CC BY-NC 4.0.