Fortran Open Source Development

About

Fortran is a compiled language which means that once written, the source code must be passed through a compiler to produce a machine executable that can be run.

Transcript

[Music] hello the internet welcome to open source directions by open team the
webinar that brings you all of the news about the future of your favorite favorite open source projects my name is MIDI can I’m a postdoc at the
University of Illinois and I work on a project called YT and I’m so excited this week to be joined by this week’s
guest co-host Melissa as well as our guests hi I’m Melissa I’m currently
working as a software engineer at Quon site doing some work on numpy and also F 2 pi hello my name is MJ I’m a scientist
at Los Alamos National Laboratory and I’m also the original author of simple imaging and alpha training everybody I’m
Ellen I’m scientist at the University of Miami I study ocean waves in hurricanes and
I’m also co-founder of cloud run which is assess for numerical weather
prediction awesome so our generous guests are offering ten lucky guests free e-book codes for
modern Fortran so check the chat to find the link to the raffle and please add
your email addresses the first ten viewers to register will be sent the book codes within 24 hours so before we
dive into the project whatever going to be a little personalization section and this week we have our new hybrid tweet
of the week plus headline section where every where each of our panelists presents a tweet and or open-source
headline that they’ve been enjoying recently Nealon I think you’re gonna be first up alright so my favorite tweet recently is
from Andy Kelly so Andy Kelly is on the author of the zig language and he tweets
a lot about it and writes writes blog posts and streams has streams on Twitch
life programming of features of the compiler but the specific tweet is about
how Ziggy’s can finally be used as a drop-in replacement for GCC and clang
and can cross compile to various platforms from the platform you’re on
which is pretty mind-blowing to me yeah that’s pretty amazing under how
about you do you have a I found a one favorite we yesterday actually throw a
stiff on Karpinski who’s one of the Julia developers who was saying that they always worked very hard to speed up
the Julia compiler so they managed a temper since beta which is a lot of work and then they upgraded to a new Albion
version which got 10% slower so in the negated there is the hard work that’s very very frustrating Melissa so I have
this interesting tweet by Scott Berkun he’s an author on creativity and other
stuff and he’s talking about how to foster a sense of community so he mentions like when you build a slack
channel or you have a forum for your users when they join they need interaction so they need you to respond
to their questions to say hi to use emojis and just overall build a sense of
community so I thought it was interesting to think about that yeah I
think this is like a challenge for all of us right so make sure we’re interacting with our users and developers frequently and like have some
sort of quick turnaround without dedicating all of our time to that okay
so mine is actually a headline from Bloomberg so Bloomberg developed the
acute plot in the org itself and it’s a BQ plot as a library for interactive
plotting and now they are spinning out into their own open source organization so BQ black welcome to the open source
or the area and having your own org yay okay so now we’re gonna get into the
project and introduce Fortran a little bit Fortran doesn’t really need any
introductions but what I’m still gonna do it support Ren is a language for scientific and numerical array oriented
computing Fortran itself has 195 stars on github across all community Fortran
Lang Fortran languor projects has 16 active contributors and 97 flow requests
merged or closed since which is super impressive so Andre can
you talk about why this project was started and which kind of needs it fills
so what turn itself is a very old language the first release was 1957 but
the modern need for Fortran and so historically it’s been the first
high-level language that’s why they started in the modern need for Fortran is a simple language that domain
scientists can use and develop and to maintain large codes in and also simple
but also be easy for compilers to generate very high-performing code and
then so for turns been around for 70 years or so but what Fortran is missing
is a central place at the internet at github for example where we can build a
community and can have things where you know modern users are used to such as
community-owned compiler documentation standard library package manager
packages all this ecosystem of things that every new language like rust go
julia has except for turn even C++ has
way more tooling than Fortran has and so what we are trying to do here is to
create a website and build a community and to start building all these necessary tool links that’s fantastic
and also building a Fortran community sounds like a really exciting thing to get involved in for both our listeners
and also myself yeah so can you know can you explain the history of the name in
the logo yes so the name if you think the word for trend for came come from
formula and trend from translator so you have the formula translator that so that
was the very first basic how the
languages it introduced is the first high-level language which basically
allowed sign engineers at the time which were most of the users of computers at a time it
allowed him to write programs in a language I was very natural to them basically to type in code that was
essentially like the math that you would write out on paper or on a whiteboard so
it was pretty revolutionary at a time and consequence when it’s done many
languages to follow now about logo so Fortran traditionally has not had an
official logo or a website and we that’s part of what we are trying to change
when we recently designed the Fortran like website we we also adopted a logo
which was originally designed by Jacob Williams I tweaked some some colors to
fit the theme of the website by the way that’s a very fresh and new project and
I will I will show it a bit later but I I the site has been up as of a week ago
and can you talk a bit about alternative projects – Fortran and also how they
talk to Fortran in terms of interoperability so from a user
perspective I think for turn fields it’s close to MATLAB Python / numpy and Julia
those would be the three kind of main languages that kind of feel from the user perspective the same from a
performance perspective I would say C++ is the main main competitor maybe rust
maybe Julia and then regarding how the languages talk to each other so for
example when you want to call Fortran from Python that the go-to tool is called F 2 pi it used to have many
different places very live now it’s part of numpy a common question is what is
the advantage of having alpha turn compared to F 2 pi so a Fortran is a
compiler damn developing for last few years and the
idea of L Fortran is that it will become a compiler that can compile any code
eventually and it’s able to expose you the internal data structures in a very
user-friendly way and and then people can write back adds to it so the
backends that I come I’m currently working on our other DM of course and C++ backend and I’ll also soon start
working on a Python back-end which would allow to automatically drop any any code
and so down the road in a few years what I’m hoping is that F 2 pi for example
could just be a back-end that can reuse all the infrastructure from the compiler to ensure that things can be parsed
easily quickly robustly and after PI can concentrate on the actual graphic mechanism currently the bodies after PI
has to do everything as to the parsing has to do all the other things that a compiler should be doing much more
efficiently and easier can you tell us a
little bit about what technology portrayal is built on so for John as is
a language that has a iso standard specification and the compiler can be
implemented using any any appropriate technology there are many compilers out there so they’re from the open source
compilers the most advanced is G Fortran and then there are new compilers open
source compilers in development one is flying now part of all of the end and also at Fortran and then from the
commercial compilers there is IntelliJ IDEA there is IBM is many of them nag
and then and so gfortran historically it’s part of GCC
so they have their own tool chain flying an elf return both are targeting all of the M
Intel and IBM are also looks like maybe moving towards OPM based but infrastructure or
traditionally Intel has its own cogeneration Intel from all the Fortran compilers is
traditionally and I think it’s still the case today it generates the most performant code on a Dell architectures
elan can you tell us a bit about the history of the project and who created it
yeah so Audrey mentioned earlier that Florida was started at IBM in the 1950s
so it it mean the level developer was John Backus and his um his his team so
the mean the main goal of Fortran at the time was to allow people to write
high-level code in a in a language that on that is natural to him like I mentioned earlier and the compiler was
very successful also for the reason that it was the first optimizing compilers
before that people had to write by hand assembly or machine code which means
that they watch what you wrote that was that was the that was what was running
but for the first time compiler was doing automatically the work of translating from human readable language
and optimizing the code that would run very fast so Fortran had a very very
sort of solid and successful start from the get-go which allowed it to become over time very mature and very highly
performing language because compiler developers over time built over the
foundation that came that came from before and that’s what only allowed for
can to still have its its place today in part ok so like a little bit earlier you
mentioned that there is 16 active contributors to the project can you tell us who maintains the project and about
how many people that is so those pull requests and maintainers those are kind
of maintainers for our very new project Fortran – like dot org and the related
repositories so for Fortran as a as a language there is nobody traditionally
there is nobody who I always maintain the language there is a Fortran Standards Committee which
maintains ISO standard of the language itself and I’m also part of the
committee and Bela those who know philosophy part of the committee the committee has maybe 10 15 people and
they meet they’d been responsible for releasing the Fortran standards so the latest standards for example 2018
however there is no currently there is no open source community like Julia or
rust has that stewards the project and that’s exactly what we are trying to fix
what communities are users and contributors from so basically science
science and engineering various fields across the two so recently our colleague
Damien Rosen told me he likes to say to people how where Fortran is used a lot
today are in industries and communities that have adopted computation early
which was in the fifties and sixties and
that’s that’s where Fortran is very powerful and mature for this kind of
application so more specifically fluid dynamics that includes aerodynamics
numerical weather prediction so you you look we look at weather forecasts almost
every day in various forms whether on website or app or newspaper whatever so that comes from large fortune codes that
run on very large computers to solve PDS over the whole globe to compute a
solution for the future state of the atmosphere or ocean and likewise for for
climate prediction and climate change that’s essentially a 100 percent Fortran
and also more recently from we get some
some overlap with with people who work on Python in despair
I’m playing some sci-fi ecosystems Julia and similar and also what feel that you
forgot to mention its electronic structure calculations essentially I think quantum mechanics to do material predictions that’s mostly for journal so
it’s a huge field yeah it’s amazing how
it’s so ubiquitous in science I mean my training as a nuclear engineering and I will definitely attest to the fact that
there’s a lot of new engineering that still that uses Fortran and it’s very performant because of that and so I’d
like to remind our listeners that they can ask questions in the chat and we’ll
ask them a little bit later in the webinar and so as we go through this section or the following sections if
there’s anything that you want clarification on or maybe you want to ask our guests about please add them to
the chat and we’ll make sure to ask your question okay so our next question is is the project
participating in any diversity and inclusion efforts so it’s a very new projects we just started it up late last
year so the main thing that we are trying to do is ensure that anybody who comes and a new user looking and liam or
her and that they feel welcomed and that any any idea can be discussed freely for
that purpose we also have a code of conduct and we are enforcing it unfortunately we already had to enforce
it a few times I have a lot of experience maintaining large open-source communities from sin PI we’re doing it
for over ten years and in general at least from my set by experience it has to be enforced at the
beginning but once people are yes you just have to be a professionally at all times you know it the community itself
it doesn’t have to be enforced anymore because the community itself doesn’t have these issues but at the very beginning is very important to enforce
it and so I take that very seriously well that’s really great to hear and
it’s true like building community in this way really helps to make your community sustainable as well right
because you will retain people if you have strong infrastructure within your community Jonathan so now
we’re gonna switch a little bit into our project demo slash walk through we’re
willing to see some of the cool features of Fortran and how it works and while
our guests are getting set up we’d like to take this opportunity to thank our sponsor one site for sponsoring this
episode of open source directions quad site creating value from data so when
you all are ready please take it away all right so I’ll start and basically
the first thing I want to show you is the Fortran – Lang dot org which is a
brand new website the main goal behind this is to give Fortran a a home on the
Internet that is easy to find that for when people search for fortune are curious
about Fortran or just want to get started they can come here and have all
the resources they need so to learn about what what the language is about to
learn about the latest news from the language and the community and to be
able to learn so basically we want to have sort of a go-to tutorial for
Fortran that will allow people who are new to the language this comes here and
it started step by step in a practical hand on no-nonsense way to be able to
write basic and correct Fortran software easily and quickly and so this is a very
very very early development kind of project and actually for example this
the current state of the tutorial which is very sort of early and bare-bones
it was just contributed by a member from the community then we also want to
provide resources for compilers as you pointed out there out several open
source and commercial compilers so this page will point you to where and
how you can get various Fortune compilers and then development we want
to also sort of refer people if they if
they’re more interested in learning and contributing the project to sort of go
to their from from this website so here we have fortune proposals which Andre
will discuss a little bit later and also the standard library and the package
manager so these these take you directly to github of the project and just to
give you a little bit of background about the standard library so a common
sort of complaint of or criticism of fortune that I hear from people is fortune doesn’t have a standard library
not in a in a typical sense like say Python has or NGO has or rust which are
very sort of complete comprehensive sets of tools for formatting strings
algorithms collections and so on so Fortran has its own built-in library in
in fortune terminology this is called intrinsic functions and modules this is
you know before we start building any kind of standard library that which is
what I’ll show here people had these intrinsic functions out of the box but
anything extra that you needed to do if you wanted to format strings in a special way or if you wanted to parse
dates and times you had to build it yourself just for an example in in about
2013 I I needed to parse some dates and
times and process them you know in a physics model I looked around in terms of fortune didn’t have a a ready
solution for that you know in in Python you just go get daytime go get thank dealt
and you’re off to the races so the finally Mike made a fortune library that
very much modeled the Python date time and time Delta API which is now rather
rather popular and using some big production codes but this sort of
anecdote illustrates you the problem although the lack of Fortran package
ecosystem and basically the beer for the Fortran standard library which I’m
showing now came in I think November or
December last year in in the project
that that andrey initiated on the project to basically develop proposals
for the standard by the community on github and the common theme there was
that there was a lot of there were a lot of requests for sort of basic functionality it could be implemented in
Port Fourchon as a library but these requests were being sort of made to the
standards committee to implement in the language that would then be implemented
by the compiler so there’s this long kind of run about process and for many
of these things you could just go and implement a function in or a module Assam as a library so that’s where for
tests and a library comes comes from and since then yeah I think the Deacon
mentioned we had C in this specific project we had 12 active contributors we
have sort of well-defined workflow on how we’re how we’re adopting the
additions to the library so we have sort of a five stage process where we go from
idea to the API to the specification to the implementation finally to the
release and every step we why’re that we have a majority agreement
from the community before going forward and the majority is here sort of
arbitrary like we we want 80/20 sort of majority agreement on a future before
going forward we don’t necessarily want everybody to agree because then a lot of
work wouldn’t get done because there’s you know there’s always we all have sort of personal perspectives on what should
or shouldn’t be in the standard library how should something be implemented you get the idea so right now from the top
of my head we have several modules that each have
on average I think they add about several several new functions so we have
a module for parsing and were working with ASCII character set
we have error handling still very basic for right now we have a module for basic
IO functionality we have a really nice
module and function with which sort of makes it easier to work with optional
arguments in fortune functions and subroutines which is as defined by the
language it’s kind of tedious right now so this function sort of gives you I
could drop in it’s sort of like a syntactic sugar just makes it a little
bit more pleasant to work with optional arguments and a lot of work has been
done by contributors to the come from the community to for quadrature
basically integration methods statistics methods and we also had some basic
system functionality so the project is still very very early on in development
but I do encourage anybody listening who is interested in working with Fortran
or is working with Fortran already take a look and see how how you can use as
the D live for your project if there’s anything that you like to be part of the
standard library please join the community and get engaged we always we welcome more people
and we need more help so please join us and I would also
mention the scope so initially we envisioned STD live to kind of help out with kind of basic things like string
manipulation but we realized this Cobra day should be something like sci-fi and damn pie is for Python the idea is that
if you want to use Python you have to typically install not by inside by to do any kind of medical thing another way to
look at it is as if you have bad lab you have these batteries included so that’s
the graphically the scope of St really is to provide this basic functionality so that if you want to learn about echo things in Fort Riley esta village to get
you there and then if and then once you need something more specialized or faster or anything else and of course
you use other packages what question is a still a target at the most recent
specification or can it be used on other projects as a very good question it can be used for all the projects we haven’t
right now we don’t use anything fancy from the latest Fortran revisions we
will eventually figure out which exact Fortran version we are targeting but
right now it can be used a bit because we don’t use anything from 2018 for example or probably not even 2008
alright so I think the next part I’d like to show is the j-3 github website
so hey Andre do you think while we show
fpm real briefly just one one minute and then I’ll hand it over to you sound good
ok good okay so fpm which stands for um the Fortran package manager comes from
basically another sort of very basic and fundamental need and it is to have a
tool to easily build build your Fortran project and incorporate dependencies
your fortune project without having to handwrite your make files or C make
lists or whatever have you and also to to connect to the ecosystem of fpm
supported projects on the web so basically think you know cargo for
rust or NPM for node or others
anyhow so this specific project really what sparked it was um was the thread
that Dominic run cabbage started and then Andre and I sort of refined the ideas and now so Bren Richardson and
Andre are leading development of the Fortran package manager right now and
this is very very early infancy kind of project basically pre pre pre alpha much
younger than SP but I do encourage you to explore it open issue if you have
ideas try to play with it and yeah like
I said earlier let us know what you think or if you can help in any way that
would be great so right now I would like to hand it over to Andre thank you yeah
I’ll just mention with the SPM the idea is mention so I like the Rasta ecosystem
the most you can very easily install different versions of packages and everything installs in your day kind of
directory with the project and then when you create a new Fortran or plus your ass newest project all you have to do is
just create a very simple character optimal and I and if you use a predefined layout you
don’t even have to tell rust where all your files are the cargo can figure it
out and so that’s the same approach we have tried to do with fpm which will make it very easy for people to create
packages and F be able to figure out how to compile it with any Fortran compiler on any platform out of the box in a
release in debug mode that’s another common issue in Fortran people don’t know what flags they should put to let
Seiji Fortran to get the most optimized build you have to are you know native
and fast math and you have to use you know under loops all these oh three you
know and initially stanca race they just keep stacking up you know you have to know that and SPM should know that and
do it for you so you do release it will just do it for you correctly it really sounds like you’re making the
development process for Fortran a lot easier and also making it more accessible to a lot of levels of
developers right yes yes oh that’s the other thing yes we want to and that kind
of ties to what I’m going to show you next with Fortran what I’m hoping is to
get people involved in building these two lakes tools for four for 10 okay so
can you see my screen yes we can okay so
so as I mentioned before I’m on the Fortran Standards Committee so historically the committee has not been
very good at engaging the wider community and one of the issue that I
realized quickly is we should have a website where anybody can propose a new addition to the language and discuss it
and so I started this j-3 Fortran repository j-3 is a name for the u.s.
forest owners committee hmm so the four proposals repository if you go to issues
then we are tracking anything that the committee does and anybody can if you
want say you don’t like something some language feature you will have to propose a new feature you can just come
here create an issue and we’ll discuss it when you sorted by popularity you can
see what people want to see next for example they would you know people like to be releasing the Forester
that sooner in every five years they would like to see for example the top 40 proposal a so I’m just going to say that
you can see allow so Milan started it be
able to set default values for optional arguments this is how it is done
currently and be nice if one can for example use some kind of a syntax like that or or maybe even better has have
the syntax you know inside and so on anyway and so that people can vote on it
you can see has a lot of bows 14 and so on and you can see it’s long discussion of pros and cons of various you know
changes and so alright and then I’ll move on to the next part which is so
that’s a binder so I want to show you how L forum works in that you put a notebook and I have a binder but every
time I want to show the binder it somehow doesn’t work so what I’m going to show you is the local local version but at home you can go to elllo.org and
go click on this link binder it will work just have to wait a little bit but
the but I’m going to show is just a local version so it we can go ahead so
in the in the notebook the alphatron allows you to use for trend interactively and so you execute the
cell and it gives you the output right there it looks like Python or Julia but
it’s a Fortran C text and it’s a Fortran full of Fortran compiler want to show you people usually ask what happens if I
declare a variable I its first I essentially it’s an integer and I try to
send something else to it so I get in I get a compiled compiler error unlike in Python which Python would
reassign the very apply then you can declare functions you can call them you
can declare a function just like in Python and so then you can get a different answer
it has loops you can see in something out it’s hooked up this is just supposed
to type showing how it can be hooked up to that lovely blue plotting method lab
is quite slow but you this course so do you believe me that
it’s not that is real you can change I’m just kind of floating the y-coordinates
of things so if you change it and then you plot it you get a different plot and then one can also see how the compiler
works someone can show an AST of the Fortran code or the illudium code that
it generates or assembly code also so
this is just a prototype that I wrote this is from about nine months ago or so it’s the prototype is written in Python
but since then I moved to C++ and now I’m kind of getting up to speed and
getting everything ready in C++ and the reason I moved from Python to C++ is for
a personís and speed and easier it’s easier to distribute and it’s also much faster so I think that’s a lot well this
is fantastic and it’s really nice to see the different levels at which we can now be interacting with Fortran so that’s
also really exciting and we I know you’ve already kind of talked a little
bit about you know on the early infancy of some of these projects this is actually a perfect transition for us to
go into the roadmap of Fortran so we’re gonna be talking a little bit about now where Fortran is going and for our
listeners this is these are places that you can get involved in the project or if you work at a company maybe you could
dedicate some developer hours or funding to some of these initiatives and so
first we’re gonna let Andre me like kind of talk about some of these and then we’re gonna go you know do a little more
freeform and explore where these roadmap items are gonna be going so why don’t
you two let us know what the next what’s on the roadmap for we’re tracking so the
main number one thing that we are trying to do is to build a community for sure has a large community but it’s scattered
it’s not it’s not around some website and that’s the number one thing we are trying to fix because once we can fix that people can actually collaborate
together and build all these tools very quickly it typically historically for
charge for example has about for the STD label there Ted library that people have written including myself for one just kind of
basic utilities and we realize you know that ridiculous we need to do it you need to come together and do it as into
one library just like sci-fi began same idea yeah alright so that’s the number one but then some some details so we want to
have a community open source compilers and Fortran flank and others we want to have a website it’s we already have it
Fortran this like dot org we want to have a place to ask questions we want to have a place where anybody can propose
new features to the language so we now have it I showed you the j-3 github repository you won’t have a rich
ecosystem of packages and a package manager because F p.m. Fortran package manager and Bill and showed you how it
works we want to have a fortress under library and I’ll quickly answer one question here it was what about a
scientific library poster is similar perhaps to our Craig yeah a grand yes that’s that’s the idea I having having a
repository where people can upload fpm packages similar to how cargo for example does it or Python to then
question is what’s a success metric like how do we determine that we are moving
in the right direction the super easy that’s just the main metric is how many
people are choosing for transfer new projects and right now it’s almost
nobody and once we can see on github for example we look at the last new projects
in the last year once we can see that people are using for travel for new projects then that means we are
successful a secondary metric of course is you know once we have the FBM registry going how many people submit
packages number of stars of various projects on fpm you know al fortress TD lab and that is success or a curve when
seeing that we are successful as one some people will stop kind of thinking
of foreigners as a dead language or a kind of language that’s not in a good shape and that all will come later so
that’s that’s that’s all that’s roughly our robot okay great so I have a
question kind of related to building community so you you have created a lot of infrastructure
for a building community and I think it’s gonna be really great for people who are new to the language and learning
it but how do you kind of disseminate some of these community tools to communities are already using Fortran
that have been using it in some workflow for the same way for a really long time and maybe I don’t know about this are
you expecting sort of a word-of-mouth thing from existing domain scientists to
kind of spread this to people or do you have any plans specifically to make sure
you’re advertising it to those communities yeah so we want to get a
solid product kind of first so that when it comes to give you an example let’s
say for by my employer so we have this large production coaching for charge but but those are codes that are used every
day then you have to work and so it’s too early to be advertising something like this to those managers managing
those codes however well but we need to get there and to get there so what we are kind of doing now is
trying to get people who are interested in developing new things and understand that it’s it’s it’s at the beginning it
takes time once we are more mature and we we have some success let’s see some good fpm packages that work at and it’s
kind of more more production already then it’s time to to bring this more to attention to people who use for turning
production one thing I should mention at this point is people maybe don’t quite
realize let’s say C++ or Python have a very healthy ecosystems and what it
means is that you have a small projects people use C++ and Python for new projects all the time so you have small
projects medium-size projects and very large production codes well Fortran has it has very has a lot
of very large multi million lines of production codes many every huge organization you know from old labs have
that NASA is it in industry however Fortran doesn’t have almost nobody is
using Fortran for new projects that’s easy to check a together for example and and there are no medium-sized projects
and so what happens you have these large projects but you have nothing in between and so what we are trying to do is
fill up fill this space and to get there we have to start small build our
infrastructure get more people using Fortran for small projects and and then
you can medium-sized projects the infrastructure gets better once we get to that point then start to bring it to
the production codes and say look you should be using it and then a little bit more detail for fpm how we want to do
that so if you look at the rust I mentioned the key is to have a layout and if you use your layouts for that
package for your package new package you don’t have to set up any kind of you don’t have to tell SPF where your files
are you just use SRC and at the common convention and fpm figures are everything automatically how to build it
how to link it where your tests are very application is everything is automatic so then the question is how do you do
how do you bring this to a production code that does not use this layout and the answer is kind of there are two
options one is just like Argo fpm will have an option to so that you can tell
everybody or files are if you don’t follow the layout and then the until that’s one option the other option is
once people realize how easy it is to actually just follow the layout just simplify so many things I’m hoping that
people will move to the layouts and say you know this is gives us lots of free stuff we use this layout so that’s how
we eventually will be able to convince people to use it mm-hmm and I’d like to add something to the to this answer also
increasing the publicity of the project and that is that that’s the main point
of of the website so I believe that very soon that that website will be very easy
to find and be it over the top of the search search engine results but also our twitter account which is quite
active and tweets about the recent contributions to STD live and other
projects events like this and also last
but not least larger events like conferences for example this year we
will have I believe the first international fortune conference called foreign tongue in in Zurich Switzerland
organized by P Tiana Miller and his colleagues from university of
zurich what’s great about it is that anybody can join because it’s all the
conference was from the get-go designed to allow virtual attendance both for speakers and guests and the registration
is free so I encourage everybody here to do at least lurk in there but maybe even
a submit a talk to the conference well
this is fantastic I love the idea of this conference as well it’s gonna be really exciting so okay I have one more
question that are gonna jump into these are questions so is there of all of the things that you show today you know
there’s a lot of really good infrastructure that’s being built for Fortran for the community building is
there one place that if you would like to see more people or maybe developer hours going to or contributors you know
weighing in on things if you could have people kind of go to one spot is there one in particular that you like feel
they need some lab or anything like although it’s how you feel if you like
if you like any kind of compilers any kind of F 2 pi work any kind of this kind of it seems difficult but it’s
really not but they definitely come to L Fortran and I can use any help I can help you I can find a good project if
you want if you want to improve the packaging ecosystem help us with SPM if you want to feel like help if it’s like
a library development come to a CD live if you want to help in tutorials documentation come to the website we
have a github repository and some a tutorials documentation if you want to help us manage these things there may be
organize ourselves differently also come to any of these repositories open an issue and join us okay great I mean it
seems like there’s so many good places and we you know we can all get in involved in ways that you know are best
for us so that’s exciting so now we’re going to jump into our user questions we have quite a few so it’s
gonna be a little rapid pace let’s say you know hurts so we have a first
question from Pantano I hope I’m pronouncing that right the question is are there
financial sponsors and or industrial contributors to the project so so it
depends which which part of this for example I am currently about 50% funded to work on l4 trade then if you when it
comes to let’s say the commercial compilers those are obviously developed by commercial companies when it comes to let’s say the website no currently we
did our every time they add so our
vision is as we get more successful we’ll be able to get more companies and
more let’s see my own employer interested in many of these things in fact I know that the only thing is that
for example to kind of get the industry support for example from my own employer we have to be able to deliver we have to
be so close to production that they could use these tools in production once we get there that they’ll be very happy
to work until we get there it’s kind of too far we have to kind of get there first so that’s me not do you have any
comment on that no that was great okay sorry next question is from Anna Rudolph’s is there
a chance that physical unit of measure will be part of the Fortran standard so
that’s a very reasonable laughing is that it’s a very old kind of a proposal in the committee and apparently I’m used
to the committee up in there for last year but turns out it’s it’s a very sensitive issue there because they just
we’re not able I guess they were quarreling about how to do it well and and they don’t like discussing it
anymore because they just could not agree agree have two real well and it’s one of the example it’s one of the
examples when the code of conduct is that’s why I mean you have to enforce it is that it’s an idea and it’s a great
idea and so it should be discussed and the fact that the committee has some history of not agreeing well that
doesn’t matter we should be discussed and I think it’s great idea the issue with something like this is that it has
to have a prior compiler implementation because it’s a big change and the idea
there would be that it would be a compile time checking essentially so you would not give you any kind of
I’m overhead but it has to be implemented in a compiler to convince the committee that it can be done that
the compiler will not get more complicated and and so the reason why we
want to have community compilers like flying it as Fortran is so that we can prototype features like this in one of
these compilers and so if you would like to help out you know get in touch with me I’d be happy
to discuss how that can be prototyped down the road and then once we have a
prototype in one of these compilers showing that it works and getting some use cases and people using it then it’s
a good time to bring it back to the committee and and and write a proposal and I invite you to join us at the j-3
github repository and open an issue and we can go from there there is an issue already open for it
I’d like to add to this answer so depending on who you ask but if you ask me maybe units of measure are more
appropriate for a library then to be part of the language itself and a few
libraries have been implemented to do this then once you have a library you can play with it and then you can see
hey is this is this good enough for our needs or should this be implemented in
the language and take it from there so sort of some some developments allow a more incremental approach and then there
are some others that you really need to change the language a little bit to allow it so the next question comes from
Denny Hearns are there any plans to version the standard library the way julia has yeah I asked in the jet I’m
not exactly sure how of Julia does it but when it comes to versioning of we will originate but I think there’s
more to the question I’m not sure okay maybe we can come back to it we get a
clarification there are nice questions for Perry so Albert ran targets supporting for 10
20 18 but since there exists a large number of Fortran programs written in Fortran 77 well the support include also
compiling Fortran 77 sources so I saw the question in fact I already got this request a few times so the
answer is yes I just have to do it yes so the idea is that essentially what you
have to have a different policy for f77 but the rest of the compiler stays the same so foreigners an ast and then it
has a representation called abstract semantic representation ASR and the ASR
I’m pretty sure it’s exactly the same for a 77 and the most modern Fulcher and so all I have to do is write a
different person to be able to parse off 77 there is a lot of lot of 577 codes
out there and so be super support helpful to have a maintained compiler for f77 that that works so absolutely
yes so that’s a great segue into the next question because so the question is
by David bro chart and it says numpy and sci fi use Fortran heavily under the hood would it make sense to use L for
trend for better integration including packaging and I’m saying this because I know that Syfy has a lot of foreign 77
code underneath especially for the optimization library so I would be interested in hearing the answer to so
first of all I think one should not depend on any one compiler so I strongly believe Fortran code any Fortran code
anybody writes it should compile with as many compilers as possible so so from that perspective I would say it should
compile with all the compilers however what Alfred John can really help I think is with development maintenance once
people start once once he gets I’m hoping once again stop the crowd and people start contributing all kinds of
warnings for Fortran compilers are not that good about warning about all kinds
of pitfalls that people are and doing mistakes the rascal bother is an example
how to do it right there are compiler warns you and if every time you make some kind of a tiny mistake not
realizing give you beautiful warning but explanation how to get it right a Fortran as many of these like if you
assign one point zero to double precision floating point the compilers
don’t warn you but but you will lose precision so things like that
but where Alfred get held down the row is of course I want to have a web assembly Beckett and I got a some
requests from Mozilla but they’re trying to porn up by its up side by to run in the browser and of course they have
issue bit further because the furture compilers cannot compel to buff assembly so things like the or on windows linking
with mhv see again this is no reason why Fortran compilers could not linked with MS PC but for some reason g4 child it’s
kind of very tricky and so to fix this if you just have to fix it there’s no question about it the only question is
how do we how do we get there and so it will still take some time but that’s the
goal so in the for packaging yes
once we can spm of the ground and hopefully the community will start using it I think it will kind of naturally God
come out of this how to how to help inside by the fire and the photon sources in there okay great um so I
think are there you have another one but we’re gonna make sure everybody gets at least one question so we’ll come back to
it if we have some time so the next question is from Marcela and Marcelo
asks does fortran have some kind of package manager’ like cargo and rest you’ve kind of answered this already but
maybe you can highlight it again or something to easily install packages from channels like pit yeah that’s the
goal that’s the goal SPL 50 and it’ll be I develop that that’s exactly what we want to fix mm-hmm so I guess the next
question would be from much Matthias
Alexandra Keys I hope I’m pronouncing it right it’s Fortran 90 Doric to be deprecated
or merged with Fortran – link yeah I’m hoping to contribute what’s in the end
to Fortran – like and then just point people to for turn this line so for 92
dork is that one example I tried to cut off make a place for for turn on the internet but it’s very hard to you know
it’s hard to pull something like this off and we I think just last year you can really
I was able to assemble the yeah you know we were able to get the initial community to to get this get this
working and I think for trend is like it’s a better website anyway better you know domain and so so what I’m going to
do is just poured all the documentation there to for turn this Lang get it
community and kind of an approved and get it in and then appoint people to just use for Travis like our next
questions from David Brooks are and the question is why not use why not use
condom instead of a language specific package manager it’s an excellent question I spend hours discussing this
very question so yes so it sounds like a
good idea to use condom except that if you look at the roster for example you
would have to put every single whereas package to Conda it’s a lot a lot of work and Conda is great for add users
but it’s not super great when you are developing a new package if you want to get a new package to go down and to really use it easily you have to first
submit content is called a poster in your to create a new package and you
have to get it in it’s kind of slow and also specifically for Fortran Conda
Conda just compost condo is a binary package manager so it gives you a binary but the binder is not optimized for your
architecture and to keep with Fortran is you have to get the performance in other
words you have to compile it for your architecture with all the optimizations on for production runs
and so cargo allows that and FP able also allow it’s a source package manager so it’s composed everything for you for
your architecture but with your compiler optimization options that you want the other part is for turns about you know
seven active compilers so which one would use for Conda and you want to use
all of them so I get fpm would allow you to switch the compiler and finally like a philosophical question let’s say there
is only one compiler like julia is an example and see just one compiler why would Julian develop their own package
manager versus using Conda so spend hours discussing with the junior developers also like this process and cons the idea is it by having as a
language specific manager it can understand your language specific things
like the layout it can then build the pie so if you look at cargo it builds
the binaries and the library and the tests everything for you just by putting by putting the files in a layout
a standard layout and that gets you so far it’s like so easy to develop a new
respect and we want to make it as easy to develop at the bottom package however what I would like to
have I would like fpm to be able to generate the content package out of out of this automatically it kind of so that
it becomes very easy for example to port let’s DVD start will use gfortran let’s say so I would like s be able to
make it very easy for people to take and get create content packages g4r based
okay great so we’ve had so many good user questions and we’re sorry we couldn’t get to all of them but we’re
running out of time so again thank you all for asking such good questions we’ve
had a really good discussion about Fortran so to kind of close things out we’re gonna do our ramp slash rave
section where each person on this webinar gets a 15 seconds so back to
rant a rave about whatever topic that they feel like so Andre you’re up first
oh well fifty second so I would say be nice if C++ could compile faster and if
they if they had a package manager like rust-eze okay great
maybe a rent my recent pet peeve is when when I see C collaborators get really
into extreme tooling and by extreme tooling I mean when you have to have all your CI setup building for all platforms
before you start writing any code I like to take the opposite approach listen
you’re up next well mine is it’s neither a rant or rave
is more like a note but I would like to remember John Conway who sadly passed
away this week and he’s known for the game of life but he’s done a lot of great work in mathematics and as a
mathematician I just think it’s a good thing to think about all the other things that he did beyond the game of
life yeah thanks for not to loss to the
community okay mine is like not exactly a rant or rave either but you know COBOL
has been in the news lately and and we’ve all been hearing about it and so somebody posted this week that COBOL is
tucked into a scene in the original Terminator movie which basically means that Skynet is running on Kobol so I
don’t know if that’s a rant or a rave I don’t really want to weigh in on the morality of Skynet but yeah so now we
all know that that’s what Skynet uses so great we know it’s not Ram I guess right so so that’s all the time we have for
today thanks for watching thanks for listening you can find us on Twitter at open teams and at one site AI
I’m very Malin where can people find you in Fortran so they can find me on my
website bonk JJ that’s gone and I have all the complete information there yeah
likewise my website is my first name last name me line to oxygen.com
and you know the fortunate websites that’s right you’ve given us a great
introduction to the Fortran website so hopefully we all remember and we can also google it because now it’s gonna be
one of the top results right though and here’s our call to action for all open source contributors sign up to open
teams today to build your online profile playing your contributions and get recognized for the great work you’ve
done on open source projects that you care about join us again for next
episode for an itsy-bitsy discussion on spiders thanks everybody thanks for home
[Music]