April 15th, 2024

Backlog Proc: A Better JQL


Backlog Proc is a simple item backlog tracker I built for work. I'd like to link them to Jira tickets, so that I know whether a particular backlog item actually has tasks written for them, and what the status of each of those tasks are.  I guess these are meant to be tracked by epics, but Jira's UI for handling such things is a mess, and I'd like to make notes that are only for my own eyes.

Anyway, I'm was using JQL to select the Jira tickets. And it worked, but the language is a bit verbose. Plus the tool I'm running the queries in, jira-cli, requires that I add the project ID along with the things like the epic or fix version.

So I'm started working on a simpler language, one that's just a tokenised list of ticket numbers. For example, instead of writing:

project = "ABC" and key in (ABC-123 ABC-234 ABC-345)

One could just write:

ABC-123 ABC-234 ABC-345

And instead of writing:

(project = "ABC" and epicLink = "ABC-818") OR (project = "DEF" and epicLink = "DEF-222")

One could just write:

epic:(ABC-818, DEF-222)

(note here the use of OR, in that the sets are unionised; I'm not sure how this would scale for the other constructs).

Key characteristics is that the parser would be able to get the project ID from the query, instead of having the query writer (i.e. me) explicitly add it.

I can also do introspection, such as get the relevant projects, by "unparsing" the query. An advantage of controlling the parser and language. Can't do that with JQL.

But, of-course, I can't cover all possible bases with this language just yet, so I'll need a way to include arbitrary JQL.. So I've also added a general "escape" clause to do this:

jql:"project in (bla)"

A Few Other Things

A few other things that is needed for Backlog Proc:

  • The landing screen needs to show all the active items regardless of what project they belong to. Bouncing around projects is a bit of a hassle (to be fair, I haven't spent any time styling the screens beyond what Buffalo generated).
  • Add back ticket drafts. I enjoyed the flow of drafting all the tickets in one hit, then clicking "Publish" and seeing them come out as a fully specified Jira epic.
  • Add the notion of logs, with a "log type". Such types can include things like "todo" (i.e thing for me to work on), "decision" (a product decision that was agreed on), and "log" (work that was done). 
  • A way to quickly view the tickets in Jira so I can do batch operations over them.