Thursday, June 12, 2008

Twisted in the News

Love our Monkey

Two great posts from the Chesspark (and WuChess!) guys:

Oh, and did I mention Twisted-based WuChess was released?

Contracts and Jobs

Looks like someone wants some Twisted development done on LDAP and CIFS.

France's Olfeo and the U.K.'s Isotoma also looking for Twisted talent (among other skill sets).


Travis Branham is using Twisted in a CS/CE university internship:
The project revolves around mapping the uncertainty in position of moving objects. If an object is moving, and providing updates for its position at discrete intervals, it can sometimes be useful to know where that object could be between those updates.
He's written a custom SMTP and HTTP server for this.


Holden Web and Divmod are providing an introductory Twisted seminar for executives, managers, and technical directors in Washington, D.C. this Summer.

Monday, June 9, 2008

TSF Sponsored Development

Hello all,

On Friday I finished the first two weeks of funded Twisted development, I'm happy to say the two weeks went great and I got a lot accomplished.

The very, very high-level summary is that I started off by emptying the Twisted review queue and then moved on to finishing some twisted.web tasks which had been started previously by other developers and then abandoned for lack of time or interest or whatever other reason. All told, I did 35 reviews on 29 tickets and did development on 8 others. I also spent some time cleaning duplicate or invalid tickets out of the Twisted tracker. This collectively resulted in 32 tickets being closed over the past two weeks. Here are the tickets closed as a direct result of this work:

#1789 - twisted.conch.test.test_filetransfer.TestOurServerOurClient.testOpenFileAttributes (and perhaps others) leaks file descriptors
#3213 - twisted.conch.ssh.filetransfer.FileTransferServer leaks file descriptors
#3203 - PortableGtkReactor is broken
#3098 - filepath.FilePath.walk loops forever if there is a symlink pointing back up the file tree
#3033 - mkdir(a); mkdir(a) logs an unhandled error in SFTP
#3054 - Small error in the documentation for pb
#2881 - Add a variable in twisted.python.runtime to check for vista
#2374 - testOpenSSLBuffering fails intermittently on a dapper machine (running in vmware) because it uses reactor.iterate
#2918 - intermittent twisted.test.test_ssl.SpammyTLSTestCase.testUnTLS failure on OS X
#3210 - test_pb.NewCredTestCase is insanely long and causes some intermittent failures
#3119 - trial leaks memory/objects/something
#3052 - twistd logging options needs to be tested
#3266 - Provide tools for managing new deprecation policy
#3191 - in manhole in gnome-terminal_ lines longer than the terminal is wide result in excessive scrolling and duplication
#3105 - symlink support and docstrings in filepath.FilePath.copyTo/moveTo
#3267 - Typo in the Asynchronous Programming howto
#3184 - Trial minimal reporter prints a negative run time in summary
#1410 - spawnProcess on unix doesn't handle case where os.fork fails cleanly
#2305 - twisted/internet/ leaks file descriptors when os.fork() raises
#3272 - sorting the --profile output in trial
#3259 - Improved some error messagge in
#2713 - trial -u can fail doctests on second pass
#2698 - Build Bug on Cygwin
#914 - xmlrpc.QueryFactory failed to catch some exceptions
#1057 - Incorrect and misleading arg name msSinceEpoch
#2017 - t.w.client.getPage returning ConnectionDone: Connection was closed cleanly error
#1412 - ExpatError on xmlrpc client connection close
#393 - [PATCH] HTTP Basic Auth based guard
#1108 - web2 needs SOAP support
#909 - microdom getElementsByTagName
#687 - web.client needs documentation and/or data-checking for method argument
#165 - [PATCH]Multiple header with same name support in http

Of particular note, I think, are the following:

#3213: Prior to this fix, the Twisted SFTP server would leak any file descriptors not closed before the end of an SFTP session.

#3203: This fix restores Gtk2 support on Windows. We have also set up a Gtk2 Windows builder which is now passing all but one test.

#1410: Prior to this fix, an error when calling os.fork() would cause reactor.spawnProcess to leak any pipes it opened and potentially to continue running in the main process with the wrong UID/GID.

#165: This adds support for multiple values for each header to the twisted.web server. Previously only the last value received would be made available to applications.

Six more tickets are waiting to be reviewed and will hopefully be closed soon. I want to take this opportunity to thank everyone who worked on tickets I reviewed over the past couple weeks. Twisted development is a collaborative process and I wouldn't have made nearly as big a dent without all of their help. I also want to thank Thomas Hervé in particular, who authored a lot of the code I reviewed and also (if I kept track properly) did every review of code I submitted over the the past two weeks.

In addition to doing work on tickets from the tracker, I also addressed two other issues with Twisted's buildbot. First, I took one of the compact build result views and split it into a supported-only view and an everything view to make it easier to find out the status of recent builds on supported platforms. These two views are linked from the main Twisted buildbot page, - see the "Latest builds" link. Second, I improved the error reporting for the setuptools-enabled builder, making it easier to track down the cause of some setuptools-related problems.

Thanks to the SFC (<>) and all of the sponsors (<>) who made this possible.


Wednesday, June 4, 2008

A Place for Everyone

After an intense volley on the Twisted mail list, phone conversations, IRC discussions, and lots of thinking by everyone, we are pleased to announce the latest addition to Twisted: Twisted Community Code.

This is what Launchpad calls a "super project" or "project group" but what it means for the Twisted community is that anyone with Twisted code can play. Some details are up on a dedicated wiki page, with more info, help, and documentation to come.

Over the years, many have complained that the Twisted core developers are elitist perfectionists who make it impossible for anyone to contribute code. Most of us would object to such a sweeping statement, but we can't deny that there is at least a little truth in that complaint. The ultimate motivation for our standards and adherence to them is quality. We want Twisted to be as stable, useful, and maintainable as possible. However, quality always comes with a cost, and we're tired of paying it.

What about those who are just learning Twisted? Who want to jump in and contribute some code without having to spend months learning not only Twisted itself, but also its coding standard and our famous review process? Do we have a place in the community for them? Now, the answer to that is "yes" :-)

And this isn't just a dumping ground for newbs; within a day of creating this "super project" on Launchpad -- and with no public announacement -- we had three projects join (today there are five), all by serious long-time Twisted hackers. We expect that folks will contribute everything from excellent to horrible code: we encourage all to do so. Through such things as participation in the community, conversations, and voluntary peer review, good code will get better (and may be merged into Twisted proper) and bad code will learn to mend its evil ways. We have wanted to provide just such a space where everyone in the Twisted community can participate with what they love. Thanks to Canonical's and Launchpad platform, we're starting to do this.

You might notice that the "Twisted Community Code" lives at the "tx" URL. This came up in the email discussions mentioned above. Also, some of the projects are prefixed with "tx." The use of this term is likened to the "py" that is used for general Python projects and we encourange those creating Twisted projects to use the analogous "tx." However, Glyph said it well:
The whole point here is that it's a suggestion and a convention, not a mandate from the core team like so many things in the Twistedverse.
Phil Christensen has graciously agreed to take a leadership role in the management of this online community, and we give him many hearty pirate cheers for this. If you have any questions, feel free to send an email to the Twisted mail list... you'll likely get a quick response from Phil :-)

We're hoping that both new Twisted projects and those that have felt alienated in the past can find a home on Launchpad with Twisted Community Code Team Alpha Super Awesome Cool Dynamite Wolf Squadron.