STF Project: Fortran developer for fpm registry

Project: Supporting registry in fpm

Add features to fpm to support the usage of a package registry. This will include specifying a registry other than the official one (to support using a local or custom registry), specifying that dependencies should be fetched from the registry instead of a git repository or a local folder, and some mechanism for resolving versions of dependencies to be used.

T1: Local registry for fpm

1 month (M1)
To improve the efficiency of using the registry, it will be desirable for fpm to keep a local cache of any dependencies fetched.

T2: Version constraint resolution

2 months (M2-M3)
Initially, only a minimal constraint resolution mechanism will be implemented within fpm. It is estimated that a simple version will take 1 month to implement. Additional compatibility checking will be implemented as time allows, with 1 month initially allotted.

T3: Feature and variant support

2 months (M4-M5)
As packages are used on more systems and with more complexity, it will be desirable to allow packages to have “optional” features which can be included or not, or with different implementations. A mechanism will be designed to allow a package to specify that it has such features, and allow packages that use it to indicate which optional features should be used. Approximately 2 months are allotted to developing this feature.

T4: Integrate system dependencies

1 month (M6)
Many packages will likely aim to provide interfaces to system libraries. It will be desirable for fpm to be able to fetch and link to such system libraries as needed to facilitate easy use of such packages. It is estimated that 1 month will be needed to implement this capability.

Deliverables

  • D1: fpm supporting a local registry.
    • Period: M2.
    • Mean of verification: version of fpm keeping a local cache of any dependencies fetched available on GitHub.
  • D2: fpm with some constraint resolution.
    • Period: M4.
    • Mean of verification: version of fpm available on GitHub.
  • D3: fpm supporting features and variants.
    • Period: M5.
    • Mean of verification: version of fpm available on GitHub.
  • D4: fpm supporting the integration of system dependencies.
    • Period: M6.
    • Mean of verification: version of fpm available on GitHub.

Compensation

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.

Requirements:

  • Knowledge in Fortran

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.

4 Likes

I really look forward to the outcome of this STF project.

What counts as system libraries? Are these libraries such as those I see when I run pkg-config --list-all on a typical Linux installation? Or more generally, packages installed through a system package manager? Is the idea of T4 to provide “virtual” or metapackages as proxies for common system-installed libraries?

Already LAPACK, HDF5 or NetCDF4 would be candidates to be supported this way.

Thanks for the clarification; it makes sense to prioritize common scientific libraries.

1 Like

I’m a Fortran and fpm user, I’d love to participate in discussions, development, and review of new fpm features as a volunteer.

Happy to see community development being funded. This is awesome.

4 Likes