# OCaml Users Survey: 2023 vs 2026 Question Differences
**2023: 57 questions | 2026: 58 questions**
## Summary of Changes
- **New sections:** AI/LLM Usage (4 questions), Debugging & Profiling (3 questions)
- **New standalone questions:** Community size preference (Q17), Documentation tools (Q36), Tooling feedback (Q37), Package repository feedback (Q46)
- **Removed questions:** 10 questions removed
- **Net change:** +1 question
---
## 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, and no plans to use", questions Q19-Q21 can be skipped.*
### Debugging & Profiling (Q38-Q40)
Three new questions focused specifically on debugging approaches and profiling tools.
```
Q38. What debugging approach do you primarily use?
Q39. Which debugging and profiling tools do you use?
Q40. What are your biggest challenges with debugging/profiling?
```
Q39 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 (Q36)
New question about documentation tooling.
```
Q36. 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—Q44 (tooling confusing to newcomers) captures the key insight |
| Q40 | What would you change? [about tooling] | Replaced with specific text field Q37 ("What would you change about OCaml tooling?") |
| Q42 | What would you change? [about package repos] | Replaced with specific text field Q46 ("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 option:** "For teaching"
- *Justification: 2023 responses showed ~10 teaching-related "Other" entries*
### 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"
- *Justification: 2023 "Other" responses showed CLI tools and Games as common categories*
### 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-Q24. Development/target platforms
- **Added to Q23 (dev platforms):** WebAssembly
- **Added to Q24 (target platforms):** "Web/Browser (via js_of_ocaml)", WebAssembly, "Unikernels (MirageOS)"
- *Justification: 2023 "Other" responses included these; WebAssembly support has improved*
### Q25. Language implementations
- **Added:** OxCaml
- *Justification: OxCaml (Jane Street's OCaml fork) is publicly available and gaining visibility*
### Q26-Q27. Compiler versions
- **Changed:** Collapsed old versions (4.02-4.06 into "≤4.07")
- **Added:** 5.2, 5.3, 5.4
- *Justification: Only 2% used versions older than 4.08 in 2023; OCaml 5.x adoption is now mainstream*
### Q28. Installation methods
- **Added:** "dune package management"
- **Changed:** "Npm" → "npm/yarn/pnpm"
- *Justification: Dune package management is new since 2023; npm alternatives are common*
### Q31. Build tools
- **Added:** "Nix-based builds"
- *Justification: Nix usage for builds is distinct from Nix for package management*
### Q33. Editors
- **Added:** Helix, Kakoune, Zed
- *Justification: Emerging editors with OCaml/LSP support*
### Q35. 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*
### Q41. Deployment methods
- **Added:** "As WebAssembly modules"
- *Justification: WebAssembly deployment is increasingly relevant*
### Q53. State-of-the-art ecosystem wish
- **Added option:** "AI/LLM tooling for OCaml"
- *Justification: Reflects current ecosystem priorities*
### Q54. Adoption pain points
- **Added option:** "Poor AI/LLM tool support compared to other languages"
- *Justification: AI tooling quality increasingly affects language adoption decisions*
### Q55. 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 |
| Preprocessors used | Q29 | Q32 | Identical |
| Testing approaches | Q32 | Q34 | Identical |
| Feel welcome in community | Q36 | Q42 | Identical |
| Satisfied with language | Q37 | Q43 | Identical |
| Tooling confusing to newcomers | Q39 | Q44 | Identical |
| Satisfied with package repos | Q41 | Q45 | Identical |
| Can find libraries | Q43 | Q47 | Identical |
| Missing libraries | Q44 | Q48 | Identical |
| Libraries well documented | Q45 | Q49 | Identical |
| Understand best practices | Q47 | Q50 | Identical |
| Can find OCaml jobs | Q49 | Q51 | Identical |
| Can find OCaml candidates | Q50 | Q52 | Identical |
| Country | Q55 | Q56 | Identical |
| Underrepresented group | Q56 | Q57 | Identical |
| Difficulty participating | Q57 | Q58 | 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-Q24 |
| Compiler | Q21-Q27 | Q25-Q30 |
| Tooling | Q28-Q33 | Q31-Q37 |
| Debugging & Profiling | — | Q38-Q40 |
| Infrastructure | Q34-Q35 | Q41 |
| Feelings | Q36-Q50 | Q42-Q52 |
| Burning Desires | Q51-Q54 | Q53-Q55 |
| Demographics | Q55-Q57 | Q56-Q58 |
---
## Detailed Question Mapping (2023 → 2026)
| 2023 | 2026 | Status |
|------|------|--------|
| Q1 | Q1 | Unchanged |
| Q2 | Q2 | Unchanged |
| Q3 | Q3 | Modified (added "For teaching") |
| 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) |
| 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) |
| Q20 | Q24 | Modified (added targets) |
| Q21 | Q25 | Modified (added OxCaml) |
| Q22 | Q26 | Modified (collapsed old versions) |
| Q23 | Q27 | Modified (collapsed old versions) |
| Q24 | Q28 | Modified (added dune pkg mgmt) |
| Q25 | Q29 | Unchanged |
| Q26 | Q30 | Unchanged |
| Q27 | — | **Removed** |
| Q28 | Q31 | Modified (added Nix-based builds) |
| Q29 | Q32 | Unchanged |
| Q30 | Q33 | Modified (added editors) |
| Q31 | — | **Removed** |
| Q32 | Q34 | Unchanged |
| Q33 | Q35 | Modified (specific tools) |
| — | Q36 | **New** (documentation tools) |
| — | Q37 | **New** (tooling feedback text) |
| — | Q38-Q40 | **New** (debugging section) |
| Q34 | Q41 | Modified (added WebAssembly) |
| Q35 | — | **Removed** |
| Q36 | Q42 | Unchanged |
| Q37 | Q43 | Unchanged |
| Q38 | — | **Removed** |
| Q39 | Q44 | Unchanged |
| Q40 | — | **Removed** (replaced by Q37) |
| Q41 | Q45 | Unchanged |
| Q42 | — | **Removed** (replaced by Q46) |
| — | Q46 | **New** (package repo feedback text) |
| Q43 | Q47 | Unchanged |
| Q44 | Q48 | Unchanged |
| Q45 | Q49 | Unchanged |
| Q46 | — | **Removed** |
| Q47 | Q50 | Unchanged |
| Q48 | — | **Removed** |
| Q49 | Q51 | Unchanged |
| Q50 | Q52 | Unchanged |
| Q51 | — | **Removed** |
| Q52 | Q53 | Modified (added AI/LLM option) |
| Q53 | Q54 | Modified (added AI/LLM option) |
| Q54 | Q55 | Modified (removed char limit) |
| Q55 | Q56 | Unchanged |
| Q56 | Q57 | Unchanged |
| Q57 | Q58 | Unchanged |