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