BARK! Another Report Keeper
BARK monitors a mailbox and converts incoming emails into reports. Subsequent emails in the same thread can update the status of that report using predefined commands. Maintainers can update reports by writing directly to the monitored inbox, manage roles, and receive periodic digest emails.
For maintainers, see the full BARK manual.
To explore BARK reports from your terminal, use bone.
You can also highlight BARK with gnus-bone.el and notmuch-bone.el.
Subject labels
Subject labels create reports, optionally with a topic/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 interpreted as <version>: [REL 2.0] sets version to "2.0". Use both for topic and version: =[REL parser 2.0]=.
Topics can also be set using a colon-delimited prefix in the subject after the label: [BUG] parser: crash on empty input sets the topic to "parser".
Status & priority commands
Replies to reports can update them by using command keywords such as Fixed. or Applied..
Command keywords should be placed at the beginning of the line and followed by a space or a punctuation mark (. , ; : ? !).
Recommended keyword per action, with the form to retract your own action on the same line:
| 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 they can be marked closed, urgent, or important.
Also accepted for ack, any type: Acked, Confirmed, Approved.
Also accepted for close, any type: Resolved, Closed.
Users don't set the priority directly: it is computed as the sum of important (+1) and urgent (+2).
Note that Urgent. and Important. both require a full stop at the end.
You can combine several status/priority commands in a single 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 |
| 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 open with message-id <...> |
| date:3d.. | d: |
Reports from 3 days ago |
| date:2023-01-01..2023-12-31 | d: |
Reports from 2023-01-01 to 2023-12-31 |
| deadline:2026-09-01 | D: |
Reports with due date 2026-09-01 |
| deadline:2026-01-01..2026-06-30 | D: |
Reports with due date in that range |
| deadline:2m | D: |
Reports due between now and 2 months from now |
| expired:10d | e: |
Reports expired between now and 10 days from now |
| expired:2026-01-01..2026-03-31 | e: |
Reports expired in that date 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).
For date: they look backward from today; for deadline: and expired: they look forward.
Combine filters freely: D:2m o:user@email.com finds reports due within 2 months owned by user@email.com.
Maintainers
- yantar92@posteo.net (since 2019-12-31) (lead)
- bzg@bzg.fr (since 2019-12-31)
- bzg@gnu.org (since 2019-12-31)
- mail@christianmoe.com (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"}