Skip to content

Documentation: use output from new doc-ci with odoc 3 features #3123

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 164 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
164 commits
Select commit Hold shift + click to select a range
8914129
[scrape.yml] New OCaml Planet blog posts and videos (#2910)
github-actions[bot] Jan 8, 2025
6c1a261
Remove section about installing and using "tree" tool from get starte…
danielstocks Jan 8, 2025
6753e7e
Release page and changelog for OCaml 5.3.0 (#2905)
Octachron Jan 9, 2025
430c20e
Import fixes from discuss announce (#2914)
Octachron Jan 9, 2025
8193b05
Fix issue 2911 (#2912)
cuihtlauac Jan 9, 2025
13deb74
[scrape.yml] New OCaml Planet blog posts and videos (#2918)
github-actions[bot] Jan 10, 2025
161921f
Fix default manual path (#2915)
cuihtlauac Jan 10, 2025
b2f8b29
Delete duplicated route (#2916)
cuihtlauac Jan 10, 2025
d35e392
Fix command line formatting (#2919)
cuihtlauac Jan 10, 2025
32889a3
Add load testing utility (#2810)
shonfeder Jan 10, 2025
7bd15da
fix: show exact numbers of companies listed on industrial users page …
sabine Jan 13, 2025
c30b3f4
Minor grammatical change (#2921)
jdabtieu Jan 14, 2025
030df65
fix: display actual number of industrial users (#2922)
sabine Jan 14, 2025
a720577
[scrape.yml] New OCaml Planet blog posts and videos (#2923)
github-actions[bot] Jan 15, 2025
81ffda1
[scrape.yml] New OCaml Planet blog posts and videos (#2924)
github-actions[bot] Jan 16, 2025
9e81dc0
Revert "fix: display actual number of industrial users (#2922)" (#2925)
sabine Jan 17, 2025
21cd4a2
fix: display actual number of industrial users (take 2) (#2926)
sabine Jan 17, 2025
20516f2
fmt (#2927)
sabine Jan 17, 2025
8f3cdf0
[scrape.yml] New OCaml Planet blog posts and videos (#2928)
github-actions[bot] Jan 18, 2025
541dd8f
[scrape.yml] New OCaml Planet blog posts and videos (#2929)
github-actions[bot] Jan 19, 2025
d4499a4
[scrape.yml] New OCaml Planet blog posts and videos (#2932)
github-actions[bot] Jan 21, 2025
b6e54fd
[scrape.yml] New OCaml Planet blog posts and videos (#2933)
github-actions[bot] Jan 22, 2025
0057089
fix: don't drop first element of RSS feed (#2934)
sabine Jan 22, 2025
27bd28a
Added PR template file in github. and added PR Template section in co…
labdhiongithub7 Jan 24, 2025
9ebea21
move PR templates to the right location in .github folder (#2937)
sabine Jan 24, 2025
e47377e
fix: broken link for odoc authors documentation (#2940)
Gurvan-dev Jan 26, 2025
5526793
Survive tailwindcss binary (#2773)
cuihtlauac Jan 27, 2025
a1eb570
feat: enable linking to YouTube videos from conferences pages (#2938)
sabine Jan 27, 2025
9250012
(data) add FUN OCaml 2024 information to conferences page (#2939)
sabine Jan 27, 2025
e405e0c
chore: changelog dune 3.17.2 (#2941)
maiste Jan 27, 2025
aa2016e
Update 1wf_01_debugging.md (#2897)
patrick-nicodemus Jan 28, 2025
78efd15
Serve V2 assets from filesystem (#2756)
cuihtlauac Jan 28, 2025
744ce29
[scrape.yml] New OCaml Planet blog posts and videos (#2942)
github-actions[bot] Jan 29, 2025
a53456d
[scrape.yml] New OCaml Planet blog posts and videos (#2945)
github-actions[bot] Jan 30, 2025
642d6eb
Add changelog entry for OCamlformat 0.27.0 (#2946)
Julow Jan 31, 2025
b1df194
Change `#exit;;` to `#quit;;` (#2947)
onsah Feb 2, 2025
ee98911
Cookbook recipe for hashing passwords with Argon2 (#2944)
boechat107 Feb 4, 2025
297c90d
[scrape.yml] New OCaml Planet blog posts and videos (#2948)
github-actions[bot] Feb 5, 2025
ecd9974
[scrape.yml] New OCaml Planet blog posts and videos (#2950)
github-actions[bot] Feb 7, 2025
054907a
Do not use field attributes (#2943)
cuihtlauac Feb 7, 2025
7e05254
[scrape.yml] New OCaml Planet blog posts and videos (#2953)
github-actions[bot] Feb 12, 2025
400b65c
Fix missing newline in Arrays (#2951)
emerikaji Feb 12, 2025
fc277df
fix minor typos (#2958)
jakubsvec001 Feb 14, 2025
267c8a7
Fix 2955 (#2957)
cuihtlauac Feb 14, 2025
4ba754c
Add a preamble to the tutorial to introduce domain-specific language …
jakubsvec001 Feb 14, 2025
92070c6
Fix a typo in the sorting cookbook example (#2960)
bbatsov Feb 15, 2025
3eed47b
format codeblocks with blank line padding (#2961)
jakubsvec001 Feb 17, 2025
3f54b80
Add Learn Programming with OCaml to books (#2962)
imdj Feb 18, 2025
171c08f
Fix some typos (#2964)
bbatsov Feb 18, 2025
1e1a858
Improve markdown formatting (#2967)
bbatsov Feb 18, 2025
b5ef898
[scrape.yml] New OCaml Planet blog posts and videos (#2972)
github-actions[bot] Feb 19, 2025
c9eeebf
[scrape.yml] New OCaml Planet blog posts and videos (#2973)
github-actions[bot] Feb 20, 2025
0a30875
Update the description of OCamlPro (#2970)
lefessan Feb 20, 2025
f498737
[Fix #2965] Remove duplicate page (#2968)
bbatsov Feb 21, 2025
77be8d3
Add undo monad blog post to the OCaml planet (#2976)
panglesd Feb 21, 2025
59ec422
(data) Correct Year for recently added blog post (#2977)
sabine Feb 21, 2025
990ab22
add small tweaks (#2982)
jakubsvec001 Feb 25, 2025
50ae811
Update loops_and_recursion.md with minor updates for clarity (#2979)
jakubsvec001 Feb 25, 2025
8d71ef4
[scrape.yml] New OCaml Planet blog posts and videos (#2985)
github-actions[bot] Feb 26, 2025
1db41b6
update imperative.md with minor updates for clarity (#2983)
jakubsvec001 Feb 26, 2025
24a207b
Use ppx import in ood (#2930)
cuihtlauac Feb 26, 2025
9d3aca6
[scrape.yml] New OCaml Planet blog posts and videos (#2990)
github-actions[bot] Mar 1, 2025
352011a
add Ashoka University Introduction to CS course (#2991)
aalok-thakkar Mar 3, 2025
4009fd7
data: Remove changelogs for alpha, beta, rc releases (#2971)
Julow Mar 3, 2025
de7926a
Fix typo in undo-monad planet link (#2992)
panglesd Mar 3, 2025
1bdbda1
Fix Ashoka University Course (#2993)
aalok-thakkar Mar 4, 2025
70e91dd
update governance (#2994)
sabine Mar 4, 2025
66b9f43
(data) add Platform Newsletter q4 24 (#2995)
sabine Mar 4, 2025
df8baf0
(data) correct newletter to include January, as we've been reporting …
sabine Mar 4, 2025
0f92012
Add missing changelog entries for ppxlib (#2998)
NathanReb Mar 4, 2025
574becd
update governance (#2996)
maiste Mar 4, 2025
effb8ac
[scrape.yml] New OCaml Planet blog posts and videos (#3000)
github-actions[bot] Mar 5, 2025
29367ff
Add a link on the Platform Tools page to the Platform Tools section i…
sabine Mar 6, 2025
625f592
clarify what is the content of the changelog (#3003)
sabine Mar 6, 2025
1846e95
Update maps.md, small tweaks, one error (#2999)
jakubsvec001 Mar 6, 2025
7af8bf1
link to OCaml YouTube channel from community page (#3005)
sabine Mar 7, 2025
747aa55
[scrape.yml] New OCaml Planet blog posts and videos (#3006)
github-actions[bot] Mar 7, 2025
f3e3d8b
Use Fmt.Dump (#3007)
cuihtlauac Mar 7, 2025
d458412
[scrape.yml] New OCaml Planet blog posts and videos (#3008)
github-actions[bot] Mar 8, 2025
52ea5a6
[scrape.yml] New OCaml Planet blog posts and videos (#3011)
github-actions[bot] Mar 10, 2025
3498bb7
update functors.md with minor tweaks (#2984)
jakubsvec001 Mar 10, 2025
55e5432
(data) update OCaml Workshop pages to link to the @OCamlWorkshops You…
sabine Mar 10, 2025
65e9782
docs: explain list destructoring syntax (#3010)
gm0stache Mar 10, 2025
8ac4016
Add Bozhidar Batsov's OCaml feed (#2978)
bbatsov Mar 10, 2025
bde64d3
Add preamble and example to pattern matching in definitions (#2959)
jakubsvec001 Mar 10, 2025
74d6411
[scrape.yml] New OCaml Planet blog posts and videos (#3016)
github-actions[bot] Mar 11, 2025
f2932cf
[scrape.yml] New OCaml Planet blog posts and videos (#3018)
github-actions[bot] Mar 12, 2025
42819e1
[scrape.yml] New OCaml Planet blog posts and videos (#3019)
github-actions[bot] Mar 13, 2025
2b195f8
Add ppxlib.0.36.0 changelog (#3017)
patricoferris Mar 13, 2025
35d7476
Update Seq.md with small tweaks, one expanded explanation (#3015)
jakubsvec001 Mar 14, 2025
db69712
Removing the status on "is ocaml yet" pages (#3020)
balat Mar 14, 2025
d5be22b
(data) update governance (#3022)
sabine Mar 14, 2025
8cbb42b
[scrape.yml] New OCaml Planet blog posts and videos (#3023)
github-actions[bot] Mar 15, 2025
ca670f0
[scrape.yml] New OCaml Planet blog posts and videos (#3027)
github-actions[bot] Mar 18, 2025
76b4c34
[scrape.yml] New OCaml Planet blog posts and videos (#3028)
github-actions[bot] Mar 19, 2025
358b45a
Improve the formatting of some markdown files (#3014)
bbatsov Mar 22, 2025
28540ec
[scrape.yml] New OCaml Planet blog posts and videos (#3033)
github-actions[bot] Mar 26, 2025
f0ce6b7
add OCaml Workshop 2024 and 2025 (#3034)
yasunariw Mar 26, 2025
9ca460e
[scrape.yml] New OCaml Planet blog posts and videos (#3035)
github-actions[bot] Mar 27, 2025
aacf9bc
[scrape.yml] New OCaml Planet blog posts and videos (#3039)
github-actions[bot] Mar 29, 2025
1eadbea
add BITS Pilani university where OCaml is being taught as part of pri…
kudhru Mar 30, 2025
f5bdc5e
Fix typo (#3041)
moreal Mar 30, 2025
4475dd3
[scrape.yml] New OCaml Planet blog posts and videos (#3042)
github-actions[bot] Apr 1, 2025
13701d4
ocaml-version and FreeBSD updates (#3044)
mtelvers Apr 1, 2025
8d1c028
[scrape.yml] New OCaml Planet blog posts and videos (#3045)
github-actions[bot] Apr 2, 2025
43f98f1
Update CODEOWNERS (#3047)
samoht Apr 2, 2025
26ca628
chore: changelog for dune.3.18.0 (#3048)
maiste Apr 3, 2025
1d0aa54
[scrape.yml] New OCaml Planet blog posts and videos (#3049)
github-actions[bot] Apr 4, 2025
4ef9a72
fix: update 2025-04-03-dune.3.18.0.md (#3050)
maiste Apr 4, 2025
e9893b4
[scrape.yml] New OCaml Planet blog posts and videos (#3051)
github-actions[bot] Apr 5, 2025
3d7cf3e
[scrape.yml] New OCaml Planet blog posts and videos (#3052)
github-actions[bot] Apr 7, 2025
97400fe
[scrape.yml] New OCaml Planet blog posts and videos (#3053)
github-actions[bot] Apr 8, 2025
d657a75
[scrape.yml] New OCaml Planet blog posts and videos (#3057)
github-actions[bot] Apr 9, 2025
68b0294
Fix typo in documentation (#3055)
AbdallahMeebed Apr 9, 2025
744dd6a
[scrape.yml] New OCaml Planet blog posts and videos (#3058)
github-actions[bot] Apr 11, 2025
84b5f64
[scrape.yml] New OCaml Planet blog posts and videos (#3059)
github-actions[bot] Apr 12, 2025
309616d
[scrape.yml] New OCaml Planet blog posts and videos (#3060)
github-actions[bot] Apr 15, 2025
c69a5b1
Update CODEOWNERS (#3061)
sabine Apr 15, 2025
f06bd0c
[scrape.yml] New OCaml Planet blog posts and videos (#3062)
github-actions[bot] Apr 16, 2025
c254d7d
Add `ocaml-eglot` to the Changelog (#3063)
xvw Apr 17, 2025
aa1189c
Update URL for caml-list (#3054)
mtelvers Apr 17, 2025
305e3e6
A more idiomatic Emacs's approach (#3064)
xvw Apr 17, 2025
41e765b
chore: changelog for dune.3.18.1 (#3065)
maiste Apr 17, 2025
c084f88
Update code_of_conduct.md replacing Sonja with Shon (#3067)
shonfeder Apr 18, 2025
f222767
[scrape.yml] New OCaml Planet blog posts and videos (#3068)
github-actions[bot] Apr 18, 2025
368ed9e
[scrape.yml] New OCaml Planet blog posts and videos (#3070)
github-actions[bot] Apr 22, 2025
5662a79
[scrape.yml] New OCaml Planet blog posts and videos (#3071)
github-actions[bot] Apr 23, 2025
e4b0704
[scrape.yml] New OCaml Planet blog posts and videos (#3073)
github-actions[bot] Apr 24, 2025
579f686
[scrape.yml] New OCaml Planet blog posts and videos (#3075)
github-actions[bot] Apr 25, 2025
1771483
Fix the map_error definition (#3076)
ferdv Apr 28, 2025
b8da36b
Improve ref in closure example (#3077)
cuihtlauac Apr 29, 2025
85330ae
Separate OCaml.org Changelog into two categories: releases and posts …
sabine Apr 29, 2025
b87817c
Remove `ocaml-eglot` from the Changelog (#3072)
xvw Apr 29, 2025
6ec99e1
fix: sort changelog entries (#3081)
sabine Apr 29, 2025
1d6ab9c
(data) Update the 5.1.0 changelogs (#3056)
hirrolot Apr 29, 2025
6a5c254
Fix: Contribute link on businesses page is broken (#3021)
dinakajoy Apr 29, 2025
ac221db
add tailwindcss.opam to gitignore (#3082)
sabine Apr 29, 2025
b8d183f
(data) clarify nature of infrastructure changelog entries by better t…
sabine Apr 29, 2025
db4b629
[scrape.yml] New OCaml Planet blog posts and videos (#3086)
github-actions[bot] Apr 30, 2025
b86e792
(data) add odoc 3.0.0 release announcement (#3079)
sabine May 5, 2025
6c05d41
(data) Dune-release 2.1.0 Changelog Entry (#3083)
sabine May 5, 2025
77218ee
chore: changelog for dune 3.18.2 (#3087)
maiste May 6, 2025
14d30ef
(data) update ppxlib maintainers in governance.ymli (#3091)
sabine May 6, 2025
b5c8e3d
[scrape.yml] New OCaml Planet blog posts and videos (#3092)
github-actions[bot] May 7, 2025
f1a6295
[scrape.yml] New OCaml Planet blog posts and videos (#3095)
github-actions[bot] May 9, 2025
58c51ad
update r2c to semgrep (#3094)
brandonspark May 9, 2025
1111fc5
Add December 2024 Outreachy round (#3088)
patricoferris May 9, 2025
4473dc3
(data) add OCaml Platform Newsletter Feb - Apr 2025 (#3098)
sabine May 12, 2025
8b339e3
(data) link to LinkedIn Newsletter on OCaml Platform Newsletter (#3099)
sabine May 12, 2025
9b5be95
Fix syntax error (#3102)
StevenH34 May 13, 2025
9055422
Get docs from new docs CI
panglesd May 19, 2025
76c3d3b
Docs: Update to new odoc3 json format
panglesd May 19, 2025
85caf43
Docs: use new `status.json` from odoc 3
panglesd May 19, 2025
b5e57e5
Docs: use header field
panglesd May 20, 2025
906c4d5
Docs: fix search script location change with odoc_driver
panglesd May 20, 2025
9e2c58f
Docs: fix search results' url
panglesd May 20, 2025
a9ed9ba
Docs: compute sidebar from toc json
panglesd May 20, 2025
0cd729b
Docs: do not reload global toc on toc click
panglesd May 20, 2025
b4358bd
Docs: uniformize toc look
panglesd May 20, 2025
4338d7a
Docs: small refactor of breadcrumbs
panglesd May 21, 2025
26bb8c7
Docs: allow breadcrumbs without href
panglesd May 21, 2025
e73995f
Docs breadcrumbs: Adding `page` kind
panglesd May 21, 2025
57f0d6d
rename `library_path` to `path`: pages also have/are in breadcrumbs
panglesd May 21, 2025
df9a7e3
Docs breadcrumbs: use the one computed by odoc without processing
panglesd May 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/data/ @christinerose
/data/changelog/ @sabine
/data/pages/governance.md @avsm
/data/pages/privacy_policy.md @avsm
/data/pages/carbon_footprint.md @avsm
/data/tutorials/platform/op_00_principles.md @avsm
/data/tutorials/platform/op_01_users.md @avsm
/data/tutorials/guides/op_02_roadmap.md @avsm
/data/tutorials/guides/op_02_roadmap.md @avsm
16 changes: 16 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/cookbook_pr_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#### Checklist
Ensure the following are addressed before submitting your PR:

1. **Real-World Usefulness**:
- [ ] Does the task address a practical need in real-world application development?

2. **Code Quality**:
- [ ] Is the code production-ready, safe, and free of potential security issues?
- [ ] Does the code avoid uncaught exceptions or other potential pitfalls?

3. **Standard Library and Packages**:
- [ ] For tasks using the Standard Library: Does this recipe provide value beyond what an LLM could easily generate?
- [ ] For tasks using a package: Does this recipe implicitly recommend the package for production use?

4. **Recipe Redundancy**:
- [ ] Does this recipe duplicate an existing task? If so, does it add value by showing differences between packages or approaches?
4 changes: 4 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Please go to the `Preview` tab and select the appropriate sub-template:

* [Other PR](?expand=1&template=other_pr_template.md)
* [OCaml Cookbook Contribution](?expand=1&template=cookbook_pr_template.md)
4 changes: 4 additions & 0 deletions .github/other_pr_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
## Checklist

* [ ] Please format your code using `make fmt`
* [ ] If addressing an open issue, please link to it by writing "Resolves #1234" (use the relevant issue number)
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@ _opam/

# Files that people sometimes accidentally include in their PRs
*:OECustomProperty

# TailwindCSS opam file, which appears to be generated by the build
tailwindcss.opam
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ This project has adopted the [OCaml Code of Conduct](https://github.com/ocaml/co

# Enforcement

This project follows the OCaml Code of Conduct [enforcement policy](https://github.com/ocaml/code-of-conduct/blob/main/CODE_OF_CONDUCT.md#enforcement).
This project follows the OCaml Code of Conduct [enforcement policy](https://github.com/ocaml/code-of-conduct/blob/main/CODE_OF_CONDUCT.md#enforcement).
83 changes: 67 additions & 16 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ We've provided a list of community-driven content below. When adding content to
- [The OCaml Planet](#ocaml-planet)
- [Job Board](#content-job)
- [Success Stories](#content-success-story)
- [Academic and Industrial Users](#content-user)
- [Academic Users](#content-academic-user)
- [Industrial Users](#content-industrial-user)
- [OCaml Books](#content-book)
- [OCaml Cookbook Recipes](#content-cookbook)
- [Recurring Events](#content-recurring-event)
Expand Down Expand Up @@ -104,13 +105,50 @@ The success stories should be structured in the following way:

You can read [Ahref's Success Story](https://ocaml.org/success-stories/peta-byte-scale-web-crawler) for a good example.

### <a name="content-user"></a>Add an Academic or Industrial User
### <a name="content-academic-user"></a>Add an Academic User

> Contribute to the [Academic Users](https://ocaml.org/academic-users) and [Industrial Users](https://ocaml.org/industrial-users).
> Contribute to the [Academic Users](https://ocaml.org/academic-users).

Add a new industrial user by creating a new Markdown file in [data/industrial_users/](data/industrial_users/). For instance: [cryptosense.md](data/industrial_users/cryptosense.md).
You can add a new academic user by creating a new Markdown file in [data/academic_institutions/](data/academic_institutions). When submitting an academic institution to our webpage, please structure the data as follows:

You can add a new academic user by creating a new Markdown file in [data/academic_institutions/](data/academic_institutions). For instance: [cornell.md](data/academic_institutions/cornell.md).
Information about the institution
- **`name`**: The full name of the academic institution.
- **`description`**: A brief overview of the institution, including its background and key details.
- **`url`**: The official website of the institution.
- **`logo`**: A link to the institution’s logo image.
- **`continent`**: The continent where the institution is located.

A list of courses available at the institution. Each course entry must include:
- **`name`**: The full name of the course.
- **`acronym`**: The course code or identifier.
- **`url`**: A direct link to the course webpage.

Location
- **`lat`**: The latitude of the institution’s location.
- **`long`**: The longitude of the institution’s location.

For instance: [cornell.md](data/academic_institutions/cornell.md).

### <a name="content-industrial-user"></a>Add an Industrial User

> Contribute to the [Industrial Users](https://ocaml.org/industrial-users).

Add a new industrial user by creating a new Markdown file in [data/industrial_users/](data/industrial_users/). When submitting an industrial user to our webpage, please structure the data as follows:

Information about the organization
- **`name`**: The full name of the organization.
- **`description`**: A brief overview of the organization, including its mission and key details.
- **`logo`**: A link to the organization’s logo image.
- **`url`**: The official website of the organization.

Locations
- A list of countries where the organization operates.

Additional Information
- **`consortium`**: Indicates whether the organization is part of a consortium (`true` or `false`).
- **`featured`**: Indicates whether the organization is highlighted as a featured entity (`true` or `false`).

For instance: [cryptosense.md](data/industrial_users/cryptosense.md).

### <a name="content-book"></a>Add a Book

Expand All @@ -124,10 +162,10 @@ The OCaml Cookbook is a place where OCaml developers share how to solve common
tasks in OCaml using packages from the OCaml ecosystem.

Here are the steps to contribute a recipe for an existing task:
* Find the task in the [data/cookbook/tasks.yml](data/cookbook/tasks.yml) file.
* Go to the task folder inside [data/cookbook/](data/cookbook/) that has the
- Find the task in the [data/cookbook/tasks.yml](data/cookbook/tasks.yml) file.
- Go to the task folder inside [data/cookbook/](data/cookbook/) that has the
same name as the task's `slug`.
* Create a `.ml` file containing the recipe and a YAML header with metadata about
- Create a `.ml` file containing the recipe and a YAML header with metadata about
the recipe.

If the recipe does not fit into any existing task, you also need to create a
Expand All @@ -138,7 +176,7 @@ located under a relevant `category:` field.
Finally, it is also possible to create and organise groups of tasks by creating
new categories. Categories are recursive and may have subcategories, which are
full categories too. A task listed in
[data/cookbook/tasks.yml](data/cookbook/tasks.yml) may have no recipes yet. On the
[data/cookbook/tasks.yml](data/cookbook/tasks.yml) may have no recipes yet. On the
other hand, it is not allowed to have a task folder in
[data/cookbook/](data/cookbook/) that does not correspond to a task from the
[data/cookbook/tasks.yml](data/cookbook/tasks.yml) file because it triggers a
Expand All @@ -147,14 +185,27 @@ compilation error.
Each recipe is a way to perform a task using a combination of open-source
libraries.

#### OCaml Cookbook Recipe Review Checklist
#### Guidelines for New OCaml Cookbook Recipes

When contributing new recipes to the OCaml Cookbook, please adhere to the following:

1. **Task Selection**:
- Focus on practical, reusable tasks relevant to a wide audience.
- Ensure the task demonstrates idiomatic OCaml usage.
- Avoid tasks that are overly trivial or highly specific to niche cases.

2. **Code Standards**:
- Write clear, idiomatic OCaml code.
- Ensure the code compiles without errors or warnings.
- Use standard OCaml libraries and tools wherever possible.

Checklist for reviewing OCaml cookbook submissions:
3. **Evaluation Criteria**:
- Does the recipe address a useful real-world task?
- Is the code ready for production use?
- If using a package, does it implicitly recommend the package for production?
- Avoid duplicating existing recipes unless demonstrating package differences.

1. does this recipe implement the task it's assigned to?
2. if this recipe is creating a new task: (1) is the new task substantially different from existing tasks, (2) there is no existing task that this recipe solves, (3) is the new task description very clear on what the task is (be specific!)
3. is the code explained sufficiently without overexplaining (be short and focus on what matters)?
4. is the code such that you would put it into production? I.e. are the libraries used stable enough and is the code readable?
Following these guidelines will help us maintain a high-quality and consistent OCaml Cookbook.

### <a name="content-recurring-event"></a>Add A Recurring Event

Expand All @@ -181,7 +232,7 @@ The Changelog covers developments across:

#### Purpose and Audience

The primary audience for the Changelog is OCaml users. Content should focus on changes, updates, and news that directly impact users of OCaml and its ecosystem.
The primary audience for the Changelog is OCaml users. Content should focus on changes, updates, and news that directly impact users of OCaml and its ecosystem.

Good candidates for Changelog posts include:

Expand Down
Loading
Loading