Skip to content

Role: Multicore Ecosystem Engineering

KC Sivaramakrishnan edited this page Jun 22, 2021 · 1 revision

As we get closer to OCaml 5.0 with Multicore support, there is a need to ensure that the multicore support works well with the rest of the ecosystem. The ecosystem includes the open-source tools and libraries maintained by the Multicore team as well as the wider ecosystem. We have built a number of tools to assist with the task at hand. The ecosystem engineering tools for multicore are:

  • OPAM Health Check shows the result of building the packages from the OPAM repo. The table shows the result of building the package and running its opam tests (if present) on the stock OCaml compiler and the domains-only version of the multicore compiler. Any failure in the multicore column with a success in the stock column must be investigated.
  • Multicore OCurrent CI tests a matrix of blessed packages that the multicore team considers important for the ecosystem. Unlike OPAM health check, the packages and the compiler variants may be unreleased and part of other development branches in Github. This tool builds the workflow as a dependency graph of individual build tasks. The individual tasks will be rebuilt on demand when the corresponding item being tracked (say the branch on Github) is updated.

The ecosystem engineering tasks for multicore are:

  1. Monitor OPAM Health Check and Multicore OCurrent CI.
  2. Identify failures: for OPAM health check -- works on stock, fails on multicore; for OCurrent CI -- red boxes in the workflow.
  3. Triage the failure to identify whether it is a failure in the library or the multicore compiler.
  4. File issues in the corresponding Github repos.
  5. Propose fixes (as PRs) to the libraries and the compiler if they are small.

QA assistance for multicore:

  1. Investigate failures thrown up by our opam health check monitoring and deeper package testsuite runs with multicore. Determine if the issue is a problem for the package maintainer or the multicore compiler.
  2. File issues and work with the relevant team (external or multicore) to get it fixed by producing reproducible test cases possibly even identifying the subsystem where the problem is occurring.
  3. Help organise and link ocaml-multicore bug reports such that issues are correctly linked or merged.
  4. Provide support to the multicore team in understanding which bugs and/or features external packages require in order to function well.
  5. Work with the OCLC CI team to ensure that the multicore CI systems are running as expected.