Skip to content

Latest commit

 

History

History
126 lines (85 loc) · 4.96 KB

COMPARISON.md

File metadata and controls

126 lines (85 loc) · 4.96 KB

Comparison to other CI solutions 🛒

Disclaimer

Even though I try to be as objective as possible, I am obviously biased in favor of my own work. If you feel I have misrepresented your, or any, project in this comparison, please open an issue or pull request.

I have deliberately excluded some lesser-known and seemingly unmaintained projects from this comparison. If you think some project deserves a spot, please open a issue or pull request.

Summary

Here is a summary of reasons you may, or may not, want to use elisp-check.

Advantages of elisp-check

  • Very little setup required, only a single YAML file
  • Integration with GitHub Actions, which provides free CI for open source projects
  • Code annotations, which also integrate with GitHub pull requests
  • Large range of supported Emacs versions (24.1 and up)
  • All checks can be run locally using a reasonably intuitive API (elisp-check-run)
  • No dependencies outside of a supported Emacs versions

Disadvantages of elisp-check

  • Currently only GitHub Actions is supported as a CI service
  • Some lesser-used linters and test frameworks are currently unsupported
  • Does not (and likely will never) support Emacs versions lower than 24

If you are interested in support for an alternative CI service, please open an issue. If possible, also include links to documentation, especially relating to API support for code annotations.

If you are interested in support for an alternative linter or test framework, please open an issue. If possible, also include links to documentation.

Comparison to melpazoid

Advantages of melpazoid

  • Uses MELPA-compatible recipes to setup packages
  • Implements some custom checks not supported by elisp-check
  • Implements a license checker
  • Includes sample configurations for GitHub Actions and Travis CI
  • Includes a Dockerfile
  • Can be run continuously to check many recipes

Some of these features might especially be interesting to people who review MELPA pull requests, as melpazoid has specifically been built to support their work.

Disadvantages of melpazoid

  • Does not seem to support some new versions of Emacs (builds crash)
  • Reports can be very hard to read and understand
  • Some lesser-used linters are unsupported
  • No support for any test frameworks or running tests
  • No automatic integration with any CI service (manual setup is documented)
  • No code annotations
  • Depends on Python 3.x

Comparison to makem.sh

The makem.sh project also includes a comparison section in its README.

Advantages of makem.sh

  • Supports quite a few additional checks not supported by elisp-check
  • Includes a script and Makefile for running tests locally
  • Includes a sample configuration for GitHub Actions
  • Terminal output is color-coded which improves readability

Disadvantages of makem.sh

  • No automatic integration with any CI service (manual setup is documented)
  • No code annotations
  • Depends on Bash (Make is optional)

Comparison to Cask

Advantages of Cask

  • Well known in the Emacs community
  • Offers many additional features for Emacs Lisp projects

Disadvantages of Cask

  • Requires quite a bit of configuration by the package author
  • No native support for any linters or test frameworks (manual setup is needed)
  • No automatic integration with any CI service (manual setup is needed)
  • No code annotations
  • Depends on Python 3.x

Comparison to Eldev

Advantages of Eldev

  • Offers many additional features for Emacs Lisp projects
  • Offers support for code coverage reports
  • Allows extending core functionality for highly specialized setups
  • No dependencies outside of a supported Emacs versions

Disadvantages of Eldev

  • Requires quite a bit of configuration by the package author
  • No automatic integration with any CI service (manual setup is documented)
  • No code annotations

Comparison to a manual setup

Advantages of a manual setup

  • Allows configuring CI with the full power of a turing-complete programming language
  • If simple, adds no external dependencies to your project

Disadvantages of a manual setup

  • Potentially requires huge amount of code and configuration by the package author

The structure of this comparison section was heavily inspired by Radon Rosborough's work.

If possible, please support him and his efforts.