Foremost, thanks to my wife, Ann, and my daughter, Anita, both of whom put up with great stretches of my writing time away from them. Without their support, I never could have made it through the tough times.
I'd also like to thank Simon St.Laurent, the editor of this book, and Edd Dumbill, the editor of xml.com—two of the sharpest XML geeks I've had the pleasure of knowing. Support and encouragement from both of them have helped me improve as a writer and gain the confidence to take on this challenging and rewarding project.
The members of the XForms Working Group have been a tremendous resource, especially the chair, Steven Pemberton, and one of the founders and former chair, Sebastian Schnitzenbaumer. Also, Mikko Honkala from the Helsinki University of Technology and Kenneth Sklander and David Landwehr from Novell have been noteworthy in their sharing of implementation experience on the public mailing list at firstname.lastname@example.org. Countless other implementers, too many to name, have likewise made valuable contributions.
I also need to thank Richard Stallman: even though I don't agree with him on many things, I do agree that the GNU Free Documentation License that he helped create is a great way to release a technical book such as this one.
One advantage of putting early versions of a book on the Web is the huge amount of feedback you get, even from the earliest stages. Even before formal review, I had the following notice, absolutely true even then, in the preface: "The technical reviewers for this book were amazingly helpful. It was a humbling experience to see just how many mistakes I had inserted into the earlier drafts." Once the formal technical review started, the volume of quality comments I received blew away my high expectations. I owe a debt of gratitude to my team of expert reviewers, including Jelks Cabaniss, Stéphane Chauvin, David Ezell, Leigh Klotz, Shane McCarron, Roland Merrick, Mark Seaborne, Jeni Tennison, Eric van der Vlist, and everyone who participated in the xforms-essentials mailing list.