Giter Club home page Giter Club logo

manifesto's Introduction

Contributing Code of Conduct Zulip

coq-community

A project for a collaborative, community-driven effort for the long-term maintenance and advertisement of Coq packages.

Note that this README (the manifesto) is a work in progress and is meant to be collaboratively improved. Please contribute!

Who runs this organization?

This organization is run by volunteer Coq users. Everyone is welcome (you don't need to be a very experienced Coq user to participate). Please get involved!

What are its goals?

Collaborative maintenance of Coq packages and tools

Projects can be hosted in coq-community whenever any of the following is the case:

  • the initial author has stopped maintaining the project and someone else is volunteering to do so;
  • the project has become a collective work (several community members are actively working on it);
  • the initial author is still maintaining the project but they want to encourage other community members to participate in the maintenance and possibly take over (and the project is indeed raising interest from the community);
  • the project is a tool of general interest and it makes sense to develop it collaboratively.

Each project under the umbrella of coq-community has one or several official maintainer(s), but the maintenance effort is done collaboratively. Users need not be afraid of volunteering to be the official maintainer of a coq-community project because they can step down at anytime. Changing the maintainer of a coq-community project can be done very easily without the hassle of moving its location too.

Maintenance is allowed to go much further than just updating the package to keep it compiling with newer Coq versions. It can also include refactorization of the code, uniformization of the style, merging with other packages, taking pieces out to put them in other libraries, and even removal of some parts that are not raising sufficient interest. These changes must, nonetheless, always be done with consideration for compatibility as soon as the package is a library, plugin or tool that has users.

Collaborative writing of documentation

Some Coq proofs present a particular pedagogical interest because their statements are easy to understand, but they require some non-trivial mathematical tools and their mechanization illustrates interesting proof patterns, or demonstrate the use of specific libraries. They can be used as the basis for tutorials which explain the tricks and interesting parts.

coq-community hosts several such documentation projects. Among them, Hydras & Co. collects libraries of formalized mathematics for inspiration and entertainment, including detailed documentation and exercises. Your contributions are welcome!

Advertising interesting packages

Not all the packages that are transferred to coq-community have the same initial quality. While this should not stop packages from being taken over, and new maintainers should strive to improve the package quality, some editorial work is also required to put forward the most interesting packages, be it for their usefulness as a library or plugin, because they demonstrate interesting proof techniques, or because they represent an important achievement.

Currently, the website highlights a selection of packages with ⭐ and warns about some others with ⚠️ to inform users that some packages are more recommended for reuse than others. Come chat with us if you want to participate in this editorial work.

FAQ

Contributing

  • How can I contribute?

    We have a shared contributing guide, see CONTRIBUTING.md. Some specific projects may have additional contributing guidelines.

  • How to propose a new package?

    This process is documented here.

  • Can I propose a project of which I am the author?

    Yes, you can propose a project of which you are the author, as a way of preparing to pass on the maintenance to other community members. You can start up by proposing yourself as the primary maintainer for this project; but if you become less available for this task, we'll be able to pass on this role to someone else.

Position in the Coq ecosystem

  • What is the relation to Coq's Continuous Integration (CI)?

    Coq's CI systematically tests a collection of external libraries and plugins for regression and compatiblity breakage with each proposed change to Coq before integration. When a library or plugin in Coq's CI breaks, Coq developers or contributors will send patches or give instructions how to adapt to the proposed change. A subset of coq-community packages are included in Coq's CI, and the process of fixing such packages that break is straightforward since Coq developers can themselves integrate the required changes.

  • What is the relation to the Coq package index?

    The Coq package index is the present way of distributing Coq packages using opam. As such, all packages of coq-community are meant to be listed in the Coq package index.

  • What is the relation to the Coq Platform?

    The Coq Platform is a continuously developed opam-based distribution of Coq together with a curated selection of generally useful packages. The Platform is currently the officially recommended way to install Coq. To ensure that packages are compatible with Coq over time, Platform package maintainers must agree to a form of social contract that, e.g., entails making timely releases as Coq evolves. While a subset of coq-community packages are also part of the Coq Platform and thus conform to Platform rules, coq-community packages are not necessarily generally useful or compatible with the Platform. To the Coq Platform, coq-community is one organization among many that host Platform packages.

  • What is the relation to coq-contribs?

    Coq's contribs represent the legacy distribution, compatibility testing and maintenance model. There used to be a form allowing users to submit a package that the Coq development team would then maintain. While distribution now happens through the Coq package index and compatibility testing is done via Coq's CI, maintenance of legacy contribs is done less regularly.

    coq-community is a proposed replacement for the long-term maintenance of Coq packages. Whereas contribs were maintained by the Coq development team, coq-community is managed by the user community. We encourage users to “adopt” a package (including a legacy contrib) and to push the meaning of “maintenance” further than simply ensuring that the package continues to compile with newer Coq versions.

Best practices

  • Do the projects of coq-community need to have some Continous Integration (CI) setup?

    Yes, CI plays a big role in keeping code projects more stable over time. In the case of a Coq package, it helps to ensure that the project stays compatible with the various versions of Coq that are claimed to be supported (as well as various versions of OCaml in the case of a Coq plugin).

    Templates for CI and other Coq-related configuration files are maintained in the templates repository.

  • Which versions of Coq must be supported by projects of coq-community?

    At least the last stable version of Coq must be supported at any given time. Support for older versions or the development version of Coq can be decided project by project. Note that supporting the development version of Coq is a requirement to get into Coq's CI, which can be interesting to get patches from Coq developers when they introduce a breaking change (this is particularly recommended for plugins).

  • What license to use for a coq-community project?

    The only strict requirement is to use a license that is either approved as an open source license by OSI or considered a free software license by FSF. However, if you create a new project or propose to transfer a project of which you are the sole copyright owner, we strongly encourage you to (re)license your project under one of the following two licenses:

    • MIT license: a very permissive and popular open source license. This is the best choice if you want to maximize the reusability of your project.
    • MPL-2.0 license: a weak copyleft license. You can use this license if you want to restrict the license under which modified versions of your project may be distributed. It does not limit how larger works may depend on your project. This license should be preferred over the (historically more prevalent) LGPL-2.1 license because it is technically simpler to understand and abide by.

    If neither of these two licenses can be used, we encourage using another license that is both approved as an open source license by OSI and considered a free software license by FSF.

Process / organizational aspects

  • How to remove a package?

    When a package loses its interest because a newer, better alternative has been found, or for some other reason, the package can be marked as deprecated and stop being maintained. We will generally archive the repository rather than removing it completely though. It also happens that we archive a repository because its content has been merged in another one.

  • What kind of permissions do the members have?

    Members of the coq-community organization have write-access to all the repositories. This permission should be used wisely: only minor fixes should be pushed without going through pull requests, and pull requests should preferably be approved by the project maintainer before getting merged. Some maintainers may decide to protect branches to enforce that all changes go through pull requests and validate some conditions. Maintainers are given admin-access on the repositories that they maintain. All members have the permission to create or transfer new repositories, but they should only do so after going through the standard process. At all times, there should be exactly three (active) owners of the organization. The current owners are Karl Palmskog (@palmskog), Anton Trunov (@anton-trunov), and Théo Zimmermann (@Zimmi48).

  • What to do in case of conflicts?

    We will have a governance process to make sure that we can handle conflicts that are bound to arise about the management of specific projects. Please contribute to meta-issue #2 which is about this.

History

  • Why this name?

    The coq-community organization takes its inspiration from the similar-named elm-community. Here are some other sister organizations:

  • Who made this awesome logo?

    This logo was designed by Aras from the openlogos project and was attributed to coq-community following a general mobilization of Coq users. Thanks to Aras and to the 94 people who voted for us to get this logo!

Is anything still unclear? Please open an issue or chat on Zulip to ask a question.

manifesto's People

Contributors

kbrummert avatar liyishuai avatar palmskog avatar spl avatar zimmi48 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

manifesto's Issues

Move CertiCrypt to Coq-community

Move a project to coq-community

Project name: CertiCrypt

Initial author(s): Gilles Barthe, Benjamin Grégoire, Federico Olmedo, Santiago Zanella-Béguelin, Daniel Hedin, and Sylvain Heraud.

Current URL: https://github.com/EasyCrypt/certicrypt

Kind: pure Coq library

License: CeCILL-B

Description: A framework that enables construction and verification of code-based proofs about cryptographic systems. More about the project and links to related papers: http://certicrypt.gforge.inria.fr

Status: unmaintained

New maintainer: looking for a volunteer

VsCoq

Move a project to coq-community

Project name: VsCoq

Initial author(s): C. J. Bell (@siegebell)

Current URL: https://github.com/siegebell/vscoq

Kind: UI for Coq

License: MIT

Description: A VSCode extension for Coq

Status: unmaintained (last commit in 2017, unmerged fixes / ports to newer Coq versions)

New maintainer: I volunteer

Proposal to move JMLCoq to coq-community

Project name: JMLCoq

Initial author(s): Hermann Lehner (http://people.inf.ethz.ch/lehnerh/ http://www.hermann-lehner.com)

Current URL: http://jmlcoq.info (http://jmlcoq.info/index_files/JMLCoq.tar.gz)

Kind: pure Coq library

License: MIT

Description: Coq formalization of the Java Modeling Language.

Status: unmaintained since 2011

New maintainer: looking for a volunteer

There are many Coq formalizations of fragments of Java floating around, but this one is quite well documented (a whole thesis) and has applications in runtime checking, and thus may be interesting to maintain for the long term. It seems likely the author should agree to license this work under an open source license, since the final thesis paragraph reads:

We hope that our work will be of good use in the research community and help to motivate others to choose a more formal approach to software verification.

Proposal to move Huffman

Move a project to coq-community

Project name: Huffman

Initial author(s): Laurent Théry

Current URL: https://github.com/coq-contribs/huffman

Kind: extractable program

License: LGPL 2.1

Description: A verified, extractable function for Huffman coding and accompanying theory.

Status: Maintained by Coq devs so far.

New maintainer: Karl Palmskog

This is a relatively small but meaningful program verification project in Coq-contrib that should be ideal to use as a vehicle for defining best practices for code extraction and compilation (now that dune will support both Coq and OCaml). I'm also using this project for other work, so I volunteer to maintain in the short term - in particular, to make it compatible with Coq 8.9 and beyond.

Hoogle like search

Meta-issue

@peterlefanulumsdaine
wants to have hoogle like search for Coq. The coq-community database could be a good target for this.
One could start from Search and SearchAbout, but run over the whole of coq-community (or coq opam, or coq std lib)

Proposal to move NuprlInCoq to Coq-community

Move a project to coq-community

Project name: NuprlInCoq

Initial author(s): Vincent Rahli, Abhishek Anand, and Mark Bickford

Current URL: https://github.com/vrahli/NuprlInCoq

Kind: pure Coq library and extractable program

License: GPL-3-or-later

Description: A formalization of Nuprl's Constructive Type Theory (CTT) as of 2016, including an executable proof checker in OCaml based on extracted code. There is a website listing some publications.

Status: maintained

New maintainer: Vincent Rahli (@vrahli)

List of participants to coq-community is not easy to find and not visible enough.

Meta-issue

To show to the outer world that coq-community is an active organization, it would be useful to be able to show the list of participants, in particular the list of principal maintainers. For now, people can easily browse the list of hosted projects. Some of these projects provide a meta.yml and README.md with the maintainer information but that is not the case for all, and even when it is the case, it requires opening every project.

A solution could be to put this list on the coq-community website once we have one.

Another solution would be to adopt the coding used in https://github.com/nix-community/ which includes [maintainer=@user] in the description of each project, so the list of maintainer can be aggregated from the page with the repositories.

Add deploy job to CI to publish new releases when tag is put.

Meta-issue

The idea is simply to make it as easy as possible for principal maintainers of coq-community packages to publish a new release.

When pushing a new tag, the deploy job would:

  • create a release on GitHub, include information about the supported versions of Coq and dependencies;
  • create a PR on the Coq opam repository using opam-publish or an ad-hoc script;
  • (optional / later) create a PR on the nixpkgs repository, updating the package in coqPackages.

A question is how to include the release date meta-data in the opam file that is published in the opam repository. Either the maintainer updates the date in meta.yml before tagging (but I expect people to forget), or we add it later (but then we can't use opam-publish as-is).

Adding support for dune builds in coq-community projects

The dune build system solves many problems with make and coq_makefile for Coq libraries and plugins, not least flaky plugin builds. The tooling around dune, such as dune-release also automates many tedious maintenance tasks, e.g., creation of OPAM files and submitting pull requests to OPAM repositories.

Dune support for Coq projects is still experimental, but is expected to stabilize during 2020. Dune is also expected to become the default build system for Coq itself for version 8.12.0 (tentatively planned for release in mid-2020). Possible future extensions to dune for Coq include support for handling extracted OCaml code and for running alternative checkers such as coqchk.

I believe Coq-community projects should start to add (optional, non-default) support for building with dune. This has the benefit of helping dune developers to find Coq-specific issues, preparing projects for the official dune support for Coq projects, and increasing automation for coq-community maintainers. For Coq plugin projects, there is already a tutorial for adding dune build support.

Finally, there is now also a section in the dune manual defining Coq-related build options.

Automation for citing Coq-community projects in publications

Meta-issue

As highlighted for Coq in this issue, the possibility of conveniently citing projects in academic publications is important for many community participants, and can lead to higher visibility and more funding in the future.

The typical way of making an open source software project citeable is to put a release on Zenodo, e.g., Coq 8.9.0 and Equations 1.0. This generates a DOI and convenient citation metadata (e.g., BiBTeX).

If we could automate putting Coq-community releases on Zenodo, I think this would be a good idea. It would also mean one more preservation archive besides GitHub.

Proposition to move Milad Niqui's Stern-Brocot construction of rational numbers

Move a project to coq-community

Project name: QArithSternBrocot

Initial author(s): Milad Niqui

Current URL: https://github.com/coq-contribs/qarith-stern-brocot

Kind: pure Coq library

License: LGPL 2.1

Description: Developement of rational numbers as finite binary lists and defining field operations on them in two different ways: strict and lazy.

Status: formerly maintained in coq-contribs

Previous maintainer: [email protected]

New maintainer: Hugo Herbelin

Proposal to move CoqdocJS or a fork to coq-community

Project name: CoqdocJS

Initial author(s): Tobias Tebbi (@tebbi)

Current URL: https://github.com/tebbi/coqdocjs https://github.com/palmskog/coqdocjs

Kind: collection of JavaScript and CSS code

License: BSD

Description: CoqdocJS is a collection of scripts to improve the HTML output of the coqdoc tool, adding features such as hiding/showing proof scripts on command.

Status: unknown

New maintainer: @palmskog

I have recently forked CoqdocJS and heavily modified it to fit the workflow of typical projects in coq-community, such as leveraging GitHub pages for deploying HTML. The results can be seen, e.g., for the Huffman project. However, the core JavaScript and CSS is roughly the same.

Many of these changes are not likely to be useful outside of coq-community or a similar organization. Hence, I am looking for feedback from the community as to whether to move my fork of CoqdocJS to the coq-community organization on GitHub, or determine whether we can move the original CoqdocJS repo to coq-community.

@tebbi can you comment on what your plans w.r.t. CoqdocJS are for the longer term, e.g., whether you plan to actively maintain it and if you think it may be a good idea to have the community help maintain it by moving the repo?

If it is determined that maintaining a fork is the best way to go, I would be happy to rename the fork to avoid confusion.

Move reduction-effects plugin to coq-community

Move a project to coq-community

Project name: reduction-effects

Initial author(s): Hugo Herbelin (@herbelin)

Current URL: https://github.com/herbelin/reduction-effects

Kind: OCaml plugin

License: LGPL 2.1 (to clarify if this is "or later")

Description: A Coq plugin to add reduction side effects to some Coq reduction strategies

Status: has not been maintained since its creation

New maintainer: Jason Gross (@JasonGross)

See coq/coq#9692 for context. The intent is to also add the plugin to Coq's CI to make sure it is kept compatible with the latest versions of Coq, and to add it to the Windows installer.

@herbelin Can you confirm if you are OK with this plan? (and also if the license should be interpreted as LGPL-2.1-or-later?)

Proposal to add Cocasse

Move a project to coq-community

Project name: Cocasse

Initial author(s): Nicolas Tabareau and Éric Tanter

Current URL: https://github.com/tabareau/Cocasse

Kind: Coq library with extraction examples

License: unknown (need to ask authors to explicitly release under open source license)

Description: This small library demonstrates a technique for deferring proof witnesses for subset types to "computation time" by introducing some axioms. This in effect enables gradual typing when programming in Coq, with runtime checks in extracted code. The library is described in the paper Gradual certified programming in Coq.

Status: Appears unmaintained. Does not work with Coq 8.8 or 8.9.

New maintainer: looking for a volunteer

lemma-overloading

Move a project to coq-community

Project name: lemma-overloading

Initial author(s): Georges Gonthier (@ggonthier), Beta Ziliani (@beta-ziliani), Aleksandar Nanevski (@aleksnanevski) and Derek Dreyer (@drdreyer)

Current URL: https://github.com/coq-contribs/lemma-overloading

Kind: pure Coq library (based on SSReflect/mathcomp)

License: GNU GPL v3

Description: Hoare Type Theory libraries from How to make ad hoc proof automation less ad hoc paper. The project presents a series of design patterns for canonical structure programming that enable one to carefully and predictably coax Coq’s type inference engine into triggering the execution of user-supplied algorithms during unification, and illustrates these patterns through several realistic examples drawn from Hoare Type Theory. The project also contains a typeclasses-based re-implementation for comparison.

Status: not maintained (since 2016)

New maintainer: Anton Trunov (@anton-trunov)

proviola

Move a project to coq-community

Project name: proviola

Initial author(s): Carst Tankink @Carst-Tankink

Current URL: https://bitbucket.org/Carst/proviola-source

Kind: tool

License: GPL v3

Description: A tool to be able to replay the proofs when browsing a coqdoc-generated HTML file.

Status: Not maintained.

New maintainer: looking for a volunteer

cc @JasonGross @mgrabovsky @yforster who have shown interest by having a fork on GitHub and @spitters @aa755 @siddharthist who have shown interest otherwise.

For those of you that do not already know about coq-community, have a look at the README at https://github.com/coq-community/manifesto. And sorry for the noise if you do not feel concerned (you can easily unsubscribe from this issue).

Organization wide contributing guide and code of conduct.

Meta-issue

I just learned that GitHub supports defining a default contributing guide and code of conduct for a whole organization, by putting these in a .github repository. I think it might be good to do that for coq-community. It was the idea from the beginning anyway, that this contributing guide and code of conduct applied to all coq-community projects, and that's why we include them in the README template.

This move could be an opportunity to revise the content of the contributing guide: "Proposing a new package" could be moved after "Contributing to a coq-community package", and could mention that each package has its own license. "Contributing to this meta-project" could be renamed into "Contributing to the coq-community organization as a whole" or something like that.

We can also add a generic SUPPORT.md file, which could include the link to coq-community's Gitter room, as well as the Coq Discourse forum (I dunno if that would be useful or not).

Finally, we can also have default issue and pull request templates, but the issue templates from this repository are too specific and thus not a good basis for a default.

Reference: https://help.github.com/en/articles/creating-a-default-community-health-file-for-your-organization

Corn

Move a project to coq-community

Project name: Corn

Initial author(s): Many

Current URL: https://github.com/c-corn/corn

Kind: pure Coq library

License: GPL

Description: The Coq Constructive Repository (previously) at Nijmegen.

Status: Maintained by Bas Spitters

New maintainer: Bas Spitters, but help is appreciated

Math-classes

Move a project to coq-community

math-classes:

Initial author(s):
Eelis van der Weegen
Bas Spitters
Robbert Krebbers

Current URL:
https://github.com/math-classes

Kind: pure Coq library

License: Public Domain

Description: A library of abstract interfaces for mathematical structures in Coq.

Status: Maintained by Bas Spitters

New maintainer: Bas Spitters, but help is appreciated

Proposition to move Laurent Théry's contribution Bertrand

Move a project to coq-community

Project name: Bertrand

Initial author(s): Laurent Théry

Current URL: https://github.com/coq-contribs/bertrand

Kind: formalization of a mathematical theorem / program correctness

License: LGPL 2.1

Description: A proof of correctness of the algorithm as described in The Art of Computer Programming: Fundamental Algorithms by Knuth, pages 147-149.

Status: formerly maintained in coq-contribs

Previous maintainer: [email protected]

New maintainer: Hugo Herbelin

Define a set of best practices on how to maintain a project

Meta-issue

These best practices should include how to setup CI (with templates), how to maintain compatibility with various versions of Coq, how to name versions and when to release them, how to create packages (again with templates).

Proposal to add RelationExtraction

Move a project to coq-community

Project name: RelationExtraction

Initial author(s): Catherine Dubois, David Delahaye, and Pierre-Nicolas Tollitte

Current URLs: https://github.com/coq-contribs/relation-extraction https://github.com/picnic/RelationExtraction https://github.com/herbelin/RelationExtraction

Kind: OCaml plugin

License: GPL3

Description: A plugin for generating functions from inductive types which make this possible. The functions can either be functions inside Coq or functions in an extraction language, such as OCaml. The underlying theory and implementation of the plugin is described in the paper Producing Certified Functional Code from Inductive Specifications.

Status: Currently maintained by Coq devs in Coq-contribs

New maintainer: looking for a volunteer

Social media / Twitter account

Hi folks,

the discussion here made me wonder about the communication strategy of Coq Community, and in particular presence on social media.

Personally, I think that having a (shared) twitter account would be a great idea; twitter is of course not perfect but a lot of researcher and potential audience is already there; it is lightweight; and I find the S/N ratio to be pretty good.

WDYT folks.

p.s: just in case I have reserved the CoqCommunity and coq_community on twitter as the sooner I write about this the sooner some joker would register them.

Proposal to move Polaris to coq-community

Project name: Polaris

Initial author(s): Joseph Tassarotti

Current URL: https://github.com/jtassarotti/polaris

Kind: pure Coq library

License: BSD

Description: Library for reasoning about probabilistic and concurrent programs, based an extension of the Iris project for probabilistic and relational reasoning.

Status: Appears to be unmaintained (doesn't work with Coq 8.9 or 8.10).

New maintainer: looking for a volunteer

@jtassarotti can you can you comment on the status of Polaris and whether (or not) you believe this project could be a good fit for Coq-community? To my knowledge, the only other modern formalization of probability is in the infotheo project.

Back-up repository data

Meta-issue

This issue is extracted from an off-topic discussion in #2.

@palmskog on 2019-05-03

Let's say Coq-community grows to dozens of projects with as many or more maintainers. It may happen that someone, adversarially or not, does something unwanted to a repository, such as removing it, moving it, corrupting it, etc.

Is there any periodic snapshotting being done of our repositories to restore from? I know various efforts try to archive open source code, but is there an easily accessible one with frequent updates we can use to restore repos from? Arguably we should document this somewhere.

@Zimmi48

If it is code that you are talking about, I could easily set up mirrors of the coq-community repositories on gitlab.com. That wouldn't be sufficient to preserve meta-data such as issues though.

@palmskog

I'm primarily concerned with the code and commit metadata, but obviously issues and wikis matter as well, even though GitHub seems to keep a lot of history on those. It should be possible to script periodic dumping and copying of metadata using GitHub's API, right? Maybe something to work on at an upcoming workshop. Is this being done for Coq repos, by the way?

I'm all for mirroring at GitLab, but does that cover the "snapshotting" part of the problem? For example, if a repo gets corrupted in some way, the mirror could soon contain only the corrupt version, depending on how it's set up.

@Zimmi48 on 2019-05-04

GitLab's mirroring feature includes options to mirror even force-pushes and deletions, or to only mirror normal pushes and never delete anything. In this latter case, all the information is there to recover in case of accident. However, that could produce wrong alerts if people push topic branches and force-push to them.
GitHub's wikis are also git repositories so it is easy to setup a similar mirror.

GitHub does indeed keep a lot of history, in particular in its timeline, but it also allows repository administrators to delete previous edits, comments, issues, and repositories themselves. That's why I was asking whether we should restrict coq-community members' default privileges from admin to write.

Copying issue data using GitHub's API is possible and there are actually already a few services that do it for a fee (e.g. https://github.com/marketplace/backhub). I could also extend @coqbot to do it, but we would need to discuss the design (what to save, how to react to edits, deletions...).

@palmskog on 2019-05-12

For reference, one kind of situation I had in mind for backing up repos is this.

I'm fine with GitLab mirroring, even if it doesn't capture topic branches. But I think it should be complemented by repo tarballs, e.g., once for every 30 days back.

@Zimmi48 on 2019-05-13

Why tarballs?

A good point that I read through your comment is that the more people have write-access to coq-community repositories, the more chances we take that they will be compromised if one user leaks their credentials one way or another.

@palmskog

At least with tarballs one would know for sure: this is what the repository looked like at some specific time. With mirrors, I think one would need deep knowledge of git semantics and implementation to say something similar. For example, can't some just rewrite the reflog?

@Zimmi48

I don't see what risk there would be if the mirror refuses to update if it's not a fast-forward. Then, you can only add stuff on top, not delete it.

@palmskog

I see the point, but one of my points with tarballs is that it removes git from the trusted base (and I don't particularly trust git and definitely not its implementation). In any case, I don't have anything against mirrors.

@Zimmi48

OK now I see your point.

@Zimmi48 on 2019-07-12

FTR I have created the GitLab coq-community organization and the mirrors for all the current repositories, as a temporary solution while waiting for a better one.

Proposition to move Keller and Lasson's paramcoq to coq-community

Move a project to coq-community

Project name: paramcoq

Initial author(s): Chantal Keller (@ckeller) and Marc Lasson (@mlasson)

Current URL: https://github.com/parametricity-coq/paramcoq
(the maintained version is https://github.com/aa755/paramcoq)

Kind: OCaml plugin

License: No explicit licence, we should ask the original authors Now MIT

Description:
This plugin computes the n-ary parametricity transformation of a closed term.

Status:
Main repository is abandoned, but @aa755 repository is active.

New maintainer:

  • looking for a volunteer

@aa755 and I already wrote to @ckeller and @mlasson, who both agreed to transition paramcoq to coq-community

Proposal to add sources and exercises from Coq'Art book to Coq-community

Move a project to coq-community

Project name: Coq sources and exercises from Coq'Art

Initial author(s): @Casteran @ybertot

Current URL: http://www.labri.fr/perso/casteran/CoqArt/

Kind: pure Coq library

License: CeCILL-B

Status: unclear (last update was for Coq 8.7)

Coq'Art is still the reference book I use most when working with Coq, and it would be great to have its Coq sources and exercises available for current and future Coq versions, continually checked via CI scripts we use for other projects.

@ybertot @Casteran do you agree this is a good idea?

I can help out with metadata and CI scripts, but don't have enough cycles for porting to recent versions of Coq.

Define a governance process

Meta-issue

This is not really urgent to have but it would be good to have a formal governance process at some point.
In particular, it wouldn't be surprising to have some conflicts arising about some specific projects at some point, and it would be great if this had been anticipated and the governance process included a process for conflict resolution...
We could start with a raw sketch and refine it over time like is planned for the other documents in this repository.

Proposal to add SyDRec

Move a project to coq-community

Project name: SyDRec

Initial author(s): Simon Robillard

Current URL: https://github.com/simonr89/SyDRec

Kind: OCaml plugin

License: CeCILL-C

Description: Plugin that allows generating catamorphisms and accompanying fusion lemmas from inductive types. This provides support for the "derivation-style" program development advocated by Richard Bird and others (see the book Algebra of Programming). The theory and implementation is described in the paper Catamorphism Generation and Fusion Using Coq.

Status: Appears unmaintained. Last supported version of Coq is 8.4.

New maintainer: looking for a volunteer

Move hybrid to Coq-community

Move a project to coq-community

Project name: hybrid

Initial author(s): Herman Geuvers, Dan Synek, Adam Koprowski, and Eelis van der Weegen

Current URL: https://github.com/Eelis/hybrid

Kind: Coq library and extractable program

License: unknown

Description: A prover for hybrid systems, formalized using CoRN, MathClasses, and CoLoR.
More about the project and link to a paper: http://www.eelis.net/research/hybrid/

Status: unmaintained since 2012

New maintainer: looking for a volunteer

Move ALEA to Coq-community

Move a project to coq-community

Project name: ALEA

Initial author(s): Christine Paulin-Mohring, David Baelde, and Pierre Courtieu

Current URLs: https://www.lri.fr/~paulin/ALEA/alea-v8.tgz https://github.com/EasyCrypt/certicrypt/tree/master/ALEA https://github.com/hivert/Coq-HookLength/tree/master/ALEA/ https://github.com/hivert/Coq-Combi/tree/master/3rdparty/ALEA https://github.com/coq-contribs/random

Kind: pure Coq library

License: unknown

Description: A library for reasoning on randomized algorithms. Likely outdated now by more modern libraries such as Polaris, but interesting for its applications (CertiCrypt). More about the library and links to related papers: https://www.lri.fr/~paulin/ALEA/

Status: unmaintained since 2013

New maintainer: looking for a volunteer

Proposal to move FSCQ to coq-community

Project name: FSCQ

Initial author(s): Haogang Chen, Daniel Ziegler, Tej Chajed, Adam Chlipala, M. Frans Kaashoek, and Nickolai Zeldovich

Current URL: https://github.com/mit-pdos/fscq

Kind: Coq library and extractable program

License: MIT

Description: FSCQ is a file system written and verified in Coq.

Status: Unmaintained (README says "Unmaintained research prototype")

New maintainer: looking for a volunteer

@tchajed can you comment on whether (or not) you believe this project could be a good fit for Coq-community? Personally, I think having an up-to-date FSCQ would be a great service to the research community, e.g., for experimentally integrating with other projects such as Verdi Raft.

Coq-ext-lib

Move a project to coq-community ???

There seems to be an overlap in goals between coq-community, the new std-lib and coq-ext-lib.
@gmalecha , @maximedenes It might make sense to coordinate.

Project name: coq-ext-lib

Initial author(s): Gregory M. Malecha

Current URL: https://github.com/coq-ext-lib/coq-ext-lib

Kind: pure Coq library

License: FreeBSD

Description: A library of Coq definitions, theorems, and tactics.

Status: maintained by Gregory M. Malecha

Move the containers contrib to coq-community

Move a project to coq-community

Project name: Containers

Initial author(s): Stéphane Lescuyer @StekiKun

Current URL: https://github.com/coq-contribs/containers

Kind: plugin + library

License: TBD by the author before the transfer

Description: a typeclass-based library of finite sets/maps

Status: was recently maintained by various contributors as part of coq-contribs

New maintainer: the original author, @StekiKun, will be the principal maintainer for the time being

Other interested folks include: @siddharthist, @sigurdschneider, @vbgl

Proposition to move Thomas Braibant & Damien Pous' contribution AAC tactics

Move a project to coq-community

Project name: AAC Tactics

Initial author(s): Thomas Braibant & Damien Pous

Current URL: https://github.com/coq-contribs/aac-tactics

Kind: plugin

License: LGPL 3

Description: This plugin provides tactics for rewriting universally quantified
equations, modulo associativity and commutativity of some operators.

Status: formerly maintained in coq-contribs

Previous maintainer: Matej Kosik (?)

New maintainer: Fabian Kunze

Add Coq to Travis CI

Meta-issue

Our current template builds everything in Docker, which is less flexible than what Travis can do with other languages. It'll be nice if we could have language: coq and run scripts conveniently.
Travis allows community-supported languages, and our community seems the right people to do that.
Similar issue in OCaml world: ocaml/ocaml-ci-scripts#53

Move the exact-real-arithmetic contrib to coq-community.

Move a project to coq-community

Project name: exact-real-arithmetic

Initial author(s): Jérôme Creci

Current URL: https://github.com/coq-contribs/exact-real-arithmetic

Kind: pure Coq library

License: LGPL-2.1

Description: This contribution contains a proof of correctness of some exact real arithmetic algorithms from the PhD thesis of Valérie Ménissier-Morain

Status: last commit was two years ago

New maintainer: @ybertot + @magaud (?)

This issue is a follow-up of the coqdev thread "corrections to a contrib : exact-real-arithmetic".

Adopt a standard encoding of license names in project metadata and OPAM packages

Meta-issue

As highlighted by @Zimmi48 in a recent pull request, we are currently using informal conventions to indicate project licenses in OPAM files, e.g., LGPL 3 and LGPL2.

To address this, I opened an issue in the Coq OPAM archive, which is the intended home for OPAM packages in Coq-community. As suggested by @Zimmi48, I proposed the archive should use the SPDX license name format, which is used by Elm packages.

Since we are dependent on the Coq OPAM archive for distribution, I believe we should wait to enforce SPDX until they have switched, rather than unilaterally adopting it and making the archive even less uniform in license naming.

Refine Code of Conduct

Meta-issue

GitHub proposes the use of https://www.contributor-covenant.org/version/1/4/code-of-conduct
This requires providing a team e-mail address to report abuse. Another solution could be to list individual team member e-mail addresses.

The other question is whether we want to reuse an existing Code of Conduct as-is or if it would be better to adapt it. Are there some people with experience or expertise who want to comment?

Proposal to move Velisarios to Coq-community

Move a project to coq-community

Project name: Velisarios

Initial author(s): Vincent Rahli, Ivana Vukotic, Marcus Völp, and Paulo Esteves-Verissimo

Current URL: https://github.com/vrahli/Velisarios

Kind: Coq library and extractable program

License: GPL-3.0-or-later

Description: Velisarios is a framework for verification of Byzantine fault-tolerant distributed systems, which contains an executable implementation of the PBFT algorithm.

Status: maintained (but current version on GitHub needs update for Coq 8.9)

New maintainers: Vincent Rahli (@vrahli) and Karl Palmskog (@palmskog)

PBFT is an important Coq case study. The main purpose of moving Velisarios to Coq-community (while keeping initial authors as maintainers) is to ease long-term maintenance via CI and other automation. In particular, Dune will be helpful for the executable PBFT implementation. I also suggest that Velisarios should join Coq's CI.

Move coq-bits to coq-community

Move a project to coq-community

Project name: coq-bits

Initial author(s): Arthur Blot (@artart78), Pierre-Évariste Dagand (@pedagand), Julia Lawall (@JuliaLawall)

Current URL: https://github.com/artart78/coq-bits

Kind: pure Coq library / extractable program

License: Apache License 2.0

Description: A formalization of bitset operations in Coq and the corresponding axiomatization and extraction to OCaml native integers.

Status: has not been maintained since 2016, June 29th

New maintainer: Anton Trunov (@anton-trunov)

Proposal to add Chapar

Move a project to coq-community

Project name: Chapar

Initial author(s): Mohsen Lesani, Christian J. Bell, and Adam Chlipala

Current URL: https://github.com/mit-plv/chapar

Kind: extractable program

License: MIT

Description: A collection of certified causally consistent distributed key-value stores

Status: Currently unmaintained.

New maintainer: Karl Palmskog

Move zorns-lemma and topology to coq-community.

Move a project to coq-community

Project name: zorns-lemma and topology

Initial author(s): Daniel Schepler @dschepler

Current URL: https://github.com/coq-contribs/zorns-lemma and https://github.com/coq-contribs/topology

Kind: pure Coq library

License: LGPL-2.1-or-later

Description: This library develops some basic set theory. / This library develops some basic concepts and results of general topology.

Status: in coq-contribs; recent maintenance was done by @amiloradovsky.

New maintainer: Andrew Miloradovsky @amiloradovsky

Move rippling to Coq-community

Move a project to coq-community

Project name: rippling

Initial author(s): Sean Wilson

Current URL: https://github.com/tomprince/rippling

Kind: OCaml plugin

License: LGPL 2.1

Description: Plugin for automation of induction proofs using the rippling heuristic. A paper is available that describes the theory and implementation.

Status: unmaintained since 2011 (Coq 8.3)

New maintainer: looking for a volunteer

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.