# OCaml Users Survey: 2023 vs 2026 Question Differences
**2023: 57 questions | 2026: 59 questions**
## Summary of Changes
- **New sections:** AI/LLM Usage (4 questions), Debugging & Profiling (3 questions)
- **New standalone questions:** Community size preference (Q17), CPU architectures (Q25), Documentation tools (Q37), Tooling feedback (Q38), Package repository feedback (Q47)
- **Removed questions:** 10 questions removed
- **Net change:** +2 questions
---
## New Sections
### Community Growth (Q17)
New question about community size preferences.
```
Q17. Regarding the size of the OCaml community, I wish the community was...
- Smaller
- The current size is about right
- Bigger
- A lot bigger
- I have no opinion
```
*Justification: Understanding whether the community wants growth helps inform outreach and adoption strategies.*
### AI/LLM Usage (Q18-Q21)
Four new questions about AI/LLM tool usage for OCaml development.
```
Q18. Do you use AI/LLM tools for OCaml development?
Q19. Which AI/LLM tools do you use with OCaml?
Q20. What do you use AI/LLM tools for in OCaml development?
Q21. Anything else you want to say on AI/LLM tools or use for OCaml development?
```
*Justification: AI tools have become prevalent in software development since 2023; understanding adoption patterns helps prioritize tooling investments.*
*Implementation note: This section can be made conditional in Google Forms. If Q18 = "No, ..." options, questions Q19-Q21 can be skipped.*
### CPU Architectures (Q25)
New question about target CPU architectures.
```
Q25. Which CPU architectures do you target?
- x86_64
- ARM64 (aarch64)
- ARM32
- RISC-V
- POWER
- S390
- I don't know
- Other
```
*Justification: Provides data for compiler team resource allocation, especially for RISC-V demand and ARM32 relevance (Android Wearables/TV).*
### Debugging & Profiling (Q39-Q41)
Three new questions focused specifically on debugging approaches and profiling tools.
```
Q39. What debugging approach do you primarily use?
Q40. Which debugging and profiling tools do you use?
Q41. What are your biggest challenges with debugging/profiling?
```
Q40 includes: ocamldebug, earlybird, gdb/lldb, ppx_minidebug, Logs library, perf, eBPF (Linux), DTrace (FreeBSD/macOS), memtrace, Landmarks, magic-trace.
*Justification: 2023 free-text responses frequently cited debugging difficulties as a pain point, particularly lack of good debugging for native executables.*
### Documentation Tools (Q37)
New question about documentation tooling.
```
Q37. Which documentation tools do you use?
- odoc
- ocamldoc
- None
- Other
```
*Justification: Understanding documentation tool adoption helps prioritize ecosystem investments.*
---
## Removed Questions
| 2023 Q# | Question | Reason for Removal |
|---------|----------|-------------------|
| Q18 | How large was the largest OCaml project you contributed to? | Low actionability; project size data didn't yield actionable insights |
| Q27 | How do you feel about the compiler's every-six-month release schedule? | Low actionability; responses consistently skewed to "just right" |
| Q31 | Where do you host your software sources? | Not OCaml-specific; GitHub dominance (87%) made this uninformative |
| Q35 | If you deploy on the web, what platform(s) are you using? | Low response rate; most respondents don't deploy web applications |
| Q38 | OCaml tooling provides a comfortable workflow for me | Consolidated—Q45 (tooling confusing to newcomers) captures the key insight |
| Q40 | What would you change? [about tooling] | Replaced with specific text field Q38 ("What would you change about OCaml tooling?") |
| Q42 | What would you change? [about package repos] | Replaced with specific text field Q47 ("What would you change about OCaml's package repositories?") |
| Q46 | OCaml libraries are stable enough for my needs | 69% satisfaction in 2023; stability is not a priority concern |
| Q48 | Software written in OCaml is easy to maintain | 74% agreement in 2023; maintainability is a known strength, not a concern |
| Q51 | If I was granted up to three new language features... | Effect handlers shipped in OCaml 5; question is outdated |
---
## Modified Questions
### Q3. Usage context
- **Added options:** "For teaching", "For work, in open source"
- *Justification: 2023 responses showed ~10 teaching-related "Other" entries; open-source work (e.g. funded maintainers) is distinct from industry or hobby*
### Q4. OCaml usage at workplace
- **Added option:** "I don't use OCaml at work"
- *Justification: Respondents who are employed but only use OCaml for personal projects had no appropriate option*
### Q8. Other programming languages
- **Added:** Zig
- *Justification: Growing language in the systems/FP space*
### Q9. Software types developed
- **Added:** "Command-line tools/utilities", "Games", "Mobile applications (Android/iOS)"
- *Justification: 2023 "Other" responses showed CLI tools and Games as common categories; mobile development is present in Q10 domains but was missing here*
### Q11. How did you first hear about OCaml?
- **Changed:** From select dropdown to text field
- *Justification: 2023 showed diverse discovery paths; free text captures nuance better*
### Q15. Community interaction platforms
- **Added:** Bluesky, Telegram, "Local meetups / user groups"
- **Changed:** "X (formerly Twitter)" → "X / Twitter"
- *Justification: Platform evolution since 2023; IRL meetups were missing from options*
### Q23. Development platforms
- **Added:** WebAssembly
- **Added clarification:** "(Your development machine, not cross-compilation targets.)"
- *Justification: 2023 "Other" responses included WebAssembly; clarification avoids confusion with cross-compilation targets*
### Q24. Target platforms
- **Added:** "Web/Browser (via js_of_ocaml or Melange)", WebAssembly, "Unikernels (MirageOS)"
- *Justification: 2023 "Other" responses included these; WebAssembly support has improved; Melange is now a major web compilation target alongside js_of_ocaml*
### Q26. Language implementations
- **Added:** OxCaml
- *Justification: OxCaml (Jane Street's OCaml fork) is publicly available and gaining visibility*
### Q27-Q28. Compiler versions
- **Changed:** Collapsed old versions (4.02-4.06 into "≤4.07")
- **Added:** 5.2, 5.3, 5.4, 5.5
- *Justification: Only 2% used versions older than 4.08 in 2023; OCaml 5.x adoption is now mainstream*
### Q29. Installation methods
- **Added:** "dune package management"
- **Changed:** "Npm" → "npm/yarn/pnpm"
- *Justification: Dune package management is new since 2023; npm alternatives are common*
### Q31. Upgrade pain points
- **Split:** "Breaking changes" into "Breaking changes in the type system" and "Breaking changes in the standard library"
- **Added:** "Reliance on a compatible ppxlib version"
- *Justification: More specific breakage data helps compiler team; ppxlib compatibility is a known bottleneck distinct from general dependency issues*
### Q32. Build tools
- **Added:** "Nix-based builds"
- *Justification: Nix usage for builds is distinct from Nix for package management*
### Q33. Preprocessors
- **Clarified:** "cpp-style conditional-compilation directives" → "cpp-style conditional-compilation directives (e.g. cppo)"
- *Justification: The original wording was vague; cppo is the most common tool in this category*
### Q34. Editors
- **Added:** Helix, Kakoune, Zed
- **Changed:** Split "Vim (or vim-based such as Neovim)" into separate "Neovim" and "Vim" options
- *Justification: Emerging editors with OCaml/LSP support; Neovim has a distinct plugin/LSP ecosystem from Vim*
### Q36. Benchmarking tools
- **Changed:** From generic categories to specific tool names
- **2023:** "Microbenchmarking library (core_bench, benchmark, bench...)", "Performance-monitoring libraries (landmark...)", etc.
- **2026:** core_bench, benchmark, bechamel, perf, Landmarks, memtrace, magic-trace, "Whole-program timing (time, hyperfine)", "Custom project-specific tools", None
- *Justification: Specific tools enable better ecosystem understanding*
### Q42. Deployment methods
- **Added:** "As WebAssembly modules", "As a unikernel"
- *Justification: WebAssembly deployment is increasingly relevant; unikernel deployment (MirageOS) was listed as a target platform but missing from deployment options*
### Q54. State-of-the-art ecosystem wish
- **Added options:** "AI/LLM tooling for OCaml", "I don't know"
- *Justification: Reflects current ecosystem priorities; "I don't know" was missing for respondents without a strong preference*
### Q55. Adoption pain points
- **Added option:** "Poor AI/LLM tool support compared to other languages"
- *Justification: AI tooling quality increasingly affects language adoption decisions*
### Q56. Final comments
- **Changed:** Removed 255 character limit
- *Justification: Character limit was unnecessarily restrictive*
---
## Unchanged Questions (Preserved for Comparability)
The following questions are identical or functionally equivalent to enable year-over-year comparison:
| Topic | 2023 | 2026 | Notes |
|-------|------|------|-------|
| OCaml experience duration | Q1 | Q1 | Identical |
| Proficiency self-assessment | Q2 | Q2 | Identical |
| Workplace OCaml trend | Q5 | Q5 | Identical |
| How learned OCaml | Q6 | Q6 | Identical |
| School/University name | Q7 | Q7 | Identical |
| Domains of software | Q10 | Q10 | Identical |
| Learning pain points | Q12 | Q12 | Identical |
| OCSF awareness | Q13 | Q13 | Identical |
| OCSF priorities | Q14 | Q14 | Identical |
| Content topics wanted | Q16 | Q16 | Identical |
| Project contribution count | Q17 | Q22 | Identical |
| Testing approaches | Q32 | Q35 | Identical |
| Feel welcome in community | Q36 | Q43 | Identical |
| Satisfied with language | Q37 | Q44 | Identical |
| Tooling confusing to newcomers | Q39 | Q45 | Identical |
| Satisfied with package repos | Q41 | Q46 | Identical |
| Can find libraries | Q43 | Q48 | Identical |
| Missing libraries | Q44 | Q49 | Identical |
| Libraries well documented | Q45 | Q50 | Identical |
| Understand best practices | Q47 | Q51 | Identical |
| Can find OCaml jobs | Q49 | Q52 | Identical |
| Can find OCaml candidates | Q50 | Q53 | Identical |
| Country | Q55 | Q57 | Identical |
| Underrepresented group | Q56 | Q58 | Identical |
| Difficulty participating | Q57 | Q59 | Identical |
---
## Question Number Mapping
| Section | 2023 | 2026 |
|---------|------|------|
| OCaml Usage | Q1-Q12 | Q1-Q12 |
| OCSF | Q13-Q14 | Q13-Q14 |
| Community | Q15-Q16 | Q15-Q17 |
| AI/LLM Usage | — | Q18-Q21 |
| Projects & Contributions | Q17-Q20 | Q22-Q25 |
| Compiler | Q21-Q27 | Q26-Q31 |
| Tooling | Q28-Q33 | Q32-Q38 |
| Debugging & Profiling | — | Q39-Q41 |
| Infrastructure | Q34-Q35 | Q42 |
| Feelings | Q36-Q50 | Q43-Q53 |
| Burning Desires | Q51-Q54 | Q54-Q56 |
| Demographics | Q55-Q57 | Q57-Q59 |
---
## Detailed Question Mapping (2023 → 2026)
| 2023 | 2026 | Status |
|------|------|--------|
| Q1 | Q1 | Unchanged |
| Q2 | Q2 | Unchanged |
| Q3 | Q3 | Modified (added "For teaching", "For work, in open source") |
| Q4 | Q4 | Modified (added "I don't use OCaml at work") |
| Q5 | Q5 | Unchanged |
| Q6 | Q6 | Unchanged |
| Q7 | Q7 | Unchanged |
| Q8 | Q8 | Modified (added Zig) |
| Q9 | Q9 | Modified (added CLI tools, Games, Mobile) |
| Q10 | Q10 | Unchanged |
| Q11 | Q11 | Modified (select → text field) |
| Q12 | Q12 | Unchanged |
| Q13 | Q13 | Unchanged |
| Q14 | Q14 | Unchanged |
| Q15 | Q15 | Modified (added platforms) |
| Q16 | Q16 | Unchanged |
| — | Q17 | **New** (community size) |
| — | Q18-Q21 | **New** (AI/LLM section) |
| Q17 | Q22 | Unchanged |
| Q18 | — | **Removed** |
| Q19 | Q23 | Modified (added WebAssembly, clarification) |
| Q20 | Q24 | Modified (added targets, Melange) |
| — | Q25 | **New** (CPU architectures) |
| Q21 | Q26 | Modified (added OxCaml) |
| Q22 | Q27 | Modified (collapsed old versions) |
| Q23 | Q28 | Modified (collapsed old versions) |
| Q24 | Q29 | Modified (added dune pkg mgmt) |
| Q25 | Q30 | Unchanged |
| Q26 | Q31 | Modified (split breaking changes, added ppxlib) |
| Q27 | — | **Removed** |
| Q28 | Q32 | Modified (added Nix-based builds) |
| Q29 | Q33 | Modified (clarified cppo) |
| Q30 | Q34 | Modified (added editors, split Vim/Neovim) |
| Q31 | — | **Removed** |
| Q32 | Q35 | Unchanged |
| Q33 | Q36 | Modified (specific tools) |
| — | Q37 | **New** (documentation tools) |
| — | Q38 | **New** (tooling feedback text) |
| — | Q39-Q41 | **New** (debugging section) |
| Q34 | Q42 | Modified (added WebAssembly, unikernel) |
| Q35 | — | **Removed** |
| Q36 | Q43 | Unchanged |
| Q37 | Q44 | Unchanged |
| Q38 | — | **Removed** |
| Q39 | Q45 | Unchanged |
| Q40 | — | **Removed** (replaced by Q38) |
| Q41 | Q46 | Unchanged |
| Q42 | — | **Removed** (replaced by Q47) |
| — | Q47 | **New** (package repo feedback text) |
| Q43 | Q48 | Unchanged |
| Q44 | Q49 | Unchanged |
| Q45 | Q50 | Unchanged |
| Q46 | — | **Removed** |
| Q47 | Q51 | Unchanged |
| Q48 | — | **Removed** |
| Q49 | Q52 | Unchanged |
| Q50 | Q53 | Unchanged |
| Q51 | — | **Removed** |
| Q52 | Q54 | Modified (added AI/LLM option, I don't know) |
| Q53 | Q55 | Modified (added AI/LLM option) |
| Q54 | Q56 | Modified (removed char limit) |
| Q55 | Q57 | Unchanged |
| Q56 | Q58 | Unchanged |
| Q57 | Q59 | Unchanged |