Emacs package to manage personal scrum planning in org mode.
This is still just a small single-file package, and isn’t in any repo, but is easy enough to install. Just clone the git repo:
git clone https://github.com/himmAllRight/ry-org-scrum.git
and then install the package file in emacs:
M-x package-install-file
repo-loc/ry-org-scrum/ry-org-scrum.el
Afterwards, because to load the package. It is reccomended to either
require it in .emacs
, or load it with use-package
:
(require 'ry-org-scrum)
(use-package 'ry-org-scrum
:ensure t)
That should be it.
The scrum boards are created by parsing the current buffer for org
task items that are tagged with certain TODO
keywords. By default,
these keywords are Queue
, Working On
, On Hold
, and Finished
.
It is recommended that these keywords be added to the user’s
org-todo-keywords
variable. For example, it can be added as a second
TODO
sequence by appending the following code to one’s .emacs
file:
(setq org-todo-keywords '((sequence "TODO" "In Progress" "|" "Waiting" "DONE" "Completed")
(sequence "Queue" "Working On" "On Hold" "|" "Finished" "Removed")))
Afterwards, to switch a TODO
item to use the second sequence, hit
C-u C-u C-c C-t
. From there, the SCRUM stages can be toggled through
using whatever keybinding org-todo
is normally bound to (usually
C-c C-t
).
The scrum todo keywords and their respective locations in the scrum
table are defined with the *colums-alist*
variable. The
*columnns-alist*
variable can be edited to change the ry-org-scrum
todo keywords, or order of the columns in the scrum chart. For
example, the default value is set to following:
;; An alist to manage the status names and their respective columns in
(setf *columns-alist* '(("Queue" "\n| %s | | | | |")
("Working On" "\n| | %s | | | |")
("On Hold" "\n| | | %s | | |")
("Finished" "\n| | | | %s | |")
("Removed" "\n| | | | | %s |")))
To use ry-org-scrum, start by creating an org
file and then
switching to org-mode
with M-x org-mode
.
Once in the org file, create a normal org todo
list, using the
keywords described above. It doesn’t matter what level heading they
are, as the scrum table will just look for the tags when generating
the table. If item’s aren’t tagged, they won’t be included. For
example, in the org list below, “Serve Dinner” will be in the queue,
“Cook Dinner” is marked as in progress, “Pay Bills” is waiting, and
“Buy Food” is completed. However, “Feed Dog” isn’t tagged and thus
will not be used by ry-org-scrum.
** Monday
*** Finished Buy Food
*** Working On Cook Dinner
*** Queue Serve Dinner
*** On Hold Pay Bills
*** Removed Meetup
*** Feed Dog
After creating an org list like the one described in the previous
section, a SCRUM table can be generated at the marker by calling
ry/create-scrum-board
anywhere in the buffer (M-x
ry/create-scrum-board
).
#+BEGIN: scrum-board
|------------------+-----------------+---------------+--------------+------------|
| Queue | Working On | On Hold | Finished | Removed |
|------------------+-----------------+---------------+--------------+------------|
| | | | [[Buy Food]] | |
| | [[Cook Dinner]] | | | |
| [[Serve Dinner]] | | | | |
| | | [[Pay Bills]] | | |
| | | | | [[Meetup]] |
#+END:
If the list is changed at all, the board can be updated by moving the
marker to either ”#+BEGIN: scrum-board
” or ”#+END:
” of the board,
and hitting C-c C-c
.
I haven’t decided what to add next, but when I have a plan of which features to add, I’ll make a checklist here. Feel free to request features using the Github issues tracker.