A few months ago I got interviewed by a substack on open source
Dolt. One of the questions I was glad to answer was what motivates me
to contribute to Dolt. Well there's the money, obviously. But more
than that, it's being part of a culture that ships.
At DoltHub, we ship major new features every month, and a stream of
smaller improvements and bugfixes on a continual basis. We ship so
often, in fact, that it can be hard to keep track of what we've
accomplished and what we're going to do next. This blog post is an
attempt to pause and take stock of how far the product has come in the
last couple years, and reflect on where we're going next.
Product planning at DoltHub
When we interview candidates, there's always a period when we flip the
process around and let them ask us questions instead. One of the most
frequent questions we get from experienced candidates is: what sort of
project planning process do you use? Because we've been in the
industry for decades, we recognize this question for what it is: a
desperate plea to not have to use Jira or play planning poker ever
I tell them it's pretty simple. We have a big spreadsheet that we use
to keep track of planned feature work, and every month or so we update
it to reflect progress and priorities. It looks like this:
We add new features there when we decide to work on them, and move
rows up and down to indicate their relative priorities. For
time-sensitive work, we'll sometimes add a deadline to a row. But
that's basically it, very little process. The main point of the
spreadsheet is to enable us to have discussions about staffing
tradeoffs and customer expectations.
- If we deliver stored procedures in October, what else has to slip?
- If Andy works on rewriting the storage layer, who will take over
keyless table storage?
We also end up doing a lot of unplanned work, typically requested by a
paying customer. They come to us with a query that's too slow or
doesn't work correctly, and we give their issue top priority until we
have a workaround. Sometimes those issues will get logged on GitHub,
but often they never leave our customer chat rooms on
Discord. And that's fine. The
point of the roadmap isn't to perfectly capture all the work we do
(release notes capture that pretty well), it's to help us plan.
At DoltHub, we ship a lot. We announce new features on this blog as
they come out, but I want to take a moment to put all these
accomplishments in one place, so that you (and we) can appreciate just
how many there are. Warning: this is a long list!
And there's a lot of stuff not even on this list, either because it
got done without any fanfare or because it predates when we adopted
even this limited planning process. DoltHub is a company that ships, a
The product is a lot more mature today than a few years ago, as one
would hope. In the earlier days there were so many missing features
that prioritization was actually pretty easy: unless somebody was
asking for a feature, we would be adding a lot of value no matter
where we turned our attention, so strict prioritization didn't matter
too much. I joked about this situation in an earlier blog
but having such a huge surface area to cover was actually really fun
and made planning pretty easy.
Today things are a little harder. Besides being an environment that is
less target-rich than before, we have a growing number of paying
customers and their use cases to support, and a larger pool who would
adopt the product if it had some capabilities it doesn't yet. So it's
more important now to think about what we're going to support next to
make our existing customers happy and lure new ones.
This is always a work in progress, but here's our current top
priorities for Dolt:
|Join for update
|Backup and replication
|Commit graph performance
|Collation and charset support
|Persistent SQL configuration
|Multiple DBs in one repo
|Tx isolation levels
|99.9% SQL correctness
dolt_diff table experience
|Hash join strategy
|SQL GUI support tests
|Lock / unlock tables
|Users / grants
|Pipeline query processing
|Table / index statistics
|Universal SQL path for CLI
|Row-level locking (select for update)
|Virtual columns and json indexing
This list is mostly ordered by planned release date, which gets less
certain as we get farther out. Our top priority, hosted Dolt, is a
relatively large effort and a major launch, scheduled for year
end. Most of the other items on the list are a lot smaller, but there
are exceptions: storage performance is code for a near-total rewrite
of the storage layer to make it performant for the SQL server, which
is a monumental effort (good luck, Andy).
We expect to rearrange this list as time goes on, and for new items to
emerge and jump the line. Paying customers (or prosepective paying
customers) get write access to this roadmap, so if things go well this
list will be obsolete in no time flat.
DoltHub ships, a lot. We're proud of the product features we've
shipped so far, and eager to put more under our belt. If that sounds
like an environment you'd like to be a part of, we're
Like the article? Interested in Dolt? Think we should be working on
other things instead? Come join us on
Discord to say hi and let us know
what you think.