Skip to content

2025 Developer Meetings

Raja Boujbel edited this page Jun 17, 2025 · 41 revisions

Next meeting: 23/06/2025 13:00 CET

Agenda:

  • look at new issues/PRs in:
    • opam
    • opam-file-format
    • github.com/ocaml-opam/*
  • discuss plans for a public meeting
  • discuss how to handle the next/3.0 branch
  • triage old issues/PRs in the above listed repositories

2025-06-16

Present: David (@dra27), Kate (@kit-ty-kate), Raja (@rjbou)

New issues/PRs

The issues up to #6548 and PRs up to #6552 didn't require further discussions

  • #6541 we don't need more than 8 or 16 anyway since ocaml will not compile any faster

opam 2.4.0~beta1

TODO:

  • Debug GHA: kate
  • review #6544: raja
  • review #6520: david
  • review #6549: kate
  • make sure the test in #6539 matches the actual behaviour of opam-repo-ci: raja
    • once done, review it: kate
  • review #6550 after the other PRs are merge and this one is rebased: kate
  • release: kate

2025-06-10

Present: Artemiy (@arozovyk), David (@dra27), Kate (@kit-ty-kate), Raja (@rjbou)

New issues/PRs

The issues up to #6536 and PRs up to #6531 didn't require further discussions

  • #6535: we need to flip the new switch state field from the overwritten opams to the simulated opams
  • #6528, #6520, etc...: sum up of the current statuses of the different experiments. Solution chosen: We merge #6520 in 2.4 and work on a better solution in 2.5.
  • ocurrent/opam-repo-ci#441: looked at the issue. It could be an issue with either #6436 or the recent changes to pinned packages. Kate was unable to reproduce locally but we'll try again.

Discussions

deps-only behaviour

In order to have the intuitive workflow for users we decided to change the whole behaviour as described in #6520 (no self-conflict) and then take time to do a more fine grained specification for 2.5 (remove only if it is accurate the removal of installed package).

opam 2.4.0~beta1

We're hoping to start the release by the end of the week. TODO:

2025-06-02

Present: Artemiy (@arozovyk), David (@dra27), Kate (@kit-ty-kate), Raja (@rjbou)

New issues/PRs

The issues up to #6521 and PRs up to #6523 didn't require further discussions

Discussions

opam 2.4.0~beta1

  • #6513: the fix is in patch, it has been released and PR will follow to updte external sources patch
  • #6504: Kate will finish the PR, then a review
  • #6501: deps-only behaviour, we need to test the new behaviour and add some tests

2025-05-26

Present: Artemiy (@arozovyk), David (@dra27), Kate (@kit-ty-kate), Raja (@rjbou)

New issues/PRs

The issues up to #6521 and PRs up to #6523 didn't require further discussions

Discussions

opam 2.4.0~beta1

We discussed needed PRs for the release, the current plan is : beta1 02/06, rc 09/06, final 16/06

2025-05-19

Present: Artemiy (@arozovyk), David (@dra27), Raja (@rjbou)

New issues/PRs

The issues up to #6514 and PRs up to #6516 didn't require further discussions

Discussions

opam 2.4.0~beta1

Release PRs & issues:

  • #6501 : dps-onyl issue, Raja reproduced, she will look at it
  • #6513 : stack overflow, guess that it is an issue on patch
  • #6498 : windows / setup.exe, Raja will give it a try

The current plan is to have the final on 10/06

2025-05-12

Present: Artemiy (@arozovyk), David (@dra27), Raja (@rjbou)

New issues/PRs

The issues up to #6514 and PRs up to #6515 didn't require further discussions

  • #6514 (source cache shouldn't be indexed by the checksum only) : it is definitively something todo, see comment

2025-05-05

Present: Artemiy (@arozovyk), Kate (@kit-ty-kate)

Discussions

Discussed implementation of #6461 Move the depexts availability calculation at opam update time

2025-04-28

Present: Artemiy (@arozovyk), David (@dra27), Kate (@kit-ty-kate), Raja (@rjbou)

New issues/PRs

The issues up to #6491 and PRs up to #6490 didn't require further discussions

Discussions

Windows / MSYS2

There is a view to try to enforce MSYS2 support for 2.5 release.

setup.exe

Instead of having setup.exe in cache in opam.ocaml.org, we could add setup.exe embed in Windows opam binary. It adds only 2M and resolve all network issue related to that (plus Cygwin website seems to be no more reachable in some countries). The licensing seems good (GPL).

Related issue: #6497

ocaml-system & switch creation

Context

Currently, ocaml-system is the compiler installed by default is there is an ocaml binary on the system. This is very useful to have a quickly set switch, but with the time there was several issue encountered:

  • some system have the compiler installed but not the compiler-libs
  • some system installs several version of some libraries confusing opam install actions

Several proposition were discussed:

  • check if the install is consistent and the one needed by opam: it would result into too much work to keep synchronised over several distributions.
  • remove completely ocaml-system from repository, but it is not what is wanted: it would break too much process, especially CIs
  • remove compiler flag from ocaml-system: it would break opam 2.0 users, where invariant was not yet introduced
  • #6465 (use default-compiler flag to select invariant): used with other repositories, it would need to keep default-compiler up-to-date with newly added compilers
  • #6464 (remove eval-variables from invariant computation): it would remove the ability to use eval-variables for other repositories to compute invariant

We tend for a solution like #6464 with an option in the global config to re-enable eval-variables in invariant computation. But this won't resolve having ocaml-system selected when install local switchs, or install a switch with the compiler ocaml (which ends up as an invariant).

We finally agreed on a solution of having an explicit flag for ocaml-system that would make it installable only if requested explicitly, like that it is won't be installed by default on switches with an invariant, and won't be included on computed invariants. It is possible with mccs, we need to check if it is possible with 0install.

The general behaviour of explicit flag would be: the package won't be installed unless explicitly required via CLI or in the invariant, not if it is in package dependency.

## 2025-04-22 Present: Artemiy ([@arozovyk](https://github.com/arozovyk)), David ([@dra27](https://github.com/dra27)), Kate ([@kit-ty-kate](https://github.com/kit-ty-kate)), Raja ([@rjbou](https://github.com/rjbou)) ### New issues/PRs The issues up to #6480 and PRs up to #6476 didn't require further discussions ### Discussions #### Cygwin `setup.exe` retrieval Related to issue [#6474](https://github.com/ocaml/opam/issues/6474) There is more and more Cygwin `setup.exe` issues. Having opam.ocaml.org as a mirror could help. We end up that we don't want to have a full cygwin mirror on opam.ocaml.org, but we still can store `setup.exe` and its sha, it is easy to maintain. We also need to add a fallback when `setup.exe` fetch fails and there is an already one present (see [#6495](https://github.com/ocaml/opam/issues/6495)) #### 2.4.0~alpha2 We need to have : [#6448](https://github.com/ocaml/opam/issues/6448) (patch failures) and [#6465](https://github.com/ocaml/opam/issues/6465)/[#6466](https://github.com/ocaml/opam/issues/6466) (no longer have ocaml-system at switch creation b default) #### ocaml-system & switch creation related [#6465](https://github.com/ocaml/opam/issues/6465) & [#6466](https://github.com/ocaml/opam/issues/6466) After some tests, it is not possible to use the flag `avoid-version` as it is not working with the solver 0install (it doesn't handles priorities). We need to find the good way to do it, it seems to be by removing `eval-variables` at invariant computation, we need more time to validate it or another procedure. Related issues : * [#6496](https://github.com/ocaml/opam/issues/6496) : Move eval-variables variables from opam default configuration to repository one * [#6497](https://github.com/ocaml/opam/issues/6497) : Externalise default opamrc ## 2025-04-14 Present: Artemiy ([@arozovyk](https://github.com/arozovyk)), David ([@dra27](https://github.com/dra27)), Kate ([@kit-ty-kate](https://github.com/kit-ty-kate)), Raja ([@rjbou](https://github.com/rjbou)) ### New issues/PRs The issues up to #6472 and PRs up to #6469 didn't require further discussions * [#6465](https://github.com/ocaml/opam/issues/6465), [#6466](https://github.com/ocaml/opam/issues/6466) (change opam switch creation compiler default): it is something that can and should be done in the repository (there is no code in opam that choose `ocaml-system` over `ocaml-base-compiler`, it's the number of dependencies and solver criteria). We could use the flag `avoid-version` in order to have the wanted behaviour. We need to advertise well the change of default behaviour. ### Discussions #### opam 2.4 We moved issues and PRs that we couldn't take a look in time to the `2.4.0~alpha2` and `2.5.0~alpha1` milestones, and approved the release of `2.4.0~alpha1` tomorrow after the merge of [#5982](https://github.com/ocaml/opam/pull/5982). ## 2025-04-07 Present: Artemiy ([@arozovyk](https://github.com/arozovyk)), David ([@dra27](https://github.com/dra27)), Kate ([@kit-ty-kate](https://github.com/kit-ty-kate)), Raja ([@rjbou](https://github.com/rjbou)) ### New issues/PRs The issues up to #6462 and PRs up to #6450 didn't require further discussions ### Discussions #### opam 2.4 The release is planned for next week. We triaged all the tickets and PRs present in the [2.4.0~alpha1 milestone](https://github.com/ocaml/opam/milestone/62), kept the ones we plan to realistically look at or merge, moved the ones that we plan to look at during the alpha/beta phase to the [2.4.0~alpha2 milestone](https://github.com/ocaml/opam/milestone/69), and moved the ones we sadly won't have time to look at, to the [2.5.0~alpha1 milestone](https://github.com/ocaml/opam/milestone/68). ## 2025-03-31 Present: Artemiy ([@arozovyk](https://github.com/arozovyk)), David ([@dra27](https://github.com/dra27)), Kate ([@kit-ty-kate](https://github.com/kit-ty-kate)), Raja ([@rjbou](https://github.com/rjbou)) ### New issues/PRs The issues up to #6445 and PRs up to #6446 didn't require further discussions ### Discussions #### `cmdliner` ([cmdliner#200](https://github.com/dbuenzli/cmdliner/issues/200)) There is no more need to have 1.3 compatibility as 2.0 will ensure prefixes usage. We may need to have it more global in our internal cmdliner. #### `opam list --latest-only` ([#6387](https://github.com/ocaml/opam/issues/6387)) After somme discussion and tests, we want to test a new command that permit to query using high-level formulae language instead of trying to guess what user wanted by argument position. ## 2025-03-25 Present: David ([@dra27](https://github.com/dra27)), Kate ([@kit-ty-kate](https://github.com/kit-ty-kate)), Raja ([@rjbou](https://github.com/rjbou)) ### New issues/PRs The issues up to #6430 and PRs up to #6431 didn't require further discussions ### Discussions #### `cmdliner` ([cmdliner#200](https://github.com/dbuenzli/cmdliner/issues/200)) We continued the discussion about cmdliner fork for opam needs. We can add cmdliner code in `opam-core` wit only our modification added. The simpler way to integrate it is to have all cmdliner code in a single module but it will make backport and updates very painful. Forking cmdliner could add some burden as it comes automatically with users that may need maintenance over it. We tend toward having the code in a subdirectory of `opam-core`, making it a full composant of that library, that is only for opam lib usage. #### Shell completion per package Discussion related to [#6427](https://github.com/ocaml/opam/issues/6427) & [#3967](https://github.com/ocaml/opam/issues/3967). Some package may want to add their shell completion script to users shell session. One big issue is that it can be a potential security issue as it's shell scripts that are used for completion (even if opam does not check if the binary is malicious, shell scripts are little more dangerous). It does not need to be implemented in opam to be tested in the wild, it can be done by adding environment updates in the packages themselves in opam repository. This first step will permit us to test how it is used, and how people use it. It needs to be enforced by a `post-message` that inform user that shell completion was updated on the system. ## 2025-03-17 Present: Artemiy ([@arozovyk](https://github.com/arozovyk)), Kate ([@kit-ty-kate](https://github.com/kit-ty-kate)), Raja ([@rjbou](https://github.com/rjbou)) ### New issues/PRs The issues up to #6425 and PRs up to #6422 didn't require further discussions [#6423](https://github.com/ocaml/opam/issues/6423) (**opam admin add-constraint does not create dependencies**): see [comment](https://github.com/ocaml/opam/issues/6423#issuecomment-2783920933) [#6425](https://github.com/ocaml/opam/issues/6425) (**cmdliner 2.0.0 support**): We took a tour of ideas for the fork of cmdliner in order to 1. keep the ability to have prefixes 2. add our proper functions 3. propose to the community a cmdliner 1.3 without splitting the repository. In order to that we need to have proper library for OCaml users that is a cmdliner1 snapshot and another one that is our own fork that contains opam specific additions (or even modifications). ## 2025-03-10 Present: Artemiy ([@arozovyk](https://github.com/arozovyk)), David ([@dra27](https://github.com/dra27)), Kate ([@kit-ty-kate](https://github.com/kit-ty-kate)), Raja ([@rjbou](https://github.com/rjbou)) ### New issues/PRs The issues up to #6413 and PRs up to #6412 didn't require further discussions - [#6409](https://github.com/ocaml/opam/pull/6409) (Fix opam file lookup when a pin is done with a local directory and a branch is specified): we discussed the proposed change of behaviour of `opam pin ./local-vcs-dir`. It seems that [#4300](https://github.com/ocaml/opam/pull/4300) changed this behaviour in opam 2.1 but it needs further investigations. The proposal would change this behaviour, a warning could be added to notify of the untracked changes in the opam files. ### Discussions * [#5982](https://github.com/ocaml/opam/pull/5982) (Support Nix depexts with opam env): Tested on an issue and iw working as expected. It reaffirms us on that it is the good way to do it. * patch: `ocaml-patch.3.0` is merged! Incoming PR. * The alpha is planned to the beginning of april. ## 2025-03-03 Present: David ([@dra27](https://github.com/dra27)), Kate ([@kit-ty-kate](https://github.com/kit-ty-kate)), Raja ([@rjbou](https://github.com/rjbou)) ### New issues/PRs The issues up to #6405 and PRs up to #6406 didn't require further discussions ### Discussions #### cmdliner Issue [#200](https://github.com/dbuenzli/cmdliner/issues/200) on the removal of prefixes in cmdliner. We use and define opam options having in mind prefixes, having cli versioning too. We want to keep that behaviour, we will see how to: use the environment variable, fork, use internal API, etc. #### Init default compiler change PR [#6307](https://github.com/ocaml/opam/pull/6307), see issue [#6407](https://github.com/ocaml/opam/issues/6407) #### Light & hard upgrades PR [#6393](https://github.com/ocaml/opam/pull/6393) by default does an hard upgrade. We have the two mechanisms of light and hard upgrade: hard upgrade is a complete lock of opam root to update internal layout, while light upgrade permit to load old opam roots (even if internal files changed) in read only mode, blocking only if a write is needed (by state). This is useful for libraries that uses opam lib and read opam root (e.g. opam-dune-lint), the ones that need to write still need to have the same version for library than binary (e.g. opam-build). We will try to enforce the rule that no new version of hard upgrade will be defined (last one is `2.0.0~beta5`), only add mechanisms that permit light upgrades. ## 2025-02-24 Present: Kate ([@kit-ty-kate](https://github.com/kit-ty-kate)), Raja ([@rjbou](https://github.com/rjbou)) ### New issues/PRs The issues up to #6395 and PRs up to #6394 didn't require further discussions ### Discussions * PR [#6393](https://github.com/ocaml/opam/issues/6393): `repos-config` syntaxe & soft/hard update to discuss on next meeting, we took a tour of parser printer used for the new syntax * PR [#6394](https://github.com/ocaml/opam/issues/6394) on adding a job that test opam lib reverse dependencies, see [comment](https://github.com/ocaml/opam/pull/6394#issuecomment-2682571344) ## 2025-02-17 Present: Kate ([@kit-ty-kate](https://github.com/kit-ty-kate)), Raja ([@rjbou](https://github.com/rjbou)) ### New issues/PRs The issues up to #6387 and PRs up to #6381 didn't require further discussions ### Discussions #### opam list selector precedence Issue [#6387](https://github.com/ocaml/opam/issues/6387) See [comment](https://github.com/ocaml/opam/issues/6387#issuecomment-2663192441) and [comment](https://github.com/ocaml/opam/issues/6387#issuecomment-2669449210) #### `opam install . --deps-only` issue Issue [#6379](https://github.com/ocaml/opam/issues/6379)/[#6248](https://github.com/ocaml/opam/issues/6248) & PR [#6256](https://github.com/ocaml/opam/issues/6256) see [comment](https://github.com/ocaml/opam/issues/6248#issuecomment-2669505384) and issue [#6390](https://github.com/ocaml/opam/issues/6390). ## 2025-02-10 Present: David ([@dra27](https://github.com/dra27)), Kate ([@kit-ty-kate](https://github.com/kit-ty-kate)), Raja ([@rjbou](https://github.com/rjbou)) ### New issues/PRs The issues up to #6379 and PRs up to #6377 didn't require further discussions

Discussions

opam admin split

There is no (simple) way to keep a complete working history, and it is not required for other plugins. The solution we would go for is to just keep the history and make plugins changes on top of that, like that we have at least a working git blame. Everything is ready for the split, we pause that until we see more with opam admin users.

2025-02-03

Present: David (@dra27), Kate (@kit-ty-kate), Raja (@rjbou), Ryan (@RyanGibb)

New issues/PRs

The issues up to #6374 and PRs up to #6377 didn't require further discussions

Discussions - Nix depext support

Related PR: #5982

The current implementation generates a Nix derivation at each install of a depext that contains all needed depexts by the switch: new ones (opam packages to install) and old ones (already installed opam packages). This leads to a rework of the API for handling the current switch state. A proposal for discussion was done to keep persistent the Nix derivation file in the switch hierarchy and only update it when a new package is added; but it needs a removal mechanism to remove already stored Nix packages from that internal install (there is no simple way to update that internal install, it would be an update of the file). It is a very delicate issue to remove depexts in other distribution (user managed system), but for internal ones (Nix, Cygwin) is doable but have its pro and cons: some think it is preferable as the user has no way to interact with the internal install, some think that it is as delicate a non internal install as user may change it. It is possible to add this functionality at opam remove as it is done now at opam install for system packages install. After some discussions and projections, we end up by keeping the way it is done currently in the PR (propagate the information of all needed depext at current state), it may be reused by other futur depext support, and it won't add the removal complexity (handling multiswitch system dependencies removal with its own command).

Another review of the PR will be done with that in mind.

2025-01-27

No meeting

2025-01-20

Present: David (@dra27), Kate (@kit-ty-kate), Raja (@rjbou)

New issues/PRs

The issues up to #6366 and PRs up to #6367 didn't require further discussions

Discussions

  • Alpha release of ocaml-patch soon, to integrate to opam for 2.4 if released for opam 2.4 release process
  • Some exploratory work for reftest splitting, not so trivial for dune
  • On opam admin split, we'll try to keep git history, and need to manage how to move issues (different orgs) & PRs (reopen?)

2025-01-13

No meeting

2025-01-07

Present: David (@dra27), Kate (@kit-ty-kate)

New issues/PRs

The issues up to #6357 and PRs up to #6343 didn't require further discussions

Clone this wiki locally