Thursday Apr 27, 2006

The Second Edition of Solaris Internals

Recently, I found myself thinking about a book I read some time ago, Into Thin Air, Jon Krakauer's riveting account of the 1996
Mount Everest expedition that ended in disaster. In particular, I was recalling Krakauer's description of how he felt when
he finally summited Everest. Having reached a milestone of this magnitude, standing on the tallest spot on the planet earth,
Krakauer found the moment more surreal than anything else; feelings of intense joy and satisfaction were to come later. There
was no jumping for joy (literally or figuratively)...he was mostly thinking about getting off the mountain.

I had a similar experience when Richard McDougall and I, along with
Brendan Gregg, wrapped up the new edition of Solaris
Internals. Now, please understand, I am not equating writing a technical book to climbing the tallest mountain in
the world - it's not even in the same universe effort-wise. I'm simply drawing a comparison to a similar feeling
of having accomplished something that I never thought I'd complete, and the hazy feeling I had (have) now that
it's all done. To me, it's a fascinating example of what complex creatures we are. To achieve something of such
significance (summiting Everest, not writing a technical book), and the natural gratification latency that follows.
I think it will kick-in when we're shipping, and I can actually hold, in my hands, the new books.
Which brings me to....

As per a blog I did last June, the
updated edition of Solaris Internals did not have a smooth and predictable take-off. Even after we put a
"stake in the ground", and narrowed our focus to Solaris 10 and OpenSolaris,
we still suffered from self-induced scope-creep, and generally did all the wrong things in terms of
constraining a complex project. The good news is that all the wrong things produced something that we are
extremely proud of.

Our original goal was to produce an update to the first edition of Solaris Internals - no new content in terms of subject
matter, but update, revise and rewrite the material such that it reflects Solaris 10 and OpenSolaris. Naturally, we could
not ignore the new technology we had at our disposal, like DTrace,
MDB, and all the other way-cool observability tools in Solaris 10 and OpenSolaris. Also, the availability of Solaris source code allowed us to reference specific areas of the code, and include code segments in the book. Additionally, the internal support and enthusiasm for the new edition was just overwhelming. The Sun engineering community, Solaris kernel engineering and adjunct groups, offered assistance in the writing, reviewing, content advise, etc. It was
extremely gratifying to have so many talented and time-constrained engineers come forward and offer their time and expertise.

Given the tools and expertise we had at our disposal, it seemed inevitable that the end result would
be something significantly different than our original intention of "a simple update". It actually brought us right
back to one of our key goals when we wrote the first book. That is, in addition to describing the internals of the Solaris
kernel, include methods of putting the information to practical use. To that end, we made extensive use of DTrace, and
MDB, etc, to illustrate the areas of the kernel discussed throughout the text. The tools examples naturally evolved into
performance and behavior related text. This is a good thing, in that a great many readers will be using the text
specifically to understand the performance and behavior of thier Solaris systems. The not-so-good news is, once you cross
the "performance" line, scoop broadens pretty significantly, and more content gets created. A lot more content. Pages and pages.
And man, if I may be so bold, it's all good.

So while I was busily trying to complete my internals chapters, Richard took off like a rocket with new material for performance and tools, and recruited Brendan Gregg (whose DTrace ToolKit is a must-have download), to add his considerable experience and expertise. Faster than you could say "DTrace rocks",
we did a book build and found we had over 1400 pages of material. And we were not done. We had some calls with the publisher,
and discovered that the publishing industry is not particularly fond of publishing very large books, and we had some concerns
about our readers needing orthopedic surgery due to carrying Solaris Internals around. So it was decided that we split the
work into two books; an internals book, and a POD book. POD is an acronym that Richard and I have been using for some time,
and expands to Performance, Observability and Debugging. We love being able to encapsulate so concisely what the vast
majority of Solaris users wish to do - observe and understand for the purpose of improving performance, and/or root-causing
pathological behavior. The tools are there, and now there's some documentation to leverage for guidance and examples.

As you can imagine, once we started on a performance book, scope-creep took a whole new path. Ideas flowed faster than
content, and given sufficient time, we could easily have created 1000 pages on POD. As it was, finishing up turned out
to be something of a herculean task. We were bound and determined not to miss another deadline, and deliver the book
files to the publisher. Richard, Brendan and I were communicating using AIM (Brendan is in Australia, Richard in
California, and I'm located in New Jersey), and pounding away to get the material cleaned up and ready to ship. What
started out as a late night turned into an all-nighter. Literally. I had to stop at 7:45AM ET to take my Son to school,
and I was happy to do it (stop that is). Incredibly, Brendan and Richard seemed like they could go on for hours more
(note to self, start consuming Vegemite). In the end, we met our goal, and
handed the publisher two books, over 1600 pages of material, on that hazy Monday morning.

Solaris Internals: Solaris 10 and OpenSolaris kernel architecture

Solaris Performance and Tools: DTrace and MDB Techniques for Solaris 10 and Open Solaris

So there it is. We're currently working with the publisher on getting the cover art together, dealing with typsetting
issues, etc. We're doing our best to accelerate getting the books to the printer, and getting them out the door.
Hopefully, correct cover images, ISBN numbers and pricing will make their way to the retailers very soon.
I want to take this blog opportunity to thank the Solaris community for the positive feedback on the first edition,
and the support and interest in getting the second edition out the door. We really have a winning combination, with the
best operating system on the planet (Solaris - my objective opinion), world-class observability tools, open solaris source,
and documentation to pull it all together, thus maximizing the using-Solaris experience. We look forward to hearing from
and working with the Solaris community, and doing our part to broaden awareness of the power of Solaris, and contribute
to the knowledge base. Keep an eye on the Solaris Internals and
OpenSolaris WEB sites for feedback, forums and reader contributions.