Application to the Sovereign Tech Fund

We recently had a meeting in Berlin with the Sovereign Tech Fund (STF) to evaluate the pilot round of their open source funding program which our community participated in. A big thanks to the people who worked on the projects in our community.

Now with the pilot round coming to an end soon, we have the chance to apply for further funding with the STF.

Let’s have a look through our community and identity the projects with the largest impact on Fortran.

A couple of suggestions to get the discussion going:

  • support for standard dependencies (MPI, Lapack, HDF5, …) in fpm
  • compiling stdlib to LLVM with LFortran
  • sponsor implementation of generics in GFortran and/or flang
  • language server integration between LFortran and the Modern Fortran VS Code extension

Please feel free to suggest topics here and/or you are interested in working on a particular project (yes, those are paid).

10 Likes

Integrate a Fortran compiler or a compiler collection such as gcc with a large language model. Given a user-defined task in English or another natural language, have the LLM generate Fortran code that is verified to compile. The LLM should accept compiler error and warning messages and use them to modify generated code.

That sounds to me somewhat out of scope for the STF, I would prefer to focus on projects that help building up our core projects and ensure long term maintainability, rather than creating new projects from scratch.

3 Likes

I need help with administration regarding invoices for STF. I already spent probably at least a dozen hours on it, and it is becoming quite a significant burden on me. Is there anybody here who has time to help out?

Some ideas

  • enable fpm to generate shared libraries (dll/so) such to help Fortran practitioners make their work available faster to other languages thread
  • An autodocstrings like this for Fortran within VS Code.
    • FORD would also deserve a review to enable more interactive documentations, à la Sphinx…
  • support of parametrized derived types… this would be an awesome feature if it wasn’t kind of half-backed in most compilers. (several threads in discourse on this topic)
  • modernize IO for the MatrixMarket and Harwell-Boeing matrix formats within the stdlib
2 Likes

Shout out to @awvwgk and STF for the great leadership on this opportunity.

I agree that it would be the most impactful to build up on existing projects, which is less open-ended than starting off with new ones. Here’s some further ideas I’d be happy to help with:

  • fpm standard dependencies: we have openmp, MPI and stdlib in place. Enabling libraries without build instructions is great. Next in line I think there would be:

    • math providers (BLAS, LAPACK, MINPACK, etc.)
    • data formats (HDF5, netCDF, ONNX?)
    • hardware providers (coarrays, OpenGL, OpenCL, Vulkan?). This could include the development of library wrappers to enable easy access to modern computing architectures in Fortran
  • Configuration file serializers. One of Fortran’s (at least perceived) bottlenecks. I recently discovered how powerful TOML-Fortran is: with the JSON plug-in, one can read/write to both formats with the same code. This library could be extended to YAML and INI for example.

  • Fortran Plotting Library (at least for 2D plotting). “new” project, that would fill one of the biggest gaps Fortran has with other languages. We could provide a high-level API on the style of Matlab, Matplotlib, Matplot++, but with far better array support.

3 Likes

As for the data formats, it would be protobuf that would need to be interfaced. Onnx provides an inference engine using protobuf as the data representation for exchange.

Recently I was looking at all the 2D plotters referenced in the fortran-lang site, from all the options, I found this one GitHub - kookma/ogpf: ogpf is Object based interface to GnuPlot from Fortran 2003, 2008 and later to be the most user-friendly giving a matplotlib-like experience. Maybe get some inspiration out of it?

I strongly recommend focusing on the core technologies, that enable the community to deliver the rest. I propose the core technologies are fpm, maybe stdlib, and then compilers: I propose LFortran and then helping GFortran and Flang, as @awvwgk mentioned above.

Everything else I would not fund, until the core technologies are mature.

6 Likes

When is the funding expected to start?

For the last contract we needed two months from application to the final contract, but I am confident that the process could be faster this time. Maybe mid to end of June?

1 Like

Thank you admins (@awvwgk @certik) for taking initiatives for the STF.

Some of ideas regarding registry-backend :

  • Feature development for the dependencies connection in the registry backend. This will involve maintaining the the data for the dependencies of the packages.

  • Implementing the metrics for the packages for which they get rated above the other ones based upon the usage / downloads. Also, implementing a rating & report mechanism. This will notify the admins regarding spam/malicious packages.

  • Implementing more upload restrictions that we discover in time after this testing period and in future.

  • Have fpm playground integrated inside the fortran playground that should interact with the registry and users can try out packages there as well. (@henilp105 )

5 Likes

Thanks everyone for the suggestion, a lot of good ideas already.

Another thing to consider is whether we want to look beyond programming related task and into further developing our community. For example we could create a project manager position to coordinate the development across our projects and help with administrative work as well.

Let’s really plan for the long-term here. Imagine we can provisions three full time positions for one and a half year, what would be our milestones (6 months for each)?

7 Likes

Here is the current outline of the proposal (this is a wiki post, feel free to provide edits):

Fortran package manager

T1: Improve and maintain registry backend

deliverables:

  • D1.1: Implement metrics for uploaded packages
  • D1.2: Add possibility to report packages
  • D1.3: Provide functionality for security related incidents
  • D1.4: Improve upload restrictions in backed

funding:

  • 40 hrs/week for 6 months

T2: Built-in dependencies and metapackages

deliverables:

  • D2.1 Provide metapackages for math libraries (BLAS, LAPACK, …)
  • D2.2: Provide metapackages to discover data format libraries (HDF5, netCDF, …)
  • D2.3: Include robust feature selection for coarrays

funding:

  • 40 hrs/week for 6 months

T3: Shared library support and language interoperability

deliverables:

  • D3.1: Generation of shared libraries
  • D3.2: Discovery of installed fpm packages
  • D3.3: Integration with other (language-specific) build systems

funding:

  • 40 hrs/week for 6 months

Fortran Standard library

T4: Linear algebra support

deliverables:

  • D4.1: Provide accessible interfaces for common linear algebra operations
  • D4.2: Support common IO formats for matrices and tensors

funding:

  • 40 hrs/week for 6 months

T5: System library interfaces

deliverables:

  • D5.1: Provide subprocessing module
  • D5.2: Provide file system module

funding:

  • 40 hrs/week for 6 months

Fortran language server

T6: Integration with LFortran

deliverables:

  • D6.1: fortls can use LFortran to retrieve diagnostics
  • D6.2: LFortran support for requests from fortls
  • D6.3: pylsp is used as backend in fortls

funding:

  • 40 hrs/week for 6 months

LFortran Compiler

T7: Create error resilient AST parser

deliverables:

  • D7.1: LFortran parser can recover parsing errors gracefully and store partial Fortran AST
  • D7.2: LFortran can translate partial AST to ASR for error analysis and diagnostic messages
  • D7.3: LFortran parser can provide suggestions for fixing errors from partial AST

funding:

  • 40 hrs/week for 6 months

T8: Compile Fortran stdlib to LLVM

deliverables:

  • D8.1: LFortran can translate all of stdlib to ASR
  • D8.1: LFortran can translate all of stdlib to LLVM

funding:

  • 40 hrs/week for 6 months

T9: Support directive based language extensions

deliverables:

  • D9.1: LFortran parser can recognize directives and pragmas (OpenMP, OpenACC or similar)
  • D9.2: LFortran parser can extract docstrings
  • D9.3: Support for translating directives in ASR

funding:

  • 40 hrs/week for 6 months
12 Likes

I’ll send the application to the STF tomorrow.

6 Likes

Any updates regarding the proposal?

4 Likes

We are in contact with the STF, the contract is in review with their legal support, so we hopefully have it soon to sent it to NumFocus and create the job postings here.

8 Likes