Hello,
the deadline for the GSoC 2025 is approaching (Google Summer of Code 2025 Timeline | Google for Developers) and I was wondering whether Fortran-lang is again a mentoring organization.
Martin
Hello,
the deadline for the GSoC 2025 is approaching (Google Summer of Code 2025 Timeline | Google for Developers) and I was wondering whether Fortran-lang is again a mentoring organization.
Martin
Yes, we’ll definitely apply. Any interested mentors, please message me. Let’s put the application together.
Hi Ondřej,
the project I had in mind (Fortran interfaces for PETSc) is not needed
anymore because the PETSc team has almost finished that.
But I would be glad to step in as a supervisor, preferentially in the
field of tooling (autodocumentation for sphinx, testing, creating
native CMake packages from fpm …)
Martin
Would modernization for a legacy app that’s not fully open source but “source available” count?
Here is an idea for a project but it might be beyond the scope of a GSoC project. I think its time for the fortran-lang community to start a companion project similar to stdlib (under the control of fortran-lang) to develop either a single refactoring tool or a suite of tools for translating FORTRAN (<= F77) to Fortran 90 plus free format. At a minimum, the tool or tools should do the following.
I’m sure I could think of a couple more but this would be my minimum requirement list. I’m not naive enough (having refactored 10s of thousands of lines of code over the last 25 years) to believe that you can produce a tool that will handle 100% of the above but if you can get a reliable 90% of cases before you have to hand edit changes then that would be a big plus for the community. I guess the question is how to implement this. Based on @certik prior comments on LFortran’s refactoring abilities, that would be a good place to start. The first 3 items in my list are really not that hard (I have my own code and a collection of sed and bash scripts that I put together about 25 years ago that do a good job on these). At a minimum, I would like to see something that could be used as a pre-processor in fpm or VS etc or have its own standalone GUI.
I know there are other excellent tools like fpt that can already do this but I would like a open source community driven refactoring tool or tools as an alternative
just my 2 cents
True refactoring in the realm of fpt/spag/Lfortran would be nice, but another unresolved issue along with formatting and refactoring is preprocessing. Something more stand-alone might address that as well.
Considering a number of preprocessors that are around and yet how cpp/fpp still dominates a fpp look-alike written in Fortran that did conversion between fixed and free-format and indenting and case would seem more obtainable with the resources allowed for a GSOC project and there is prior art to draw on. COCO as implemented (and extended) by D. Nagle is in Fortran, but one that really comes close to the non-factoring goals listed is f90ppr. It is/was both a pre-processor and did some basic refactoring and did indenting as well. It is under the GNU license I think.It is in Fortran, and has preprocessing directives similar to cpp/fpp. The Fortran Wiki has links to at least one site for it. That might be a good model and would produce a Fortran-based cpp/fpp command that perhaps would fit the goals of the Standards committee for a standard-supported pre-processor as well. have not used f90ppr heavily enough to declare how robust it is but the features it purports and the list you created have a good deal in common.
A project idea: add vtk output for nastran-95, so it could be postprocessed with paraview.
Hello
While I may not have been able to continue working on my project, Fig, and the plotting framework since last summer due to being busy with my studies, I think it would be nice to include them in this year’s ideas list. This way, someone who finds them interesting might want to continue working on them, especially the plotting framework, which still needs a lot of work.
I am also ready to help with anything related to these projects.
I will say figuring out how to effectively plot and visualize results is a ongoing struggle, and would be happy to see libraries that could help in this area.
Here a few extra ideas:
What about a Fortran version of a .NET DataTable (row oriented) or Python Dataframe (column oriented) library for manipulating data?
It could include several backend like SQLite (or any ODBC driver), npy, hdf5, netcdf, parquet, csv, json, you name it.
Super idea. A good acid test is being able to convert the SLATEC library (slatec) to something sensible. I’ve tried a number of open source tools and it has found problems with all of them…
One thing though: For codes that are under source code control (e.g., git, cvs, etc), wholescale cosmetic changes of case, indentation, and so on may be well meaning, but can create massive diffs. Very often just the changes that actually fix problems are wanted to be able to more easily see what transformations have taken place. So in your list, I’d want #2 and #3 to be optional.
Your #1 is pretty trivial to do with simple text editor commands. However to be complete, it should also handle “significant blank” issues, and name-splitting across continued lines.
In the case of #6, it is often confusing because some given common block can have different names and even types for the individual variables between procedures. Differing strategies may be needed depending on the specifics. (Code using include
for the common blocks and their variable declarations wouldn’t have this problem.)
Yes. Trying to resolve the extraneous blanks (or no blanks) that <=F77 allowed can be a bit of a challenge. My favorite one from a Sandia code (what I call Stupid Programmer Tricks) was someone thought that putting a space between the letters in a reserved word (ie S U B R O U T I N E instead of SUBROUTINE) was “cool”. Another one was breaking a 12 decimal digits floating point number in a DATA statement at the 72 character boundary and continuing it on the following line. That made converting continuations to free field in my personal refactoring tool more complicated than it should have been. These are usually examples of post-docs or summer interns who are turned loose without proper adult supervison.
Also, since I brought up this subject I guess its time to revisit my personal tools and maybe release them into the wild. In its current incarnation it can handle either a single file or “batch process” all the files in a (sub)directory. I’ve used it to convert 250K plus line code bases with hundreds of file in less than a week (and part of that was having to add code to handle the Stupid Programmer Tricks). There are a couple of long standing bugs I need to kill and I need to redo the input commands before I’m comfortable about releasing the code but watch this space. I have used it on parts of SLATEC but not the whole code base so I might just give that a try.
Excellent, thanks everybody for your input.
If you posted a project idea, please create an appropriate section for your idea here:
GSoC 2025 Project ideas · fortran-lang/webpage Wiki · GitHub
Also please help polish the page, remove already implemented ideas, etc.
Then we need to update our application and instructions:
GSoC 2025 Organization Application · fortran-lang/webpage Wiki · GitHub
GSoC 2025 Contributor Instructions · fortran-lang/webpage Wiki · GitHub
If you can help with that, I would appreciate it. The deadline is February 11, so we’ll submit a few days before that.
Thanks for all the changes to the ideas wiki page.
I plan to submit our application over this weekend.
I’ll update the wiki with latest LFortran ideas. Please find LFortran 2025 ideas at: GSoC 2025 Ideas · lfortran/lfortran Wiki · GitHub
I don’t know if this is a good fit for GSOC, but there could be a tool to refactor and raise issues for Fortran code on GitHub or GitLab. For example, when I come across a repo using a source file extension such as .f95, .f03, .f08 I file an issue suggesting the use of .f90 and explaining why. In most cases people have changed the extension to .f90. Scanning for non .f90 extensions could be automated.
There are other more substantive things to look for. Today I came across some code with implicit save:
subroutine ALBEDO (SOLSIN)
use simsphere_mod, only: albg, albf, wgg, wmax, frveg, xlai, albdoe, sigf, eq
implicit none
real :: SOLSIN
logical :: ALGFLG = .false. ,ALFFLG = .false.
integer :: ALBFLG = 0
Is it intentional? A tool could scan all repos for this and raise issues and even create pull requests.
Free tools such as Fortitude could be used, as could commercial tools with free licenses for open-source code.
Just a heads up, we submitted the application. The key page is the Ideas page: GSoC 2025 Project ideas · fortran-lang/webpage Wiki · GitHub, we have polished it, but we can still make changes if needed. Mentors, please make sure your name is on this list: GSoC 2025 Mentors · fortran-lang/webpage Wiki · GitHub. Google will let us know on February 26, 2025.
As you probably noticed, we got in! That’s great news.
Mentors, please sign up at the https://summerofcode.withgoogle.com/ and you mind need to ping me if I need to do anything to get you in.
congrats