Maintaining Projects

Once a project has been accepted into CLJ Commons, there is an expectation that the project will be well-maintained, and will be kept up to date with the latest versions of Clojure and other dependencies.

Being a Maintainer

Each project under the clj-commons organization needs to have at least one maintainer, and the GitHub usernames of those maintainers should be listed in the .github/CODEOWNERS file. In addition, there should be a ORIGINATOR file added to the project root that contains the GitHub username of the person who originally created the project.

These files are used to automatically generate and publish the list of projects on the CLJ Commons website. In addition, the CODEOWNERS is used by GitHub to identify who should be invited to review Pull Requests for various parts of the project.

CLJ Commons believes that the following should be considered the minimum requirements for a 'well-maintained' project:

CLJ Commons does not impose any additional restrictions on how the individual projects are run, other than what is stated in this page.

This means that Pull Request review protocol, release cycles, and post-release announcements are up to the maintainer of the project, even though we encourage announcing new releases to the official Clojure Google Group and/or the #announcements / #releases channels in the Clojurians Slack. In addition, coding style is up to the maintainers of the project, but clj-commons recommends following The Clojure Style Guide.

Continuous Integration

We strongly encourage maintainers to setup and depend on Continuous Integration for all CLJ Commons projects. The founders of the project were most familiar with CircleCI, so that is what most of our projects currently use -- and you'll find it easy to get help from other CLJ Commons maintainers if you have questions about CircleCI.

The CircleCI GitHub application is already configured at the organization level. Simply adding a valid configuration (check the official documentation) is enough to enable Continuous Integration (of branches and pull requests).

You can also use GitHub Actions if you are more comfortable with that.

Project Acceptance

How projects get accepted by CLJ Commons is discussed in our project acceptance guidelines.