Now, shameless plug, not for me but for my last boss: Also, careful engineering works for Iris, a separation logic that is a... relative? competitor? alternative? to VST (but not focused on C)
That's true. I don't know how they managed it actually. They're such huge engineering projects spanning a long period of time
I'll forgive the plug. Iris does look like an impressive piece of software
At least Iris doesn’t have instructions for Coq 8.4. It also didn’t exist back then :-).
:)
but they clearly invest a lot into making it pretty high quality (tho not as much as math-comp, I’m told and can believe)
I think with the size of the Coq community, a standard (@Karl Palmskog mentioned the Coq platform) should go a long way to making each development more usable. A similar idea that I like is the approach that stack
has in Haskell, of curating generations of packages. That should make everyone's instructions simpler
we had the 1st Iris seminar last year, with IIRC 45 attendees, even before @Ralf Jung (one of the authors) finished his PhD
as yet, there is no release of Iris supporting Coq 8.11.
uh really? must be because we don’t use releases
(or not really)
Iris 3.2.0 has: "coq" {(= "8.7.2") | (= "8.8.2") | (>= "8.9" & < "8.11~") | (= "dev")}
alternatively, each commit is released on their own opam repo, so we’re confused on what “releases” should even be
where = "dev"
is likely broken long ago...
Right, but "Iris releases" are like Debian stable. From my opam
:
depends: [
"coq" { (>= "8.11.2" & < "8.12~") }
"coq-iris" { = "dev.2020-06-29.0.462b056f" }
}
right, the idea of the Coq platform is that all platform packages should be available within a month or so after major Coq release ("generational")
I can tell you that there are practically zero users of the MPI-SWS opam repo outside MPI-SWS and their collaborators
if the aim is for broad/wide userbase for a library, I think there is no alternative to putting regular releases into the released
Coq opam repo
I'm not an Iris/stdpp maintainer, and this has come up sometimes on https://mattermost.mpi-sws.org/iris/, but it's never been clear what the difference between a release and a snapshot is
I can completely understand that some library maintainers don't want to do regular releases or submit packages to the released
repo, but then they, in my opinion, can't seriously claim they want a broad userbase.
Can somebody explain what's the _downside_ of using an external opam repo?
(beyond opam update
taking longer, which is annoying)
it's one more repo that everyone needs to add to all their switches every time
for example, MPI-SWS opam repo is not in Coq Docker images, so CI won't work unless you manually configure it (released
repo is preconfigured)
hm, we should suggest --all-switches --set-default
for opam repo add
is that why "> they can't seriously claim they want a broad userbase." ?
I think it's a terrible idea to configure repos in all switches
I mean, we have one repo where we check/organize/advertise packages for stable versions of Coq
in any case, for Iris the bigger obstacle is that the "introduction" is a ~100 page paper, but that doesn't apply to stdpp
it is documented nearly everywhere, on Coq website, etc.
any other repo will get magnitudes less exposure to regular Coq users.
again, perfectly fine by me to not be a part of this if one wants to run own infrastructure. But quite clear that everything else will be obscure.
I'm not a maintainer, so it's probably more productive to ask Robbert or Ralf
But I wonder: do people discover packages from opam list
? I've never done that
stdpp works fine for 8.11 in released
and seems up to date.
And if I end up on https://gitlab.mpi-sws.org/iris/stdpp, that'll give me the option of adding the opam repo
In any case, @Karl Palmskog, I wonder if _I_ have said something wrong to irk you (and I'm happy to apologize) or you've seen misleading claims somewhere
was it my plug?
well, if I came across as irked I apologize. I just think the community suffers from not having all library releases in a single place.
specifically, if there indeed is an investment from the developers in making a library high quality, I think it shouldn't be such a big step of doing some extra release management (once per major Coq version) to let the community yield the benefits more easily.
This seems like a constructive resolution for a potential conflict. We recently had a pretty bitter conflict in the Lean community and I was reminded how powerful tact and emotional maturity can really be and how painful their absence can be
I don't want to single out Iris or its authors either. Unfortunately, there are quite many big and serious Coq projects that are near-impossible to find commits for that build with a certain stable Coq version. This mean that most kinds of research and reuse of those libraries is severely limited.
Ah! Okay, I can easily understand somebody being annoyed about that problem, and why even Iris's status is a problem
If you think I should bring this up [w.r.t. Iris] with Robbert and Ralf I can do that. There was no wilful intention to go so far on this tangent (and I've broken out the topic from the original one to avoid disturbing the original issue)
I mentioned the lack of a release in our Mattermost, and they're aware of it and plan to get to it after POPL.
For the general release practice, I guess you'll have to talk to them.
In particular, in every discussion about Iris releases, nobody is entirely sure what "release" should mean, and there's a couple of other technical questions they want to get to.
for us opam repo maintainers, a release is anything from a git repo tag to a curated "package", basically as long as it builds on a stable Coq version and makes sense it's all good (but it has to be a tarball/zip living somewhere)
the confusion for us is that most/all commits pass that criterion, so we need to find additional ones
I think in the Iris case, getting started is daunting mostly because of the maths (tho I'm an extreme case) — and if you get to https://iris-project.org/ or https://gitlab.mpi-sws.org/iris/iris _I think_ you're mostly set, except that you'll have to learn to use opam
.
Well, opam
and everything that Iris uses but Software Foundations doesn't explain
And quite a few users _have_ asked for more frequent releases, mostly because they want something "stable" to migrate to — I think that's an actual concern
And I totally get your complaint and annoyance at most projects being borderline-bitrotted, and why Iris could have seemed to be there
Paolo G. Giarrusso said:
And I totally get your complaint and annoyance at most projects being borderline-bitrotted, and why Iris could have seemed to be there
Thanks. Sorry again for my "tone" in the exchange above.
No worries, I just sensed there was a misunderstanding :-)
All is good :-)
I remember back in 2008-2010, the standard was that research papers came with Coq artifacts that only built with a certain commit in master
, and then the artifact was never ported to any stable release at all. Thankfully we have come quite far since then.
Look, the bare minimum is to know which commit or release to use, and I've run into repos failing _that_ test — that wasn't fun.
Many papers won't be kept up-to-date, but at least we're moving towards reproducible artifacts. Which reminds me, I should get back to packaging mine :-)
my sense from following the Iris discussion was that it wasn't considered high priority to release on opam because as you said, Iris collaborators just use the MPI-SWS repo
@Karl Palmskog I think your opinion is helpful in pushing for using Coq's opam repo, to make it easier for newcomers to install and add a dependency on Iris
on a technical level I think it's just a matter of automating the release a bit more on the Iris side - the code is pretty much always ready to be released (CI passes, there's a CHANGELOG, reverse dependencies are even up-to-date)
@Tej Chajed thanks for chiming in. Indeed, one could probably set up machinery to auto-open a pull request in the Coq opam repo when a button or timeout triggers, and just increment the last release minor number by one.
what I would prefer not to happen is that Coq Platform maintainers choose their own commit (of Iris or similar library) for inclusion in the platform revision for Coq 8.XY. Then we suddenly have two parallel release processes.
Being in the released repo on opam will likely be a requirement for being in the platform and only released versions will be used.
Once the platform is there, being in it sounds like an excellent reason, especially if e.g. the platform also comes with Windows installers (I recall one user attempted to use Iris on Windows, I don't think he found a pretty way to do it).
right now, the Windows installer in effect is the platform (or at least, the installer is the closest current approximation to the platform)
Michael has been doing tireless work to select commits for various projects for the installer, many props to him for that (I know how hard it is)
Btw.: I plan to do the major work of the platform this week (essentially I start now). The first step is to move the Windows build to opam, the second step is to provide an OSX installer. On Linux the plan at first is to provide a shell script which checks prerequisites and compiles from sources. After that we can add packages and then release the first Coq platform.
I can definitely see a plausible future where some project provides immense value to the Coq community, but its developers are not willing/able to put any effort into entering the Coq Platform. In this case, it may be justified to do friendly forks.
My plan for this is to have levels of the platform. Say level 0 is core Coq, level 1 is "the" platform and level 2 is an extended platform where the time between coq core release and platform release is larger, say 6 months. This would still be better than having 2020 tutorials mentioning Coq 8.9. The higher levels could also include "friendly forks" - for the level 1 platform I would try to avoid this.
I think such a hierarchical setup might also simplify the work of keeping packages up to date. I would think quite a few people are reluctant to update to latest Coq, because it is so much work to update the required infrastructure, in case this is large. If the majority of the infrastructure is provided by the platform, this should help. But this obviosuly means that we need to have a layered platform architecture, where the basic platform is a pre-requisite for the extended platform. But I have that 3 layers, including Core Coq, will be sufficient.
I disagree with the idea of doing friendly forks: this would mean more work. Iris is already in Coq's CI (same thing for CompCert). This means that it gets support from Coq developers. But this also mean that we can decide to add new requirements for the Iris / CompCert developers in exchange.
Karl Palmskog said:
I can tell you that there are practically zero users of the MPI-SWS opam repo outside MPI-SWS and their collaborators
people that want to use iris add that repository -- so far we didn't get any complaints about that. it's not hard to do, much easier than learning opam in the first place.
someone mentioned yesterday that this makes it hard to use in a Coq CI docker image, but that's it. and for anything opam-based I would argue that it should have support for adding more repos. we use opam for internal dependency management, so certainly for our own CI support for custom repos is absolutely mandatory. we don't want to have to publish a new iris version on the official repo just so that some other internal project can use it.^^ And I expect this situation would come up any time when people are working not just on a single project, but on a small ecosystem of interdependent projects.
(of course the even better option would be if opam would be less limited. in Rust, I can just depend on a git hash in a given external repo. the MPI-SWS repo exists solely as a work-around for opam's limited dependency treatment.)
the opam repo is not how people discover iris/std++, and I don't think it would be useful for that. thus I think "nobody has that repo added" is no problem at all, on its own.
Karl Palmskog said:
any other repo will get magnitudes less exposure to regular Coq users.
so you are suggesting that people will actually find coq packages through those repos? that is very surprising to me. I certainly never found anything that way...
my expectation is that people learn about iris or std++ somehow, and then figure out how to install it, at which point I hope our docs are clear enough.
so yeah, others have explained well why we are not spending much time to work on releases -- basically every commit we push builds with the last 2-3 stable coq versions, the current beta, and master.
but I understand some people prefer to point to a particular commit instead of picking whatever is currently HEAD
and I agree we should strive to have an opam package for latest stable coq
so we agreed on a new iris release policy :megaphone: : after a stable coq release (or already after the beta, maybe), we will take current master and make a new opam package ASAP.
typically the things that make this hard (the reason it gets delayed) is updating our LaTeX docs to match the Coq changes, finalizing the changelog (making sure really everything is in there), finalizing the sed script that helps people update. if then the release happens <4 weeks before an important deadline (such as Coq 8.12 beta and the POPL deadline), that can also delay releases.
many of these are things that others could help with, it doesnt have to be the maintainers doing all that work :)
if we manage to follow that release schedule, what else would it take to make iris part of the "Coq platform", and what would that even mean?
@Karl Palmskog @Michael Soegtrop ^
hm, thinking about the beta... if we now make a release (we hope to do that right after the popl deadline), can we claim that it works with Coq 8.12 after testing with the beta? in principle things could still break before 8.12.0 really gets out.
(an iris release for 8.11 was delayed mostly because everyone was just too busy to do the things I mentioned above, and without much demand for proper releases and without a clear schedule, then of course nothing happens. I hope by having a release policy, this will not happen again.)
@Ralf Jung if you follow this new release policy, I have no complaints.
Under the old policy and no versioned releases for 8.11, it was an impossibility to add a package to the released
Coq opam archive that depended on Iris and Coq 8.11, since our CI would reject it. This would have meant the Iris ecosystem would have been completely one-way: Iris users could use any Coq package, but nobody who wanted to depend a result/definition from Iris users could have their project be part of the Coq opam archive. I see discoverability as a much less important issue than this.
fair, I had not considered packages depending on iris that would themselves want to be on the repo. I do not think we have experience with that (typically things depending on iris are leavess in the dependency tree), and it might be hard (e.g. importing iris together with other things frequently runs into notation conflicts, as coq's notation mechanism is inherently unmodular). but it is certainly something we should facilitate :)
I think the only non-leaf iris reverse dependency I am aware of is GPFSL. Not sure if Hai wants to package that at some point, but he certainly shouldn't be blocked on us if he wants to.
what about the distributed systems framework from Aarhus?
I am not aware of that being itself a dependency of something
nor do I think the authors expressed interest in packaging it
well, a framework is meant to be used, no? Clearly, it will likely be a leaf forever unless there is some packaging
but that (what I said above) is besides the point, I do agree that for packaging iris reverse dep.s, releases are crucial
do you have an opinion on whether a release that we make in mid-july, tested against the 8.12 beta, can declare compatibility with 8.12?
I'm personally fine with this, but the CI won't accept it if it's only compatible with 8.12 (until after release of 8.12.0). Setting, e.g., >= 8.10 & < 8.13
will work
Ralf Jung said:
nor do I think the authors expressed interest in packaging it
For the record, many packages in the Coq opam archive are actually submitted by others than the developers (and in some cases, without the developers being aware).
oh it will support 8.10 and 8.11 as well
Karl Palmskog said:
Ralf Jung said:
nor do I think the authors expressed interest in packaging it
For the record, many packages in the Coq opam archive are actually submitted by others than the developers (and in some cases, without the developers being aware).
interesting. for iris I would be somewhat irritated by that, TBH.^^
Ralf Jung said:
if we manage to follow that release schedule, what else would it take to make iris part of the "Coq platform", and what would that even mean?
See (https://github.com/MSoegtropIMC/coq-platform/blob/master/charter.md) for the basic idea of the Coq platform - which I would say is pretty much agreed on among the past and present Coq release managers - possibly with a few changes here and there. So if IRIS becomes part of the platform, the platform takes care that there is a reliable, fast and fool proof way to install Coq including IRIS on Windows, OSX and - maybe a bit less fool proof - Linux. This should make it easier for teachers and interested explorers to install IRIS. On the other hand you agree to do your best to deliver a working release of IRIS for any major Coq release (like 8.12, 8.13) within at most 3 months, better 1 month.
Currently the way to request to become part of the platform is to make an issue on my private repo I linked above (currently this is the place of the Coq platform - likely this changes after the first release).
(FWIW, it's Iris, not IRIS. There is no acronym here. ;)
thanks @Michael Soegtrop, that sounds useful! I will discuss with the other Iris maintainers.
Ralf Jung said:
(FWIW, it's Iris, not IRIS. There is no acronym here. ;)
Thanks, good to know - not that I misspell it in the Windows installer!
that sounds useful! I will discuss with the other Iris maintainers.
I am looking forward to it. I expect to nail down the list end of July, so it would be good to have your decision by then. It will likely take me until then to finish all the infrastructure anyway.
sounds good
@Michael Soegtrop we have a new Iris release, and we are happy to join the Coq platform with that. :)
Last updated: Oct 03 2023 at 20:01 UTC