# Fortran-lang accepted for Google Summer of Code 2022

**URL:** <https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918>\
**Category:** GSoC-2022\
**Created:** [March 8, 2022, 6:57pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918 "2022-03-08T18:57:20Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![milancurcic](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/milancurcic/32/2_2.png) [@milancurcic](https://fortran-lang.discourse.group/u/milancurcic)\
**Post date:** [March 8, 2022, 6:57pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/1 "2022-03-08T18:57:20Z")

</div>

Fortran-lang has once again been accepted for Google Summer of Code 2022! Thanks to everybody who helped prepare the application.

[GSoC](https://summerofcode.withgoogle.com/) is Google’s global, online program that allows newcomers to open-source to work on a project and get paid for it. See the [Fortran-lang GSoC 2022 page](https://summerofcode.withgoogle.com/programs/2022/organizations/fortran-lang) for information about the projects and how to apply. Applications for contributors open **April 4** and close **April 19**. To learn more about GSoC and what has changed since last year, please see the [GSoC 2022 announcement](https://opensource.googleblog.com/2021/11/expanding-google-summer-of-code-in-2022.html).

If you’d like to participate as a contributor or a mentor, please let us know in this thread and we’ll help you get started.

---

<div class="post-metadata">

**Author:** ![gnikit](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/gnikit/32/1213_2.png) [@gnikit](https://fortran-lang.discourse.group/u/gnikit)\
**Post date:** [March 9, 2022, 1:31pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/2 "2022-03-09T13:31:00Z")

</div>

That looks like an awesome set of projects, I was completely unaware of Fortran-lang GSoC. I noticed that there are a couple of projects that I might be able to give some insight/contribute, namely:

1. [Language Server](https://github.com/fortran-lang/fortran-lang.org/wiki/GSoC-2022-Project-ideas#language-server)
2. [Parser + ASR (for F2PY)](https://github.com/fortran-lang/fortran-lang.org/wiki/GSoC-2022-Project-ideas#parser--asr-for-f2py)

Although, the Language Server that I am developing ([fortls](https://github.com/gnikit/fortls)) parses Fortran into AST and not ASR.

Let me know if you think I can be of some assistance.

---

<div class="post-metadata">

**Author:** ![milancurcic](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/milancurcic/32/2_2.png) [@milancurcic](https://fortran-lang.discourse.group/u/milancurcic)\
**Post date:** [March 9, 2022, 4:59pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/3 "2022-03-09T16:59:51Z")

</div>

Thanks @gnikit, great to hear. I think it’d be great if you could co-mentor on one of the projects you’re interested in, or even suggest a new project idea–we can still add them and they could be outside of existing project categories. I wonder if there’s a path here for LFortran and fortls to collaborate.

CC’ing @certik @rgoswami.

---

<div class="post-metadata">

**Author:** ![certik](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/certik/32/4_2.png) [@certik](https://fortran-lang.discourse.group/u/certik)\
**Post date:** [March 10, 2022, 1:17am UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/4 "2022-03-10T01:17:02Z")

</div>

> [@gnikit](#):
>
> Let me know if you think I can be of some assistance.

Yes, definitely. Thanks for writing here and offering help. I just wrote you a private email to setup a video call to discuss more.

I would be interested in brainstorming the language server, as you have a lot of experience there and see how we can join forces. We can use AST also, LFortran has both, and the AST in fact already works for all of Fortran (as far as we know), but for a language server it seems to me that you really want the semantics, thus ASR would be better.

---

<div class="post-metadata">

**Author:** ![gnikit](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/gnikit/32/1213_2.png) [@gnikit](https://fortran-lang.discourse.group/u/gnikit)\
**Post date:** [March 10, 2022, 12:53pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/5 "2022-03-10T12:53:40Z")

</div>

Re: @milancurcic

I would be glad to assist in either. Not sure if my knowledge is enough to co-mentor some, but more than glad for us to have a discussion.

As for LFortran and fortls that was my original thought too. It would be cool if fortls could become more robust and gain wider adoption. (I sure wish I had it 6 years ago when I started with Fortran).

Re: @certik

Thanks, I have sent back a reply. I am not against the idea. Currently, I am in the process of rewriting (in my non-existent free time) the bulk of the Fortran parsing. Changing between AST and ASR shouldn’t be too much of an issue I think.

---

<div class="post-metadata">

**Author:** ![arteevraina](https://avatars.discourse-cdn.com/v4/letter/a/b5ac83/32.png) [@arteevraina](https://fortran-lang.discourse.group/u/arteevraina)\
**Post date:** [March 11, 2022, 1:57pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/6 "2022-03-11T13:57:49Z")

</div>

Hi @milancurcic , I am Arteev. I am a Computer Science Student from India. I am looking forward to contribute to Fortran-lang under the program of GSoC 22. I am particularly interested in the idea “fpm-ize the Fortran Ecosystem”. Can you share some resources that will help in getting some better understanding of this problem and will get to contribute to the organization.

---

<div class="post-metadata">

**Author:** ![milancurcic](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/milancurcic/32/2_2.png) [@milancurcic](https://fortran-lang.discourse.group/u/milancurcic)\
**Post date:** [March 11, 2022, 3:52pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/7 "2022-03-11T15:52:52Z")

</div>

Welcome @arteevraina and thank you for writing here. Beyond the project description the the [ideas page](https://github.com/fortran-lang/fortran-lang.org/wiki/GSoC-2022-Project-ideas#fpm-ize-the-fortran-ecosystem), perhaps the first steps would be to read about fpm ([docs](https://fpm.fortran-lang.org/en/index.html) and [GitHub repo](https://github.com/fortran-lang/fpm)) and even start playing with it so you get a feel for all the things it can do. Specifically for this project, it will be important to have a good understanding of an fpm [package layout](https://github.com/fortran-lang/fpm/blob/main/PACKAGING.md) and its [manifest](https://fpm.fortran-lang.org/en/spec/manifest.html). Of course, learning these in-depth would be part of the project and not necessarily the requirement at the time of application, but the better you understand it the more of a head start you’ll have.

Then, we’d look at what’s already in fpm:

- [fpm-registry](https://github.com/fortran-lang/fpm-registry)
- @awvwgk has a list of all fpm packages on GitHub (whether or nor they’re part of fpm-registry) based on his script.

Understanding what’s already available as fpm package would help us identify gaps in the ecosystem and inform us whether there’s a specific application domain to prioritize.

Then, we’d research the online Fortran ecosystem and look for packages that are relatively:

- Easy to write an fpm.toml for
- High impact (useful real-world projects rather than toy examples)
- Well documented
- Well tested
- Interesting to you to work on

One such group of packages could be those by [Stefano Zaghi](https://github.com/szaghi). They use a package layout somewhat different from fpm’s assumed layout and use git submodules to manage dependencies, but they’re otherwise low-hanging fruit.

I assume that researching the ecosystem would also involve polling the Fortran Discourse to get feedback on what Fortran packages people use the most.

I hope this gives you plenty info to spark interest, and let us know if any questions come up in the meantime.

---

<div class="post-metadata">

**Author:** ![anirudha-mirmira](https://avatars.discourse-cdn.com/v4/letter/a/6de8d8/32.png) [@anirudha-mirmira](https://fortran-lang.discourse.group/u/anirudha-mirmira)\
**Post date:** [March 12, 2022, 7:40am UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/8 "2022-03-12T07:40:20Z")

</div>

Hello everyone, I am Anirudha Mirmira a physics PhD student (in my final stages) from JNCASR, Bangalore, India. I have been programming in Fortran for my thesis work and mostly write programs in the F90 standard. I have utilised MINPACK (J. Burkardt’s version) and FFTW for Fast Fourier Transforms in my code. I also code in Python and have bare minimum exposure to Julia.  
Coming to GSoC, I am intrigued by the Sparse Matrix implementation and the SciPy implementation of MINPACK. I am also planning to implement the meshgrid issue in stdlib as my first contribution and am looking forward to work with a great group.

---

<div class="post-metadata">

**Author:** ![awvwgk](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/awvwgk/32/154_2.png) [@awvwgk](https://fortran-lang.discourse.group/u/awvwgk)\
**Post date:** [March 12, 2022, 11:34am UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/9 "2022-03-12T11:34:51Z")

</div>

Welcome to the discourse, @anirudha-mirmira.

Regarding Minpack, we are currently in the process of implementing Python bindings in

> <https://github.com/fortran-lang/minpack/pull/49>
>
> Exports Python bindings via CFFI, allows installation of Python bindings with me…son and setuptools.
> 
> \- \[x\] hybrd1
> \- \[x\] hybrd
> \- \[x\] hybrj1
> \- \[x\] hybrj
> \- \[x\] lmdif1
> \- \[x\] lmdif
> \- \[x\] lmder1
> \- \[x\] lmder
> \- \[x\] lmstr1
> \- \[x\] lmstr
> \- \[x\] chkder
> 
> See #43

Feedback on the proposed API is very welcome. We are currently stuck with a slight disagreement on how to wrap C to Python, but the choice of glue is only secondary.

From there we have decide on things like distributing wheels and how much of `scipy.optimize` we want/can to provide from the Minpack bindings already.

---

<div class="post-metadata">

**Author:** ![arteevraina](https://avatars.discourse-cdn.com/v4/letter/a/b5ac83/32.png) [@arteevraina](https://fortran-lang.discourse.group/u/arteevraina)\
**Post date:** [March 12, 2022, 12:13pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/10 "2022-03-12T12:13:52Z")

</div>

Thanks for such a detailed explanation. I will go through these links and will let you know if I have any questions and post them here. Thanks again.

---

<div class="post-metadata">

**Author:** ![anirudha-mirmira](https://avatars.discourse-cdn.com/v4/letter/a/6de8d8/32.png) [@anirudha-mirmira](https://fortran-lang.discourse.group/u/anirudha-mirmira)\
**Post date:** [March 15, 2022, 6:32pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/11 "2022-03-15T18:32:25Z")

</div>

Hi, I wanted to know how to start contributing to stdlib or Fortran-lang’s other repositories. I’m especially unfamiliar with Fortran preprocessing and would appreciate any references from where I can learn more about this.  
Also, it would be very helpful if documentation regarding the method of submission and the files which should be worked on can be mentioned.  
Thanks in Advance!

---

<div class="post-metadata">

**Author:** ![arteevraina](https://avatars.discourse-cdn.com/v4/letter/a/b5ac83/32.png) [@arteevraina](https://fortran-lang.discourse.group/u/arteevraina)\
**Post date:** [March 16, 2022, 4:56pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/12 "2022-03-16T16:56:18Z")

</div>

Hi @milancurcic @awvwgk . Can you confirm is this [issue](https://github.com/fortran-lang/fpm/issues/678) genuine? I encountered it while testing out the different fpm comands.

Thanks.

---

<div class="post-metadata">

**Author:** ![ivanpribec](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/ivanpribec/32/3290_2.png) [@ivanpribec](https://fortran-lang.discourse.group/u/ivanpribec)\
**Post date:** [March 16, 2022, 5:24pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/13 "2022-03-16T17:24:49Z")

</div>

Hello @arteevraina,

thanks for posting. I had a look and I don’t think it’s a genuine error. As I understand it’s simply the output of a test driver for the `new` subcommand. I’ve left an answer in the issue.

If you’re looking for a possible contribution for the GSoC application, perhaps addressing the “FIXME” note on this line [fpm/new\_test.f90 at 86a8e2f71ee16be30bc21b7ff0273de324a59985 · fortran-lang/fpm · GitHub](https://github.com/fortran-lang/fpm/blob/86a8e2f71ee16be30bc21b7ff0273de324a59985/test/new_test/new_test.f90#L171) is one possibility.

---

<div class="post-metadata">

**Author:** ![ivanpribec](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/ivanpribec/32/3290_2.png) [@ivanpribec](https://fortran-lang.discourse.group/u/ivanpribec)\
**Post date:** [March 16, 2022, 6:02pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/14 "2022-03-16T18:02:58Z")

</div>

> [@anirudha-mirmira](#):
>
> Hi, I wanted to know how to start contributing to stdlib or Fortran-lang’s other repositories. I’m especially unfamiliar with Fortran preprocessing and would appreciate any references from where I can learn more about this.

Hi Anirudha,

stdlib uses the [fypp](https://fypp.readthedocs.io/en/stable/fypp.html) preprocessor. The documentation of that project provides a nice introduction to the reasons and preprocessor language syntax. You could also take a look at the materials provided in the [ForMoSa workshop](https://tcevents.chem.uzh.ch/event/3/timetable/#20180608), specifically the document [MetaProgrammingWithFypp](https://tcevents.chem.uzh.ch/event/3/contributions/5/attachments/15/68/MetaProgrammingWithFypp.pdf) by @aradi.

For contributing to stdlib I’d suggest reading the [WORKFLOW](https://github.com/fortran-lang/stdlib/blob/master/WORKFLOW.md). If you are interested in sparse matrices, the next step would be to go through the pertinent issue: [https://github.com/fortran-lang/stdlib/issues/38](https://github.com/fortran-lang/stdlib/issues/38). It would also be a good idea to find an easier issue to get accustomed with the process of submitting a pull request.

---

<div class="post-metadata">

**Author:** ![anirudha-mirmira](https://avatars.discourse-cdn.com/v4/letter/a/6de8d8/32.png) [@anirudha-mirmira](https://fortran-lang.discourse.group/u/anirudha-mirmira)\
**Post date:** [March 16, 2022, 7:16pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/15 "2022-03-16T19:16:47Z")

</div>

Hi @ivanpribec

Thank you for the references, I will go through them. As advised, I will also work on some simpler issues before getting into the sparse matrix issue.

---

<div class="post-metadata">

**Author:** ![arteevraina](https://avatars.discourse-cdn.com/v4/letter/a/b5ac83/32.png) [@arteevraina](https://fortran-lang.discourse.group/u/arteevraina)\
**Post date:** [March 20, 2022, 3:42pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/16 "2022-03-20T15:42:57Z")

</div>

> [@ivanpribec](#):
>
> Hello @arteevraina,
> 
> thanks for posting. I had a look and I don’t think it’s a genuine error. As I understand it’s simply the output of a test driver for the `new` subcommand. I’ve left an answer in the issue.
> 
> If you’re looking for a possible contribution for the GSoC application, perhaps addressing the “FIXME” note on this line [fpm/new\_test.f90 at 86a8e2f71ee16be30bc21b7ff0273de324a59985 · fortran-lang/fpm · GitHub](https://github.com/fortran-lang/fpm/blob/86a8e2f71ee16be30bc21b7ff0273de324a59985/test/new_test/new_test.f90#L171) is one possibility.

Thank you @ivanpribec. I am looking into this issue.

---

<div class="post-metadata">

**Author:** ![ashirrwad](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/ashirrwad/32/1363_2.png) [@ashirrwad](https://fortran-lang.discourse.group/u/ashirrwad)\
**Post date:** [March 22, 2022, 10:09am UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/17 "2022-03-22T10:09:42Z")

</div>

Hi, I am Ashirwad Mishra a 3rd year Computer Science major from Vellore Institute of Technology, Vellore(India). I have experience in Web Development and ML, mostly working on my own projects.  
**I would like to contribute this year to Build or embed online playground for [fortran-lang.org](http://fortran-lang.org)**  
Can you please inform me how can I get started with this?  
As of now I’m cloning the [fortran-lang.org](http://fortran-lang.org) repo from github and trying to run it on my machine but I’m unsure how to proceed after I do this.

---

<div class="post-metadata">

**Author:** ![milancurcic](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/milancurcic/32/2_2.png) [@milancurcic](https://fortran-lang.discourse.group/u/milancurcic)\
**Post date:** [March 22, 2022, 4:57pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/18 "2022-03-22T16:57:08Z")

</div>

Welcome, @ashirrwad! Good first step getting familiar with the website repo. To start, I suggest:

- Read all the contributor instructions (see the original post in this thread)
- Research existing playgrounds from other languages e.g.:
  - [Nim](https://play.nim-lang.org/#ix=3Tbv)
  - [Rust](https://play.rust-lang.org/)
  - [Haskell](https://www.haskell.org/)
  - [Python](https://www.python.org/)

- Think about what approach would you take to implement this and why (HTTP client/server, Webassembly in browser, embedded Jupyter notebook etc.)
- Find a small issue in any of the Fortran-lang projects and submit a small PR of your choice (bug fix, docs improvement, small feature)

Since this project would be started from scratch, you don’t necessarily need to worry about how to shoe-horn it into the existing website. The playground could be embedded in the page (like in the Haskell and Python examples), or not (like in the Nim and Rust examples that have a separate playground website). I think a separate playground website would be a better choice, as it would allow for more options and flexibility.

Let us know if you have any other questions.

---

<div class="post-metadata">

**Author:** ![arteevraina](https://avatars.discourse-cdn.com/v4/letter/a/b5ac83/32.png) [@arteevraina](https://fortran-lang.discourse.group/u/arteevraina)\
**Post date:** [March 29, 2022, 2:28pm UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/19 "2022-03-29T14:28:18Z")

</div>

Hi @ivanpribec . I had a look at the [fpm/new\_test.f90 at 86a8e2f71ee16be30bc21b7ff0273de324a59985 · fortran-lang/fpm · GitHub](https://github.com/fortran-lang/fpm/blob/86a8e2f71ee16be30bc21b7ff0273de324a59985/test/new_test/new_test.f90#L171) FIXME! code. I could not figure what we need to achieve differently here. I know that this piece of give us the fpm executable. Can you help ? So that I can understand it better and create a fix for this.

---

<div class="post-metadata">

**Author:** ![ivanpribec](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/ivanpribec/32/3290_2.png) [@ivanpribec](https://fortran-lang.discourse.group/u/ivanpribec)\
**Post date:** [March 30, 2022, 10:36am UTC](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918/20 "2022-03-30T10:36:20Z")

</div>

⚠ **TL;DR**

Hey @arteevraina,

Here’s what I am able to understand about the `new-test` driver:

1. Upon running the command `fpm test new-test`, the file `fpm/test/new_test/new_test.f90` will be compiled into an executable. The executable will be named something like `build/gfortran_xxxxxxxx/test/new_test/new_test`.
2. The purpose of the executable is to run variations of the `new` subcommand which creates a new package directory and sample files. For each variation, the program will check if the desired outputs are generated, and add the result to a tally (score, record). In case of failure, the program will report what went wrong.
3. After looping through the variations, the program performs clean-up, removing the folders and files that were just generated.
4. The final tally is output so the developer can verify if all tests passed.

The `fpm` being tested, is not the system-installed one, but the one bootstrapped _via_ fpm, that also resides in the `build/` directory.

Now to the purpose of `get_command_path`:

- When `fpm test new-test` is invoked, it actually executes the `new-test` executable that resides in the `build/gfortran_xxxxxxxx/test/` folder; the purpose of the test however, is to invoke the actual `fpm` executable, that resides in the `build/gfortran/_xxxxxxxx/app/` folder. The purpose of `get_command_path` is to find/assemble the path of the fpm executable.

- This is achieved by assuming a certain relative position of the test executables and the app executable.

- Here’s a breakdown of how it’s done:

Because `get_command_path` carries a number of implicit assumptions on the relative file position, it’s a kind of hacky way of figuring out the `fpm` executable path. To be honest, I’m not sure what would be a more robust solution. Perhaps @LKedward could give us a suggestion?

[Next page](https://fortran-lang.discourse.group/t/fortran-lang-accepted-for-google-summer-of-code-2022/2918.md?page=2)
