// the find
reugn/go-quartz
Minimalist and zero-dependency scheduling library for Go
go-quartz is a Go scheduling library that ports the Quartz Java scheduler's API and cron expression format to Go with zero external dependencies. It's for Go developers who want familiar Quartz semantics (JobDetail, Trigger, Scheduler interfaces) or need full Quartz cron syntax including the L, W, and # special characters that standard cron parsers don't support.
1. Full Quartz cron expression format including L (last), W (nearest weekday), and # (nth weekday) — most Go cron libraries skip these. 2. Zero dependencies: the go.mod is clean, nothing to audit or update. 3. The pluggable JobQueue interface lets you swap in a persistent backend for distributed scheduling without touching the scheduler itself — the file-system example is a working template. 4. Context-aware from top to bottom: Start, Wait, and Execute all take context.Context, so graceful shutdown is first-class.
1. Distributed mode is left almost entirely to you — the only provided example is a file-system queue, which is not safe for multiple hosts. If you need real distributed scheduling you're writing the Redis/Postgres backend yourself. 2. No persistent retry or dead-letter handling: a job that errors just logs and moves on. There's a job status concept but no built-in backoff or failure queue. 3. The cron state machine is internal and untestable from outside the package, so if a complex cron expression fires wrong you have limited tools to debug it short of reading the CSM source. 4. 2k stars but only 95 forks and slow recent commit activity — this is mostly a one-person library, and the distributed gap suggests it hasn't been battle-tested at scale.