This is a crucial part of the application, so we would appreciate if people/universities/research groups/organisations/companies/applications could go on the record here and grant us permission to mention them as “users” in the “Applications” section. See Pandas as an example. Alternatively, if people could point us to use cases of these fortran-lang projects, that would also be appreciated.
I would probably like to be a “user” for many of these packages, but I find Github incomprehensible and frustrating to use. Taking instructions from a Github Bot, which I tried more than once, was next to useless. A couple of gripes to illustrate why Github is not something I look forward to, taking the Fpm src page as an example:
The second text column is useless to a person viewing the page for the first time. It says something about the most recent changes, but nothing about what the main purpose of the item is. For instance, there are three files named fpm_backend_xxxxx. What is the purpose of each of these?
Before viewing a file, I may wish to have an idea of how big the file is, without opening the file in a new browser tab. Not possible. File size is more important than date of last change, and usually there is plenty of space to display file/directory size in an additional column.
I may wish to download specific source files without downloading the whole works. It is boring to open the source, then click on “raw”, select all with the mouse, copy and paste. Give me a simple URL that I can use with wget, or give me a prescription for translating the file view URL to a download URL.
These are not complaints that you (or F-L.D.group) can fix, but I am noting what I see as disincentives to the use of Github as a platform for software distribution. I welcome being shown the errors of my ways.
All good points. I guess I’ve just learned to ignore that stuff and if I want to start really poking around a project’s source code, I clone the whole thing and look at it locally with a good text editor.
To answer the original question:
I’m an avid proponent of fpm. All of the projects I work on use it.
I haven’t started including stdlib in any of my projects. The one or two things I’ve occasionally wanted from it haven’t justified bringing in such a large package, and early on it wasn’t buildable with fpm anyway.
I switched to Modern Fortran VSCode a few months ago and have been very happy with it.
I’ve never had the patience to wade through the *packs to find out if there’s something of use to me in them. Any time I’ve looked I’ve found their procedure names incomprehensible and not been able to work out the correct order of calls for their usage patterns.
I am using a few stdlib modules in a code related to my PhD research. The modules I am using are stdlib_io_npy to export results which I then visualize in Python using matplotlib, and stdlib_sorting for spatial ordering of points. I am planning to use FFTPACK for calculating spectral derivatives related to some CFD benchmarks.
I am also using fpm sporadically for exploratory work. I don’t use VS Code as I prefer a different editor.
At my company we have been using Modern Fortran for VSCode for a few months. fpm and stdlib are both under evaluation for our projects; it will be next year before we commit or implement. No use case in our projects for (fft|min)pack.
If fpm had existed at the start of my PhD, I would have made significant use of it. I use it now for spinning up little test projects and testing existing packages. There are few old projects I want to convert to fpm, but I’ve not found the time unfortunately.
I use the sorting module from stdlib now and again. I know a lot of good work went into it and it’s well-tested etc. (Also stdlib as a fpm dependency is much more manageable now that fpm has tree-shaking.)
I also use Modern Fortran VSCode (but I need to fix the linting support!)
To support the NumFOCUS application, it might be worth pointing out the large number of available projects that already support fpm. I don’t have an up-to-date list but at last FortranCon I think it was 170+. I think Sebastian @awvwgk has a way of enumerating the ones on Github.
In my daily research, fpm has been great for getting small projects up and running with minimal hassle. It makes Fortran a much more appealing language for prototyping. I’m also using stdlib more and more, mainly the kinds, sorting, error checking, and quadrature modules.
I haven’t used any of the packs yet, but a code I wrote in grad school depends on fftpack. When the time comes to dust it off, I will definitely add fpm integration to automatically build the fortran-lang fftpack.
I voted for fpm and the VScode extension cause I use them a lot more and intend to continue / expand on it too:
the extension is installed an running on all my laptops + on the office workstation, it is very convenient, thanks a lot!
fpm to me represent a revolution on how fortran development feels; now I want to do it, now I’m happy to start prototyping stuff directly in it, now I’m starting to seriously considering ditching Matlab (though I might wait just a little bit more for the LFortran revolution ). Actually it had sparkled quite a bit of Rust hype in me, exactly for the evident similarity with the cargo workflow, at some point I would try coding something in that language (probably nothing serious, it is far out of my comfort zone and not too much convenient for my usual needs).
Nevertheless I’ve also recently included the stdlib in a recent new project, with a bit of caveats and pain-points that I’ve extensively described in a dedicated post therein.
For new projects, I’m trying to use fpm. It is great because you don’t need to worry about dependencies, although I’m keeping a makefile.
In particular, I use it to develop an automatic differentiation library (AD_dnSVM) . Also, I’ve asked to use it for two PhD students.
For other projects, I’ll need c-preprocessing, to switch to fpm. I didn’t try it yet.
In a near future, I’ll switch from atom to vscode.
I just gave a lecture about a Python wrapper for a well-known gradient-based optimization library in the geophysical field (GitHub - ofmla/seiscope_opt_toolbox_w_ctypes: This repo shows how to use SEISCOPE optimization toolbox Fortran code from Python), which is written in Fortran. I made some modification to the original Fortran code to make the wrapper work and showed how to build the library using fpm for those who are only interested in the Fortran library. I hope to have draw attention of the students to fpm potential. BTW, the fpm logo is really nice.
I have been quite happy using fpm on some large projects. That’s not to say there aren’t large projects for which fpm would not serve them well, and I’m not familiar with the examples you give, but I haven’t encountered a scenario where fpm didn’t make my life much easier.
I tend to agree with @everythingfunctional about fpm. I was recently able to build METIS and ParMETIS in C with zero effort. Might not be big projects in terms of lines of code but the ydefinitely have a massive impact when it comes to partitioning software.