Personal Package Archive platform for OpenWrt

Project goal: Create a platform to build and host packages for OpenWrt (PPA, or Personal Package Archive) using Jenkins X

Skills to study/improve: Shell, Makefiles, Docker, Kubernetes

NOTE: This idea is published as a draft under active discussion, but it is confirmed in principle. It is FINE to apply to it. The scope and the suggested implementation may change significantly before the final version is published. Sections like quickstart guide and newbie-friendly issues may be also missing. As a student, you are welcome to request additional information and to join the discussions using channels linked on this page.

Details

Background

OpenWrt is a Linux distribution for off the shelf WiFi routers. People who want to make and distribute their personal packages, often for development purposes. So far the best option is to build the whole firmware from zero, but very few people use the OpenWrt SDKs. The idea behind this project is to build a platform to build and host those personal package repositories, possibility integrated with GIT farms, so that the end users can add a repository URL to use those packages, modeled on what Ubuntu PPA (Personal Package Archive) has been provided for years.

There is no such platform at the moment, packages are made via Pull Requests on a central repository, but that does not meet the requirements of a typical developer, which are:

  1. Autonomy: no external person is needed to use the platform

  2. Build with many different targets like: brcm2708, ar71xx, x86, sunxi, etc…​

  3. Generate an URL for each repository

  4. CI/CD with green/red button: rebuild with latest commits

  5. Optional: Deploy to a physical or virtual target device (see https://gitlab.com/zoobab/arduino-cli-esp8266)

Tasks

  1. Document the existing approaches, like cascading docker images (such as https://github.com/wlanslovenija/firmware-core)

  2. Build a prototype where a developer can build and host packages by just providing a github URL

  3. Integrate the build with a Docker image that contains the OpenWrt SDK, and build it in a Kubernetes cluster

  4. Use Jenkins X as a backend system

These tasks require communication with the OpenWrt and Jenkins community, notably to find out issues regarding the build system or the SDK.

Milestones

  1. Document existing tools and strategies

  2. Make a first Proof-Of-Concept (POC), even without authentication, with a simple API inside Kubernetes (CRD)

  3. Make a web GUI on top of that API

Requirements

  1. Web development: html/js/css/python/django/flask or any other widely used web framework

  2. Basic Knowledge of OpenWrt (should have compiled an image once before)

  3. Basic Makefile knowledge

Potential Mentors

Project Links

Organization Links

> Go back to other GSoC 2020 project ideas