Taking Inventory of the OCaml Ecosystem on OCaml.org

Hey everyone,

we have an open PR on ocaml/ocaml.org (Add "Are we X yet?" pages by tmattio · Pull Request #1226 · ocaml/ocaml.org · GitHub) to show an approximation of what the state of the OCaml ecosystem is with respect to different topics / use cases.

This addition is inspired by Rust’s excellent “Are we X yet?” pages which

  1. highlight libraries that are production-ready, well-documented, and have a nice API in the different categories. This is a showcase where we want to proudly point newcomers to.
  2. offer a high-level overview of the usability of the language for certain applications.

These pages make visible where contributions to the ecosystem would be particularly valuable to the OCaml community. They are a starting point for (prospective) package authors to see where gaps in the ecosystem are, so they can create successful open source projects that meet community demand! (I know at least one company which is interested in contributing to funding such projects. :wink:)

This is where you come in:

  1. Please help us give these pages an iconic name / title. Got an idea? Reply to this post! Make it memorable.
  2. Are there any important categories missing?
  3. Contributions are always welcome - none of use here is an expert on the ever-growing OCaml ecosystem!
15 Likes

We’ve got some great collaboration going on on the PR - a huge thanks to all contributors for your input!

There’s been a focus on “Is OCaml Web Yet?” until now and we’ve made good progress there. It’d be great to also map the ecosystem for the other pages: Gaming, GUI, Machine Learning and Multicore (and others?).

If you’ve done work in any of these domains, your help to make an inventory of the available libraries and describe the state of the ecosystem is greatly appreciated - don’t hesitate to share any insights here or on the PR!

GitHub - ocaml-community/awesome-ocaml: A curated collection of awesome OCaml tools, frameworks, libraries and articles. is kind of inventory. It is partial, but sorted by category. If you feel something is missing: fork, update, pull request.

It’s a great resource to use and can help with the list of libraries, but the awesome list doesn’t quite have the same objective as these “Is OCaml X Yet?” pages.

The goals of these pages, as stated in the PRs are:

  • For newcomers, it offers an overview of the usability of OCaml for certain applications.
  • For OCaml users, it can help the discovery of libraries and frameworks to perform certain tasks
  • For community members, it can serve as a roadmap to focus our efforts on addressing specific pain points to make OCaml competitive with other languages for specific use cases

The awesome list is great for the second goal but doesn’t help much for the first and third ones.

So something we’re trying to take inventory of, in addition to a list of libraries, is: what’s missing in each domain of application to consider OCaml “ready”.

1 Like

In Awesome OCaml, there is a section « Large Source Code Examples » put at the same level than the other. It deals with some OCaml use cases but could be expanded.

I don’t know how you will address the 3/ roadmap. Do you mean a list of what is missing or immature in the OCaml ecosystem ?

Speaking of Machine Learning, I think we need a category for numerical/scientific programming, including things like Zarith, Owl, and related libraries.

5 Likes

Regarding OCamlverse, won’t this project have a lot of overlap with that? Is your goal to replace OCamlverse with this project?

I don’t know how you will address the 3/ roadmap. Do you mean a list of what is missing or immature in the OCaml ecosystem ?

Exactly, the main idea here is to make visible contribution opportunities on existing projects and also opportunities for new projects that people would like to see happen.

For example, in the GitHub PR, @edwin referenced the feature grid for HTTP clients in Simple, modern HTTP client library? - #14 by edwin (@antron let us know that hyper plans to address this gap - Thanks! :+1:). When I see a feature grid like that, I get a better idea of whether a given package is suitable for my usecase and I also can see the potential for improving the existing packages.

I am sure we have a lot more of these kinds of discussions and lists all over the web and on this Discuss forum. If we can tie these loose ends together, we get a high-level view of the OCaml ecosystem’s maturity.

True, there would be overlap in the lists of packages.

For the sake of not duplicating efforts, it would probably make sense for either this effort to merge into OCamlverse or for OCamlverse to merge into a dedicated section on the ocaml.org site.

We’ve already reached out to the OCamlverse maintainers to discuss.

However, it’s too early to give a definite answer on this - this PR is still at an early stage where we’re exploring what a bird’s eye ecosystem maturity view should look like in order to facilitate ecosystem growth. So any feedback on what you want to see in terms of maturity (e.g. do we want feature grids?) would be super helpful! :slightly_smiling_face:

3 Likes

As I mentioned there I think these “are we x yet” pages should rather be data driven via opam tags which have been untapped for a very long time. They will rot away faster than your average webpage and when I publish a new package I have absolutely no interest in scouring the web for all these lists to add my little contribution. There’s already enough work in the release process.

Basically define well scoped tags to use by packages to indicate which kind of service they provide and simply a stable or ready tag to indicate maturity. These pages can then simply be generated to provide the current eco-system view by aggregating the data from the opam-repository.

5 Likes

think these “are we x yet” pages should rather be data driven via opam tags

I agree with the idea of doing more with opam tags and adding proper package categories.

Which reminds me: we should make it possible to filter opam tags on the package search/directory, and start drafting out a “blessed” taxonomy of categories and tags. I would also like to give these maturity tags a blessed status on the package search results page and on the package overview pages (to increase scannability as they will not be lost in the sea of other tags).

That is already done.

1 Like

UI that shows which tags are interesting/relevant is missing, though. :slight_smile:

I’m very happy to see this effort taking place. Unlike software, I don’t see duplication of effort with multiple sources of documentation being a bad thing, and additionally, I’d be very pleased if the resulting pages on ocaml.org are so good they make OCamlverse’s ecosystem coverage obsolete.

6 Likes