Fpm version 0.8.2 released: centralized registry playground

Would someone kindly provide some insight into where the exact specifications of the registry were discussed, and what it is intended to cover?

Hi @Carltoffel ,
Here is the original document that was created by @awvwgk . Sovereign Tech Fund project · GitHub

1 Like

Thanks for reporting this. I will discuss this with the team in the next weekly call.

1 Like

The problem is fixed. I have seen that @awvwgk synchronized with Weblate yesterday. I am now at 65% translated instead of 100%… :sweat_smile:

2 Likes

I am wondering how different our expectations for the repository are,
given things like github, gitlab, … are available.

  • The primary feature that I want ensured is the long term availability
    of a package.

  • The second is completeness. I want all the packages I want to be there.

  • The third is easy access both when contributing and using the
    repository.

But past those I packages that are guaranteed to be maintained for an
extended time. And to be maintainable it needs developer references
and materials.

Ease of use includes not just the procedure interface but user
documentation and examples.

Those are the essentials for me but a wish list would be much longer.

Ratings like Rotten Tomatoes or gitlab, a good search capability, and
an easy way to import into a local repository, change logs to indicate
significant changes, and a good method of reporting issues such as bugs
to the maintainers would be a good beginning.

Being able to ask questions about the packages to the maintainers and
well as on a forum such as Fortran Discourse would go a long way towards
providing communication regarding the packages.

Hopefully there are open licenses on the vast majority of packages
allowing unfettered use as-is at a minimum, but hopefully much more.

I already like how local repositories are built; as it allows for still
being able to package a project for distribution but also a way to build
a local repository essentially automatically to ensure all components of
a larger project can be secured locally and to allow for off-www use.

I am hoping a CLI-based search tool will be coming shortly. So this is
encouraging, but I think it would be nice to have a document available
where I could see how many of these features are planned.

I would hate to see it just be the new netlib (“where Fortran goes to die”)
even though netlib has been invaluable for decades.

I know there is hesitation to use github packages without making copies
because you never know when they will vanish.

It can be hard identifying what is currently available, and is a big
maintenance project for those valiant enough to try and index or collect
what is out there (so a “repository of descriptions” for those who want
their projects listed would be nice, albeit the Fortran Wiki allows
for this already). I think this Repository will help that beyond what
github/gitlab/… has already provided.

Those are some of my hopes/expectations. I wonder how closely they match
those of the project and other community members.

PS: Now that there are a few test packages it might be nice to have a
working example fpm project that can be looked at. Is that going to go
into the fpm examples and/or will there be examples at the fpm repository?

It is not immediately obvious to a new user who has never used fpm(1)
how to set up to use the repository. Once you see or create a working
example it is straight-forward to at least get going, however. You don’t
need to know on the first day how to purge the local repository and so on.

1 Like

If the fortran-lang playground could pull registered repositories and the package descriptions had an easy way to take sample codes and place them in the playground, like you can do with HTML
like put in playground

so you could click-and-play with fpm repository example programs I think that would be a nice feature.

I think that would be a great feature for the intrinsic procedures and for Fortran Discourse code as well, and also great for the Fortran Wiki examples.

Does that seem as desirable to anyone else? If generic enough, twitter posts and git repositories might use it as well. It could showcase fpm and the Fortran lang site. I do not know of any other intrinsic descriptions where you can click and run the code, for example.

I think it would be easy to do technically, as the example link using markdown shows (which works from an HTML page as well), but I have no idea if we can extend the Discourse to do that with a “```fortran” block (instead of doing it “manually” like the mini-example shows). I think would tie several things together (intrinsic example programs, repository examples, discourse, the playground and fpm).

I think I will make a "f’ program to convert a text .f90 file to html, and a javascript app to read from “program demo_*” to “end program” like all the intrinsic examples conform to, but not sure if it will be what I want; and wondering if someone already has or knows of something to do this. Not even sure what the limits to the playground are as “thinking aloud” but there seems to be good potential there.

I would love to see a little example program in a repository package description I could click on and run from the browser and then edit. There might even be some useful on-line apps that would be useful.

3 Likes

So I used the demo programs from the intrinsic descriptions to make a rough concept page at
intrinsics and the playground was surprisingly slow to respond. What limits and performance do we currently expect from the playground?

It would look much better as a Slidy HTML document, but the real target is to change the intrinsic descriptions so you can click in the descriptions. Each intrinsic demo program is listed in one big page with a fortran-lang icon above it. Click on it and you should go to the fortran-lang playground page with the program loaded, for anyone interested.

2 Likes

Hi @urbanjost , I had implemented a very similar idea for the webpage repository ( see: add: Fortran Playground Code links by henilp105 · Pull Request #184 · fortran-lang/webpage · GitHub ) it is currently under review ( Preview URL : Playground code links preview ) , you could also find a beautiful working example by @zmoon / FortranTip ( see: 006. ** is the exponentiation operator — FortranTip Browser ) , you can find an insightful discussion regarding the performance of the playground here: The playground does not work · Issue #65 · fortran-lang/playground · GitHub .

so you could click-and-play with fpm repository example programs I think that would be a nice feature.

That seems to be great, I have suggested a very similar idea in my suggestion for the Application to the Sovereign Tech Fund

Thanks

3 Likes

Thanks for the links. Because of the trouble with the playground I was trying to hook into Godbolt’s site and was having little luck at automating the code downloads. It looks like @zmoon has already done that with the Twitter pages, which will be interesting to look at an has already done it with the Twitter pages and your PR is doing very much what I was thinking with other fortran-lang pages. I was wondering about how to automate it better than they way I did my sample. So it looks llike a good number of what I listed is in progress. All kinds of good stuff there to look at. Thanks!

1 Like

Naive question: in one or two sentences, what does the registry do? I maintain a list of Fortran Tools and will add the registry project to the Build Tools section but don’t know what to say about it.

I would say something like:

the Fortran Package Manager’s official package registry. With the registry, Fortran packages are easier to discover and use in new and existing fpm projects. All are welcome to publish their packages and contribute to making the fortran-lang community stronger.

4 Likes

Some additional thoughts …

A registry ensures a stable package hierarchy is accessible over extended periods of time,
acting much more like a standard library would instead of as a disparate collection of packages.

It promotes long-term community support of packages.

Local package registries can be automatically generated. This reduces not only the traffic and
time required to acquire local copies of packages but reduces duplication and creates a
cache of locally required packages that will generally be highly available and easily copied
to non-www machines.

5 Likes

Is it planned for there to be support for apps as well as dependencies in the registry?

The proto-registry can hold any conformant fpm project so a package building an app instead of providing a module or library dependency can be stored, but so far I see no commands to access them as a plugin or fpm subcommand.

In lieue of that something to automatically convert an fpm package to another package (like the “other” fpm that shares the same name) and a description of how to create a apt(1) or whatever package would be nice; but fpm has all the components that a simple set of commands should be ablt to build from, so you could enter something like

   fpm install  --namespace app --package fsplit90 --registry default  -C /tmp

that would do something like go to the /tmp directory, expand the specified package, do a regular install, and by default delete the package. Assuming -C /tmp and -registry default were the defaults, you would have the fsplit90 program build and installed on your platform.

For the same reason it would be nice to be able to just get a clone of a repository entry that might potentially exist no where else to create a new or custom version of it.

Or is the repository seen as strictly for creating packages of dependencies?

You can do a basic version of that now with a small plugin script; but wondering what the intended direction is?

3 Likes

Let’s give it some more thoughts @urbanjost -

I think it’s a very good idea and I don’t see why that shouldn’t be possible.

I think it could be a simple installer as you’re saying, maybe using the local registry, I.e. no full ability to reinstall/uninstall/upgrade apps in the first place; but that could come next!

2 Likes