Hi Bruno, first of all, thanks for that elaborate response! It seems that when I looked at your PKGBUILD, I let myself be guided to premature assumptions by the similar structure and also the version adjustment in provides in particular, I’m sorry about that! It was some of the details like the OPAMROOT environment variable or the use of install instead of mkdir that really made me suspicious there, but maybe I’m just too accustomed to the somewhat poor quality standard in the AUR that you mentioned. What you say about those build system quirks is really true, too. I’ve packaged more than a few pieces of OCaml software at this point, and I can tell you a thing or two about all the crazy stuff that these folks like to come up with. Also thanks for pointing me to that FOSDEM talk, it’s pretty fantastic (and painfully accurate)! As for the credits, its not so much the attribution that really counts for me there, it’s mostly about time investment and transparency. Maintaining a package means taking responsibility and investing effort in it; as you learned yourself, figuring out how to package dune is a great way to get rid of your free time, and the idea of having someone silently run off with the work that came out of that felt like having someone trample on that precious free time. That’s basically what I was referring to when I said that I left that anonymous line in ocp-build “just to let people know that I’m not the only person who ever invested time in that package”: There was also someone else who was once willing to take the responsibility for that package, even though they didn’t have to. Since in this case it turned out that the time was in fact invested twice, though, I don’t really care about it here anymore. So now on to the technical side. 1. Personally I used to be a big fan of namcap myself, but over time I’ve come to take it’s output with a grain of salt. It gets a lot of the basics right and is very helpful for some easy-to-miss stuff (like a dependency on glibc), but it tends to miss or get wrong a lot of the more “advanced” aspects. I’ve been planning for ages to look into contributing to it, but to this day I’m not even sure where it’s maintained :/ 2. Thanks for that issue about OPAM usage in dune, I wasn’t aware of it since it was opened after I initially created the jbuilder package. 3. ocaml-findlib is something that OCaml software uses to, well, find libraries. Since it provides wrappers around the compiler and such, older build systems like OASIS also rely on it for the build procedure and installation, but newer OCaml build systems like dune and some others (don’t remember exactly which ones) can do much of their work without it, despite still integrating with it. Hence why it’s in fact an optional dependency for dune and not a hard dependency. Most of the current packaging guidelines for OCaml actually seem to be geared towards software using OASIS as build system, and I suppose that’s the main reason for why it’s in makedepends, even though OASIS seems to be on a decline. But I have to admit that I didn’t exactly pay a lot of attention to this whole affair myself, and I should probably have a proper look at it. Maybe I could also update the wiki page while I’m at it, the last meaningful changes were made way back in 2012. Since “package guidelines” has a somewhat official sound to it, do you happen to know whether the contents of these pages are coordinated somehow or whether they are basically community-maintained? 4. Thanks for pointing out that problem when comparing versions, I never noticed that. As for my opinion, I think moving the package to community is a good opportunity to “fix” the versioning. We can notify people as you suggested, and the ones who don’t get the notification will still see a message à la “warning: dune: local (1.0+beta17-1) is newer than community (1.0b17-1)” when performing sysupgrades. As for ocp-build, it’s actually not all that difficult to build; it comes pretty close to './configure; make; make install' and the patch that you saw (which was necessary because the program tried to use terminfo functions without linking to libtinfo) is no longer required in the current version (maybe related to the added dependency on cmdliner?). Also, I’m actually not an OCaml developer myself either, but it just so happened that I wanted to use some software written in OCaml at some point, and that software happened to have some dependencies that had some dependencies that had some dependencies… and in the end I somehow ended up with 100+ OCaml packages and a lot of unexpected experience under my belt. That’s why that “QIIME dependency hell” slide in the FOSDEM talk felt somewhat familiar to me, even though it’s all OCaml in my case (which doesn’t necessarily make it any better lol). Lastly, thanks a lot for offering to sponsor me! Right now I still have a backlog of package updates that I want to get done on the AUR (thanks to me failing to adjust to my new full-time university schedule before it was too late), but I’ll make sure get back to your offer once that is back to normal. Have a nice day Jakob On Mon, 19 Feb 2018, at 18:44, Archange wrote:
Hi,
Thanks for your email and sorry about this… This is quite a long story, but those deletion notifications (as a matter of fact, 5 packages from the `(ocaml-)merlin` dependency tree are “affected”) now remind me I was only half-way through before I had to go…
First thing is that I did not use AUR PKGUILDs for any of those packages for two reasons:
1. I missed them in the first place, because I did look for `ocaml-merlin` only /sigh/ —especially to end up with the name `merlin` for the package after more carefully looking at OCaml packaging guidelines— and then was clearly tired (did that between 10 p.m. and 2 a.m., on and before a day I had other things to do) and just started to recursively package anything needed I could not find in our repos, without checking at AUR once again… This has actual consequences that I need to address btw (regarding version numbers).
2. I mostly never use AUR PKGBUILDs anyway when pushing to [community], unless they are things that are hard to figure when trying to build, because their quality is generally poor.
Now, I actually spent almost 4 hours for writing those PKGBUILDs “correctly” (in the sense of having them build in a [community]-suitable way), so I can definitively agree that it is not just a `./configure; make; make install` thing (and even worse than that, there is actually a `./configure` in `merlin`, but it is not `autotools` one… And most mjambon’s libs had strange `make` targets and no install ones… since his switch to `dune/jbuilder` for his projects. Reminded me of that FOSDEM talk on “How to make package managers cry”…).
So actually finding the AUR package (well finding them earlier, because I did find `dune` afterwards and wrote somewhere I should look at that) would have helped me a lot, because that was quite painful indeed (especially finding how to pass flags during `make` and which ones where supported). That being said, I’m perfectly fine in adding you to the “credits”, and by the way don’t really care about that tag (I only care about the `Maintainer` tag being accurate, because it is useful for some tools like repology).
On the technical side of things, you’ve raised some concerns:
1. Why is there no dependency on `ocaml`? 2. Why is there no dependency on `opam`? 3. Why is there no optional runtime dependency on `ocaml-find`? 4. What is going on with the versioning scheme?
And here are some answers:
1. That’s a perfectly valid concern. I admit having not given many thought about it and mostly went with what `namcap` returned. I cannot find a case where it would be useful without it, so I’m adding it to dependencies, thanks.
2. While I was working on the packaging of `dune`, I did not noticed it needed `opam` for some actions. I did when trying to build mjambon’s libs, and he kindly sent me toward https://github.com/ocaml/dune/issues/372 (from https://github.com/mjambon/easy-format/pull/20, which is something I’ve also forgotten to do for the other ones). So I hope for `opam` to not be required anymore in the future, at least for my use of `dune`, but in the meantime I will add it to the dependencies.
3. Well I did not thought about putting it there since it was already in my `makedepends` array for my mjambon’s libs PKGBUILDs (as per OCaml packaging guidelines). But now that I look at it again, those `makedepends` arrays are basically `(ocaml-findlib dune opam)`, so moving this as well as `opam` to `dune` dependencies totally makes sense. Hard dependency, that is.
4. That’s a more though point. Your (well actually upstream’s) versioning scheme is actually not valid for a PKGBUILD, because `1.0+beta17` is in fact an higher version number than `1.0`, and thus would have required an epoch when updating to the final release. That being said, since your package does exist, this also means my version number is not higher than AUR’s one, which is not necessarily a good practice (and actually they are similar issues because of pkgrel for the other ones). They are two solution, with one minor variation: either we tell people to manually install the [community] one over the AUR one, or we add an `epoch`, which can be then done either now (and then keeping “my” —as a matter of fact the standard for this kind of things— versioning scheme) or when 1.0 final is released by moving to your versioning scheme. Any opinion on this?
BTW, you have also made me notice I forgot to enable tests in `dune` and `cppo` (but I did latter in `merlin` and `ocaml-*`). So at this point you have definitively earned your `Contributor` tag if you care about it. ;) (And please read below if you even want the `Maintainer` one, that’s possible)
And thanks for mentioning `ocp-build`, because as a matter of fact in my attempt to package `merlin`, I was also after `ocp-indent` and thus `ocp-build`, already added them in my staging directory and thus missed to check AUR again, but stopped there because of time. Seems like `ocp-indent` is not there, but I’m already interested by your `ocp-build` would it be just because it carry a patch with it, containing something I would probably not have thought about, or its clear indication that I will have to look carefully at that `./configure`… ;)
And for what is worth, I’m actually not doing any development in OCaml, but we have very recently switched to it for some algorithm teaching in France (from caml-light, for which we have been the only users I believe for the past 20 years…), and for some reasons not relevant for this discussion I needed proper support for OCaml in my editor (and the student’s ones). So that’s why I’m packaging all this, but otherwise don’t care at all about OPAM and such because we are not going to use anything outside of the standard. But if you are interested in packaging them and maybe other things for ArchLinux, you might consider applying for TU in which case I’d be OK to be your sponsor, since you will likely do a better maintainer than I do for those OCaml packages, at least on the ocaml building side. :)
Regards, Bruno
P.S.: I have exactly the same issue as you when it comes to people interpreting my mood by reading my writing, so I totally understand that. Hint: I’ve learned that adding smileys, even if it might not look very “professional“, helps a lot. ;)
Le 19/02/2018 à 17:03, Jakob Gahde a écrit :
FWIW, great to have this in community. Not so great that a deletion request is the first thing that informs me about this and even less so to have somebody else run off with the work that I put into figuring out how to make this piece of software install correctly and only add a few mostly cosmetic changes for good measure, without even a mention. The process isn’t just './configure; make; make install'; at least for me it took a while to figure everything out, and I’m not exactly a newbie to all the crazy stuff that OCaml people tend to use in their build infrastructure. While I’m at it, I wonder what the purpose is behind not depending on OCaml for a tool aimed at building OCaml software. Secondly, OPAM is run automatically on most invocations of dune to my knowledge, so I believe depending on it is somewhat reasonable. And lastly, the sources of dune happen to mention in plain English that dune can make use of ocamlfind as an optional runtime dependency[1]. So much for my reasoning on the dependencies, I would have been happy to explain this earlier if someone had let me. Forgive me if I’m a little upset, but when the new community package even goes out of it’s way to provide compatibility with the versioning scheme I used on the jbuilder package before it was renamed to dune, I just don’t understand why not even a little heads-up à la “BTW this package is now in community” was possible. Personally, I even left a contributor line saying “Your Name <youremail@domain.com>” untouched in one of the packages I adopted, just to let people know that I’m not the only person who ever invested time in that package (namely ocp-build).
tl;dr I know that in written form my thoughts tend to come off as being more furious than I actually am, and while I do in fact not like what I believe went on, what I really want you, Bruno, to take away from this is just „Please be a little more communicative in the future” :)
Have a nice day Jakob Gahde aka J5lx
[1] https://github.com/ocaml/dune/blob/1.0%2Bbeta17/jbuilder.opam#L17-L22
On Mon, 19 Feb 2018, at 15:34, notify@aur.archlinux.org wrote:
mis [1] filed a deletion request for dune [2]:
in [community] https://www.archlinux.org/packages/community/x86_64/dune/
[1] https://aur.archlinux.org/account/mis/ [2] https://aur.archlinux.org/pkgbase/dune/