[Caml-list] Attn: Development Editor, Latest OCaml Weekly News

Alan Schmitt
2025-12-23T11:01:08Z

[-- Attachment #1: Type: text/plain, Size: 19336 bytes --]

Hello

Here is the latest OCaml Weekly News, for the week of December 16 to 23,
2025.

Table of Contents
─────────────────

Camp, the Caml Amp
Ahrefs Grant Program for OCaml
Call for Contributions: Caml in the Capital (Feb 26)
Dream – looking for maintainers to take ownership
QCheck 0.90: The Great Renaming
Other OCaml News
Old CWN

Camp, the Caml Amp
══════════════════

Archive:
<https://inbox.ci.dev/caml-list/B7852825-335E-4F3F-87C0-7D10F14090DA@mpi-sws.org/>

Andreas Rossberg announced
──────────────────────────

Happy to share “Camp”, the Caml Amp — an old-school music player
heavily inspired by good old Winamp, with a focus on decent music
library and playlist handling.

I was fed up with Winamp being dead and lacking features I wanted, so
I went into full-on nerd mode and implemented my own opinionated
replacement, all in OCaml using the Raylib library:

<https://mpi-sws.org/~rossberg/camp/>

If you have not yet been sucked in by the streaming cartels, you might
find it useful.

• Runs on Windows, Mac, and Linux
• Support for WAV, FLAC, MP3, OGG, QOA, MOD, and XM
• Advanced music library management with many browse and search
features
• Elaborate playlist manipulation and query-based “smart” playlists
• Animated user interface styled after hifi when it still looked good
(no corners were rounded in the making of this app)

Enjoy, /Andreas

Ahrefs Grant Program for OCaml
══════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ahrefs-grant-program-for-ocaml/17604/1>

Louis Roché announced
─────────────────────

Ahrefs is excited to announce a new *Ahrefs Grant Program for OCaml*
to support projects in the OCaml ecosystem. This effort comes in
addition to the other sponsorships we do (such as the [OCSF], the
[ICFP] and [Fun OCaml] conferences, [github sponsoring], and [various
other projects]) We are allocating money to fund one or multiple
initiatives that help advance OCaml and its tooling.

You can learn more about our engineering culture and opensource
support work at [https://ahrefs.com/tech]

[OCSF] <https://ocaml-sf.org/>

[ICFP] <https://icfp25.sigplan.org/>

[Fun OCaml] <https://fun-ocaml.com/>

[github sponsoring] <https://github.com/orgs/ahrefs/sponsoring>

[various other projects] <https://ahrefs.com/tech>

[https://ahrefs.com/tech] <https://ahrefs.com/tech>

Call for Applications
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

We invite individuals, teams, and organizations working with OCaml to
submit proposals for funding. Our goal is to support meaningful,
practical improvements to the ecosystem, whether through new tools,
libraries, infrastructure, education, or long‑term maintenance of
existing projects.

Applications should be submitted through [this google form].

The deadline for submissions is January 20th 2026.

[this google form]
<https://docs.google.com/forms/d/e/1FAIpQLScUNAAnzYezhL6HRraUcbky_VBk9klLdh86TFJWBI8TKhpqcw/viewform>

What We Are Looking For
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

We welcome proposals that:

• Strengthen the OCaml compiler or core libraries
• Improve developer experience (tooling, documentation, debugging,
profiling, packaging, …)
• Expand the OCaml ecosystem through new libraries or modernization of
key dependencies
• Enhance reliability, performance, or safety of OCaml‑based systems
• Support education, community infrastructure, or long‑term
maintenance

Both small and large initiatives are welcome. We will prioritize
projects that will have lasting impact and will be maintained.

The selection of proposal will necessarily be subjective and depend on
our priorities and interests.

Funding
╌╌╌╌╌╌╌

Applicants may request up to *USD 50,000* in support per project. We
may award a single project or distribute among several proposals.

How to Apply
╌╌╌╌╌╌╌╌╌╌╌╌

Your application should follow the format below and be sent through
[this google form].

Please be short and to the point in your answers; focus primarily on
the what and how, not so much on the why. If English isn't your first
language, don't worry — our reviewers don't care about spelling
errors, only about great ideas. You can be as technical as you need to
be. Do stay specific.

[this google form]
<https://docs.google.com/forms/d/e/1FAIpQLScUNAAnzYezhL6HRraUcbky_VBk9klLdh86TFJWBI8TKhpqcw/viewform>

◊ *1. Contact Information*

• *Name*
• *Organization* (if applicable)
• *Email address*
• *Country*

◊ *2. General Project Information*

• *Title*
• *Abstract* (up to 1200 characters) Explain the *whole project* and
its expected outcome(s).
• *Yourself or the team* (2500 characters) Who is participating? Have
you been involved with similar or related projects? Please provide
background information and describe your past contributions.
• *Website* (if any)
• *License* Under which license will the project be distributed? It
*must* be an open source license.

◊ *3. Requested Support*

• *Requested Amount* (up to USD 50,000)
• *Budget and Breakdown* (up to 2500 characters) Explain what the
budget will be used for. Are there other funding sources? Include a
breakdown of tasks, estimated effort, and explicit rates.
• *Describe your project and its technical challenges* (up to 5000
characters) What are significant technical challenges you expect to
solve during the project, if any? Compare your own project with
existing or historical efforts. E.g. what is new, more thorough or
otherwise different.
• *Ecosystem and Outreach* (up to 1200 characters) Describe the
project ecosystem and how you will engage with relevant actors or
promote the adoption.

Questions
╌╌╌╌╌╌╌╌╌

If you have questions prior to submitting an application, feel free to
reach out at `grants@ahrefs.com'.

We look forward to support the work that will move the OCaml ecosystem
forward.

Call for Contributions: Caml in the Capital (Feb 26)
════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/call-for-contributions-caml-in-the-capital-feb-26/17606/1>

"Alistair O'Brien announced
───────────────────────────

Hey all 👋,

A quick follow-up on Caml in the Capital: the first meetup is now
confirmed 🎉.

*When*: Thursday 26th February 2026, 6:30-8:30pm

*Where*: Imperial College London, Flowers Building

Thanks to everyone who helped settle on a date!

Call for contributions
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

We’re still looking for presenters! Talks are workshop-style: anything
from an accessible introduction of your work or research, a deep dive
into your library, a live demo, or a tutorial.

If you’d like to give a talk, please message me or @giltho directly
with:
• A title
• Short abstract
• Expected time slot

*Deadline*: 1st February 2026

We’ve set a deadline so we have enough time to finalize the programme
and handle the practical organisation (room setup, schedule,
announcements, etc.).

Call for participation
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

You’re very welcome to attend even if you’re not presenting. If you
plan to attend, please register [here].

Many thanks to Imperial College for hosting us and OCaml Software
Foundation for funding us!! :raised_hands:

Alistair & Sacha

[here]
<https://www.eventbrite.sg/e/caml-in-the-capital-feb-2026-tickets-1977730614507?aff=oddtdtcreator>

Sacha Ayoun later added
───────────────────────

If there are any additional questions on registration, organisation,
logistics, feel free to ask questions in this thread, or in the
[dedicated Zulip channel](
<https://ocaml.zulipchat.com/#narrow/channel/553375-Caml-In-The-Capital>)
🙂

Dream – looking for maintainers to take ownership
═════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/dream-looking-for-maintainers-to-take-ownership/17607/1>

Anton Bachin announced
──────────────────────

*[Dream]*, the Web framework, is looking for a maintenance team!

I originally wrote Dream in 2021, and actively maintained it for
several years. It has gotten many great contributions from other
authors since its first release, for which I am very grateful!

At the present time, I am no longer in a position to sustainably
maintain Dream. I’d like to yield it to one or several maintainers,
who would have the ability to pursue their vision, bring their ideas,
credibly seek funding for work that substantially affects it, and cite
it on their resume or elsewhere. In other words, to take ownership of
it. I would stay on in an advisory role, to transfer knowledge, help
negotiate, and assist in various ways, as a volunteer.

We’ve already been having Dream community development meetings over on
Discord since August, which have been very helpful. Last month, I
transferred Dream to an org on GitHub. It’s ready for the next step
:slight_smile:

Dream has a very large amount of interesting work to do. The original
motivation was not only to create a modern, highly ergonomic Web
framework in a minimal sense, but to do a whole tour through the OCaml
Web development ecosystem and address every other place where a major
library is missing, or where quality of life can be improved. See the
[roadmap] for some of the many ideas.

In fact, we had started working on this back in 2022 with a small team
of people, and created an OAuth library. That enterprise was
unfortunately terminated by events outside our control, and the
logical step now is for me to yield control of Dream itself to a
differently structured team, for its natural development
:slight_smile:

If you’re interested, please DM me here on Discuss! If you have such,
please link your projects related to Web development, or where you
have been a maintainer. Let me know if you’re a user of Dream, and
what you’d like to see in Web development in OCaml.

Thank you!

[Dream] <https://github.com/camlworks/dream>

[roadmap] <https://github.com/camlworks/dream/wiki/Roadmap>

QCheck 0.90: The Great Renaming
═══════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-qcheck-0-90-the-great-renaming/17613/1>

Jan Midtgaard announced
───────────────────────

It is my pleasure to announce release 0.90 of the QCheck
packages. QCheck is an OCaml library for randomized property-based
testing in the style of Haskell's QuickCheck.

<https://github.com/c-cube/qcheck/releases/tag/v0.90>

It has been over 12 years and 40 releases since @c-cube released
version 0.1 back in October 2013. Over this period QCheck has grown
organically
• with new combinators on a "by-need" basis and
• with a separate `QCheck2' module offering generators with integrated
shrinking.

This has unfortunately resulted in a bit of a naming mess with
inconsistent generator names. For example, the (now deprecated)
`small_int' combinator will generate only small non-negative numbers,
and a combinator for generating positive integers uniformly is named
either `pint' or `pos_int' across different QCheck modules.

The 0.90 release thus takes on a cleanup under the heading "The Great
Renaming". To guide the renaming process, we have assembled a list of
hard-learned naming principles:

• Generator names should align with type names (`bool', `char', …
`list', `option') to be as predictable as possible
• We should have short, unparameterized generators (`int', `string',
…) to lower the barrier to entry
• Specialized generators also start with the type name, but use a
consistent suffix (`_pos', `_neg', `_size', `_of', …) to help find
them, e.g., with tab-completion
• We may include a few shorthand names for convenience (e.g., `nat')
• Overall we aim to be as consistent as possible, e.g., offering
similar signatures across generator interfaces (`QCheck.Gen',
`QCheck.arbitrary', and `QCheck2.Gen')

The 0.90 release thus both
• introduces a range of new (and hopefully more consistent) combinator
names and
• deprecates a sizable number of old, inconsistent combinator names

The deprecated combinators have been annotated with `@@deprecated'
attributes.

Rather than let a couple more years pass with an even bigger and more
confusing name pool, we are using this opportunity to prepare a long
overdue 1.0.0 release, where we will remove the old, deprecated
combinator names.

We understand that updating existing tests to the new names takes some
effort, but appeal to users that this should be a one-time investment
to
• offer more consistent and easier to recall combinator names and
simultaneously
• let us clean up QCheck tech debt and address a long-time pain point.

The changes are summarized in a record-long CHANGELOG section for the
release:

<https://github.com/c-cube/qcheck/blob/v0.90/CHANGELOG.md>

and [c-cube/qcheck#366] provides a run down of the renaming process.

For more details, see the following list of PRs:

• [qcheck/pull#367]
• [qcheck/pull#369]
• [qcheck/pull#370]
• [qcheck/pull#371]
• [qcheck/pull#372]
• [qcheck/pull#373]
• [qcheck/pull#374]
• [qcheck/pull#376]
• [qcheck/pull#379]
• [qcheck/pull#380]
• [qcheck/pull#381]
• [qcheck/pull#386]
• [qcheck/pull#387]
• [qcheck/pull#388]
• [qcheck/pull#389]
• [qcheck/pull#390]
• [qcheck/pull#391]
• [qcheck/pull#392]
• [qcheck/pull#393]
• [qcheck/pull#394]
• [qcheck/pull#396]

Finally, on behalf of the maintainers I would like to thank
• the various folks contributing to QCheck over the past 12 years and
• the OCaml Software Foundation for financially supporting the work on
these past three releases.

Merry Christmas and happy testing! :evergreen_tree: :wrapped_gift:

[c-cube/qcheck#366] <https://github.com/c-cube/qcheck/issues/366>

[qcheck/pull#367] <https://github.com/c-cube/qcheck/pull/367>

[qcheck/pull#369] <https://github.com/c-cube/qcheck/pull/369>

[qcheck/pull#370] <https://github.com/c-cube/qcheck/pull/370>

[qcheck/pull#371] <https://github.com/c-cube/qcheck/pull/371>

[qcheck/pull#372] <https://github.com/c-cube/qcheck/pull/372>

[qcheck/pull#373] <https://github.com/c-cube/qcheck/pull/373>

[qcheck/pull#374] <https://github.com/c-cube/qcheck/pull/374>

[qcheck/pull#376] <https://github.com/c-cube/qcheck/pull/376>

[qcheck/pull#379] <https://github.com/c-cube/qcheck/pull/379>

[qcheck/pull#380] <https://github.com/c-cube/qcheck/pull/380>

[qcheck/pull#381] <https://github.com/c-cube/qcheck/pull/381>

[qcheck/pull#386] <https://github.com/c-cube/qcheck/pull/386>

[qcheck/pull#387] <https://github.com/c-cube/qcheck/pull/387>

[qcheck/pull#388] <https://github.com/c-cube/qcheck/pull/388>

[qcheck/pull#389] <https://github.com/c-cube/qcheck/pull/389>

[qcheck/pull#390] <https://github.com/c-cube/qcheck/pull/390>

[qcheck/pull#391] <https://github.com/c-cube/qcheck/pull/391>

[qcheck/pull#392] <https://github.com/c-cube/qcheck/pull/392>

[qcheck/pull#393] <https://github.com/c-cube/qcheck/pull/393>

[qcheck/pull#394] <https://github.com/c-cube/qcheck/pull/394>

[qcheck/pull#396] <https://github.com/c-cube/qcheck/pull/396>

Other OCaml News
════════════════

From the ocaml.org blog
───────────────────────

Here are links from many OCaml blogs aggregated at [the ocaml.org
blog].

• [AoAH Day 21: Complete dynamic HTML5 validation in OCaml and the
browser]
• [AoAH Day 20: Human language detection in native code, JS and wasm]
• [AoAH Day 19: Zulip bot framework to bring Vicuna the friendly camel
back]
• [AoAH Day 18: TOML 1.1 codecs directly from the spec and paper]
• [Claude and Dune]
• [Partridge Puzzle]
• [AoAH Day 17: OCaml JMAP to plaster my painful email papercuts]
• [AoAH Day 16: Vibesplaining JSON Pointers using OCaml/Javascript]
• [AoAH Day 15: Porting a complete HTML5 parser and browser test
suite]

[the ocaml.org blog] <https://ocaml.org/blog/>

[AoAH Day 21: Complete dynamic HTML5 validation in OCaml and the
browser] <https://anil.recoil.org/notes/aoah-2025-21>

[AoAH Day 20: Human language detection in native code, JS and wasm]
<https://anil.recoil.org/notes/aoah-2025-20>

[AoAH Day 19: Zulip bot framework to bring Vicuna the friendly camel
back] <https://anil.recoil.org/notes/aoah-2025-19>

[AoAH Day 18: TOML 1.1 codecs directly from the spec and paper]
<https://anil.recoil.org/notes/aoah-2025-18>

[Claude and Dune]
<https://jon.recoil.org/blog/2025/12/claude-and-dune.html>

[Partridge Puzzle]
<https://www.tunbury.org/2025/12/17/partridge-puzzle/>

[AoAH Day 17: OCaml JMAP to plaster my painful email papercuts]
<https://anil.recoil.org/notes/aoah-2025-17>

[AoAH Day 16: Vibesplaining JSON Pointers using OCaml/Javascript]
<https://anil.recoil.org/notes/aoah-2025-16>

[AoAH Day 15: Porting a complete HTML5 parser and browser test suite]
<https://anil.recoil.org/notes/aoah-2025-15>

Old CWN
═══════

If you happen to miss a CWN, you can [send me a message] and I'll mail
it to you, or go take a look at [the archive] or the [RSS feed of the
archives].

If you also wish to receive it every week by mail, you may subscribe
to the [caml-list].

[Alan Schmitt]

[send me a message] <mailto:alan.schmitt@polytechnique.org>

[the archive] <https://alan.petitepomme.net/cwn/>

[RSS feed of the archives] <https://alan.petitepomme.net/cwn/cwn.rss>

[caml-list] <https://sympa.inria.fr/sympa/info/caml-list>

[Alan Schmitt] <https://alan.petitepomme.net/>

[-- Attachment #2: Type: text/html, Size: 30755 bytes --]