OCaml Weekly News
Hello
Here is the latest OCaml Weekly News, for the week of December 16 to 23, 2025.
Table of Contents
Camp, the Caml Amp
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
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
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.
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.
- 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)
"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
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
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!
QCheck 0.90: The Great Renaming
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
QCheck2module 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, andQCheck2.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:
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
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.