Open ivg opened 2 years ago
Hi Ivan, I think this is good idea. Thanks for bringing it up and explaining the benefits.
Historically, I separated the two repositories as I thought there would be more language implementations and I wanted all including OCaml one to depend on piqi explicitly and avoid coupling of changes and releases. But this as you pointed out complicates the logistics for managing all things OCaml. (Piqi only depends on piqi-ocaml for bootstrap, but still separating the repos introduces friction even there).
Let me try moving piqi-ocaml over as the first step and then let's coordinate on further changes. It would be worth bringing things sufficiently up to date wrt dune, sedlex, warnings, etc. I'll find some time early next week.
We started the discussion at https://github.com/ocaml/opam-repository/pull/21947 but let's continue here. Dune works perfectly with monorepos (i.e., repositories that contain several projects under the umbrella of one project). It may even handle vendored code for you. As far as I can tell from the Makefiles, there are already some cross-project depdencies between piqi and piqi-ocaml. Moreover, piqi depends on piqi-ocaml to generate files and piqi-ocaml, depends on piqilib that is provided in piqi. Managing such dependencies without merging two repositories into a single repository is impossible without relying on subpar methods, like installing them side-by-side in the single repository. In addition, even without touching tests and bootstrapping scripts, just merging those repositories together will allow us to use
dune-release
that fully automates the whole release process. So that in the end, the whole release of three opam packages will be just one keystroke. So, what are your thoughts?