Thursday Apr 27, 2006

A Tale of Two Books

The Second Edition of Solaris Internals

Sit. Relax. Breath. Read a book. Watch a movie. It's done (pretty much). Resync. Have fun. Get normal.

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.




« April 2006