Tuesday, March 30, 2010

New, New, New!

New Success Story

We've added a great success story for PowerCard, a loyalty rewards program for local restaurants. One of the terrific things about the PowerCard story is the use of Twisted for both back-end and client-facing systems. It's a great reminder that Twisted is as useful solving problems on Windows platforms as it is on the Linux/UNIX-based systems many of us code for.

Read the full success story here.

New Library Listing

Looking to use Twisted with new technologies like RabbitMQ (txAMQP) and Redis (txRedis)? Browse the updated libraries listing. We bet you'll find what you're looking for.

New Twisted Ambassador

And why do we have these new and updated listings for 3rd-party code? It's because we have a new guy who has volunteered to maintain and update the listings!

Jason J. W. Williams is Twisted's new ambassador to 3rd-party projects of all kinds.Primarily this responsibility involves keeping the "Success Stories" and "Projects Using Twisted" pages up to date, and occasionally writing small updates (like this one) for the news feed.

Please contact success at twisted matrix dot com if you have a success story about how you used Twisted, a pointer to some hitherto unknown code that uses Twisted, or for more information. And watch this space for more updates!

Monday, March 22, 2010

Barcelona Twisted Sprint

Yesterday's Twisted sprint at the Flumotion office was quite a success. There were six of us there, and many first time Twisted contributors.

Jan Urbański worked on fixing a couple IMAP4 client search bugs. He also spent some time using psycopg's asynchronous interface to create a very Twisted-friendly postgres API, with methods that return Deferreds, and all without using any threads.

Thomas Vander Stichele and Zaheer Merali worked on addressing ambiguities on the AMP API documentation and adding support for dates and decimals to AMP.

Later Zaheer switched to pairing with Sebastien Merle who was working on adding string streaming to AMP. Meanwhile Thomas worked with Andoni Morales (who had been pairing with Sebastien) on improving the idle behavior of Twisted's glib2 integration.

Esteve Fernandez worked on adding streaming upload support to Twisted Web's resource model.

Jessica McKellar helped out remotely with reviews of fixes for Windows child process issues, Conch example bugs, Windows+Python 2.7 compatibility, and release-related documentation errors.

Kevin Horn also worked remotely on some problems with the structure of our documentation.

And I walked around and answered questions about Twisted development and made suggestions about implementation approaches to try out. I also reviewed and merged the AMP documentation fix, and also worked on another IMAP4 ticket, improving test coverage for the client's SELECT support.

Wednesday, March 3, 2010

Twisted 10.0.0 released

On behalf of Twisted Matrix Laboratories, I am honored to announce the release of Twisted 10.0.

Highlights include:
  • Improved documentation, including "Twisted Web in 60 seconds"
  • Faster Perspective Broker applications
  • A new Windows installer that ships without zope.interface
  • Twisted no longer supports Python 2.3
  • Over one hundred closed tickets
For more information, see the NEWS file.

It's stable, backwards compatible, well tested and in every way an improvement. Download the tarball, the Windows installer for Python 2.5 or the Windows installer for Python 2.6.

Many thanks to Jean-Paul Calderone and Chris Armstrong, whose work on release automation tools and answers to numerous questions made this possible. Thanks also to the supporters of the Twisted Software Foundation and to the many contributors for this release.

Tuesday, March 2, 2010

PyCon 2010 sprint report

Residents of the once-great city of Atlanta are only now beginning to piece their lives back together after the event that Glyph Lefkowitz described as "the best Twisted sprint ever".

Quite apart from the unprecedented levels of wanton destruction, Twisted's PyCon 2010 sprint was also better attended than any previous sprints, which have laid waste to the outskirts of Boston, inner-city Dallas and regions of Australia.

At its peak, there were eighteen people seated around the two tables where the sprint took place. People even joined in remotely, working with the Atlanta team through #twisted on freenode.

Although buried deep within a secret bunker in Atlanta, the sprint still managed to attract a fair number of new contributors and Twisted users who wanted to help out.

Attendees who made themselves known to your correspondent include:

  • Jonathan Lange
  • Jean-Paul Calderone
  • David Reid
  • Thomas Hervé
  • Tim Couper
  • Pavel Pergamenshchik
  • Maciej Fijalkowski
  • Glyph Lefkowitz
  • Itamar Turner-Trauring
  • Terry Jones
  • Wilfredo Sánchez Vega
  • Kevin Horn
Jessica McKellar, Ralph Meijer and Andrew Bennetts also participated remotely.

Attendees all had immense fun and expressed a desire to have another sprint soon. One observed that it had been far too long since giant mecha robot warriors descended on Paris.

Twisted prevails,

More simply, we had a great time at the sprint and got a ridiculous amount of stuff done.

We fixed many, many bugs, including all of the known regressions since the 9.0 release. Once we fixed the regressions, we started work on getting the first 10.0 pre-release out the door.

The pre-release probably would not have been possible without the sprint since it allowed the new release manager ready access to Jean-Paul, who has quite a lot of knowledge stuck in his head. One result of this is a new release process document, which is being developed alongside the actual 10.0 release.

We also reached an in-principle agreement to aim for a release every three months. This means that although hardly any of the good work from the sprint is in the 10.0 release, you won't have to wait long for it to appear in 10.1. Hopefully. I plan write up how this will work as soon as the 10.0 release is done.

The sprint proved to be a perfect opportunity to talk about some of the more gutly bits of Twisted, including Deferred cancellation (see #990) and endpoints (see #1442). The former is done, and the latter has made good progress. Stay tuned.

Thomas Hervé did a lot of work on upgrading our Trac instance, which was getting kind of old and currently crashes all of the time.

We talked a bit about how we could make it easier for people to contribute to Twisted without compromising our high standards of quality. We put as many of the ideas that we could remember on to http://twistedmatrix.com/trac/wiki/ContributionIdeas.

Maciej Fijalkowski was at the sprint working on getting PyPy benchmarks for Twisted and on making PyPy work faster with Twisted. Personally, it's really exciting to see PyPy live up to its promise of a faster Python, particularly with a big codebase like Twisted.

As I said, we fixed lots of bugs. Here's the complete list:

  • #4179 - HTTP proxy hanging in Twisted 9.0
  • #3056 - twisted.spread.pb.IUsernameMD5Password's docstring should say it accepts an MD5 digest of a password, not plaintext
  • #3289 - startLoggingWithObserver raises IndexError
  • #4178 - Function singleSearchStep was renamed to _singleSearchStep not everywhere
  • #4192 - Move the content from exarkun's Twisted Web in 60 Seconds series into the Twisted Web howto
  • #4284 - t.e.adbapi leaks threads
  • #4282 - _release.filePathDelta is broken
  • #3718 - twisted.internet.posixbase._Waker not defined on Jython
  • #4143 - twisted.web.wsgi incorrectly unquotes QUERY_STRING
  • #4255 - BaseLogFile should provide a method to reopen logs
  • #972 - Add linux inotify support to twisted core
  • #2367 - twisted.test.test_failure.FailureTestCase.testBrokenStr break #trial in debug mode
  • #1083 - gtk2reactor thread initialization confuses python-2.3
  • #3462 - FTP server: upload should support async close
  • #990 - Deferred cancellation
  • #733 - twisted's SIGCHLD handler breaks popen.
  • #2376 - release-twisted should generate guides with links to API docs
  • #4272 - flavors.py still talks about getObjectAt
  • #4172 - UDP crashes python.exe when using IOCPReactor
  • #3925 - test_addresses fails with Glib2 and Gtk2 reactors
  • #4255 - BaseLogFile should provide a method to reopen logs
  • #4293 - Update links in testing documentation
  • #4311 - XMPP Stanza Error 'remote-server-timeout' yield no type and code
  • #3811 - Allow aborting HTTP client connections in the _newclient API

We also worked on:
  • Getting rid of 3k warnings and generally doing 2to3
  • Event support for iocpreactor
  • Making Deferreds more iterative (see #411)
  • Twisted Web features and bug fixes
  • Fixing obscure Windows/gtk2 compatibility issues
Thank you very much to PyCon US, the Python Software Foundation and the many sponsors of the Twisted Software Foundation for their hard-work and support in making this all possible.

Thanks also to the attendees for making it such a blast.

If you want to encourage more of this sort of behaviour, then please donate to the Twisted Software Foundation.