Dibs On Stuff®
Help and documentation
Getting Started
-
Any questions, billing or support queries, just reach out via email to: support@dibsonstuff.com
We're located in Melbourne, Australia and we're available from 9-5pm (GMT+10) 7 days per week.
-
Quick start
Dibs On Stuff is a queuing app that you use inside of Slack and
Discord. That is, you run Slack or Discord chat commands to control Dibs.
It is designed to facilitate turn-taking in a friendly manner. It's widely used
for tasks like claiming staging/test servers, distributing sales leads or support
tickets, taking turns with office chores, and even managing small amounts of
car parking space allocation.
Type this into Slack or Discord to claim an item, the item can be named anything you like:
/dibs on THING
When you're done with the item, run this:
/dibs off THING
Dibs will then notify the next person in line.
To see who is in the queue, run:
/dibs q THING
(or just "/dibs q" to see all queues)
See /dibs
for more commands.
-
Install into Slack
a) Login to your normal Slack account
b) Then come back here and click:
Add to Slack
c) You'll see a screen like below, and be asked if it's okay to install the Dibs On Stuff app, check the Permissions requested are acceptable and hit the "Allow" button
d) Next head over to your favourite Slack channels and run
/invite @Dibs
e) Type
/dibs help
to get going
-
Install into Discord
a) Login to the Discord server where you want to install Dibs
b) Then come back here and click:
Add to Discord
c) You'll see a screen like below, and be asked if it's okay to install the Dibs On Stuff app, check the Permissions requested are acceptable, then select the dropdown to choose a the Discord server that you want to install Dibs On Stuff into, and then hit the "Continue" button
-
Upgrading to Extra or Pro
If you're after more features for Dibs On Stuff there are additional plans that can be accessed with a paid subscription.
The
Extra Features are $9.00 USD per month.
The
Pro Features are $49.00 USD per month (includes the Extra Features).
Pro Features are also available as a once-yearly payment of $539 (i.e. an 8% discount, 1 month free every year).
Commence a subscription
over here.
You'll be taken to the secure payment site to commence a monthly subscription payment. A notification will then be sent
to Dibs On Stuff to activate the additional features for your Slack organization or your Discord server.
You may need to contact us with the name of your Slack
organization or Discord server if you're not automatically activated within an
hour. Email activate@dibsonstuff.com
There's more information about the additional features below.
The Basics
You may install Dibs On Stuff for free and use up to 5 queues simultaneously. There are no limits on the number of users or channels.
-
Viewing help
You and your team can access Dibs On Stuff from the Slack or
Discord chat window. Just invoke Dibs using the forward-slash button and then
type the word "/dibs" or "/dibs help", eg:
/dibs help
This command will print a small summary of all the Dibs
commands. The text of the message will only be visible to you.
-
Claiming a THING
This command is the big one! When you run it, you will attempt
to seize the THING (whatever it might be). For example you might
want the staging/testing server for a little while:
/dibs on staging
This command will either indicate that you've seized the
staging/testing server, or you will be placed in a queue for the server
(because someone else might be using the server).
-
Releasing a THING
Ok so you claimed the staging/testing server, but now you're
all done with it - it's time to release your hold on the server and let the
next person have their go. So you run:
/dibs off staging
and that's you
done! If there are any other people waiting in line to use the server, that
next person will now be notified that it's their turn. And so it goes.
(Running /dibs off can sometimes get forgotten, so there's a
paid Extra Feature that runs /dibs off automatically after a set
amount of time that you specify - see below).
-
Viewing the queue
/dibs q
There are often a few staging servers or various THINGs in
play, this command will print a handy list of all the things - and who is
holding each one ("q" is short for queue, but easier to type)
/dibs q THING
This command will print the entire queue of people who are lined up to get a hold of the THING.
-
Destroying the queue
/dibs destroy THING
This command will destroy a queue and remove all queue members
from it. The queue will then need to be started again, if desired.
-
/dibs extras
This command will activate the Extra/Pro Features for a month,
for free. If you decide that your team likes the additional functionality, then
it's time to begin one of the paid subscriptions for the extra features and
support.
The Extra Features
For a small monthly fee these extra features can be activated. This plan allows you to manage up to 20 queues at once. Here's some info on the features:
-
Timed auto-release
Timed automatic release, eg:
/dibs on THING for 1 hour
Automatically release the item after an amount of time that you
specify. Use the keyword "for" to indicate the time period. The time period can
be minutes, hours, days or weeks, and you can use abbreviations for that time unit.
Eg:
/dibs on staging for 45 min
would mean that when it
is your turn to seize the staging server, you will get notified, and then you
will get 45 minutes before it is automatically released to the next person.
If you want to extend the amount of time you are holding it for, just claim
it again with a longer time, eg:
/dibs on staging for 3 hours
-
Bump someone off the front of the queue
Bump people off the front of the queue
/dibs force-off THING
Sometimes someone forgets to release the THING, or maybe they go on
leave/vacation, this command allows someone else to step in and forcibly move
the THING to the next person in the line.
-
Allow only approved queue names
Allow only approved THING names, eg:
/dibs set staging approved
This provides the ability to define a fixed list of approved item names. No more spelling errors, eg:
/dibs on staging
works, but /dibs on stageing
won't. Once you've approved certain names, the built-in abbreviation functionality works too, eg one doesn't have to type the entire name, an adhoc abbreviation will work:
/dibs on stag
To remove a name from the approved list, use:
/dibs set staging unapproved
-
Add a reason for calling dibs
Add reasons for calling dibs on things, eg:
/dibs on staging because issue #3456
Set a custom description when you're seizing the THING. This lets
other team members know why you're occupying/claiming/seizing the thing.
Use the keyword "because" to indicate the reason.
-
Slack buttons in the Dibs list, eg:
/dibs q
Now when you're viewing the list of items that have been claimed or
approved, a handy button will appear next to each item. The button will allow
you to claim or release each thing instantly.
-
Setup random queues
Setup randomly ordered queues, eg:
/dibs set feed-the-fish random
Can't decide who the lucky person is today? Better than drawing
names from a hat, use a random queue to decide who's next! Just update the
relevant THING to make it random. Note: every time someone new is added to the
queue, the ordering of the participants gets shuffled again.
-
Secret queues
Secret queues with people's names hidden, eg:
/dibs set shower-time secret
Secret queues to prevent anyone peeking at the order of people in
the queue. I originally wrote this feature so that everyone could put dibs on a
particular halloween costume, without revealing who was coming as who, eg:
/dibs set halloween/* secret
denote all conches that start
with halloween/ as hidden membership
/dibs on halloween/jeff-bezos
for someone to put dibs on that
terrifying costume. Now when someone runs
/dibs q
it won't state who is in the queue, but just that someone is perhaps claiming it.
-
Queue nudging
Queue nudging to help remind people to keep the queue moving, eg:
/dibs set hot-potato nudge
Queues can be configured to be more noisy - so that when a new person is added
to the queue, the person at the head of the queue (the "conch-holder" will get
a notification (a nudge!) that someone else is interested.
/dibs set * nudge
to enable it for all queues
/dibs set my-queue nudge
to enable it just for particular queues
/dibs set my-queue no-nudge
to undo the setting
-
Queue name abbreviation
Queue name abbreviation
/dibs set encyclopedia approved
/dibs on encyc
Help avoid typos, and make it easier to type commands with queue name abbreviations. Just approve the queue name first, and then you can
use the shortest possible (unique) abbreviation to reference the queue in the dibs on and dibs off commands.
The Pro Features
For a business or organization you may have advanced requirements and want to access the Pro Features plan. There are no limits on queues or users.
-
API access
API access
The items and queues that you setup in Dibs On Stuff can be added/edited/removed via API calls. This means you can hook your items
up to CI/CD pipelines - or work them into any other automation you want.
See here for examples
To use the Dibs API you will need to set an API key and then use it in your request headers like: 'X-Api-Key: abcd1234...'. You can set an API key that works with all Conches by using an asterisk, or specify a Conch name specifically, note the API key that is generated will only be displayed once:
/dibs set * newkey
generate an API key for all THINGS
/dibs set THING newkey
generate the key for the Conch named THING
/dibs set THING newkey my-secret-key-thats-not-that-good
set your own key if you want
/dibs set THING removekey
remove API access to a thing
-
Multi-leader queues
Multi-leader queues
Normally only one person is at the head of the queue, eg Ryan has
claimed the staging server and everyone else needs to wait until he's done. But
there are circumstances where it would be useful for more than one person to
claim a THING at once. This is where Multi-leader queues enter the
picture.
One example, you have a large support team and your business can't afford to ignore support calls if everyone goes to lunch simultaneously. Simply setup
a Multi-leader conch with the batch size that suits your team, and let people manage their lunch roster collaboratively.
/dibs set lunch share 10
first configure a conch named "lunch" to have a batch size of (say) ten
/dibs on lunch
then members of the team run this
And if they're able to claim the "lunch" conch, they head off to
lunch. Otherwise they'll be queued until others get back. This ensures that
only ten people at a time can call dibs on lunch.
/dibs set lunch no-share
to undo the setting
-
Restrict queue channel
Restrict queues to particular Slack channels
For heavier Dibs usage you may want to specify that particular
items are only for particular Slack/Discord channels. Eg you might have one
channel named #deploys and that channel will only have items referring to
particular deploys in there. And another channel for eg taking turns with car
parks named #parking and you only want the car space names to appear in that
channel.
/dibs set carpark24 approved parking
/dibs set carpark25 approved parking
/dibs set staging approved misc-servers
Which would approve the conches named "carpark24" and "carpark25"
for the #parking channel. And would approve the conch named "staging" for the
#misc-servers Slack channels.
This impacts the output of the /dibs q
command too - so that huge lists
of conches are filtered down to only the relevant conches in a particular channel.
-
Automatic re-queuing
Automatic re-queuing for job roster queues
Great for roster duty or taking turns with after hours support or chores, or
any other turn taking event that repeats day after day.
Once a person discards
the THING, they'll automatically get placed onto the end of the queue again, eg:
/dibs set water-cooler-refill repeat
Their job will be to fill up the water-cooler, and it will only be their turn again, once everyone else has had their turn.
-
Enforce timers
Enforce timers on queues
Isn't it always the way - you implement an absolutely crash-hot system - people are taking turns - everything's harmonious and functioning
like a well-oiled machine, and then Barry gets a hold of the THING. And he forgets to release it. Bazza, mate, come on! So this
feature lets you setup certain queues as requiring a time duration to be specified when trying to claim the item.
/dibs set THING force-timers
note: THING could be a wildcard asterisk * to indicate all conches, or eg THING/* to indicate a namespace
/dibs on THING
will then fail because no time period specified
/dibs on THING for 2h
will succeed because a time period has been specified
/dibs set THING no-force-timers
will undo the rule
-
Queue aliases
Queue aliases
Why do one thing at a time, when you can do all the things at once?
Queue Aliases allow you to nominate a shortcut name to refer to multiple queues simultaneously.
For example to setup the alias name and the targets the syntax is:
/dibs set THING alias target1 target2 target3 target4
Let's imagine we have multiple servers in multiple regions and we're using Dibs to manage region based deploys, we first
do a once-off setup of the aliases:
/dibs set us alias us-east-1a us-east-1b us-east-1c
/dibs set uk alias eu-west-2a eu-west-2b eu-west-2c
Now you can call dibs on three queues (say a US based deploy) with one command. Eg:
/dibs on us
(will call dibs on all three us-east-1 zones)
And it even works with the "timer" functionality:
/dibs on us for 1 hour
Or when you're done with the US deploy, just manually run:
/dibs off us
It also works with the listing facility, so eg:
/dibs q us
Notes:
-
It is *recommended* that each alias has a maximum of fifteen targets. This is because Slack
has a timeout of three seconds per request (there's only so much we can do in
three seconds). It will still work correctly with up to 25 targets (a hard limit), but you'll likely see an error message.
-
If you're using the "approved names only" functionality, then
you'll need to ensure the alias targets are whitelisted in the approved list.
To continue the example above, you'd run:
/dibs set us* approved
/dibs set eu* approved
-
To undo the alias setting, just run:
/dibs set unalias us
-
Queue jumping
Queue jumping (aka pushing in)
You're a busy person - you don't have time to queue up for stuff,
let everyone know that you're more important than them by pushing to the front
of the queue:
/dibs force-on THING
(hopefully you're just pushing to the front of the "do the dishes" queue? :)
-
Queue renaming
Queue renaming (because names are hard!)
A simple way to rename a queue without losing all the queue members.
/dibs set THING rename NEWTHING
-
Quiet queues
Quiet queues to reduce the amount of noise in the Slack/Discord channel
Remove the group messages that appear in the chat channel about the
queue changing hands. You'll still receive the "Only visible to you"
messages, but the entire channel won't get messaged every time the conch
changes hands.
/dibs set * quiet
to set all queues to quiet mode
/dibs set THING quiet
to set just one thing to quiet mode
/dibs set THING no-quiet
to undo the setting
/dibs set
to view current settings
-
Webhooks for queue events
Webhooks for queue events
It is now possible to register a webhook, so that when a
queue/conch changes hands, a web request is sent to the HTTPS endpoint that you
nominate. This will allow you to fire off interesting mechanisms when the queue moves.
To do this you must first have a publically accessible HTTPS endpoint, that Dibs can send web requests to.
It will receive requests like this:
{"action": "timer-released", "conch": "acme/staging", "email": "jan@workplace"}
The exact format of the payload must be customized using the Webhook Builder. Note the "action" field
will be one of: queued, seized, forced-seized, released, force-released or timer-released.
Then you must paste the command it has generated for you into Slack/Discord. It'll look a bit like:
/dibs set * webhook [encoded request]
(for all conches)
/dibs set THING webhook [encoded request]
(for a particular conch)
/dibs set THING removewebhook
(to undo)