Could write a prologue plugin that figures out how to generate an openapi.json file, including the doc-comments.
Other than that I've got mostly libs that could use support with expanding/fixing rather than rewriting.
gRPC. I believe there is a protobufs library so some part is done. Apache Arrow?
GraphQL support would also be useful.
Basically, name a widely used data format or query language; if there isn't a solid Nim library for it, there should be. It should be pretty easy to come up with a short list based on that alone.
gRPC is especially difficult for anyone to support. Google, hipsters as always, don't use a standard TLS connection. You have to have TLS-ALPN support and then speak HTTP/2 to things on top of that.
I did some work incrementing us towards this in 2022--adding a couple OpenSSL bindings so we could do this. But the stdlib does not support actually using those. So you have to use OpenSSL on your own or use one of the BearSSL libs to get at it. TLS-ALPN is also literally only used for gRPC so its really a slog to try and get this upstreamed in Nim.
We do have (probably several) protobuf utilities, serializers, etc, and HTTP/2 isn't awful to implement either, but we need that one feature in stdlib which means designing the API and necessary bikeshedding for approvals before this can go anywhere.
By writing some of the example scripts, we might improve our existing library ecosystem. Most of the examples could be extracted from our SciNim packages and illustrated with plotly (or directly rendered in the browser with JS bindings).
but I would like a repository equivalent to this educational repository : https://github.com/TheAlgorithms/Python
I think that is an interesting repo/project. For those who do not know it, the project "The Algorithms" is similar to Rosetta Code but it has all its implementations on github by language. The python repo for the project is one of the most starred on github (ranked #19 according to this: https://wangchujiang.com/github-rank/repos.html).
I did ask in the past (October 2021), how does one add a language and the reply is that you can suggest a new language in #general-suggestion channel on their discord, see: https://discord.com/channels/808045925556682782/829422310040797204/902488903754350602
I think the best way to go for such a suggestion to be successful would be to create a repo with the same structure as the algorithms and start adding some stuff before actually asking there (I did not have time to go in this direction at the time). I think this needs a lead to gather start working on it and gathering contributors, are you volunteering @dlesnoff (I would be happy to contribute)? ;)
My interest at the time was also because I thought it could have been a useful use case for nimib. The project itself has a website (linked above) that showcases the implementations in all languages, but the repo could also have its independent nimib website showing the algorithms.
Most of the examples could be extracted from our SciNim packages and illustrated with plotly (or directly rendered in the browser with JS bindings).
It could be indeed very nice to have some way to show the algorithms in the browser using Js backend, but I do not think we should use SciNim packages. I think the idea is that the implementation should be as far as possible with minimal dependencies. The goal is not to have algorithm's implementation that are performant or can be used as a dependency but implementation that are simple to understand and educational. I may be wrong on this, I have not investigated enough...
Unrelated but an interesting coincidence, one of the most active contributes on The Algorithm's project (Panquesito7) has recently opened a PR on Nim website (https://github.com/nim-lang/website/pull/359), so maybe he might even read this and give us more suggestions...
Apache Arrow?
there is a work-in-progress started by arkanoid87 https://github.com/SciNim/freccia (but progress stalled last year and indeed author was consider archiving it: https://discord.com/channels/371759389889003530/755344160592101389/1054468677363322911).
I think it would be very useful a pure nim implementation of Apache Arrow (but also bindings would be nice, they would be useful also to check the pure implementation). The existence of a pure Rust Arrow implementation (https://github.com/jorgecarleitao/arrow2) is a key ingredient for the very succesful dataframe implementation polars (I am considering replacing pandas with polars in my python use cases): https://github.com/pola-rs/polars
Google, hipsters as always,
go for the boring stuff. go for completeness.
I think this needs a lead to gather start working on it and gathering contributors, are you volunteering @dlesnoff?
Working on it. I guess we can propose something like a coding challenge a week, and keep the cleanest/most readable/most educational code among the propositions, through the forum or the Discord/IRC server, so that people don't have to understand Github to publish code snippets. It also gives a good pace, and enables constructive criticism.
For style, I'll enforce Nep1 and Zen of Nim, 2 spaces indentation. Should I use Nimble ?
gRPC is especially difficult for anyone to support.
I agree. However, it has a lot of use in industry, and is well supported by many languages. I don't love it either, but it's one of those "checklist" things that can determine whether you can use a language on a project, and I mention it because I've had to use it on some projects. Rust, and C++, not Nim.
I did some work incrementing us towards this in 2022
I remember your posts on this. Good luck!
I think it would be very useful a pure nim implementation of Apache Arrow
Very much agreed. There are two in Rust, not just arrow2 but the original one that makes up some other projects. As you mention, this is a stepping stone to some potentially valuable data science libraries, where Nim IMO has some better chances against the competition on account of being syntactically similar to the dominant language in that space. I like Rust, but it's a hard sell to many Python programmers.