|
It's been a while since I posted an update on the status on my
DSL book. The most common question I get is "when will the book be out?"
The way things look at the moment, I'd estimate it appearing some
time in 2010. That's an estimate, with all the usual hedges that
apply to such things. To help see how the current state meshes in with that estimate,
I'll describe the general progress of how books work, at least for
me. The first phase is writing the First Review Draft. This means
writing all the material in the book, to the level that I can submit
it to peer review. For my larger books (eg Refactoring, P of EAA)
this takes about 12-18 months. This book is taking longer, I've
already been at it for over two years, and I suspect there's another
six months or so to go. Once I have the First Review Draft, it goes
out to review. This takes time for people to read it, get their
comments to me, and for me to modify the text based on the review. I
usually do two rounds of review - and it takes around 6 months for
that to happen. Once I'm done with formal review the book is a Final
Draft. At this point it goes off for production - which includes
copy-edit, indexing, layout, printing, etc. That takes another 6
months. So I estimate that the book will appear about a year after I
get a First Review Draft. Not all authors work this way, some write a few chapters and sent
them for review while they write a few more chapters. I use the
approach I do because it was how I did my first book and it seemed
to work very well. The current state of the book is that I now have the broad
structure and pass through the material done and in a coherent
state. However it's not yet at a First Review Draft state as there
are some significant holes to filled, and I think I'll need a few
months to fill them. At that point I think it will be worth
reviewers spending their time on it. However since it is reasonable
coherent now, I think adventurous people may get something out of it. My next task is to figure out what the holes are and how to fill
them in. My mental writing mode is now shifting however. No longer
do I want to spend a lot of time investigating new material in any
depth, my aim is to push hard to get the book into a useful state
for publication. Books can never be complete, the real test of them
is whether they are useful. I think I have enough now to be useful,
so I need to work on getting it shipped. There's enough there for
later work to build on it. I'm currently looking at over 400 pages
and this will only grow as the holes get filled. (It has a duplex
book structure with the narratives currently clocking in at 100
pages, so that's reasonable but I'd rather it not grow too much
more.) In particular this means that two big areas will get a much
skimpier treatment than they probably deserve. One of the biggest
issues for me is how to talk about error handling in DSL parsing. In
the end I've decided to mostly let it go - not because I don't think
it's important but because I really need to cut scope in order to
get the book out. I suspect that there'll just be a few pages on
this at most. I'm also not going to go too deeply into the world of Language
Workbenches. I am going to write a section about them, but I won't
go into too many details about the different ones, how they work,
and how to use them. My reason for this is two-fold - partly the
need to ship and partly that they are still new and evolving
technologies. I like to write books that will last a long time, and
anything detailed I write about Language Workbenches in the book
will not be current for long. I think there will still be a
substantial chapter on this subject, as most of it I can write
without doing much more investigation, but it's less than I could.
|