# 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 |