Things to work on

Anton Bachin edited this page Aug 9, 2017 · 252 revisions

OCaml compiler implementation

The official OCaml bug-tracker lists many more reported issues and feature requests. Tasks tagged junior_job may be particularly suitable for the inexperienced, but the tagging is very far from exhaustive, so feel free to look around. A couple more things worth knowing:

  • the assigned state doesn't necessarily mean that you should not work on the issue, since many bugs are auto-assigned by area of responsibility, and patches may still be welcome
  • issues in the resolved/suspended state are not considered closed; the core developer team isn't intending to work on such issues further but, again, patches may still be welcome

The Compiler or Language projects to work on wiki page has a list of suggested projects that tend to be larger chunks of work (probably not something you can finish in one evening, but it's fine to start now and finish later). Past entries moved to the list of Compiler or Language projects previously worked on.

Other tasks that are super-useful and accessible to beginners (in fact very good way to learn around) are to review pull requests, document code and contribute to the manual. If you wonder how to do any of these, ask someone!

Projects with curated lists of beginner-friendly issues

The ocaml compiler (see also above).

The multicore runtime project has a list of proposed "first tasks". See also the dedicated Multicore OCaml and OCaml Multicore Runtime wiki pages.

The website has a tracking issue.

The Lwt concurrency library has a section for new contributors and an easy issues list.

The pure OCaml SAT solver mSAT has an issue about performance improvement: #8 that could be fun to look at.

Cross-project concerns

Package metadata

The quality of the central public opam repository directly affects most OCaml users. You can help improve its metadata to avoid bad surprises when installing packages by looking at the OPAM bulk logs. (TODO: also mention opam-builder.)

Documentation and usage examples

Documentation is often a weak point of open-source project, and virtually all OCaml projects (except maybe those by François Pottier or Daniel Bünzli) out there would benefit from contributions to their documentation. If you have used a specific library recently, taking the time to write an usage example for specific modules or APIs for example helps a lot. For instance, see the examples contributed to the standard library for the Hashtbl (#30), Map (#44) and Set (#45). The odoc project has an in-progress centralized documentation website for OCaml packages at, where your contribution will become visible and easy to find for users of the library.

ocaml-migrate-parsetree migration

The ocaml-migrate-parsetree project, started in 2017, provide a support library to make programs manipulating the OCaml AST (in particular ppx extensions) robust to the change of AST definition across OCaml versions -- no more reimplementation of parts of the code at each new OCaml release. If you use some OCaml-AST-manipulating programs, in particular ppx extensions, have a look at whether they already use it, or consider submitting a Pull Request to make it happen! The github page has a lot of information. Migration examples:

Crowbar testing

We have a new surprisingly effective (afl-based) fuzzer called Crowbar, and you can run it on the project of your choice to find and report plenty of bugs. See this blog post!

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.