Salut tout le monde, paramcoq has been added to Coq's CI :)
Hey @Emilio Jesús Gallego Arias! You are the first one to use this chat room. Welcome!
Salut @Théo Zimmermann , merci !
:D
This seems like a good place to chat with plugin authors who are not coq devs
Indeed, it could be. Feel free to tell people to come here.
will coqpp be mandatory for plugins in 8.10, or will ml4 still work?
oh, and if plugin advice is on the table: is it possible at all to use native code in a Coq plugin? I tried to call C code through OCaml but could never get it to compile.
Hi @Karl Palmskog , ml4 will likely not supported in 8.10
There should not be a problem to use C code from a plugin, however I do recommend you use the Dune build system to do that
Here is a proof of concept https://github.com/ejgallego/coq-cplugin
@Emilio Jesús Gallego Arias thanks, that's just what I've been looking for
No prob
@Emilio Jesús Gallego Arias do you recommend switching any Coq-related projects that use OCaml to Dune? We have a quite a few that use OCamlbuild
for extra fun with that build setup synlink your current coq
master folder to the plugin root folder and you will see how the plugin composes with Coq itself
@Karl Palmskog not yet
I recommend developing the ML parts with Dune tho
coq_dune
needs a few tweaks so it can produce rules for vo
building, right now it is only used to build the stdlib
but once we get the vo
bussiness sorted out I do believe using Dune will provide a much better experience
OK, so basically we should stick with Make for overall building, but swap out OCamlbuild for the OCaml parts?
if what you mean is moving from Ocamlbuild -> Dune I'd say you will get quite a few benefits
OK sounds good
Coq master if fully dunerized so if you switch to Dune you get a composed build and that's very pleasant to use
in general
we tend to only target the released Coq versions though
you can do that too, but you won't a composed build
for me the composed build is essential as I tend to develop on a plugin / toplevel and Coq at the same time, so my rebuilds are blazing fast
in fact it is strange that some Coq devs still keep using Make for Coq itself as dune build @check
outperforms make by a large amount
but in general most OCamlbuild setups will only get improvements from switching to dune
YMMV
so the plan is to throw out coq_makefile eventually?
and everybody does coq_dune?
I guess so, maybe coq_makefile stays for a while, it is not incompatible with Dune
but indeed coq_dune will provide more features, for example a notion of package
so you can finally say in your Coq project "I depend on stdlib.streams"
instead of having to mess with flags
and will also support composition which in the Dune world means
Take n repositories that use dune, arrange them in any way on the file system and the result is still a single repository that dune knows how to build at once.
and it will ignore library boundaries, so I won't build the whole ssreflect if I only depend on bigop
or something like that?
indeed
that's _so_ convenient
when composing a new global set of rules is created
so that's a blessing when working with plugins and modifying Coq for example, I don't need to wait
it also uses OCaml -opaque
which means a big practical speedup, etc...
since I don't hack Coq often, the only real pain I've had is with extracted OCaml files... they have to be manually specified in something like Make, but I guess Dune has similar features
for example, we often only want to build the OCaml project without checking all the proofs
or do just-enough-proof-checking-to-get-extracted-file
we could indeed have better support for extracted files, you can add rules in Dune for them
that's a good idea to add to the coq_dune file, a field indicating which libraries are extracted
distributed systems verification projects have this absurd ratio of proofs-to-code
maybe 20:1 or more in my experience
code gets extracted in 20 seconds, proofs take 1h to check
at least they're not tightly coupled
you are talking about verdi?
and verdi-raft?
for example, we're working on new projects
similar ratios have been found in other project like for example the verified lucid compiler
it is funny as we are discussing verdi and verdi-raft in our distributed system verif seminar in Paris :)
indeed one question we had is how to improve the ratio there, and how to make statements of theorems a bit more legible
we were discussing some tricks used in math-comp in fact :)
proof checking is indeed a pain in coq, some "hacks" such as vos/vok [see PR] should help and will be supported by coq_duen
I also wanted to write you about incremental compilation
but the thing is that Coq cannot currently process proofs properly in parallel and indeed it is looking like it won't be able to do so for a while :/
I wrote some time ago a prototype of a new scheduler that could help a bit, however, it is killed by sections
and I don't know how to solve that problem; Proof Using
is not a solution to me
I think in big projects Proof using.
is feasible, we were able to automate annotations
basically, one can run auto-annotate once a week or something
anyway, even selection/parallelism at the file level can help a lot
and then tricks like using a 32-bit Coq (we get 20% speedup or so)
flambda can get you another 10% easily
with the right options, as documented on INSTALL
oh, good to know
yup it is ridiculous how faster 32bits are
sadly these tricks don't seem to be widely known
well it is documented in install and we have insisted a bit on it; but yeah, it is hard to get people to use it; at least the default binary builds will be optimized
I dislike Proof using
tho, it is really cumbersome, and the user should just not be aware of that. I can imagine situations where the context is like in the hundredths of section variables, so Coq should take care of that; unfortunately that's a hard problem to solve.
Maybe if we add incremental support to .vo
files we could indeed handle Proof using
like info automatically
Now we have these .aux
files, but they are a pain to handle
time to introduce .vp
files
what would they contain?
w.r.t. distributed systems, I have some hopes that there will be a big project based on distributed separation logics (shallow embedded by Sergey et al, deep by Birkedal et al), it solves a lot of code/proof composition issues we had with Verdi
btw @Emilio Jesús Gallego Arias are you coming to CoqPL by any chance?
I will give the invited talk I think
so yes :D :D
oh great
I need to book my tickets tho
I will give a talk as well, hope we can chat a bit
of course!
fantastic!
we hope to join the consortium quite soon
cool :) I am not up to date with that tho, this is Maxime's territory.
right, I think Zach Tatlock at UW will be in touch with Maxime
Now you reminded me that I am very late with loads of admin stuff so I will be offline for a while
:)
OK thanks again
also going to this https://www.college-de-france.fr/site/xavier-leroy/inaugural-lecture-2018-2019.htm
thanks to you!
let me know how things are going with Dune, I shall write you "soon" by mail about incremental compilation by the way
great
so, apparently the Coq OPAM repo is not seeing a lot of attention lately, I think this is the longest turnaround time I've had for years
(for getting a PR merged)
still think having released packages for most contribs/community is a good idea
@Karl Palmskog You might request @Enrico Tassi to put you in the opam-maintainers team so that you can merge PRs yourself...
I'm probably too much out of the loop w.r.t. CI practices, OPAM conventions, etc., to be a good maintainer there
@Théo Zimmermann so what should conventions be with branches/versions for community projects? Just a master branch that's backward compatible as far as reasonable, and then point to releases for anything else?
and releases whenever a new stable Coq version comes out that the last release is incompatible with?
@Théo Zimmermann I just got an email notification from travis, saying that build passed — I just wanted to let you know that I like this feature and thanks a lot for taking care of this
so CI via Nix seems to be great when there's a tarball, like master
and 8.8
, but slow when there isn't, like for v8.9
or is there some magic way to get precompiled Coq 8.9 branch?
I tend to use pre-build Docker containers with a fixed Coq version, so haven't dealt with moving target...
@Karl Palmskog you should ask @Théo Zimmermann , but I think that v8.9 has the right nix job to do the cachix thing https://gitlab.com/coq/coq/pipelines/34725732
OK, @Théo Zimmermann here is an example of a slow job, can we do anything to speed up by changing some Travis/Nix configuration line? https://travis-ci.com/coq-community/lemma-overloading/jobs/159911331
@Karl Palmskog Sorry, I have been completely disconnected from Gitter during a workshop I was attending.
Thanks for your questions. Indeed, you have a beginning of an answer in my reply to your review on GitHub.
I'll try to sum up the rest of the situation later today and what I think are the ways to solve this.
sounds good
by the way, how casual are we with proposing new projects for moving into the community? I've come across several unmaintained plugins and the like that look interesting, but where I have no pressing need to use or motivation to maintain. It may still be worth documenting these for people who may want to learn-by-porting or similar.
I think you should open an issue for them, and add the "maintainer-wanted" tag.
We should not be afraid of adding many projects. It is OK if they end up unmaintained once again: in this case we mark them as such and "archive" them.
Unfortunately the opening of the issue about Nix will have to wait tomorrow
OK, will open issues then
templates for README look good btw, just feel we could push OPAM packages more, there may be some other place for that though
are there best practices for -Q
vs. -R
in _CoqProject
among Coq devs? We tend to use -Q
, and I think uniformity in how one uses a module inside/outside a project (always qualify by namespace) is good.
for example, one could use the heuristic of: -Q
unless -R
is really needed due to need for branching directory structure
@Karl Palmskog I think the manual would benefit from a bit clearer exlaination about these flags. Would be awesome if you had time to put some of your knowledge in there!
@Karl Palmskog -Q
is the recommended one indeed. I almost included template files for Makefile
+ _CoqProject
with the -Q
option but did not because the listing of the .v
files is not something that one can do with just the template language.
@Karl Palmskog see also dune/dune#1555
when that is ready you will be able just to depend on libraries by name and you can forget about -Q
/ -R
@Emilio Jesús Gallego Arias does that enable capturing extracted files as well?
sounds great even without that though
@Emilio Jesús Gallego Arias coq support in dune! very cool!
@Karl Palmskog yes we can add an (extracted_modules ...)
field for sure
in a sense that's not so different from native compilation, which produces ocaml files
for posterity, the right link is ocaml/dune#1555
I still think one should mostly use OPAM for managing Coq dependencies (e.g., git-based packages), although a composable build via Dune makes sense if one is co-developing several independent projects
Note that Dune will generate OPAM packages / allow to specify external dependencies soon, so that is stricltly more general. But at the Coq build level, we cannot depend on OPAM.
hmm, I'm not sure that HTML processing of stuff inside template variables is what we want: https://raw.githubusercontent.com/coq-community/lemma-overloading/template-gen/README.md
I think it detracts from non-github readability to have a bunch of "
, '
and the like
There is a way to not preprocess : {{& }} (see the use with opam version constraints)
OK, then I think that that should be used for description
and documentation
at least
Indeed.
Feel free to push a commit fixing this without going through a PR.
OK will do
so here is a problem with the current README and opam template: there is no way to add new people as authors, because they will be listed as "Initial author(s)"
one may want to credit someone who is not an initial author, e.g., for doing refactoring, and then they should show up, e.g., in the OPAM file
I see two ways to solve this: (1) rename "Initial author(s)" to "Author(s)", or (2) introduce some other category, e.g., "Contributor(s)" that are also listed in the OPAM file
@Anton Trunov I think it was I that removed the old lemma-overloading branches (v8.5
and so on), but reading Théo's argument for preserving contrib history, maybe we should bring them back
@Karl Palmskog We still have the corresponding tags, so restoring the branches might not be strictly necessary. E.g. we could put a tag on the last commit compatible with the corresponding Coq version. I guess with many more projects in coq-community we would not be able to do backporting due to the lack of manpower.
But I’m fine with bringing the branches back if the coq-community members feel it’s useful.
There's less tags than there were branches, no? Tips of branches before 8.5 did not have any corresponding tag. But that does not look like a big loss either.
so, are project website templates in a roadmap somewhere? I think the template MathComp uses (https://github.com/orderedlist/minimal) could be good with some small modifications
a real domain instead of coq-community.github.io
would also be nice
@Anton Trunov could you check this Makefile template? https://github.com/coq-community/manifesto/wiki/Project-build-scripts
basically it's my adaptation of what most contribs are using, but your fcsl-pcm
Makefile is a bit different, maybe you could explain the tradeoffs
in my testing I can't really see much of a difference in practice
a real domain instead of
coq-community.github.io
would also be nice
You think it would matter? If yes, we could ask the Coq Consortium to fund a domain name, this is quite cheap.
@Karl Palmskog Sorry for the delay, we had a long holiday here. AFAIR, I copied that stub from https://coq.inria.fr/refman/practical-tools/utilities.html?highlight=coq_makefile#reusing-extending-the-generated-makefile
Then I suppose the author of this is @Enrico Tassi.
OK I think I will do an issue on the Makefile thing and just ping him in
@Théo Zimmermann I mean, elf-community has a domain, right? It think it gives a sense of "this not just a few repos people casually maintain"
correction: http://elm-community.org
Right. I will look into this.
so, should the documentation website + coqdoc live in a "web" directory or similar in the code branch like in mathcomp, or should it only live in the gh-pages
branch?
maybe only basic static website files + generation scripts in master
?
GitHub pages support both the gh-pages
branch setup and the docs/
sub-directory setup.
The second one has the disadvantage to commit compilation outputs with the sources but seems much easier to manage.
In particular, if the future of Coq packages is indeed to use Dune as a build system, then we will be able to rely on the "promote" rules that Dune has to automatically update the docs/
sub-directory when needed.
I think we should go with docs/
for now then
:+1:
do we want Coq-community projects to use Proof using
annotations? Even though they are kind of awkward to add/maintain, it seems that this is the only way to fully use fine-grained parallelism, even if the new vos/vok approach is adopted (coq/coq#8642)
would be nice if we had some general badge for linking to DOIs for papers. Like the Zenodo ones but without the Zenodo
@Théo Zimmermann just a ping about the domain thing (IMO, either coq-community.org
or coq.community
or both). If funding is an issue I wouldn't mind contributing.
Funding should be OK as it is not much and Inria has some money. The more complex question is for instance who should be listed as an owner for this domain name, who should have access to the admin panel (even if obviously we only want it to point to GitHub pages)... It could either be an individual (me for instance), or we could have Inria purchase the domain in its own name. I asked about this at the last WG, and the answer was not clear to anyone. Maybe @Maxime Dénès can get info about this. He's not in this Gitter room but I'll ping him by PM.
I can try to investigate, indeed
@Théo Zimmermann I spoke briefly to Enrico at CoqPL about the SPDX thing. I think our consensus was that we should go ahead and start to use SPDX identifiers in the Coq OPAM repo right now, migrate old packages as we go along, and add CI checks for new packages
Cool!
so I think I will do a manifesto PR to enable using identifier
and we should use it when rolling out releases of all Coq-community packages
Yep, and probably remove the shortname
at the same time, right?
yeah probably a good idea
I also think I will do a separate PR that generalizes some templates for use in Coq-contrib
(with Coq-community URLs still being default)
I think we should set some tentative goal to get most projects released for 8.9 in Feb
I also think I will do a separate PR that generalizes some templates for use in Coq-contrib
Indeed, that cannot hurt.
I actually find a bunch of projects in contrib super useful, but no spare cycles to take over maintenance
Yep, do not hesitate to open issues on the manifesto tracker though.
When we have enough projects waiting for a maintainer, we might do a call on Coq-Club...
I think Maxime did quite good PR during CoqPL, but the best target group may be students (who've gotten through something like Software Foundations)
I think we should set some tentative goal to get most projects released for 8.9 in Feb
We can try to start setting up some kind of automatic deploy in CI as suggested by Emilio in https://github.com/coq/bot/issues/30. I'm not sure how hard/easy that would be and how much it would help maintainers.
yeah I think that would be great if we can figure out more automation there.
I think Maxime did quite good PR during CoqPL, but the best target group may be students (who've gotten through something like Software Foundations)
Yeah, I was thinking about students. And also about adding a mention to Coq's contributing guide for additional contribution suggestions. What do you mean by "PR" in this context?
advertisement
he had a slide calling for contributors basically
Advertisement for coq-community specifically or for Coq in general?
for Coq-community
Hey that's nice! Especially given that he was not so convinced initially :)
BTW I am sorry I couldn't come to CoqPL, I will try harder to come to the Coq workshop.
I still have a coupon to use to produce coq-community stickers, BTW. That comes from the winning of the logo.
cool, I will try to come as well
(that's a $75 StickerMule voucher: https://www.stickermule.com/uses/open-source-stickers?utm_source=openlogos2018&utm_campaign=openlogos2018-sponsorship&utm_medium=referral)
until then I'll try to attend the workgroup meetings, although my French is super rusty
However, I don't know if it expires.
We don't usually speak French during WGs.
At least, we make sure not to speak French if there is one non-French speaking person attending.
But even when we are all French speakers, we sometimes prefer to speak in English to facilitate YouTube broadcasting.
OK that's nice, I try to watch at least some parts
oh, I think I can say this finally now, we've been working on mutation analysis of Coq projects via SerAPI and needed a bunch of good projects for experiments and Coq-community was a great source, so thanks @Théo Zimmermann
Thanks for your active support!
I've been looking a bit at your work with Emilio and your UT lab ;-)
without the CI would have been much harder (we were basically working against v8.9
)
I'm sad I didn't know about your team when I was at UT Austin for a year (but in the CS dept)...
I believe I was at UIUC when you were here
and my boss too
Ah OK I didn't know your boss had moved recently!
I think he started in 2016
but there seems to be a lot of shuttle traffic between UIUC-UT, e.g., Tandy Warnow is now UIUC
Yep, I know and she was my boss at UT Austin
(during the second semester, after a strange first semester with the ACL2 team)
the only Coq-related people I know of now at UT are William Cook and Don Batory who did a bunch of work with Ben Delaware on product lines of theorems and other SE concepts in Coq
I had classes with these two :)
But Don was a strange guy, I didn't know he had worked with Coq
I'm less surprised to hear that William Cook has. I learned Haskell in his class.
I think he didn't work with it directly, but he has/had students that use it for sure
I guess we do similar things in that we use SE methods for Coq. Main drawback is that SE conferences that are natural home for the research are not super positive about proof assistants.
Yeah, it seems to me that there is a grand divide between SE and PL and people who are at the frontier do not feel like they belong.
SPLASH looks like something that is a bit at the frontier though.
at POPL people were really positive about better tooling, but obviously tool papers are not their niche
TBH I am only starting to discover the SE domain as it's not really my supervisor area but this is what I want to focus on.
yeah OOPSLA may be the best middle ground.
@Théo Zimmermann any specific form of SE? we obviously look a lot at the "evolutionary" form (CI, incrementality, revisions, ...)
The whole field is pretty new to me but I'm looking quite a lot into studies on the open source development model.
I've just submitted a paper to MSR (Mining Software Repositories).
This is associated to ICSE.
ah, we've talked about "mining proof repositories" stuff here
Ah that's cool. Do you have a pointer?
there are some papers in that direction, like metrics for proofs
I would be interested in pointers in research on CI too.
hmm, I'm aware of at least a few, but there's a lot of different niches there
I can send an email with some stuff
Thanks!
I assume the paris-diderot email?
Yep, that one is good.
it's interesting to compare Coq and Isabelle w.r.t. maintenance and so on. The Isabelle Archive of Formal Proofs is great, but it's very much an "in or out" situation
either your project is in it and gets immediate updates for every conceivable change, or you're outside and will rot away
Yes. And getting "in" supposes having already attained a certain level of maturity.
I think Coq is lacking a bit of certification though, their reviewing gives a lot of respectability
Yes, that's why the coq-community project has this idea of an "editorial committee".
I mean, we know that there are projects that are just so much above the standard project, but it's not like it's obvious which ones they are to outsiders
But I have not been making any progress on that front by lack of time mainly.
oh, right, you were thinking of that with Pierre [Casteran] right?
Yes, and some others like Bas Spitters.
Jasmin Blanchette says he wants to do an AFP for Lean as well
I think the Isabelle AFP is just so absurdly tight with Isabelle development, both Coq and Lean could be a bit more loose
AFP might not be the right model for a new proof assistant. But there is still work for me to prove that I have something better to propose :wink:
That being said, Lean might not be yet in a state were they can manage backward compatibility.
And then, this tight link with the development might make sense.
AFP also fills the function of providing "academic cover" for just doing the actual proof work
(like for Coq and its plugins)
one can put in one's CV that project so-and-so got into the archive
OK, it was not clear to me if that was enough for people, or if they always used it as a companion to a real publication
I think it's both, I know Jasmin tends to emphasize both
like IsaFOL, it's so many papers at this point
so the best single reference is what's in AFP
Thanks for your mail!
:thumbsup:
@Théo Zimmermann Adam Chlipala said he attempted the transfer of Chapar, did you see anything as GitHub org owner?
@Théo Zimmermann I told Adam to try to transfer the Chapar repo to your personal account (always works), then you can transfer to Coq-community
I think we need some checklist there
oh, that failed too, see email
I didn't see anything. You can normally always transfer directly, a repository you are admin of, to an organization on which you have permission to create a repo.
@Théo Zimmermann Adam Chlipala says he still doesn't have privileges on coq-community, could you double check an invite has been sent?
@Karl Palmskog There is a pending invitation for @achlipala. He can accept it by going to https://github.com/coq-community.
Adam has two accounts. I did not invite his -biz
account.
:thumbsup:
btw there are so many future tasks related to SPDX I'm going to keep the issue open
ok
since the cat is out of the bag on mutation using SerAPI in Coq now, I'm probably going to add some results as issues to Coq-community projects
cool :+1:
basically, most unkilled mutants are not bugs but kind of about dangling definitions
arguably, one might want to not have a bunch of random data and functions unconnected to the main purpose of the library
but it depends on the context
What about unused lemmas? Are they flagged too?
we didn't mutate lemma statements this time
might be better to use something like dpdgraph there
I see
but it may make sense for some projects
I just couldn't find a good way to justify it in the paper
the functions+data vs. spec dichotomy is strong in the SE world, but not so much in math+theoretical CS
I think the number of mutants could have become ridiculously large also, but I think we'll do some more experiments this spring.
since the cat is out of the bag on mutation using SerAPI in Coq now, I'm probably going to add some results as issues to Coq-community projects
Not really tho, only people at CoqPL know about it
that is Maxime and Enrico, I think Enrico got confused with the iCoq paper today
@Théo Zimmermann I'm going to merge some meta + opam + doc stuff for Hugo's Coq-community projects, I don't think he'll mind, right?
He won't mind.
I think it's time to write a template for OPAM2 files
some packages should probably go into extra-dev
Is there any way of having opam1 and opam2 files co-exist in a repo? Otherwise, I guess we'll just have to have a switch to decide which version to use...
I don't remember if you were there when Enrico told this in the WG but the plan is to migrate the released opam repo to opam2 during the 8.10 beta.
yeah I heard that. We could always have some convention like <name>.opam2
.
the annoying thing about opam2 is they have both a synopsis
and description
field
I'm not sure either of them can/should contain Markdown
one possible take: we do a synopsis
field in meta.yml
which is a one-liner that should be used in the GitHub repo description and should mention Coq
then we just use the description
field from meta.yml
as is
maybe one could automate synchronizing repo descriptions with synopsis
at some point
:+1: sounds doable
OPAM2 migration heating up: https://github.com/coq/opam-coq-archive/pull/587
so it seems like an odious requirement to not have OCaml warnings in old plugins
What do you mean @Karl Palmskog ?
I would be in favor of not having such Coq-community plugins in Coq's CI
why is it odious?
I mean, assume maintainership and suddenly you have to refactor a lot of internals
even though the plugin works
I don't think large changes are needed, most warning are either serious bugs, or trivial to fix
but indeed see the discussion in the issue, allowing some warnings to go thru introduced serious bugs in almost all plugins
for example with the merge of primitive integers
also disabling warnings in your plugin is usually OK
keep in mind that Coq people does maintain plugins these days, as we submit the overlays
even though the plugin works
I wish this was the case but my lastest overlay rounds I did find many serious bugs signaled by warnings
the aac-tactics warnings have been around for ages and are all over the codebase
let me look into that one
we can of course disable that warning for acc-tactics
it would be great to actually find which warnings are the most pressing to fix
I can't look at it in the near future in any case, so any changes welcome
a problem with the way you formulated your issue @Emilio Jesús Gallego Arias is that you don't really give a timeline (obviously you can't because nothing is decided)
but it would have been good to formulate in a different way "could you try to see if you can fix ? / we can help if needed"...
yeah I think it would be great to say, after 8.10 release we will require this
not a real critic, I have done the same thing in the past
with warnings too
so I can plan to spend time
yeah see my comments here https://github.com/QuickChick/QuickChick/issues/143
acc-tactics dies on an comment warning
these ones are trivial to fix
sure, but there are lots of incomplete matching warnings
let me check a non failing build
Note that @Fabian Kunze has announced his intention to redesign part of the plugin, so some warnings could also disappear that way (but I don't know about the timeline)
sure, but there are lots of incomplete matching warnings
I don't see any @Karl Palmskog https://gitlab.com/coq/coq/-/jobs/164033445
where do you see them?
OK maybe I mixed it up with some other plugin, or some Coq level warning
Ok, let me know if you think this is a problem on some other plugin
I think we should do what we can for the poor coq-contrib projects, I have used many of them in the past, taking the first steps now
@Théo Zimmermann could be a good idea to have a general "Call for Coq-community contributors" in the Discourse announcements?
so here's an idea I've thought about for some time: mining Coq project tarballs from the web
there's just so much Coq code out there that's not on GitHub but are on some researcher's personal website
probably one could write a spider to look for links in Coq-related papers, download tarballs, and look for .v files
I have a personal archive @Karl Palmskog , each project I've come across then I download it, 188 so far
nice
@Karl Palmskog I would like to do this, but first we should expand our list of projects looking for a maintainer, and second we should wait that for Discourse to be a bit more populated.
We only have 122 users so far.
:thumbsup:
I got Chapar to work with 8.9+master at least... although the OCaml part still needs revision
it's going to need some thought how to set up Travis for OCaml subprojects, e.g., one does not want to have OCaml package dependencies for the Coq part
with only 3 weeks until OPAM 2 upgrade, I guess we should phase out OPAM1.2 files/template
@Théo Zimmermann I want to test the templates with a Coq-contrib project, which one would you recommend? Do they all have Travis enabled?
None of them have Travis enable. Let me change this.
Alright, @Karl Palmskog that's done. I'll also add you as a member to the coq-contribs organization to give you push access everywhere.
:thumbsup:
one thing that's missing now is to write a converter from description
to meta.yml
with that, contribs can be made to look like this and become much easier to adopt into Coq-community: https://github.com/coq-contribs/quicksort-complexity
Yes, that would be useful but I don't think this is actually something that can be fully mechanized.
FTR, public domain != the Unlicense but you know this already from https://github.com/coq-community/manifesto/issues/38#issuecomment-469614018
sure, I took the best approximation, the license in description
was already inconsistent with LICENSE
@Théo Zimmermann so what string should we use for public domain then, as a policy?
I would generally vote for "relicensing" under Unlicense
maybe you've already seen https://wiki.spdx.org/view/Legal_Team/Decisions/Dealing_with_Public_Domain_within_SPDX_Files
in my reading, any "summary" of a public domain dedication can be considered not well defined, for example, just saying "Public Domain" doesn't solve the problem
We should add this data to #38. I'd vote for relicensing too. I would though only apply this decision for packages that are under the coq-community umbrella, in coordination with the maintainer. coq-contribs doesn't just have the problem of packages with unclear public domain dedications, it also has the (frequent) problem of packages with no license. If you want to use the README template for these projects, you'll have to find a solution that works in all these cases.
it's not like I enforce identifier
to have some format yet, and personally I'm content with having a solution only for the more high-profile coq-contrib projects
:+1:
we should probably think about doing "semi-manual" releases for 8.9 of the community projects at this point
I would say as soon as the OPAM repo migrates to OPAM2
There are two cases to consider though:
I am wary of too much automation though. The point of coq-community was not to reproduce coq-contribs.
I think many (most?) 8.8 packages are incompatible due to the Implicit Arguments
deprecation
I would argue for "libertarian paternalism": provide automation tools to maintainers to follow best practices, but don't require people to use them
... only give nudges, such as saying that it will save time, etc.
we should probably start to use coq-<shortname>.opam
rather than just opam
, if there are several OPAM files present the CI will try to build them all in parallel...
with coq-<shortname>.opam
one can do opam pin add coq-<shortname> .
in CI
Indeed, that would be better, but not something that we can really account for in the template proper. Except by changing the documented script for generating all the templates.
hmm, I think the Cachix-Coq is stale: https://github.com/coq/coq-on-cachix
not updated for 7 days
this makes CI fail for my nice plugin port to handle SProp changes...
fixed
:thumbsup:
@Théo Zimmermann you've probably already seen these, but just to double-check: https://sketis.net/2017/social-networks-in-the-isabelle-and-coq-community https://arxiv.org/abs/1609.07127
I hadn't seen the blog post but I did read the paper when it appeared.
But thanks for sharing. I could share a few more thoughts but that would have to be in private.
@Théo Zimmermann can you invite this guy to the Coq-community GitHub organization, he showed some interest in having one of his projects co-maintained in the organization: https://github.com/vrahli/
:+1:
@Théo Zimmermann with OPAM2 rolled out for released
packages, I think it's reasonable to do 8.9 releases for Coq-community projects (at least the low-hanging fruit maintained by me/Hugo/etc.)
or what do you think?
By the way Dune 1.9 (due in a few days) will support dune-release
workflow for those interested
I am not sure how to make dune-release submit to the coq opam repos instead of the main one tho
@Emilio Jesús Gallego Arias so what is included in that workflow? actually creating release on GitHub?
opam pin add dune --dev
allows you to test that now
the workflow does everything: builds, run the tests, builds the package, updates the opam file, creates the github release and repository PR
and the PR target is configurable?
that's my question, in the past it was
but they tweaked some things, dune-release / to-pkg has the notion of backends
so it shouldn't be too hard
so maybe the main drawback is that the project has to be dunerized?
yes it is designed for that
you can use opam-publish / topkg otherwise
I dunno if anyone has written support for coq_makefile
OK, then I would probably vote for aiming to use that for 8.10 releases
and use opam-publish for now
it is experimental of course, but if anyone is interested
I use dune-release / Dune for all my ocaml projects and I am happy
am interested but it should probably be tried on some small project
is the Coq support in 1.9 as well?
basically I had never to care about things
yup
sorry, the Coq support is what is in 1.9
dune-release has been there since a lot
so with Dune 1.9
if you add the Dune files to a Coq project, you can just run dune-release and have everything done
provided there are no bugs or course :crossed_flags:
@Emilio Jesús Gallego Arias I think I'd try it first on some small coq-contrib and go from there
I think it's obvious most Coq-community projects will want to migrate to Dune but at their own pace
also nice to show people a commit: here is what you need to do to port your project with legacy build system
there is quite a few documentation both in the Coq , Dune manual, on discourse too
https://dune.readthedocs.io/en/latest/coq.html
of course improvements welcome
https://coq.discourse.group/t/a-guide-to-building-your-coq-libraries-and-plugins-with-dune/20
pity in discouse it seems we cannot assign a post to two categories
also Dune release notes will contaian a small example
sure, but not sure what the bottom line was there, e.g., one needs to keep -R
flags in _CoqProject
?
_CoqProject
is not taken into account
you never use -Q
or -R
flags with Dune, that's the whole point
it takes care of it
maybe should be in the F.A.Q.
but what about CoqIDE/ProofGeneral?
I just want to clone a project, build it, then start to modify files
Oh good point, I guess I should submit a PR to GP
to PG
as for CoqIDE
I dunno
indeed that's a todo
so then one should arguably: delete the file list from _CoqProject
, but keep the flags
for compatibility
not only that, but the build hygiene will mean these tools don't find the path
oh, so .vo
files end up somewhere else
then you really need that PG patch
I think it's a very common workflow to clone + build + open file in emacs/PG
I think some projects then might even want to enable building with both coq_makefile
and dune until the community has switched fully
I would argue keeping the Makefile
is good in any case, since many people likely don't even know dune install
I think some projects then might even want to enable building with both coq_makefile and dune until the community has switched fully
Not a lot of reason to do that as the installs are compatible
oh, so .vo files end up somewhere else then you really need that PG patch
Yup I need a patch that calls dune coqtop dir
to edit a file on that dir
Yes keeping a Makefile as a wrapper is customary
Actually we could even do dune coqtop --file=foo.v
and would make sure that all deps are up to date
needs more discussion as merlin / OCaml people are implementhing heavier protocols for this
But you are right for now I've only worried about batch-building
so flags like -arg -w -arg -notation-overridden
are handled by dune as well, right?
I think we need a way to communicate those to PG/CoqIDE
I wonder how dune will sit with the MIT people, who I think are using git submodules and flags like -R
with paths
for dependency management
so flags like -arg -w -arg -notation-overridden are handled by dune as well, right?
Yes, you just invoke coqtop
wrapped with IDE.
I wonder how dune will sit with the MIT people, who I think are using git submodules and flags like -R with paths
As far as I understand it will be a blessing for them.
my point about a project having both dune and coq_makefile installs is that some of your tooling could assume paths to .vo
files
so you might want to use dune for batch-building and installs
I also want to look at the extraction story
for example, I have a bunch of custom rules that <extraction-dep>.vo
must be built before we run coqc extraction.v
which produces myfile.ml
my point about a project having both dune and coq_makefile installs is that some of your tooling could assume paths to .vo files
so you might want to use dune for batch-building and installs
I am not sure what you mean here, Dune is designed to install in a compatible way with coq_makefile projects, for the v1 version of the lang
with .vo
files hygienized the extraction build rules won't work
installing is not the only goal of building
I might just want to obtain a single .vo
file and have it live alongside .v
, because some ad-hoc script assumes it
so I dunerize my project but keep the possibility of building with coq_makefile in my Makefile
or you can promote a file; but in general it is just easier to run the ad-hoc script in the install context
if you call it from the Dune file it will think the .vo
s are there; at least for version 1.0
per the manual, there is no way to use -Q
in coq-dune?
What does "using -Q" mean?
But indeed, wrapper modules are compiled with -R
so you don't have to use the wrapper, à la OCaml
however when depending on them they will be targetted with -Q
so they are wrapped
this needs refinement in the next PR
I'll open an issue about that actually
OK I see
Yup that's not very well explained I think; please open issues for bad documentation
You can override the flags but that's not advised, as it won't work on the 2.0 version of the lang
Dune + Coq 2.0 will install dune packages with the metadata and that should allow fancy stuff
@Karl Palmskog The best way to integrate the Dune build with custom scripts is to add a custom build rule within the dune
file that explicitly calls the script on the right dependencies. Dune will copy all the required files in the build directory, and if some dependencies need to be built first, it will build them, then it will call the script. If later on, you want to move back some build results (such as extraction outputs) to the tree, then you can use promote rules indeed.
@Karl Palmskog Regarding your initial question, I don't remember what was the motivation for waiting for the switch to opam 2.0 to do the releases, but indeed, it's probably a good idea to do some releases for 8.9 now, even if that must be manual (it's only a few packages after all). And we can try afterwards to start moving packages to Dune and piggy-back on dune-release.
Something I need to finish is coqdoc coq2ht ml support. Should be easy however I need to finish the composition patch first. I introduced a "virtual" .va file as to allow users to build a single lib, and that's what you want IMHO for doc.
@Karl Palmskog can you open an issue about extraction support in Dune ? Thanks!
@Emilio Jesús Gallego Arias will do
thanks @Karl Palmskog
@Emilio Jesús Gallego Arias @Karl Palmskog Just noticed this discussion, folks :) As I mentioned in coq/coq today, I was experimenting with dunerizing a Coq library (fcsl-pcm).
So far I can make it work with one global dune at the project root file with (include_subdirs qualified)
mechanizm.
There is already mentioned issue with PG, which could be worked around with opam install .
command (basically using it instead of make
). Unfortunately, it would only woks for small projects, as opam
recompiles everything from scratch after every change.
Still, I like very much the direction the tooling is going! Kudos to Emilio!
Thanks @Anton Trunov , I will add proper PG / CoqIDE support soon; for now I'm afraid that Dune is most useful for compilation.
Adding interactive support is next on my todo list, but I need first to get composition sorted out [which mostly is]
Makes sense, @Emilio Jesús Gallego Arias. Keeping my fingers crossed :)
@Anton Trunov In a recent test of building a Coq project with Dune, I changed the _CoqProject
line so that it would find where to look for compiled files: https://github.com/Zimmi48/huffman/commit/baade609aea67f8977f5954be9465ba3c38a50c3#diff-9962f476442d017ffc92f6c95391d7beR1
Obviously, this is a hack until there is better editor support.
@Théo Zimmermann you can also extend COQPATH
with _build/install/lib/coq/user-contrib
I think; indeed the question of how to properly integrate with editors is still a bit open also for OCaml
@Théo Zimmermann @Emilio Jesús Gallego Arias Thank you both for your suggestion!
Generating _CoqProject
files is a bit ugly, as in particular it breaks build hygiene
@Emilio Jesús Gallego Arias
Generating _CoqProject files is a bit ugly, as in particular it breaks build hygiene
But this is how it works for .merlin
. Not saying it's the perfect solution but it's good enough to start with.
.merlin
has many other problems, so we better try to jump into the next integration system.
will now be helping out merging PRs to the Coq OPAM archive. This means I can have quick turnaround time for Coq-community packages
I think I will start out by adding dev packages for all Coq-community packages that use the template
:+1:
is there a way to test w/ 8.10 branch and/or beta in Nix?
ah, saw at least how to do the 8.10 branch
I did all the releases and package submissions for the projects I maintain, was fairly quick
@Théo Zimmermann do you think Hugo minds if I do releases of Stalmarck and Binary Rationals?
would be useful for us to get them "timestamped"
I don't think he would mind.
Coq 8.10+beta1 is in nixpkgs master but not yet in nixpkgs-unstable (there is always some lag). Testing with this version thus requires some waiting, or some nixpkgs pinning.
OK, I'll make do with v8.10
in Nix for now
FWIW 8.10+beta1 is in nixpkgs-unstable now.
@Théo Zimmermann so this mean I can just use8.10+beta1
in meta.yml
?
@Karl Palmskog Put just "8.10". The Nix file converts this into coq_8_10
which is the attribute name of the package.
OK great
now I just need 8.10
Docker image and my life would be (nearly) complete
Yep, waiting on @Erik Martin-Dorel for this. He might be on vacation, because otherwise he is usually pretty reactive.
I realized that the template should support n Coq projects instead of just 1 + extraction, have had several projects where this makes sense
Yes, I think Dune in particular is going to make it easier to move towards monorepo where it makes sense.
it would probably be something like 1 primary + n secondary + m extraction
I have an example in mind which is coq-community projects zorns-lemma + topology
yeah we should fix those templates to at least be up to date first though
I had a PR opened about this
two actually, although I think one of them needed some changes
But the difference between having several projects in a monorepo and the extraction question is that in the first case the sources will be usually be located in different sub-directories
I think that can happen with extraction as well
Right, you could have additional OCaml sources, and consider the Coq project to be a dependency.
I think we can write some wiki page about: the possibilities for organizing a Coq+OCaml project
That would be a good step forward indeed.
figuring out boilerplate has taken me huge effort over time
Yep, and everyone has to figure the same thing over and over
I remember when Ruby on Rails came around and it was "convention over configuration", they had set a lot of defaults like directory structure for you
it was nearly always possible to override the "biased" defaults
That's what Dune has tried to do with the OCaml ecosystem as well I think. And that was indeed one of my goals with the coq-community templates ;-)
but you had to be sufficiently bothered by them
yeah I saw that they're merging dune-release
into dune, that's very Rails-y
Are they?
https://github.com/ocaml/dune/issues/2171
btw @Théo Zimmermann I tried getting in touch with Tej Chajed over a release of ATBR for 8.9, but no response so far, maybe we can just add me as ATBR maintainer...
or what do you think?
How did you try to get in touch? I'm not surprised that Tej is not releasing, because he doesn't use opam, so it would make sense for you to take over the releases.
tried over Gitter (I think he was active recently), but I guess I can do mail as well
Or issue?
I wouldn't mind adding you as a maintainer there as well, however we must be careful not to make coq-community be another coq-contribs where you are the new @Hugo Herbelin. It's important that we manage to involve as many maintainers as possible in the process.
We can discuss about the right strategy for this in Sophia I guess.
agree
in this case we forked all these projects (minus chapar) internally and fixed them up a bit (so we can claim this as contribution)
other stuff that came out of mutation work: https://github.com/math-comp/math-comp/pull/346
I have an absurdly long PDF (25+ pages) going through live mutants
?
reviewers didn't think mutation itself was good enough, we have to find a bunch of weak specs as well
so I did a paper appendix looking at 30+ live mutants and why they are live (credit also to Emilio for many of the MathComp ones)
sorry I'm a bit unclear on the terminology
what do you call a "live mutant" again?
killed mutant: a project is modified and some proof fails
live mutant: a project is modified and all proofs pass
if you look at the MathComp PR it describes a live mutant which preserved correctness of sorting, but where complexity became O(n^2) instead of O(nlogn)
the added lemma would "catch" this change, since it talks about the salient non-functional property of the sort
Was this issue fixed in the meantime? The PR content does not make it obvious that this is the purpose of this change.
we can't advertise widely since we're in double-blind review
we explained to Georges in an email, so he knows
oh well...
double-blind... sigh!
I'm going to implement his suggestions and we can claim "PR accepted" and so on
yeah, people reporting bugs are hardest hit
some have to use dummy GitHub accounts
then you get a silly line in your CV: I reported 100+ bugs/issues using these dummy accounts due to double-blind
I submitted a paper in double-blind where I claim to be responsible for the Coq bug tracker migration.
If people look for who did this migration, they can find out.
But still the committees of two conferences did not complain.
yes, it's a gray area
But I don't encourage people to go and see the Coq repository in my paper.
So if people do, it's their fault.
Previous versions of my paper were also on HAL anyway.
some PC chairs would not be content with that...
but you never know
with which part?
referencing a repo that can be used to find out identities
well, it was either this or not being able to write the paper the way I did, which would have been very unfortunate
and if reviewers are looking too much, they can find out identities for sure
And I provided my full analysis pipeline and the data, so I couldn't mask the repo's URL anyway
I think we may need some dictionary, "principal maintainer" vs. "Coq-community maintainer"
@Anton Trunov should we start a Coq-community issue for moving the existing awesome-coq and try to reach the owner of that repo?
I guess the opposite order may be preferred
"principal maintainer" vs. "Coq-community maintainer"
The two mean the same to me. Do you want me to always use "Coq-community maintainer" instead of "principal maintainer"?
but I thought we were considering all Coq-community organization members as "potential maintainers" for all projects?
what would we call such non-principal maintainers for precision?
What about just "coq-community members"? See also coq-community/manifesto#77.
@Karl Palmskog I think Théo already CCed them in that issue. Still I think we should open an issue and if they aren’t resonsive we can start a new project
@Anton Trunov OK I guess we'll wait a few days more then
Hi folks, has anyone tried https://reviewable.io? I hear it’s strictly more superior than the default GitHub code review interface. Could you please share your opinion on the tool?
this is something we should try to support via templates: https://github.blog/2019-08-08-github-actions-now-supports-ci-cd/
Sure that would be nice. I have already made coq and coq-community part of the beta of GitHub Actions so this is doable as of today. Of course, before actually adding this to the templates, we should test it on an example project to ensure that it works well.
oh man, would love to try out the GitHub Actions thing out right now, but just swamped with other work
will just create an issue to collect links and resources
@Théo Zimmermann @Karl Palmskog Would you mind if I added some new tags like type: library
, type: plugin
or something like this? I will likely get an intern or two to work on coq-community projects by the end of September. And I’d like them to choose some Coq libraries to revive, but not plugins, because it’s much harder for newcomers
The new tags are supposed to further classify the coq-community/manifesto issues with maintainer-wanted
tag
And perhaps extraction
tag could be added as well
@Anton Trunov I'm assuming this is tags for manifesto issues? Those sound good to me, but maybe something like coq-plugin
coq-library
or even external-tool
for proviola etc.
That’s correct, it’s for manifesto repository.
in any case, it would be good if we invented tags so that all move-project
have one tag.
OK, I’ll add the tags you suggested. Thanks
in any case, it would be good if we invented tags so that all
move-project
have one tag.
could you expand a bit on this?
I just meant that it would be good to invent tags so that all current projects are tagged
since we have like a bunch of them
you mean in addition to move-project
, right?
yes
or do you mean we replace move-project
with move-coq-plugin
, etc.?
hmmm, now you got me thinking
https://github.com/coq-community/manifesto/labels/maintainer-wanted
I started adding more labels
but we can change that
I think what you've added there works well
but just that we can complete the tagging for all of of those, inventing more tags if necessary
ok, I added some more tags to accompany move-project
, except for VsCoq
coq-ide
or just external-tool
(or both)?
maybe just external-tool
for now
oops, I forgot to clear is: open
then you capture ProViola as well
ok
we can rename later
ok, I’m done this time, feel free to make edits
Good job! I think I liked the idea of prefixing all this labels with type:
so that it is clearer that this is a single family of tag (could also use the same color), could also be project-type:
to further clarify that it is not the type of the issue or any type-theoretic notion ;-)
We should also get some other people to add projects to this list, given how all the current ones were added by Karl.
@Théo Zimmermann Having added the tags, I’m not sure type: …
is the way to go. That’s because for some project we will have several type:
tags. Which may be confusing since type:
kind of suggests mutual exclusiveness. That said, I don’t have a strong opinion on this.
@Théo Zimmermann is it ok if I create a coq-community/vscoq
gitter room?
@Maxime Dénès For sure!
Although that would have also been totally fine to use the main room for vscoq-specific discussions.
yeah but gitter's search is not great, so if I miss some messages, it will be easier to lookup conversations in a specific room
indeed
a friend told me about how someone tried to socially engineer their way into being admin of one of his JavaScript GitHub repos (that a bunch of other reasonably widely used packages depended on)
as soon as he asked for LinkedIn profile and code examples the guy went silent
some vetting process for changing maintainers of more "important" Coq-community projects may be called for
Sure, I would definitely like to make progress on this issue. Sometimes, this social engineering hacking works: you may have heard of the event-stream incident (https://blog.logrocket.com/the-latest-npm-breach-or-is-it-a427617a4185/). I can't find it now but some community organization is the JS world ceased activity because of such concerns (which are much more prevalent in their ecosystem).
The idea of asking for another social media profile is a good one. What we could do would be to require that coq-community members have a keybase.io profile, with other social profiles beyond just GitHub.
Although that might not work for everyone (not everyone has several social media profiles). Traditional web-of-trust is also a good solution for people that can be met at conferences or workshops.
Keybase sounds like a good start, let's discuss in the near future
Here was the community organization I was talking about: https://github.com/electron-userland/welcome/issues/9#issuecomment-503768955
I think JavaScript communities are quite a lot looser, which makes it more of an issue for them. Coq and Isabelle/HOL communities are somewhat unique in that many core contributors have similar academic backgrounds and regularly meet at conferences. The question may be mostly in having an onboarding process for junior contributors, students, interns, etc.
Should we propose a badge that can be added to unmaintained projects whose author agreed to move to coq-community (that have a corresponding issue in the manifesto) but which didn't find a maintainer yet? Something like that: https://img.shields.io/badge/maintainer%20wanted-on%20coq--community-%23c1272d
Great idea! I hope the authors of unmaintained projecs will agree to merge such PRs :)
@Théo Zimmermann do you think Pierre and Yves mind if I do a GitHub release for CoqArt repo? I think a tag at least is needed now that changes need to be made for 8.10
I don't think they would mind, no.
question about best practices. In the "old days" the common practice was to put .v files in a theories
directory and build it with a prefix, i.e. -Q theories ProjectName
(capitalization aside). However, this doesn't work well with COQPATH
because with COQPATH
you can only get naming structure from directories. I've seen a few projects move to a model where theories
is renamed to ProjectName
to address this, is this a good way to go?
This works with COQPATH only as long as you install (which you can do in a local directory if you don't want to do this globally).
i see, so the idea is to install to a directory that is not user-contrib. is there a way to set that?
make INSTALLDIR=?
or something like that
Something like that indeed. I don't remember if INSTALLDIR is supported. One would have to test or check the generated makefile. DESTDIR might also work. In any case, that's probably an issue that coq_makefile's documentation doesn't mention this.
this is probably something that we should do in all Coq-community projects (include explicit version in opam
file): https://github.com/coq/coq/pull/11038
:+1:
Does anyone know why recently builds on coq-on-cachix fail?
opam builds on the other hand succeed
there's something wrong with ssreflect and Nix
on 8.11 and master, but not 8.10
I have no idea why
building '/nix/store/lsfra14m6kx9vrqv25y5y8ymci5q7cab-coq-8.11-git-ssreflect-dev.drv'...
/nix/store/7g6xj1kz46s8czlfkxfxc0zby8dvigsf-ocaml-findlib-1.8.1/nix-support/setup-hook: line 9: createFindlibDestdir: unbound variable
builder for '/nix/store/lsfra14m6kx9vrqv25y5y8ymci5q7cab-coq-8.11-git-ssreflect-dev.drv' failed with exit code 1
yeah, me neither
@Anton Trunov btw, any 1.10 release of fcsl-pcm in the works?
it's going to be compatibility-breaking, right? No Coq 8.9?
oh yeah, I’ll try to do it later next week
@Anton Trunov I'm going to do a release of lemma-overloading for consistency (after testing 8.11 locally)
:thumbsup:
repost about Lean and Coq: "There's this other system called Coq [...] It's an old version, it's the same type theory as Lean, but, you know, with more design errors" (https://www.youtube.com/watch?v=Dp-mQ3HxgDE&t=2308) (edited) "Lean is the only viable tool currently [to formalize a large part of math]" (https://youtu.be/Dp-mQ3HxgDE?t=3444)
@Karl Palmskog it sounds like we just need quotients, then all is easy :-)
if only
I set up a workflow for generating websites and coqdoc based on coqdocjs, example: https://coq-community.github.io/huffman/
structure shamelessly borrowed from MathComp
@Karl Palmskog Looks awesome! Is there any documentation describing the workflow?
@Anton Trunov not yet, working on it, will probably be documented in the wiki
cool! you mean the manifesto wiki, right?
right
That's awesome @Karl Palmskog! I am a bit surprised though to see proof scripts in the coqdoc output. Is this the default behavior?
the proof scripts are for things ending in Defined
, since in Huffman those don't have Proof.
(which determines the hiding)
my friend is helping out with fixing some annoying things about coqdocjs
so the website will probably improve in a few hours
:+1:
:+1:
ah, now you can see some improvements here: https://coq-community.github.io/huffman/Huffman.BTree.html
spacing between lemmas looks better and I added the missing Proof.
for Defined stuff
good enough to implement for lemma-overloading etc., or what do you think @Anton Trunov ?
@Karl Palmskog I think so. Btw, it would be great to have deployment automated.
not sure we can conveniently automate more than GitHub does, i.e., someone has to push to the docs
directory and GitHub handles it from there
in any case, the README here gives the general idea for the workflow, and I added the template index.md.mustache
to the templates repo: https://github.com/palmskog/coqdocjs#usage https://github.com/coq-community/templates/blob/master/index.md.mustache
@Karl Palmskog Can't you move the "Other related publications, if any, are listed below." inside the {{# publications }}
to make it appear only if there are some publications?
@Théo Zimmermann the problem is that anything inside {{# publications}}
will be repeated for every entry in the publications list
I'm sure there is a solution to this somewhere, but it's above my threshold for now
woah, glad I convinced Laurent Thery to put the Huffman pdf on HAL, his old website for the project is apparently gone now
@Théo Zimmermann so I forked CoqdocJS (https://github.com/tebbi/coqdocjs) and modified it with the help of a friend for documentation in Coq-community projects: https://github.com/palmskog/coqdocjs
ideally the changes could be contributed upstream, but the median waiting time to merge a PR there seems to be 8+ months
what do you think about a specialized fork living in the coq-community org, e.g., coqdocjs-community?
we could try to contribute stuff upstream but not be dependent on it
Sorry if I'm asking the obvious, but wouldn't another option be to propose the transfer of coqdocjs
to coq-community? @tebbi could still be one of the maintainers, but other people (like you and your friend) could help make it more actively maintained...
@Théo Zimmermann I considered this, but there are a number of adaptations that only make sense for coq-community or similar
for example, footer links to coq-community, Makefile tasks assume one follows conventions
and instructions are getting quite non-general at this point (assumes GitHub pages are used)
I guess I could start an issue and ask tebbi what he prefers
OK I see. Are these additions easy to maintain on top of coqdocjs? Not that it is likely to evolve much...
well, the core scripts are essentially the same (although that may change)
but basically everything else is different
so it will be quite a hassle to maintain on top of existing coqdocjs
the proposal was to be a good citizen and contribute general improvements upstream separately, but specialize in the repo
OK... Sometimes, the good way of making such specialization possible is to use optional switches and flags. So that if the version of coqdocjs that is used in coq-community continues to receive improvements, everyone in the community can benefit. So that anyone wanting to host documentation for a Coq project on GitHub pages can use the additional feature without being constrained by the rest, etc. But this may represent additional work...
too much work for me, this is already way over my time budget
Right. Well opening an issue to discuss it seems like a good option. It could be an issue in coq-community/manifesto where you mention tebbi so that other persons from the community see it too. So people may have the time that you lack to complete what you started...
:thumbsup:
ok done as coq-community/manifesto#88
@Anton Trunov we should do an attempt on the awesome-coq thing again, the OCaml version has almost 2000 stars: https://github.com/ocaml-community/awesome-ocaml
I might start one for HOL4 just for fun
https://github.com/coq-community/manifesto/wiki/Generating-and-deploying-coqdoc-HTML-documentation
we should do an attempt on the awesome-coq thing again, the OCaml version has almost 2000 stars
@Karl Palmskog Right, maybe we should just start. I’ll try to put some of my personal notes somewhere (most likely this week).
I might start one for HOL4 just for fun
If you started this one, could you please share the link?
And kudos for documenting how to use coqdoc!
maybe one try to ping the other guy doing awesome-coq in his own account
coqdoc can do nice stuff but it's arguably undermaintained
for example I reported the serious bug which makes all sentences with annotations disappear
maybe one try to ping the other guy doing awesome-coq in his own account
oh, you think they didn’t get a notification because we mentioned the organization, not their personal account? then we should try pinging them at least one more time
I guess we should ask then if the repo owner would like to transfer the repo under coq-community and become a maintainer?
@Théo Zimmermann @Karl Palmskog what do you think?
right, we can try opening an issue in his repo, if no response in a couple of days then we plow ahead
ok, here is the issue https://github.com/uhub/awesome-coq/issues/11
:thumbsup:
the main drawback with that collection is that it seems to be only Coq projects, not books, tools connected to Coq, etc.
I’ve noticed Programs and Proofs by I. Sergey there
right, but that's arguably a Coq project too
@Anton Trunov so I think we can just go ahead and create the awesome-coq repo, I'll do it later today unless you have objections
the OCaml one is a good template
@Karl Palmskog Sounds good!
the main work may be to get it listed in all other awesome lists
that’s for sure the biggest challenge :)
@Anton Trunov do you think there's a chance we could get permission to use Lilia Anisimova's mechanical Coq painting for awesome-coq?
they have some nice OCaml image for awesome-ocaml, that would be a nice equivalent
this should be enough that people are annoyed their favorite project isn't listed: https://github.com/coq-community/awesome-coq
I guess I can/will also catch flak for headings/subject division
very nice folks, congrats!!
should it be added to Coq's README / webpage?
I think we should wait for more opinions/PRs
things feel a bit redundant in the list w.r.t. the wiki and website, but I feel it's for a good marketing cause in the end...
there should probably be a "Framework" section for Bedrock2, Fiat, Iris, Verdi, VST
and Disel, Aneris
do you think there's a chance we could get permission to use Lilia Anisimova's mechanical Coq painting for awesome-coq?
I can ask Ilya about that
:thumbsup:
But first, do we not want to reuse coq-community’s logo?
CC @Théo Zimmermann
I mean, the list is not about coq-community
fair enough
Let us wait for Théo’s response and if there is consensus I’ll go ahead and ask Ilya
OK
we could use the part of the coq-community logo that doesn't have text I guess
but since we hopefully will get listed in other lists, I'd try to avoid conflating coq-community with Coq in general
btw, looks like awesome-ocaml reuses the OCaml logo
sure, but the Coq logo is not nice to look at
note to self: add Coq OPAM repo ref under Package Management
What about referring back to this https://github.com/sindresorhus/awesome instead of that https://github.com/bayandin/awesome-awesomeness?
It has always been very hard to maintain the lists on the Coq website and in the wiki, so I would be happy to refer to this list as a more exhaustive one.
You are free to use the coq-community logo but I agree with @Karl Palmskog that it could be confusing (unless you write something like "this awesome-coq list project is part of the coq-community organization")
It is a bit weird that "coq-community" is missing from the Community section...
Discourse is as much official as Coq-Club FTR, and Gitter as well. However, I would add some description so that people do not confuse the purpose of Gitter and Discourse / Coq-Club: Gitter is more for questions about the development of Coq and plugins and less appropriate for beginners' questions (even if we are nice).
There is also a non-official IRC
And linking to Stack Overflow / Exchange could make sense as well since there is a growing community there.
The user interface section is missing lots: cf. my wip PR https://github.com/coq/www/pull/128 (I should have finished this long ago)
I feel this is missing a "Verified Libraries" section.
And of course, the "Plugins" part should list Equations at the very least (but probably also QuickChick, etc.). A good list to inspire from is the one in Coq's CI: https://gitlab.com/coq/coq/pipelines/108285091
And UniMath should be listed in the "Mathematics" section.
many points raised above are fixed by Anton's PR which I'll merge very soon
.
@Anton Trunov I did another pass on the list. We may want to consider a top-level division into "Projects" and "Resources", like they have for Java and many others: https://raw.githubusercontent.com/akullpp/awesome-java/master/README.md
@Karl Palmskog looks awesome :)
@Anton Trunov so the recommended license is CC0, is that OK with you? https://creativecommons.org/publicdomain/zero/1.0/
@Anton Trunov I was going to tweet about https://github.com/coq-community/awesome-coq but maybe you want to do it instead?
I have some changes standing by until Anton confirms the license.
so please don't tweet just yet
Twitter is a wild place tho :)
if I start using it, I'm sure there will be some army of nitpickers looking at who you're retweeting, typos, etc.
it depends on your "community"
for me it is by far the preferred professional network these days
I was kinda joking about the wild place
something tweeter exceeds at is "I write this amazing piece of software/blog, I get 2 RT"
"some random folk sees my piece, posts it, gets 100K RTs"
personally I don't like the mix of professional and politics
xD
Ah, politics.
yeah, the mix is a problem
somehow my stream looks pretty good tho
I get the occasional politics things, but mostly about interesting CS stuff
you see someone you respect professionally, and then find out viewpoint differences are fundamental and irreconcilable
but that has happened in other social networks I was such as FB or G+
ignorance is bliss in most cases
even people using twitter for 100% technical topics have to write about other stuff ; tho I don't care so much on the case you point out, I guess I try to separate
overall far from perfect but I get a positive return from twitter
on the other hand I'm unsure research is not a lot about politics, stuff such as open source, open access, etc...
are pretty much a political aspect of my professional job
and many other stuff I'll skip but relevant to France
this is not where people usually stay
if it was mostly about open source/access, it'd be fine
I used to say that universities are just advanced training camps for politicians
well that's just an example
of course things can go further beyond
on the other hand isn't it working as intended?
if you get information on twitter that you may have a problem with certain person, isn't it an efficiency improvement?
not the right forum here for discussing this, but let's just say I disagree fundamentally with how Twitter is run as a platform
indeed, sorry for the noise; as I said I like it because lots of people is there and my S/N ratio is pretty high; on the other hand discussion about social media platform may be on topic for this channel. For example having a coq-community twitter account could be actually very very good.
Just out of curiosity, is there any other professional social network that you find interesting?
hmm, I don't think there is
I'd prefer some kind of decentralized, crypto-based stuff
that'd be cool, however there are problems for those to scale, in particular w.r.t. to blocking etc... which sadly seem to be a very real issue in the real world
at least if one can do broadcast crypto you can control who gets to read something
@Karl Palmskog CC0 is the perfect license. I’m happy we are on the same page here :)
:thumbsup:
@Emilio Jesús Gallego Arias Sure, feel free to tweet, I’ll retweet it :) But, perhaps, we should let the list become a bit more mature. I’d like to add some more stuff from Deepspec and from Coq’s CI too
OK I pushed a version with LICENSE and stuff
can for sure be tweeted out
Oh, I just saw your twitter issue. I think it could be better to tweet it from the coq-community account
do we have a coq-community twitter? news to me...
ah didn't see issue
hmm, having a logo is a requirement for getting into the main "awesome"
however, my editing skills are crap, so maybe someone can take the coq-community svg and remove the text and produce some logo like here: https://github.com/sindresorhus/awesome-electron/blob/master/readme.md
@Karl Palmskog thanks for the reminder about the logo. should I ask Ilya for the logo by Lilia?
well, you can do it unless you want to try to edit the coq-community svg
I think either is fine as right aligned like the example
HoTT builds documentation for every commit, which has made their repo very inconvenient to clone
took me several minutes last time, and takes several hundred MB on disk
with in-repo generated documentation, I think the only sensible thing is to only have docs for releases, and do "one release per major Coq version"
or what do you think @Anton Trunov @Théo Zimmermann ?
for per-commit documentation, one should either use a separate repo or some service akin to readthedocs, IMO
btw @Anton Trunov do you mind if I edit your awesome-coq PR directly? Some projects arguably don't fit the list since it's supposed to be curated and about popular/unique projects
with in-repo generated documentation, I think the only sensible thing is to only have docs for releases, and do "one release per major Coq version"
makes sense indeed
@Karl Palmskog sure, feel free to edit the PR, I kind of did it mechanically to get the discussion started on what should be filtered out
@Karl Palmskog Ilya Sergey has told me in private communication that we can use the "Le coq mécanisé” picture as the logo of the awesome-coq repo.
:thumbsup:
very, very nice
that painting is just an overall joy to look at
gah, I can't make Lilia's logo fit very well, due to how the awesome guidelines either require "full width" or "100px-wide"
@Anton Trunov I dabbled with Inkscape and tried the Coq-community logo, which seems to fit better: https://github.com/coq-community/awesome-coq/tree/add-svg-logo
compare: https://github.com/coq-community/awesome-coq/tree/add-logo
here's the recommended style: https://github.com/dhamaniasad/awesome-postgres/blob/master/README.md
@Karl Palmskog Could you point me to the awesome guidelines? I couldn't find the requirements you pointed out. Also, I tried running awesome-lint
on the project, but it fails with a syntactic error :exploding_head:
thanks for your edits, btw
https://github.com/sindresorhus/awesome/blob/master/pull_request_template.md
there's a bullet about logos there
Includes a project logo/illustration whenever possible.
Either centered, fullwidth, or placed at the top-right of the readme. (Example)
The image should link to the project website or any relevant website.
The image should be high-DPI. Set it to maximum half the width of the original image.
looks like something like [<img src="coq-logo.png" align="right" width="10%">](https://coq.inria.fr)
should work
the problem with 10% is that it can look terrible with non-svg images
depending on resolution and so on
the problem is that the painting's height makes it a hard fit for either centered or right-aligned
Oh, I see. Your choice then, I have no working experience in this area :)
I'm not very experienced either, but then I would go with the .svg one for now, at least until we can consult with an expert
I think we tick all the awesome list boxes except for "30 days from creation" now
:+1:
oh man I was looking up CertikOS stuff
there's basically almost nothing public anymore w.r.t. source code
if there ever was anything...
at least my view is that public source should be available...
(for addition to awesome-coq)
at least my view is that public source should be available...
I can't recall them ever publishing the source code, actually
right, probably reserved for startup: https://www.certik.org/#home
what annoys me about many US academic startups: they typically get bought by some tech giant eventually, code/tech never gets used, then everything disappears in the last reorganization
founders win, almost everyone else loses
With the way the coq-community logo is displayed now, I feel like this reinforces confusion, as clicking on the logo links to the official Coq website.
What about making "the Coq proof assistant" a clickable link in the top description?
OK fixed by PR!
:+1:
Regarding the order of the subsections within "Projects" I am confused. It looks almost alphabetical, but "User interfaces" is misplaced then. If it is not meant to be alphabetical, then I think that moving "Frameworks", "Libraries", "Plugins" and "Tools" closer to each other (for instance in that order) would be better.
User Interfaces is sorted under "I", as it was in the OCaml list
but feel free to call it "Interfaces" or move it to the bottom
Ah... OK.
Bignums is a plugin in the sense that it contains OCaml code. I guess you class it as "library" because from a user's perspective it is used as such?
yeah, sometimes it’s hard to classify things, but feel free to propose changes
:+1:
lumping vs. splitting, indeed super hard
I like the approach with tagging stuff with multiple tags, but the format here doesn't permit that
I second that
tagging as in org files usually works great
Should CFML be added somewhere? Should it go into "Framework" or into "Tools"?
I guess “Tools” would be better, since it’s kind of related to CoqOfOCaml
Yeah, I was thinking the same.
and yes, CFML should be added, imho
I can open a PR for this one and Freespec too.
by all means please do go ahead!
I feel CFML is more of a framework personally, but could go either way
I will probably add CoqEAL later today
OK the authors' description are clear:
btw, we are also missing Kami
is Kami maintained? last commit was like 1 year ago
hmm, it feels like Kami is still a prominent Coq project
but I don’t have a strong opinion about that
maybe we can check with Jason Gross, he has two open unmerged PRs
I'm personally a bit averse to listing completely abandoned projects
How about these DeepSpec projects and their respective categories?
CertiCoq has not seen complete release to my knowledge
InteractionTrees is quite new, I think I'd like to see someone vouch for its uniqueness, etc.
hs-to-coq is fine
Vellvm is also a bit of a question mark, I don't see any releases except for papers, and seems stuck on Coq 8.8?
hs-to-coq it is then :) thanks
I was thinking autosubst as well, but I think someone should check it actually builds on recent Coq
ah, and Metalib
both have been used in multiple papers and so on
Isn’t Metalib stuck on Coq 8.6?
nope
I used it recently from GitHub
in 8.10
:+1:
@Karl Palmskog Are we using the alphabetical order in Tools
section?
that's the intention, feel free to fix Menhir
ok
some more candidates, Hahn, Coq-prelude, coq-haskell
Tested hs-to-coq on Coq 8.10 and added it to the list
@Karl Palmskog What do you think about jscert? It’s not that active anymore, but looks like is still maintained
I think they submitted stuff quite recently
to the OPAM archive
oh, cool, hadn’t noticed that
ok, let us add it then
not sure about the section, though
maybe “tools"?
or, since they have a verified interpreter, it can go to the “Verified Software” section
it's more verified software to me
there might be a PL section at some point
yep, looks like we will need a more fine-grained categorization
Or even re-categorize things. Like this Tool/Plugin dichitomy sometimes creates confusion as many tools integrate with Coq as a plugin
Perhaps we could re-categorize some of those by their purpose?
E.g. CoqHammer could go into “Proof automation” section (and we could add SMT-Coq there too among others)
a bit too complex for me, I meant tool as in something that processes/produces something outside of Coq
I tried to follow the lead from OCaml and other awesome lists
e.g. awesome-ocaml list categorizes things by “areas”: Systems programming
, Testing
, Concurrency
, etc.
speaking of SMT-Coq, I’m gonna add it if you don’t mind
sure, you can add SMT-Coq, but let's not do more categories for a little while
sure, np
we should also add Mike Nahas' tutorial, which is apparently hosted in Coq's own repo
the top ones seem to be that one and Yves' Coq in a Hurry, which doesn't have source code and hasn't been updated in a while, I will shoot Yves an email and ask what the status is there
:+1:
Mike Nahas' best location to reference is https://mdnahas.github.io/doc/nahas_tutorial.html
The one in the Coq repo has some issue and will soon redirect to the former.
I haven't read it yet but another recent short tutorial is https://learnxinyminutes.com/docs/coq/
OK good to know
I guess mentioning CodeWars could also make sense (https://www.codewars.com/kata/search/coq). I haven't tested it much myself though.
hmm, this is interesting, it seems SiFive has rewritten Kami: https://github.com/sifive/Kami
yep, also noticed it, looks like we should add it
hmm, "interactive proof assistant"? I think we should either use simply "proof assistant" or "interactive theorem prover"
w.r.t. this: https://twitter.com/CoqLang
the official denomination is "The Coq Proof Assistant"
and we often use Interactive Proof Assistant
I dunno, that's what the Coq project has used for a long time
"interactive theorem prover": ~250k Google hits, "proof assistant": ~220k Google hits, "interactive proof assistant": ~20k Google hits
so I would argue for one of the first two, just "Coq proof assistant" is fine...
ok done!
"interactive proof assistant" is mentioned twice on the Coq website
once in the manual, once for some old workshop
it seems the manual uses it to refer to a mode of use of Coq, i.e., Coq backend + some GUI
@Emilio Jesús Gallego Arias Cool background picture!
:)
Théo any comments on the mail I sent on twitter? (@zimmi48)
@Anton Trunov will send you the stuff you requested tomorrow.
Even if the mailing list was needed as to have a "mail" for the twitter, and could be useful for other bits, maybe we should handle stuff more dynamically? Should we create a gitter account ? @Anton Trunov @Théo Zimmermann
Why not? Sorry for not answering your e-mails faster Emilio, I've been very busy!
nitpick suggestion for Twitter description: "Coq is a general-purpose interactive theorem prover [or: "proof assistant" or: "formal proof management system"] with applications in formal mathematics and software verification"
@Théo Zimmermann sorry I didn't mean to rush, I know you are very busy; I'll create a gitter room then!
@Karl Palmskog indeed I'll adjust the description to what's on Coq's webpage , thanks; out of curiosity, what you have against "interactive proof assistant" :)
@Emilio Jesús Gallego Arias no general problem, just think we need to be consistent with terminology
otherwise one might get lots of questions about what is "interactive proof assistant" vs. "proof assistant"
I know at least paper reviewers complain about these things a lot...
in any case, this ties in a bit with guidelines for Coq advocacy: "[try to] use agreed-on/sanctioned terminology"
I agree with Karl on being consistent and on ITP and "proof assistant" being standard.
Is someone willing to take a look at this +15,-7 change in porting a .ml4/mlg from 8.9 to 8.10? https://github.com/coq-community/reduction-effects/pull/5/files#diff-70aff75dd897e7c57305ffc170af922c (In particular, wondering if I did the right thing with global env/sigma, especially given that the deprecation message for UnivGen.type_of_global
suggested using a function which doesn't actually exist (Typeops.type_of_global
)
ah, I see the first tweet is out, but not all CoqPL talks are actually in the YT playlist
(not included: https://popl20.sigplan.org/details/CoqPL-2020-papers/2/The-use-of-Coq-for-Common-Criteria-Evaluations)
@Karl Palmskog Any idea who we should talk to?
my guess is that they didn't want it recorded?
oh, I see. I guess too late now :))
I guess so yeah, but at least wanted to point this out
Ouch I only checked the last and first one so I thought
it is complete
not a big deal tho, if one is missing
unsound tweet :wink:
hahaha
XDDDD
the sound of an unsound tweet
twitter's logic is paraconsistent tho
so we are allowed to do that
I recall the discussion on LTU on Conor McBride's PhD thesis, which claimed: John Major was the last Tory prime minister
I think Andrej Bauer (jokingly) called for a retraction of the thesis (on grounds of false claim)
This should go into awesome-type-theory-jokes
list
in any case, can we get a tweet of Gaëtan's announcement? maybe the Discourse link?
if there's any justice (true judgement?) it will go viral
Let me qoute @Emilio Jesús Gallego Arias on this: @Emilio Jesús Gallego Arias
I'd suggest we tweet about the coq platform internships, the 8.11 release
some other news
then this
OK, as long as it's on the TODO list, I won't complain
Emilio commented that way after I suggested to tweet about that post :)
@Théo Zimmermann I just learned about conda.io and would like to try it in a class I’m going to teach. I installed coq8.11 and now I’m wondering how one goes about adding more stuff to the basic package. I’d like to have CoqIDE and/or VS Coq and also MathComp. Could you please point me in the right direction?
(Not sure if this is the right room to discuss this topic)
Hi @Anton Trunov, unfortunately I have very poor knowledge of this package manager. I've just tried to use it to install Coq + coq_jupyter in CoCalc because I'm starting to teach a Coq class with Jupyter today. If you are interested, I'll let you know how it goes. I'm also in contact with the Coq package maintainer in Conda, so we could further investigate your questions together if you want. When does your class start?
@Théo Zimmermann Coq + coq_jupyter sounds awesome! Sure, I’d like to join to the Coq Conda project. The class starts in about two weeks.
I’d love to learn more about coq_jupiter and your experience with that when you have the time.
I'm also teaching a course, but on HOL4, all material here, maybe something can be useful for Coq teaching? https://kth-step.github.io/itppv-course/
(maybe a long shot, and not the packaging for sure, SML has essentially no community-specific infrastructure for packages)
@Karl Palmskog Thanks for sharing. Cool slides! Are there any lecture notes?
basically we have lecture slides + exercises
if you want slides for almost the "whole" course, rather than just the parts we have done so far, you can look at Thomas Tuerk's slides, which we are building on but heavily modifying: https://hol-theorem-prover.org/hol-course-print.pdf
his LaTeX sources: https://github.com/thtuerk/ITP-course
:+1: Nice! Thanks again
right, also there's all the exercises he used: https://hol-theorem-prover.org/hol-exercises.tar.gz
@Anton Trunov I've now archived the old ALEA repo, maybe you can link to it from the new ALEA README (has a bunch of releases): https://github.com/coq-contribs/random/
I opened an issue about that and CC’ed you.
btw, should we close https://github.com/coq-community/manifesto/issues/55 ?
done
thanks
hmm, I'm thinking about breaking off "Programming Languages" from "Verified Software" in awesome-coq, since I'm not sure how pure metatheory for a PL can count as verified software
:+1:
I’m wondering about project badges: should we have special badge(s) for coq-community projects that are available for some package managers like opam, Nix, etc.?
would be nice for sure
assuming they don't need a lot of maintenance...
Great! I guess I’ll move this as a manifesto issue
I've now stepped down from maintaining ATBR (and also Lemma Overloading). We used ATBR for evaluating mCoq, but that research project is basically over now, and we are moving on mostly to MathComp projects (like reglang) for proof engineering research.
we have done some collective progress on doing releases, but to be honest the manual work is still pretty horrible
@Théo Zimmermann perhaps I can count you as co-maintainer of the templates repo?
sadly I'm clueless about Nix stuff
@Karl Palmskog Yes, add me there!
so I have a version of the development mentioned here working on Coq 8.11: https://xenaproject.wordpress.com/2020/02/09/where-is-the-fashionable-mathematics/#comment-967
I think I'll put the usual coq-community issue to make a point...
unfortunately thre license is unknown, but can probably be figured out by contacting authors
any takers for how many months this will take (before merge or close): https://github.com/sindresorhus/awesome/pull/1697
Thanks for the link! A wild guess: 3 months (I have no idea what their average review time is)
I think less than this given the age of most open PRs.
since one has to have reviewed two PRs to open a PR, and maintainers wait for external reviews, it's probabilistic I think
exponentially distributed
nice, we got fast-tracked on the awesome-repo PR, probably thanks to good adherence to the many requirements...
hmm, I was thinking one could create some kind of meta-issue for accumulating reasonably-low-effort tasks needed for Coq and coq-community
right now a lot of them live in separate GitHub repos, and many people are not aware
@Théo Zimmermann is this appropriate as a coq-community issue, even though it might be for wider Coq ecosystem?
Sure!
we should be more liberal with help-wanted
I think
Note that we already have things like https://github.com/issues?q=is%3Aopen+is%3Aissue+archived%3Afalse+user%3Acoq-community+label%3A%22help+wanted%22 for coq-community.
But we could extend this to something across more repos.
ah, maybe one can just modify the query a bit
user:coq-community
+ user:coq
nice
"help wanted" might not be the right label though
as it does not imply low-effort
right, but good-first-issue
is not great either
well at least the meaning is clearer
and we can try to triage what's in there
I guess this can be a good compromise, although some low-hanging fruit definitely requires expertise
With math-comp
too: https://github.com/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+archived%3Afalse+user%3Acoq-community+user%3Acoq+user%3Amath-comp+label%3A%22good+first+issue%22+
Anyway, I'm not a big fan of this interface for showing these issues
Maybe we should look for an external service to help with this.
right, one might want to prioritize in some way that can't be added to GitHub issue state
but as a stand-in until we find something I think it's much better than just "help-needed" listing
yeah
@Karl Palmskog Have you seen this https://github.com/awesomo4000/awesome-provable ?
I think it may have swooshed by, I don't mind it, it's one abstraction level up from us
yeah, it’s not a competitor :)
the good thing about focusing on Coq is that it fit in the PL category
Maybe we could mutually link?
in my mind a good way to do marketing to SE/GitHub audience is to focus on Coq-as-PL
yeah if we accumulate a few other lists we can create a section
you could open an issue
cool!
I’m on it :)
we can challenge the Lean people perhaps
:+1:
to be clear, first step is probably an issue in awesome-coq
this is pretty interesting stuff w.r.t. hosting of projects/communities: https://sketis.net/2019/isabelle-phabricator-server-setup https://sketis.net/2020/selfhosting-of-mercurial-repositories
BitBucket dropping Mercurial sets a pretty bad precedent indeed...
So Phabricator offers a counter-model to trends of monoculture and centralized version control, especially due to Microsoft’s Github and Atlassian’s Bitbucket.
heh, from the Phabricator website:
Written in PHP so literally anyone can contribute, even if they have no idea how to program.
We talked about having a coq-community presence in the next DeepSpec school. Any idea when this will be?
there is nothing about it in public sources, as far as I can tell. Based on previous summer schools, it will happen in mid-July
ah, Matthieu will know, he wrote:
I will be giving lectures at the DeepSpec Summer School in July 2020
maybe we can ask him who is handling it
Do you know who we should contact to be in the loop? The other question is whether one of us can travel to the States in July. If that's one of you, I can look into whether I can unlock some budget to pay for your trip.
Sorry I had missed half of your message
Any particular format of the presense of coq-community?
Not clear to me yet. That was Karl's suggestion, so maybe he can say more.
Regarding the list of good first issues in the Coq ecosystem, there is also this: https://github.com/topics/coq
Well, it was a joint idea with Bas Spitters, I imagined something like the following:
and then of course the person going there would discuss with DeepSpec faculty how we can improve visibility of (their) Coq projects, the Coq ecosystem/platform and so on
Sounds good!
:+1:
if I'd do the presentation, I would call it something like: "The Coq community and ecosystem: an overview" (add in "Platform" if that is in place)
LGTM!
"platform - ecosystem - community" is a nice 'tripod' to stand on
@Anton Trunov I did some quick investigation of the problems with porting CertiCrypt
using the ALEA port
there were some really strange mismatches between Set
and Type
@Karl Palmskog this is interesting. @volodeyka would like to start porting CertiCrypt. Should he proceed or you are too far in the process?
The problem is also that Pierre Yves Strub said he would port it
I didn't port much, just figured out one basic problem I can describe
The problem is also that Pierre Yves Strub said he would port it
Yep, I asked him if there is anything we could help him with.
@Anton Trunov so compare the following: https://github.com/EasyCrypt/certicrypt/blob/master/Lib/BoolEquality.v#L458
https://github.com/EasyCrypt/certicrypt/blob/master/Semantics/Dlist.v#L164
https://coq.inria.fr/library/Coq.Logic.Eqdep_dec.html#DecidableSet
of course one can change EQBOOL_LEIBNIZ
to have t : Set
, but this has to be propagated through the entire codebase...
I wonder how the heck that went through in 8.3, maybe universe consistency checking was incomplete...
Could we use DecidableEq
instead of DecidableEqSet
?
the problem is not exactly the signature itself, but that the following is used: https://coq.inria.fr/library/Coq.Logic.Eqdep_dec.html#DecidableEqDepSet
if I remember correctly, one can't get UIP and so on via Type
in the same way
They both use
```
Lemma UIP : forall (x y:U) (p1 p2:x = y), p1 = p2.
Proof (eq_dep_eq__UIP U eq_dep_eq).
afaikt
@Anton Trunov so since there is no response from P-Y Strub, I can give you and Vladimir what I have right now
it turned out to be possible to fix the DepSet stuff and so on
let me know and I can make the diff available...
if nothing else there will be more of us that understand a bit more about the structure of CertiCrypt
@Karl Palmskog Thank you. Vladimir is having second thoughts about CertiCrypt since there is uncertainty. I guess will just switch to something else. If we still have time by the end of the term and the things change I think we could try and port CertiCrypt.
Why Certicrypt ? Isn't that superseeded by the likes of xhl
? Is there a link to the discussion with @Pierre-Yves Strub ?
@Emilio Jesús Gallego Arias Here it is https://github.com/coq-community/manifesto/issues/56
CertiCrypt, because of ALEA
We ported ALEA to Coq 8.11 and ALEA is used in CertiCrypt so we thought we could reanimate that too to soo if ALEA is “done"
@Emilio Jesús Gallego Arias it's basically a very large Coq project (by most standards) that has been cited a lot
for proof engineering research reasons alone, it's valuable
Bas Spitters was also interested in it for crypto reasons, one might be able to transfer CertiCrypt work from ALEA to his probability library based on HoTT
@Anton Trunov one task that would be helpful to get done regardless of CertiCrypt: an initial release of ALEA
Right, we could deal with the three issues marked as “1.0.0” milestone and publish it on opam. I guess incorporating more modules from https://github.com/coq-community/alea/issues/2 could be delayed until a later time
:thumbsup:
Thanks for the pointer folks, tho if Pierre-Yves is planning to maintain CertiCrypt then it should not be moved to CC, right?
Yep, that’s the plan
if he wants to maintain it alone, we won't stand in the way, but I guess we're hoping that he will want to put it in CC to get benefits of automation and so on
No answer from me because I’m on vacation
@Emilio Jesús Gallego Arias xhl is not superseeding CertiCrypt. It is a formalization of the core logic of EasyCrypt.
From our perspective (the dev. of EasyCrypt), we do not want to use CertiCrypt anymore for formalization purposes. We currently use our own tool, and if we would like to go back to Coq, we would certainly not start from a port of CertiCrypt to the last version of Coq (but would certainly use the experience we gain by developping CertiCrypt)
However, I agree with @Karl Palmskog about having this kind of projects compiling with the last version of Coq. It has been cited a lot, it is a big development, and it’s a pity that you have to install Coq 8.3 to play a bit with it.
I do not plan to maintain CertiCrypt alone.
I offered my help to port CertiCrypt to Coq 8.11.
I would be happy if Vladimir can help.
When done, moving CertiCrypt to CC is IMO a good solution. (The fact that CertiCrypt has not been updated for 8 years now is a good signal that we are not interested in maintaining it).
I don’t know what is Vladimir internship topic, but I can only say if he wants to formalize crypto primitives, IMO, that are today better solutions :)
Anyway, maybe should we have a quick chat for organizing ourselves on the CertiCrypt side.
EOF (going back on vacation)
:thumbsup: (all that sounds good to me)
@Karl Palmskog @Anton Trunov Interesting! I agree with @Pierre-Yves Strub that this would be mostly for legacy purposes, but the development itself is very interesting.
I would imagine that most of the library would just work at the Set level.
Doing such a change should be doable, we did it a couple of times for corn. It might take a day or two though, if you are unlucky.
@Anton Trunov @Karl Palmskog @Pierre-Yves Strub We are also interested in what it would take to import EC into Coq. We've been thinking about it a little, I can say more if there's an interest.
One component will be the addition of rewriting to Coq that Theo Winterhalter is working on.
OK, I think I will just put the current state of my Set/Type stuff in a fork of P-Y's repo, I resolved the problems discussed above, and it should be quite straightforward from there
Hi @Pierre-Yves Strub, thanks for the comments, I wish you a nice holidays.
I'd like to remark this particular comment:
if we would like to go back to Coq, we would certainly not start from a port of CertiCrypt to the last version of Coq (but would certainly use the experience we gain by developping CertiCrypt)
IMHO that's a situation similar to the discussion we had about coq-bits
, that is to say, a development which is interesting as an artifact but not suitable for further use / development.
I still wonder then if CC is the right place for such projects; I still get the impression that archival is not what I'd like to find there.
The point is to have a community effort to maintain an interesting artifact with newer Coq versions. Having these projects within coq-community makes this task easier than if these projects are kept out. Of course, this means that the objective is slightly more broad than for instance ocaml-community.
I'd say we have quite good consensus among the CC org owners that "interesting" does not necessarily mean "recommended for use" (but regular members can/should be polled at some point)
Indeed that's my main worry, dissonance with ocaml-community
for example.
@Karl Palmskog owners do not worry me in this case; I'm more worried about users getting confused about the status of things. Maybe the right solution would be to add "badges" [you already have it folks?]
A badge could classify CC entries in categories such as "artifact", "actively developed", "recommended / base lib", etc...
I dunno, but that would retain the organizational unity while providing at the same time a quick overview of the status
For example something can be maintained but still have the category of "artifact" [artifacts for me are intrinsically associated to papers, and usually not meant for wide consumption]
Absolutely, I'm very supportive of this badge idea. In the meantime, some repositories use GitHub tags for some of this purpose.
Indeed that's my main worry, dissonance with ocaml-community for example.
I'm not in control of the path that ocaml-community has decided to take. It is a valid one as well. But ocaml-community was created after coq-community was announced with clear objectives. They chose to inspire from part of them, and to deviate of some.
I also think we can harmonize tags and badges, unfortunately paper-artifact
can be ambiguous to outsiders
something like research-artifact
may be better
:+1:
Or even research-prototype
if we want to insist on the non user-ready status.
I think it's clear that coq-community will be much more research-oriented than ocaml-community for the foreseeable future, not least due to individual member goals
I don't mind advertising this more clearly
Next week, I'll look into buying a domain name for coq-community and starting a website. This should help clarify some of the goals and that not all projects are on the same footing.
:thumbsup: - will have the :tada: ready
@Théo Zimmermann btw, I was looking to promote awesome-coq by pinning it on GitHub, but this means another repo has to be unpinned...
Sure, that's life.
I'm leaning towards docker-coq
very important, but very specialized
What about Corn? More diversity.
OK sounds good
@Anton Trunov here's my experiment with CertiCrypt, it's one "giant" commit that solves the DepSet problems but admits some proofs along the way: https://github.com/palmskog/certicrypt/tree/depset-8.11
Thanks for sharing, Karl. I had to put that on a slow burner, though, sorry. That’s because of the time limits we have for this internship project.
fine by me, I'll just comment in the issue and maybe someone else can take note
:+1:
looks like Kevin added some Coq-positive stuff in his latest blogpost (https://xenaproject.wordpress.com/2020/02/09/where-is-the-fashionable-mathematics/)
[Note added 14th Feb: thanks to Théo Zimmermann for pointing out to me on Twitter that Coq has a Discourse forum. Young people wanting to learn Coq — try asking some beginner questions there. Ask how to make class groups of number fields! Let’s get more serious mathematics done in Coq! It’s an extremely powerful system! ]
this is something I've been working towards:
Sarah Loos from Google AI explicitly raised this issue [of multiple proofs of theorem] with me at AITP last year. She was bemoaning the fact that in a typical database, a theorem will have exactly one proof. Everyone knows that different proofs can add different value to a situation, by giving different insights. She wants more proofs! These people need our input!
@Anton Trunov one issue here is that the "description" field can't be assumed to be rendered in Markdown: https://github.com/coq-community/alea/blob/master/meta.yml#L16
for example, it is used in the OPAM file (and thus by opam show
), and potentially in dune and so on
if there needs to be URLs there, I recommend having them in full
@Karl Palmskog thanks, I missed that during review
@Anton Trunov also wondering about ALEA license, the new repo says plain GPL2 while original repo was LGPL
in fact there is no GPL-2.1 as mentioned in current meta.yml, and license file seems to be missing
yep, I just discovered the same thing :)
(2.0 and 3.0 are the only relevant versions of plain GPL)
@Karl Palmskog do you have the link where it says the license is LGPL?
LICENSE file in coq-contribs repo
Thanks. Should it be LGPL-2.1-only or LGPL-2.1-or-later?
I tried to have Pierre Cortieau clarify, but we did not clear that up, so we have to assume that it's 'only'
got it, thanks again
does anyone know where coq's implementation of discrimintion trees is and how deep they go?
@Théo Zimmermann sorry to pile on, but is the domain thing still on your agenda?
@Karl Palmskog Yes, I've asked my team assistant about it and it seems the easiest path is for me to buy the domain name in my own name and have Inria reimburse me, so I can take care of this tomorrow.
great, let me know if I can help, e.g., we could have some simple static stand-in page in the repo coq-community.github.io
(which would appear at the domain) until we set up something more dynamic
Yes, if you can create this repo, that would be great.
OK sure. As you might know, the main complication you will have to deal with is to point DNS for the domain to GitHub's servers (https://help.github.com/en/github/working-with-github-pages/managing-a-custom-domain-for-your-github-pages-site) - see the part about DNS A
records
# GitHub DNS server IPs for "A" record
185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
Yes, I'm always doing this for my own website.
Yes, I've asked my team assistant about it and it seems the easiest path is for me to buy the domain name in my own name and have Inria reimburse me, so I can take care of this tomorrow.
@Théo Zimmermann I got the opposite information from my managers
and I'd bet they are more aware than team assistants for this matter
We can talk a bit this afternoon about it if you like.
OK @Maxime Dénès, I didn't know you had got an answer. Are you available to talk about this now or soonish?
now is fine
@Théo Zimmermann was there any conclusion on the domain issue?
There is a person at Inria that is in charge of this. I'm going to contact her. This might delay the domain name creation for some time, but it's better to do things properly.
OK
@Karl Palmskog I've launched the process for creating the domain name. Let's see how long it will take. In any case, it would be good to have a minimal page available at coq-community.github.io ASAP, since I've already provided this link.
@Théo Zimmermann OK, I will put something there later this afternoon
is there a way to determine whether a goal is a Class? I would like to say something like tryif is_class G (* G is the goal *) then solve [ typeclasses eauto with typeclass_instances ] else idtac
@Gregory Malecha this is probably not the best channel for these kinds of question, I don't think, e.g., Matthieu is monitoring
is it best to ask on /coq
yes, either there or in the Discourse forum
ok, thanks
if you think the answer is of general value, I recommend the Discourse
much more searchable etc.
thanks
https://coq-community.github.io - basic static website - first big enhancement would probably be to generate list of projects via GitHub queries
@Karl Palmskog You may want to change the order to not make this look like a list of abandoned projects:
"the initial author has stopped maintaining the project and someone else is volunteering to do so;"
Maybe also mention something about the upsides: good opam integration, CI,machine learning, ... and the relation to coq-contribs.
Nice work in any case !
Is there any order in the "current projects" ?
@Bas Spitters this was a very quick hack-job, I just copy-pasted projects from the browser, so order is as "last modified" as of Mar 13
I can change the initial stuff on hosting and add something about applications you mentioned
another thing to consider may be if we should have some kind of top-level project categories that include non-verification projects, e.g., Documentation, Interface, Meta, Automation
that should make a project list a lot easier to navigate
@Bas Spitters what do you think of the following approach to categorizing/listing projects? https://coq-community.github.io/index.html
@Karl Palmskog Seems reasonable enough. Thanks!
ideally we would store categorization metadata in each project and extract it dynamically
for OPAM, we have categories already, but it seems actually many projects are not pure Coq projects anymore
so maybe it's warranted to make a distinction between "general category" and "opam category" in metadata
@Théo Zimmermann so what do you think of the categorization? https://coq-community.github.io
can we maybe get a retweet on this one from the Twitter CoqLang gods (others also welcome to retweet): https://twitter.com/TaliaRinger/status/1239784878993887232
Stuck in your house and need something to read? Want to feel productive while working from home? How about reading our 120 page survey paper on proof engineering, now on arXiv: https://arxiv.org/abs/2003.06458
- Talia Ringer (@TaliaRinger)@Karl Palmskog OK, now in the queue.
How is index.html generated? Is it from index.md? I spotted typos to fix but wouldn't want to mess things up.
yes, just generated via pandoc: pandoc -s -o index.html index.md
, feel free to update
OK
I'm not sure that's how we want to do it further on, but it was the fastest I could think of to get the static page
:+1:
Unfortunately, regenerating the HTML using the same command changes a bunch of unrelated stuff :S
we may have different versions of pandoc
but doesn't matter if the content is the same
I think the introduction should additionally mention that being part of coq-community makes transition from one maintainer to the next easier.
And possibly link to the contributing guide.
But very good job, thanks!
Coqoban does probably better fit the Documentation and Tutorials category.
in some sense, but also, it's a "verified puzzle"
And even if we don't have any editorial committee, we should start putting some badges on projects to highlight recommended projects and possibly alert on projects of lower quality.
For instance with a :star: and a :warning:
I would say "experimental" rather than "low quality"
Sure
or WIP
what I mean is that we should write explicitly that not all projects hosted in coq-community are meant to be top quality.
As we have already seen, some people might misunderstand coq-community hosting as a label of quality.
yeah good point
but how do you think we should store categories and labels? meta.yml
?
possibly yes
FYI coq-community.github.io now redirects to coq-community.org but coq-community.org DNS records are not yet configured to point to coq-community.github.io. Thus, the website will be unavailable until this is done (hopefully it won't take more than a day or two).
sounds good
I'll keep the :tada:s ready
oh right, another meta-issue that may not even deserve its own GitHub issue: given that synopses and descriptions are used in so many contexts for different purposes, we may want to ensure that "Coq" always occurs once in all of them
and maybe our README.md template should include a link to the Coq website somewhere
interesting thought indeed!
all for marketing reasons and so on
case in point: "This library develops some basic set theory" -> "This library develops some basic set theory in Coq"
@Karl Palmskog I have a motivated intern starting end of May to maintain and improve the bot. There will be many things to do and he won't be operational immediately, but it will be a good time to submit feature requests for automation, in particular for coq-community.
@Théo Zimmermann are you sure the DNS will be updated? 24+ hours is on the long side
I know that my request has been transmitted to the relevant people, but I don't know when they will take the requested action. Due to many people working from home because of COVID-19, there might be additional delays. Unfortunately, GitHub requires that the CNAME
record be configured before the DNS are, and I don't have a way to coordinate with the people setting the DNS.
I see, I guess we'll just wait and see then
http://coq-community.org is up! :tada:
however, we don't have a certificate for https yet (should appear within 24h, then I'll switch to https only)
now it works, that was fast: https://coq-community.org/
Great! I think we should at least insert the :star: and the :warning: before we advertise this website too much.
well, not only the website works, but also project websites like: https://coq-community.org/reglang
:tada:
:rocket:
@Théo Zimmermann can we use those star and warning emojis exactly, or do you have a preference for some specific ones?
those look good to me
OK, so star in my book would be at least: AAC Tactics, Math Classes, VSCoq, docker-coq
warnings based on READMEs: ParamCoq, Exact real arithmetic, bits
What’s the semantics of star? As a vscoq fan and used, I wouldn’t call it mature, especially next to math-classes.
(Not sure @Maxime Dénès would disagree)
That's a good question. We have given it much advertising so far but maybe too much?
well, it was based on that people reported it usable
and VSCode support is a hot topic, etc.
Paramcoq is already probably more of a :star: than a :warning: (I think, but I'm not a user myself). When people put "this is experimental" in their doc, they tend to never remove it.
that's probably true, yes
I have recommended vscoq to colleagues, but the experience includes Coq crashing, interruption failing, etc.
But if you come in expecting a finished product, you’ll be very disappointed, I think.
So indeed, that sounds to early to give it a :star:
Not having a :star: won't prevent people to use it BTW
(Sorry, “coq crashing “ isn’t accurate, but you must restart the plugin often enough)
https://uwaterloo.ca/news/news/personality-plays-key-role-whether-developers-can-contribute-0
Interesting study with loads of Github data "Personality plays key role in whether developers can contribute to open source projects"
@Théo Zimmermann do you think it would be worthwhile at some point to use GitHub "projects" to track (say, automation) tasks for coq-community? in the near future or only after your intern starts?
You can just open issues in the bot bug tracker.
A project can still be useful to gather all relevant issues about the topic but all the automation that would work without the bot would be outside of the scope of my intern's tasks.
so nothing related to the OPAM index/archive unless it can be done with the bot?
I would argue there is some low-hanging fruit there
Well, feel free to raise issues in the relevant repositories to propose automation. We (you and I and possibly others) might work on them together. But I won't put my intern on non-bot automation issues as he's really looking for a consistent programming project (the bot) rather than a myriad of small infrastructure tasks.
Hi, I am in the process of exporting gitter channels (public) data to zulip, (it can be done only once, during the creation of the zulip chatroom), do you wish that I export the data of this channel too?
Hi @Cyril Cohen! I think that would certainly be useful. @Théo Zimmermann @Karl Palmskog what do you think?
Yes, I agree.
I'm not a huge fan of losing public general access to chat content, but I bow to the majority here
I seriously hope that until Zulip adds anonymous access, we will set up the public archive mechanism they provide.
but does the public archive actually work right now? if so, I would have expected Lean to use it
https://leanprover-community.github.io/archive/
@Cyril Cohen to my knowledge, that's an ad-hoc solution they rolled themselves, that doesn't provide search (at least not inline)
as seen here, it doesn't always update automatically: https://github.com/leanprover-community/leanprover-community.github.io/commits/master
I don't know if they use the official tool or something else but Zulip does provide a tool: https://zulipchat.com/for/open-source/#public-archive
@Théo Zimmermann It is pointing to Rob's tool that was originally developed for lean as @Karl Palmskog mentionned
One good sign is that Zulip main contributor is personally invested in a core feature https://github.com/zulip/zulip/pull/12728
Interesting!
So this chat will be moving to Zulip?
Yes, or at least we will experiment with it. (We can always come back if it doesn't work out.)
@Cyril Cohen @Karl Palmskog There is a free plan. Apparently, that's what they got at the category zullip. We still need to contact them about the hott zulip.
https://hott.zulipchat.com/#narrow/stream/228519-general/topic/Hosting.20and.20history
@Bas Spitters We are aware of this and I think that if Cyril is moving forward, it means that he has got a positive answer from them.
does anyone know how to record dependency information in the meta.yml file from coq-templates?
@Gregory Malecha sure, what you want to know?
how do i record dependency information. it seems like the two examples, chapar and aac_tactics don't have dependencies
e.g. my project depends on coq-ext-lib and coq-template-coq
here's another example:
dependencies:
- opam:
name: coq-mathcomp-ssreflect
version: '{(>= "1.9" & < "1.11~") | (= "dev")}'
nix: ssreflect
description: |-
[MathComp](https://math-comp.github.io) 1.9.0 or later (`ssreflect` suffices)
also iris and stdpp
basically, it's a list, so each dependency has to start with -
@Gregory Malecha so which versions of coq-ext-lib and coq-template-coq?
i see
ok, great
I can vet the meta.yml for you if you write something
that would be great
another issue that i have (which is probably not a solved issue) is that my code depends on clang
which is obviously not an ocaml dependency
that can be added as an OPAM dependency
how?
usually "conf-clang" {build}
if it's only in the build phase
there is an OPAM package called conf-clang
that specifies for each OS how one should check that clang is installed
ah
ok
the project contains two pieces, a coq formalization and a tool built on clang
so clang is needed in "all" phases
well, you can just omit {build}
ok
that is great
note that there is also conf-g++
so for some projects we write ("conf-g++" {build} | "conf-clang" {build})
when they are agnostic to compiler
i see
thanks
what you might want to do is to have separate package definitions for the tool and Coq formalization
it's all contextual, but it's sometimes nice to provide pure Coq code for others to depend on
so they just clone out of the same repo but have different build targets?
right
is there a standard naming convention for that
not really
the whole project is called cpp2v
coq-cpp2v and coq-cpp2v-bin
I can show you how we did it in CoqHammer
or something liekthat
that would be great
the CoqHammer plugin (coq-hammer
):
build: [make "-j%{jobs}%" {ocaml:version >= "4.06.1"} "plugin"]
install: [
[make "install-plugin"]
[make "test-plugin"] {with-test}
]
depends: [
"ocaml"
"coq" {>= "8.11" & < "8.12~"}
("conf-g++" {build} | "conf-clang" {build})
"coq-hammer-tactics" {= version}
]
the CoqHammer tactics (coq-hammer-tactics
:
build: [make "-j%{jobs}%" {ocaml:version >= "4.06.1"} "tactics"]
install: [
[make "install-tactics"]
[make "test-tactics"] {with-test}
]
depends: [
"ocaml"
"coq" {>= "8.11" & < "8.12~"}
]
i see
great
ah, I assume this is related to a certain recent submission?
yes
:-)
the only thing that's a bit awkward right now is to modify CI configuration a bit to use both projects locally (they both have to be opam pinned from the filesystem)
that is, if one has two local OPAM package definitions
I don't think this can be supported in a general way in the Travis template, say, without a lot of awkwardness
specifically, the template assumes there is a single local OPAM package definition that is first pinned, then installed
i was assuming that i wouldn't be able to use the travis template because of my clang requirement
no, it can be done
you can see here how one adds native libraries: https://github.com/certichain/toychain/blob/master/.travis.yml#L15
I'd like to parameterize the Travis template with this at some point, but I don't have a lot good use cases of my own, so low on priorities list
basically, I'd recommend you to generate the Travis file from template, then just modify a few lines
this is what I did to handle the two local packages: https://github.com/lukaszcz/coqhammer/blob/coq8.11/.travis.yml#L15-L16
one more question. i depend on iris and stdpp but they don't release to main opam for the releases that i need
can you tell me how to depend on something in here (https://gitlab.mpi-sws.org/iris/opam/-/tree/master/packages/coq-stdpp) for example
opam doesn't really allow you to say in which repository a package is defined
if you want CI and installation to work, you have to add all the necessary opam repo add ...
by hand
so i just list the dependency as usual and then document the opam repo add
command?
that makes sense
right
thanks for your help
np
I thought coq-stdpp
had dev packages? But I guess one can also use a definition directly from a Git repo
i'm not familiar with how dev packages work
we have a repository of (mostly) packages whose sources live in Git: opam repo add coq-extra-dev https://coq.inria.fr/opam/extra-dev
I think coq-stdpp
lives in there with version dev
. But see here for a discussion of pros and cons of using this repo and pinning directly to an OPAM package from a Git repo: https://github.com/uwplse/StructTact/issues/55
i see
thanks
i'm having an issue in generating README.md, in the dependencies section it seems to be copying the description once for each dependency
@Gregory Malecha can you give an example? Normally, one wants to have one unique description for each dependency. You can also leave out the description and see what happens
it is actualy copying my projects "description" over and over again
it would be easier to understand with a link to some code
https://gist.github.com/gmalecha/4eb22d2267c502ff8bfd0fb4d4eef13f
when i run that through mustache
i get
This project provides an axiomatic semantics for C++ programs built on
top of the Iris framework for separation logic.
The AST is based on the AST of Clang and the project contains a standalone
tool and Clang plugin that convert C++ files into their AST.
## Meta
- Author(s):
- Gregory Malecha (initial)
- Gordon Stewart
- Abhishek Anand
- John Grosen
- License: [GNU Affero General Public License](LICENSE)
- Compatible Coq versions: master (use the corresponding branch or release for other Coq versions)
- Compatible OCaml versions: 4.05.0 or later
- Additional dependencies:
- This project provides an axiomatic semantics for C++ programs built on
top of the Iris framework for separation logic.
The AST is based on the AST of Clang and the project contains a standalone
tool and Clang plugin that convert C++ files into their AST.
- This project provides an axiomatic semantics for C++ programs built on
top of the Iris framework for separation logic.
The AST is based on the AST of Clang and the project contains a standalone
tool and Clang plugin that convert C++ files into their AST.
- This project provides an axiomatic semantics for C++ programs built on
top of the Iris framework for separation logic.
The AST is based on the AST of Clang and the project contains a standalone
tool and Clang plugin that convert C++ files into their AST.
- Coq namespace: `bedrock`
- Related publication(s): none
OK thanks. Indeed, it looks like the way the template is implemented it will look for description
for each dependency, and if it is not defined in the dependency itself, it will take the global one.
ah, thanks
We could avoid this by renaming the description
within the dependency
field into something else.
Let me try something
See https://github.com/coq-community/templates/pull/27
Last updated: Jun 03 2023 at 17:29 UTC