STF Project: Backend developer for fpm registry

Project: Hosting fpm registry

Aim of this project is to develop a web server that will allow the uploading and downloading of packages. Packages will have names and version numbers, and be associated with one or more maintainers. Users must have an account and be logged in to upload packages. A package maintainer will be able to assign other maintainers and remove a package from the registry - either a specific version or the package in its entirety. Only a package maintainer will be allowed to upload new versions of an existing package.

T1: Initial Prototype of the web server

2 months (M1-M2)
The initial prototype will be capable of creating user accounts and allowing logged-in users to upload packages. It will allow package maintainers to remove a specific version of a package, or the package in its entirety. It will include sufficient tools for moderation and administration. I.e. administrators will be able to assign new maintainers to packages, delete user accounts, remove packages, etc. Finally, users will be able to download packages via a well-defined API without authentication.

T2: Upload Restrictions and Checks

2 months (M3-M4; requires T1)
One important check and restriction for a package on upload will be to ensure that all modules provided by a package are prefixed with the name of the package. This will ensure that module name conflicts do not arise between different packages. It is estimated that it will take 1 month to implement this check.
Another important aspect will be to ensure that the package can be built as a dependency.
As other checks and restrictions are determined, we will implement them as time allows.

T3: API for Query and Mirror

1 month (M5; requires T1)
To improve efficiency and reliability for users, we will implement an API allowing tools to easily query and mirror the repository. This will involve obtaining a list of all packages and versions, and bulk downloading of packages.

T4: fpm Support

1 month (M6)
Enable fpm to support uploading packages, querying the registry for available packages and versions, and fetching packages and their dependencies.


  • D1: Prototype of a web server.
    • Period: M2.
    • Mean of verification: Web page available as frontend
  • D2: Implementation of restrictions and checks.
    • Period: M4.
    • Mean of verification: See package violating checks fail to upload
  • D3: API for query and mirror.
    • Period: M4.
    • Mean of verification: Access to API
  • D4: Prototype version supporting fpm.
    • Period: M5:
    • Mean of verification: Use fpm to interact with the registry
  • D5: Prototype supporting restrictions, checks, query and mirror, and fpm.
    • Period: M6.
    • Mean of verification: Use fpm and/or web frontend to interact with the registry. Implementation available on GitHub


The project is compensated at €60/hour over a period of 6 months up to 40 hours/week. Part time (less that 40 hours/week) is available in mutual agreement with the project administrators.


  • Knowledge in Python and Fortran
  • Familiarity with frameworks like Django and Flask

Please contact the project administrators, Sebastian @awvwgk and Ondrej @certik, for further information or to submit applications. For applications please include previous contributions to relevant Fortran-lang projects.

For more details on the STF project checkout Sovereign Tech Fund Project.