Call for mentors and project ideas for Google Summer of Code 2023

Hi All,

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.

See the program timeline here: Google Summer of Code

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:

Please let me know if you’d like to participate by responding in this thread.

5 Likes

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.

4 Likes

I’ll help as well. I think I can (co)/supervise 1-2 projects. Potential project ideas could be (in addition to the ones we didn’t do last year):

  • a project to finalise the work with fpm profiles (there’s already a fair bit of the work done from a previous gsoc)
  • a project integrating in vscode Fortran, cmake and then hopefully fpm (mostly materialising the work and UI we’ve discussed in the past)
3 Likes

A few project ideas that come to mind:

  • 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.

1 Like

For LFortran good GSoC projects are to compile more Fortran codes, here is a list of codes that we have been work on so far:

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:

2 Likes

Thanks, Ondrej. I plan to start the Project Ideas page later today or tomorrow and will include the LFortran ones as well.

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?

2 Likes

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.

For LFortran:

  • Modernization of old codes
  • Make more progress on a language server:
    • Error resilient parser and semantics
    • integration with fortls
1 Like

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)
  • other ideas ?
3 Likes

@milancurcic , @certik , @gnikit et al.,

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.

3 Likes

I’m happy to co-mentor some of these projects, and help with admin (application writing) will maybe add some project ideas as I get them.

2 Likes

I started the pages here:

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.

5 Likes

Hi Milan, thanks a lot for putting everything together :+1:

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 :slight_smile:

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. :sweat_smile:

@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.

2 Likes

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?

3 Likes

Affirmative, I’m willing to help as a co-mentor.

4 Likes

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.

7 Likes

Congrats, all, we’re in!

10 Likes