Disappointing
This book was disappointing to me. It does not cover Twisted fundamentals very well or comprehensively, but is rather a collection of few large code-examples and verbose commentary. For an introductory (or 'essentials' as the title state) material to Twisted, you are better off with the online manuals.
Granted, there are a few "oh - that's clever" moments in the book, but those are buried in the examples and hard to look up for future reference.
The bulk of the book shows examples for web clients and servers (simple stuff, not useful since easier-to-use and more powerful tools/libraries exist) and low-level pop, smtp, imap and nntp servers and clients (probably not very common in today's applications).
I haven't used Twisted extensively in a real project, but I have read the online docs and fiddled with small scripts - and the "new" things beyond them that I discovered reading this book can be counted on the fingers of one hand (namely Perspective Broker, authentication and SSH stuff).
I would have liked this book to be a more comprehensive overview of twisted's fundamentals and the base-protocols it provides - with more examples of custom protocols - since that's probably what most people turn to Twisted for.
THIS BOOK IS TWISTED!!!!
Are you a developer who wants to start building applications using twisted? If you are, then this book is for you! Author Abe Fettig, has done an outstanding job of writing a book that contains lots of examples of working code, with thorough notes and explanations of how you can use Twisted to do useful things.
Fettig, begins by covering downloading and installing Twisted, and some additional libraries, on the operating system of your choice. Then, the author shows you how you can use Twisted to make TCP connections to servers, and how to write a server that accepts TCP connections from clients. He continues by showing you how to use Twisted to work with the Web. Next, the author shows you how you can design a Twisted web application for programmatic accessing using the REST architectural style. Then he discusses the Twisted authentication framework, which provides an extremely flexible approach to authenticating users against different backends. He also demonstrates Twisted's powerful support for mail clients and servers. Then, he discusses Usenet clients and servers using the NNTP protocol. The author continues by covering Twisted's support for SSH. Finally, the author shows you how to use the tools Twisted provides for running and managing applications, which give you the ability to run daemon processes, use setuid and chroot to limit permissions, and write log files.
The goal of this most excellent book is to focus on practical examples of how to use Twisted to perform some of the most common tasks that face developers building network applications. More importantly, this book will help you to understand the key concepts and design patterns used in Twisted applications.
Provides insights on the open source network application framework written in Python
Abe Fettig's Twisted: Network Programming Essentials provides insights on the open source network application framework written in Python. Twisted offers Python programmers a powerful flexible option, producing programs which won't lock up and which are event driven by network events. Its stability and reliability lends to a program which is versatile, very easy for programmers to manipulate, and which can be used to write a web server, enable applications via email, and more. Review the program's strengths with this bible of advice in hand.
Valuable to guide study of Twisted
As the previous reviewers stated, there are errors and not deep explaination. The value of the books is in the examples and as an outline to a course of study.
Without Dive into Python by Mark Pilgram I would not have a chance with the Twisted book. Dive into Python is probably the second Python book for most people.
The asynchronous program technique of "Deferred"s explaination in the book and on the web site did help a little but left me unsure about details. Fortunately, the twisted source code is understandable. Essentially, a list of nested tuples is being managed. There are some pretty compact code, such as, for deferred chain, etc. so this route will require some confidence with Python.
My ubuntu Linux system has great Python support (this is not generally known - my discovery was by accident). Unbuntu 5.10 comes with Python 2.4.2 already installed. All the Pthon libraries needed for this book are ready for easy installation with the Synaptic package manager.
SPE (Stanni's Python Editor) is available on Ubuntu. It works out well for browsing the Twisted source code. The Python code is syntax colored, the classes and methods show up in the side bar for easy navigation, and there is a recusive find in files to track down references. It did do stange things once and a while -I will stick to VIM for editing my own programs.
Fedora, Mac OS X, and Windows probably require a little more work.
It seems to me the real Pythonistas go to the source and fussy documenation is for wimps. However, relative newbies like me can sure appreciate all the help they can get. This is a valuable book.
Not complete, but a good entry point to Twisted
When Twisted started to explode onto the scene, I was really intrigued by its varied capabilities and asynchronous model, but I was turned off by the then-scant documentation and the webapp framework transition that was just beginning (Woven was deprecated and Nevow was too new for any sort of coherent explanation). I just didn't have time to wrap my head around it, and so Twisted fell off my radar screen for a while. Eventually, I saw that a book was on the way, and I was excited to jump back in with it as my guide.
Twisted Network Programming Essentials is not an exhaustive reference to Twisted, nor does it even pretend to be. Rather, it's a pretty friendly, task-oriented exploration, providing examples of common tasks and insight into the key concepts and design patterns that are essential to grokking Twisted. Each chapter focuses on a particular topic, and they're arranged to build upon each other nicely. Sections within each chapter are broken down into a practical, easily digested structure--we're introduced to the task at hand, then the "How do I do that?" and "How does it work?" bits clearly and plainly walk us through an example solution and dissect its inner workings. At 202 pages of actual text, its eleven chapters make for a comfortable chapter-per-evening of reading and play. It's well worth either keying in or downloading the example code to see Twisted in action.
Covered topics include installing Twisted, the essential Twisted concepts; HTTP clients and servers; RPC; authentication; mail clients and servers (POP and IMAP); NNTP clients and servers; fun with SSH; and some practical, non-glamorous things like running your app as a proper daemon, adding administrative interfaces, and logging. You'll monitor download progress, make a simple blog, build an IMAP server, and more. You'll chain protocols together to make an email interface to Google. You'll be impressed by the power and cleanliness of Twisted's authentication model, and you'll have fun getting and using references to remote Python objects with Perspective Broker. There's also a pretty good explanation of REST, and plenty of links to useful reading.
All is unfortunately not shiny and delicious, though. I encountered what I consider quite a few programming errors in the example code, as well as several places where the explanatory text doesn't quite jive with the example. These errors are all fairly minor, and are probably artifacts of the evolution of the text and examples, but the frequency with which they crop up suggested that either no one had run the code before approving it for printing, or that errors were deliberately introduced to see if the reader is paying attention. As someone with a professional investment in web applications and frameworks, I was disappointed not to see any investigation of Nevow (not stable enough at the time of writing to be included, alas). The SSH chapter mentions but does not discuss or dive into the file transfer and connection tunneling concepts. I was also let down by the strict focus on programs that only used the basic Twisted reactor for managing events--the challenge of integrating Twisted's powerful capabilities into an existing event-driven program (eg, any GUI app) is entirely omitted. Furthermore, the book ends somewhat suddenly; I would have welcomed a "Great! What now?" sort of wrap-up that would provide a guidepost to more advanced topics.
These warts are quite forgiveable, however, and will hopefully be corrected in a future revision. The book is clean, friendly, and clear, and provides a nice entry into the world of Twisted. We are neither talked down to, nor beaten into submission by overly dense, inscrutable prose. For this printing, keep the errata handy to quickly resolve any issues with the example code (and submit anything new that you find). While the topics might be considered limited, it's clear that what's here is the tip of the iceberg; you can use these familiar topics to try to sell your boss on Twisted, and then your imagination is the only limit to what you can do. Since my initial experience with Twisted, the core documentation has improved immensely, but it's even stronger if you're already familiar with what's presented here; start with this book, then dive on into the online docs, and you'll be a Twisted guru in no time.