Fortran-lang has participated in the Google Summer of Code program for two years now (2021, 2022). The org application deadline for the 2023 program is in one week, on February 7.
Would anyone like to participate in the program with Fortran-lang in any capacity? For example:
Drafting project ideas
Helping with the application draft
(Co-)mentoring a GSoC contributor
This is a great way to get more involved with Fortran-lang and GSoC, to help make an impactful contribution to Fortran and young open-source contributors, and to boost your resume.
Here are our Wiki pages from the 2022 program, for reference:
fpm: module name convention and dependency name conflict resolution; effort currently led by @FedericoPerini
Playground security: It’s currently possible to run long programs in the playground that quickly eat up CPU time on the free VM, rendering the server unusable for others. This project would harden the backend security.
Playground: Further capabilities that were out of scope in the '22 GSoC project: Other compilers (Intel, LFortran, etc.), tutorial, etc.
stdlib: Implement, test, and document the upcoming F2023 intrinsic procedures.
Even if you’re unable to commit to co-mentor a project, feel free to suggest ideas here. There’s no such thing as a bad idea suggestion–we need as many as possible so we can pluck out the best ones.
If you’re interested in participating as a contributor, also feel free to just say hi and introduce yourself here, and/or suggest your project idea.
Those would be the highest impact and priority for us. But other ideas are fine too, just browse our issues. For example improving the playground to work with more Fortran features / codes:
I can also help host/cohost one or two projects, thank you for getting me onboard!
Couple wild ideas I’ve been having for awhile but that I’ve never had time to tinker with are:
Use the output of gfortran’s (or LFortran’s?) internal parser to modernize old Fortran code: remove goto’s, replace with do/while loops and/or more modern intrinsics where possible; explicitly define all implicit variables/procedures and their interfaces, prettify (free form, indentation)
Tiny fortran graphics API: write a tiny wrapper interface to write 2D vector or byte data to any backends: system graphics (OpenGL seems to make the most sense), gnuplot, PNG, SVG, PDF, … this could grow exponentially.
@milancurcic good suggestion, but, probably not big enough for a 12-week span?
It may seem like it but I’m not so sure. You may be correct, but it’s very easy to expand the scope if the project is well ahead of its schedule. What’s more difficult is to meet the schedule if the project is over-scoped to begin with.
Here another idea: following the discussions and progress made in this thread Faster string to double - #80 by hkvzjal we thought together with @Carltoffel that it could be a good idea to have a library for fast number parsing in Fortran. Here some aspects that could be interesting:
Extend the methods for different number types: interfaces for real(8) and integer(4) are available, could be generalized
Enable defining by the user whether to use ‘.’ or ‘,’ as the decimal place marker. ‘e’/‘E’ or ‘d’/‘D’ for the exponent in case of floats.
Explore ways to improve robustness and efficiency. Error handling.
Implement such that new methods can be integrated and tested easily. Ease of use by the final user in terms of calling interface
Well documented
Further tests/benchmarks (OS/architectures/compilers)
With the above comment, will it make sense to have one project to add a performant generic function toward string to numeric type?
So “Faster string to double” is just one use case of the broader string to numeric type feature covering different kinds of floating points (especially), integers, etc.
By performant, I mean relative to what is accepted as good performance on other platforms for string to numeric types, just as an example say toward string to double in C++ domain, or Python, or Julia etc.
Perhaps the reverse also may be of interest in stdlib i.e., tostring to transform non-character type object to a string representation?
Just a suggestion for your consideration. Apologies if stdlib does not fit for such things, or something is already there - I’ve not looked.
I can tackle the Org Application and will continue editing the Project Ideas page. The project ideas need the most help from people here. I largely adapted the page from 2022, removed a few projects that were previously funded, and added the faster string to double project. However there may still be project ideas that are no longer appropriate due to the STF project or otherwise.
Feel free to continue submitting new ideas.
For the mentors list, I kept all the interested people from last year and added a few that expressed interest in this thread. If you see your name on the list and do not want to participate as a mentor, please edit the page or let me know and I can remove you.
Hi Milan, thanks a lot for putting everything together
Quick remark, maybe in the title of the “Faster string to real conversion” change for “… to number” so that it is clear that we would like to pursue a broad range of applications? (it is written in the objectives but I think is important that the title reflects it clearly) … you can add me to the list of co-mentors
Another idea on a completely different topic: Would a “Graph permutation library” be something appropriate/of interest? I’m thinking here in a parallel line to the sparse library, such that methods to renumber the sparse matrices can be easily tested and used for improving iterative linear solvers. In case that could be interesting I think that it would be worth it to see inside: (a) the well-known RCM algorithm, (b) maybe GPS Gibbs-Poole-Stockmeyer, and an open door for some more recent meta-heuristic method for instance?
How many (co-)mentors are sensible for one project?
Generally, I’m interested in co-mentoring the string to number project, but it already has two mentors and with Jose, one co-mentor.
@hkvzjal@Carltoffel thanks, both. I added you as prospective mentors for this project.
The list of mentors for each project is tentative, so we can list the more the merrier here. Up to two mentors are formally assigned to the project after it’s been funded, however, more informal co-mentors can participate on a project (again, the more the better here), and we’ve had such GSoC projects before.
Idea: Implement a high-level http client library (a-la Python’s requests) for Fortran. @interkosmos has Fortran bindings to libcurl (fortran-curl) which could be used under the hood. @interkosmos, if such project caught interest, would you be willing to co-mentor it?
Feel free to add these directly to the Project Ideas page. I just added two more ideas (HTTP client and a deep learning one). There’s already a decent number of ideas on the list, and we can keep adding and updating the page even after tomorrow’s submission.
I have reviewed everything and we’re ready to submit the Org application tomorrow morning.