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:
Iāll help as much as I can, but I am already handling quite a lot of administrative load regarding fortran-lang, so I am hoping more people can help.
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.