AI/LLM Usage (4 questions) - Do you use AI/LLM tools for OCaml development? Which ones? What for?
Debugging & Profiling (3 questions) - What debugging approaches and tools do you use? What are the biggest challenges? (Motivated by frequent mentions of debugging difficulties in the 2023 free-text responses.)
New standalone questions:
Community size preference (“I wish the community was…”)
Documentation tools used (odoc, ocamldoc, etc.)
Dedicated free-text fields for tooling and package repository feedback
Removed questions (10 total) - questions that yielded low-actionability data or were redundant, including: largest project size, release schedule satisfaction, source hosting platform, web deployment platforms, “OCaml tooling provides a comfortable workflow for me”, “OCaml libraries are stable enough”, “software written in OCaml is easy to maintain”, and the language feature wishlist (effect handlers have shipped in OCaml 5).
Modified questions - new answer options reflecting ecosystem evolution: OxCaml, Zig, Helix, Zed, WebAssembly targets, dune package management, Nix-based builds, Bluesky, and AI/LLM-related options in the “burning desires” section. Old compiler versions (4.02-4.06) collapsed into “≤4.07”. Benchmarking tools now listed by specific name rather than category.
We’d love your feedback on:
Are there questions you think should be added or removed?
Are any answer options missing?
Are there new topics that are important to the OCaml community that we should ask about?
Is the survey too long, too short, or about right at 58 questions?
Thank you for helping us make the survey as useful as possible!
It is not (am not sure how the inference was made). As mentioned at the top of the message, the survey is run by the OCSF. @sabine is collaborating with the OCSF, on an individual capacity, to help prepare the 2026 edition.
Q3: it might be nice to have the “For work, in open source” option
Q26 should have 5.5. Depending on when the survey is going to be published and stop taking answers you can optionally add (pre-release) to it, but a generic 5.5 should do it in all cases.
Q29 should have “during the pre-release period” as an answer.
Q30 should probably have “Reliance on a compatible ppxlib version” and i think “Breaking changes” should be split into “Breaking changes (type-checking)” and “Breaking changes (standard library)”. The latter happens quite often for projects that aren’t careful enough when using open/M.() and also happened in a more direct form during the 4.14/5.0 migration.
Q32. The answer “cpp-style […]” should probably have an example for such tool (e.g. cppo)
Q34 should probably have “cram-style/expectation/functional tests”
I find Q53 is fairly weird. “state of the art” feels like an extremely vague metric which can mean wildly different things depending on the person. I feel like it would be better to ask “what would you like the OCSF to improve” or something like that, if that’s the value of the question.
I remember someone requesting to have overlapping or approximative time ranges. It’s maybe less precise but it’s easier to answer when you are unsure or when you happen to fall on the limit.
Also in my case I’d basically like to fill up 2 surveys or 2 entries of the survey. I do very different projects for work and for play and it’d be weird to answer, say, “Which types of software have you or do you currently develop with OCaml?” with two unrelated sets.
There are at least two kinds of ethical reasons for opposition to using AI: 1) using AI is inherently bad (e.g., because it takes away jobs); 2) AI companies engage in unethical practices that I don’t want to support.
Reason-category 2 could be remedied in the future, for example, by having new companies enter, having old companies reform, or using local models.
If I encountered the answer choice “I don’t use AI and have no plans to because I am morally opposed to AI,” I would hesitate to select that choice because my reason would be in category 2, and the wording makes it seem (to me) as though it applies only to reasons in category 1. “Morally opposed” might also not be about ethics but rather such reasons as it offends one’s sensibility or standards relating to how software engineering ought best to be accomplished or is uncreative or similar.
E.g., I’m X, only hack OCaml for hobby projects, and would never use AI. But if I were still a pro (and had the enormous fortune of being hired to hack OCaml?) I’m sure I’d feel constrained to use AI, yeah.
On Q23, it probably counts if I have cross-compiled for Webassembly (since I don’t think there is a Webassemly platform for development per se, is there?), but if I cross-compiled for Windows, that probably isn’t intended to count as using the Windows platform. It might be worth clarifying that.
Some questions seem to miss an “I don’t know”, e.g. “Q53. If one piece of the ecosystem could magically be made state-of-the-art, I would ask for: […]”
For Q40, although this could fit under “Other”, the Windows version of ocamldebug is less feature-full and more difficult to use (as far as I have noticed and understood). That could possibly be a frequent answer among others developing on Windows.
(In my case, since the project I worked on was cross-platform, I often used the debugger on Linux first to see if I could track down the problem before switching to Windows, esp. if I couldn’t reproduce the bug under Linux.)
Q25, and Q31 through Q35 refer to “your current projects”, while some previous questions refer to “the past year”. Is it intended that someone who has recently separated from a project that they worked on in the last year would not answer those questions? Contextually, Q26 through Q30 seem like they might be intended also to apply to current projects as referred to in Q25.
Right. I don’t want to go deep into the ethical implications of AI usage. Maybe the question could be rephrased more like “no, and it’s an active choice” as opposed to just not planned at the moment.
Thanks @sabine as always for your hard work on this!
One question I’m really curious about is the CPU architectures people are deploying to: x86, ARM32/64 and the more obscure RISC-V/S390/POWER. We’re deprecating/have deprecated 32-bit native code for 32 bit architectures, but I don’t have much insight into how much (e.g.) RISC-V is being used by the community. And more importantly, how much do people want to use other CPU architectures but can’t currently (e.g. due to shortcomings in cross-compilation or other matters)?
Q20. Could we split the “translating from other languages” into “translate code from other languages into OCaml” and "translate OCaml into other languages "? I think very few people are doing the latter today, but … it is a technique I’m adopting to mitigate OCaml’s lack of first-class support for widely used platforms like Windows and Android, and I suspect others who love OCaml as their primary programming language may adopt it by your next survey.