BARK! Another Report Keeper
BARK monitors a mailbox and turns incoming emails into reports. Replies in the same thread update each report through a small fixed vocabulary of commands. Maintainers can also write to the inbox directly to manage roles and receive periodic digests.
To browse BARK reports from the terminal, use bone. Companion modes for Emacs: gnus-bone.el and notmuch-bone.el.
For maintainers, see the full BARK manual.
Subject labels
A subject label creates a report, optionally carrying a topic and/or version:
| Type | Subject labels |
|---|---|
| bug | [BUG <topic>] |
| patch | [PATCH <topic> <version> <n/m>] |
| request | [FR <topic>] [FP <topic>] [RFC <topic>] [POLL <topic>] [TASK <topic>] |
| announcement | [ANNOUNCEMENT <topic>] [ANN <topic>] [BLOG <topic>] [TIP <topic>] |
| release | [REL <topic> <version>] [RELEASE <topic> <version>] |
| change | [CHG <topic> <version>] [CHANGE <topic> <version>] |
All <…> parts are optional and positional.
Also accepted: [ANNOUNCEMENT], [RELEASE], [CHANGE] (long forms, equivalent to their 3-letter counterparts).
For release and change, a single value is read as <version>: [REL 2.0] sets version to "2.0". Use both for topic and version: [REL parser 2.0].
The topic can also be set with a colon prefix after the label: [BUG] parser: crash on empty input sets the topic to "parser".
Status & priority commands
Replies to a report update it with command keywords such as Fixed. or Applied..
A command keyword goes at the beginning of a line, followed by punctuation (. , ; : ? !), whitespace, or end of line.
Recommended keyword per action, with the matching retract form:
| Effect on report | Command keyword | Type |
|---|---|---|
| Mark as acked | Acked Confirmed Approved |
Status |
| Mark as owned | Owned |
Status |
| Mark as closed (canceled) | Canceled Cancelled |
Status |
| Mark as closed (expired) | Expired |
Status |
| Mark as closed (resolved) | Closed Resolved Applied Completed Fixed |
Status |
| Mark as urgent | Urgent. |
Priority |
| Mark as important | Important. |
Priority |
Announcements, releases and changes cannot be acked or owned but can still be marked closed, urgent or important.
Also accepted for ack: Acked, Confirmed, Approved. Also accepted for close: Resolved, Closed, Applied, Fixed, Completed.
Priority is not set directly: it is the sum of important (+1) and urgent (+2).
Urgent. and Important. require a punctuation mark or end of line -- a bare space is rejected (these words appear too often in ordinary prose).
You can combine several commands in one email:
Confirmed. Owned. Urgent. Important.
Searching via the web page
| Long form | Short | Explanation |
|---|---|---|
| from:me@example.org | f: |
Reports from me@example.org |
| acked:me@example.org | a: |
Reports acked by me@example.org |
| owned:me@example.org | o: |
Reports owned by me@example.org |
| closed:me@example.org | c: |
Reports closed by me@example.org |
| closed:true | c:true |
Include closed reports (bypass Open filter, transient) |
| urgent:me@example.org | u: |
Reports marked urgent by me@example.org |
| important:me@example.org | i: |
Reports marked important by me@example.org |
| subject:match | s: |
Reports matching subject |
| topic:match | t: |
Reports matching topic |
| priority:[0-4] | p: |
Reports matching priority level 0 to 4 |
| mid:<...> | m: |
Report with message-id <...> |
| date:3d.. | d: |
Reports from the last 3 days |
| date:2023-01-01..2023-12-31 | d: |
Reports between 2023-01-01 and 2023-12-31 |
| deadline:2026-09-01 | D: |
Reports due on 2026-09-01 |
| deadline:2026-01-01..2026-06-30 | D: |
Reports due in that range |
| deadline:2m | D: |
Reports due between now and 2 months from now |
| expired:10d | e: |
Reports expiring within 10 days |
| expired:2026-01-01..2026-03-31 | e: |
Reports expiring in that range |
| match1 | match2 | Reports matching "match1" or "match2" | |
| from:* acked:* … | f:* a:* … |
Wildcard for from/acked/owned/closed/urgent/important |
Durations: Nd (days), Nw (weeks), Nm (months).
date: looks backward from today; deadline: and expired: look forward.
Combine filters freely: D:2m o:user@email.com finds reports due within 2 months and owned by user@email.com.
Maintainers
- Ihor Radchenko (since 2019-12-31) (lead)
- Bastien (since 2019-12-31)
- Christian Moe (since 2019-12-31)
Configuration
Here is how to configure this source in your BARK instance:
{:name "Org mode ML",
:bark-path "https://tracker.orgmode.org/",
:list "emacs-orgmode.gnu.org",
:maintainers
["yantar92@posteo.net"
"bzg@bzg.fr"
"bzg@gnu.org"
"mail@christianmoe.com"],
:labels
{:request ["FR" "FP" "RFC" "POLL" "TASK"],
:announcement ["ANNOUNCEMENT" "ANN" "BLOG" "TIP"]},
:periods
[{:start "2020-01-01",
:end "2026-04-19",
:commands
{:owned {:words ["Owned" "Handled"]},
:closed
{:words
["Canceled"
"Cancelled"
"Closed"
"Expired"
"Resolved"
"Applied"
"Completed"
"Fixed"
"Done"]}}}],
:archive-format-string "https://list.orgmode.org/%s"}