I like Eric Evan’s book Domain Driven Design very much. It’s such a nice distillation of a relatively small number of principles, all of which possess real, fundamental value. This is a protein-rich book: it may not feel as filling as the more prescriptive, methodology-driven ‘just-do-as-I-say-and-it-will-come-out-right’ books, but they’re just carbohydrate. DDD is good for you in the long-term.
The real point of this post is to share my experience with a small, free tool called wikidPad, which I stumbled on last week when looking for a desktop wiki-based tool to use for capturing Ubiquitous Language (UL) definitions. Capturing and refining the UL is an essential part of applying DDD, and having a fast, convenient (and open) medium for doing this is essential. A wiki of some kind is almost ideal.
Most desktop or single-user wikis are either cut-down versions of the equivalent web apps (PHP or whatever), running on localhost ports, or they are single self-editing HTML pages e.g. TiddlyWiki. Many of these (including TiddlyWiki) are very good indeed, but somehow, none of them has felt quite right for the UL use-case, which is all about getting hyperlinked definitions into a reusable form as quickly as possible. wikidPad does this superbly well, in my opinion.
It’s also a small and fast desktop application, which I find a little more convenient than using a wiki app in a browser. Some examples to support that:
- wikidPad automatically constructs a tree-view of pages on the left hand side of the application – this makes navigation very fast.
- wikidPad does auto-completion of wiki-words (Ctrl-space), which makes writing new entries which link to existing items very fast.
- Drag and drop support, and support for multiple tabs – again, all good for speed and usability.
When you’re ready to publish the UL to a wider audience, wikidPad will export the whole thing (or any selected part) as a set of HTML pages.
It’s my first day using this tool, so it may be that I’ll discover something to dent my enthusiasm. But so far, it’s all good.