<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-1267458971896358542</id><updated>2009-06-13T22:58:29.685-07:00</updated><title type='text'>Twisted Matrix Laboratories</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default?start-index=26&amp;max-results=25'/><author><name>Christopher Armstrong</name><uri>http://www.blogger.com/profile/11041638059246049826</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-6419905095458017529</id><published>2009-05-25T02:44:00.000-07:00</published><updated>2009-05-25T03:41:12.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='twisted'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='canonical'/><title type='text'>Canonical Men of Twistery</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="padding-left: 10px; float: right;"&gt;&lt;a href="http://people.ubuntu.com/%7Emwh/canonical-men-of-twistery.jpg" align="top"&gt;&lt;img src="http://people.ubuntu.com/%7Eduncan/images/canonical-men-of-twistery-small.png" /&gt;&lt;/a&gt;&lt;/div&gt;The title of this quick little post goes to the excellent name mwh gave the linked photo :-) Taken at a dinner during AllHands in a gorgeous area outside of Barcelona, this pic shows the collection of Twisted developers that Canonical has hired (so far!).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Top row, left to right&lt;/span&gt;: Andrew Bennetts (spiv), Thomas Herve (therve), Chris Armstrong (radix), Michael Hudson (mwh), Jamu Kakar (jkakar).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Bottom row, left to right&lt;/span&gt;: Nicola Larosa (tekNico), Duncan McGreggor (oubiwann), Jonathan Lange (jml).&lt;br /&gt;&lt;br /&gt;Pretty freakin' cool :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-6419905095458017529?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/6419905095458017529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=6419905095458017529' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/6419905095458017529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/6419905095458017529'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2009/05/canonical-men-of-twistery.html' title='Canonical Men of Twistery'/><author><name>Duncan McGreggor</name><uri>http://www.blogger.com/profile/17155270977759488515</uri><email>oubiwann@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11761565810112908517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-4314406771795587944</id><published>2009-05-23T01:59:00.000-07:00</published><updated>2009-05-23T01:59:42.786-07:00</updated><title type='text'>Sponsorship In 2009</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;It's that time of year again; the time when you all have the &lt;i&gt;excellent opportunity&lt;/i&gt; to settle your karmic debt and sponsor the Twisted project.&lt;br/&gt;&lt;br/&gt;Actually, that time is every day of the year.  Right now is just when we have arbitrarily decided to make you aware of this opportunity, so that we're not annoying you all year-round.  Sometime soon we'll be taking down the current list of sponsors for 2008 — hopefully, to make room for a new list of sponsors for 2009.  But without your help, that list will be empty!&lt;br/&gt;&lt;br/&gt;Thanks to our founding sponsors, Twisted has had a great year.  If you've been reading this news feed, you know that we've been able to review, respond to,  and close tons of tickets this year.&lt;br/&gt;&lt;br/&gt;As Jean-Paul Calderone previously wrote, &lt;a href='http://labs.twistedmatrix.com/2009/01/january-sponsored-twisted-development.html'&gt;this is the first year we've had a year-over-year decrease in the number of open tickets&lt;/a&gt;; and that's despite an &lt;i&gt;increase&lt;/i&gt; in the number of filed tickets.  We believe that Twisted is setting a great example for how other open source projects can effectively use sponsorship to fund development.&lt;br/&gt;&lt;br/&gt;Many open source projects are perpetually crunched for volunteer labor.  Twisted is no different in this respect — we could always use more help from the community.  However, we are lucky to have something that most projects don't: the ability to convert dollars directly into maintenance that benefits the project.&lt;br/&gt;&lt;br/&gt;When you contribute money to the Twisted project, you are &lt;i&gt;directly&lt;/i&gt; contributing to get bugs fixed, features implemented, and tickets reviewed.   Last year we told the same story, but this year we have an excellent track record.  I invite you to read the history of our sponsored development — just scroll down and have a look.  I'll wait.&lt;br/&gt;&lt;br/&gt;... Done?&lt;br/&gt;&lt;br/&gt;If you prefer visual representations of our success instead, consider these graphs.  Here's a graph of all tickets reviewed this year, by the handle of the person who reviewed them:&lt;br/&gt;&lt;img alt='' src='http://lh5.ggpht.com/_X8hqcsy8KQM/She6r6bGa0I/AAAAAAAAAF4/5AAxlLkeRCM/%5BUNSET%5D.png?imgmax=800'/&gt;&lt;br/&gt;&lt;br/&gt;Here's the same breakdown of all tickets that were closed this year:&lt;br/&gt;&lt;img alt='' src='http://lh4.ggpht.com/_X8hqcsy8KQM/She6skX2F1I/AAAAAAAAAF8/3mKuAGlDJIY/%5BUNSET%5D.png?imgmax=800'/&gt;&lt;br/&gt;In case you don't already know: "exarkun" is the handle for Jean-Paul Calderone.  By his own calculation, at least 75% of his work this year has been sponsored development.&lt;br/&gt;&lt;br/&gt;This isn't to say that Twisted is being supported entirely by sponsorship: as you can see from the huge number of tickets that exarkun has reviewed, a substantial proportion of development has been coming from the community, but sponsorship has allowed us to be more responsive to the community and integrate contributions much faster.  (Developers may not review their own tickets, so there's no overlap between the code JP has been writing and the tickets he's been reviewing.)&lt;br/&gt;&lt;br/&gt;This year of sponsorship has been great for the project.  But, we're coming to the end of our first year of funding, and we need your help to keep going.&lt;br/&gt;&lt;br/&gt;Every little bit helps, from small, one-time individual donations to monthly subscriptions to corporate sponsorships.  This year, we need even more help from individuals, as some of our corporate sponsors have been impacted by the current economic climate and may not be able to contribute at the same level this year.&lt;br/&gt;&lt;br/&gt;To summarize, there are a few things you can do to help the Twisted project:&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Contribute code.  Any contribution is welcome, but the best would be to attack an existing ticket in the tracker, especially one that has stalled on its way through review.&lt;/li&gt;&lt;li&gt;Donate money directly.  You'll find donation buttons on the front page of &lt;a href='http://twistedmatrix.com/trac/'&gt;twistedmatrix.com&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Donate money from your organization.  Doing so gets you a voice on our sponsors-only mailing list, and can help you to set priorities for the coming year of development.  You also get your logo on twistedmatrix.com, our gratitude, and last but not least, more Twisted development in the coming year!&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Help us in our discussions with larger organizations.  If you're a software developer using Twisted in a big company, we need &lt;i&gt;your&lt;/i&gt; help to convince your organization that they should be contributing.  Even if not, the board of the Twisted project is small and strapped for time - we could use some help just finding the right person to talk to, and making sure that all of their questions are answered promptly.  (If you'd like to help with this effort, please contact me directly.)&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class='zemanta-pixie'&gt;&lt;img class='zemanta-pixie-img' src='http://img.zemanta.com/pixy.gif?x-id=be28b38b-8907-8264-b011-5190c54cf673'/&gt;&lt;br/&gt;Thanks for your interest in Twisted.&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-4314406771795587944?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/4314406771795587944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=4314406771795587944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/4314406771795587944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/4314406771795587944'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2009/04/sponsorship-in-2009.html' title='Sponsorship In 2009'/><author><name>glyph</name><uri>http://www.blogger.com/profile/07021175796928101086</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04514150230258984130'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-7520116342169802359</id><published>2009-03-02T07:55:00.000-08:00</published><updated>2009-03-02T08:46:33.203-08:00</updated><title type='text'>February Sponsored Twisted Development</title><content type='html'>Another month, another round of Twisted development. February saw progress on a miscellany of bug fixes, as well as further work on the new SIP implementation. List of tickets I worked on (bold tickets are now closed):&lt;br /&gt;&lt;br /&gt;#2036 - trial runs tests from .pyc files even if there is no .py file&lt;br /&gt;#2194 - small bug in SIP Via header generation&lt;br /&gt;&lt;b&gt;#3634 - restat in render in static.File raise Exception if file doesn't exists&lt;/b&gt;&lt;br /&gt;#3639 - suppress deprecation warnings emitted by twisted.test.test_sip&lt;br /&gt;#3643 - MemCacheProtocol does not return an error if it is used after disconnecting&lt;br /&gt;#3648 - twisted.cred.credentials.UsernameHashedPassword doesn't hash password strings when checkPassword&lt;br /&gt;&lt;b&gt;#3654 - unlink of unix socket in connectionLost may cause twistd daemons to ignore SIGTERM&lt;/b&gt;&lt;br /&gt;#3584 - SIP transport and transaction layer&lt;br /&gt;&lt;b&gt;#3660 - IRCClient reports ":None:None" to CTCP version request&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Work on #3654 unearthed a more general problem where twistd fails to exit when a service encounters an exception during shutdown. So hopefully there'll be less need to use &lt;tt&gt;kill -9&lt;/tt&gt; during development :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.rfc-ref.org/RFC-TEXTS/3261/contents.html"&gt;RFC 3261&lt;/a&gt; is the longest RFC for a network protocol the IETF has ever produced. The SIP transport/transaction branch only provides the bottom two layers of a full SIP stack, but introduces 1700 new lines of code. Special thanks to Chris Armstrong and Jean-Paul Calderone for their &lt;a href="http://twistedmatrix.com/trac/ticket/3584#comment:17"&gt;amazingly detailed review&lt;/a&gt;. I managed to get halfway through the issues they raised, and expect to finish it up next time.&lt;br /&gt;&lt;br /&gt;Once again, thanks to the &lt;a href="http://conservancy.softwarefreedom.org/"&gt;Software Freedom Conservancy&lt;/a&gt;, all of the &lt;a href="http://twistedmatrix.com/trac/wiki/TSF/FoundingSponsors"&gt;Twisted Sponsors&lt;/a&gt;, and all the other developers who contribute to Twisted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-7520116342169802359?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/7520116342169802359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=7520116342169802359' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/7520116342169802359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/7520116342169802359'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2009/03/february-sponsored-twisted-development.html' title='February Sponsored Twisted Development'/><author><name>Allen Short</name><uri>http://www.blogger.com/profile/02476178041186364808</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15720162227492062297'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-963719721140460374</id><published>2009-02-01T00:08:00.001-08:00</published><updated>2009-02-01T00:08:01.062-08:00</updated><title type='text'>January Sprint Report</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Today, we had a last-minute unofficial Twisted sprint for January, at the Divmod office in Porter Square, Cambridge, Massachusetts.&lt;br/&gt;&lt;br/&gt;Thanks to everyone who contributed.&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Glyph Lefkowitz (that's me) reviewed 4 tickets, shortening the review queue by half.&lt;/li&gt;&lt;li&gt;Jean-Paul Calderone addressed review feedback for some of our old favorite tickets, &lt;a href='http://twistedmatrix.com/trac/ticket/733'&gt;compatibility with &lt;code&gt;os.popen&lt;/code&gt;&lt;/a&gt; and &lt;a href='http://twistedmatrix.com/trac/ticket/3560'&gt;lore's handling of whitespace&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Christopher Armstrong created &lt;a href='http://twistedmatrix.com/trac/ticket/3637'&gt;a tool to generate the official API documentation&lt;/a&gt;, as well as reviewing Jean-Paul's lore work.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Itamar Shtull-Trauring helped with various things, including —&lt;/li&gt;&lt;li&gt;David Sturgis &lt;a href='http://twistedmatrix.com/trac/ticket/2385'&gt;worked to fix twisted.words's IRC compatibility with Pidgin&lt;/a&gt;, among other IRC clients.&lt;/li&gt;&lt;/ul&gt;Thanks also to other contributors today not at the sprint: 'atsuoi' who contributed &lt;a href='http://twistedmatrix.com/trac/ticket/3638'&gt;a patch for an SMTP issue&lt;/a&gt;, and Paul Swartz, who (&lt;a href='http://twistedmatrix.com/trac/log/branches/userauth-2682-7'&gt;it looks like&lt;/a&gt;) spent some time working on &lt;a href='http://twistedmatrix.com/trac/ticket/2682'&gt;testing user authentication in Conch&lt;/a&gt;.  (Commit those changes, Paul!)&lt;br/&gt;&lt;br/&gt;We are tentatively planning to hold our next sprint on Sunday, February 22.  If you're in the Cambridge, Massachusetts area, please stop by!&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-963719721140460374?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/963719721140460374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=963719721140460374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/963719721140460374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/963719721140460374'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2009/02/january-sprint-report.html' title='January Sprint Report'/><author><name>glyph</name><uri>http://www.blogger.com/profile/07021175796928101086</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04514150230258984130'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-4625106150053701532</id><published>2009-01-26T15:18:00.000-08:00</published><updated>2009-01-26T16:47:10.364-08:00</updated><title type='text'>More January Sponsored Twisted Development</title><content type='html'>First, a list of tickets I worked on:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; #2036 - trial runs tests from .pyc files even if there is no .py file&lt;br /&gt;&lt;li&gt; #3575 - Common implementation of RFC 2617 digest authentication (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;&lt;li&gt; #3582 - Improve SIP URI parsing/formatting&lt;br /&gt;&lt;li&gt; #3584 - SIP transport and transaction layer&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;It is the last of these on which I spent the bulk of the time, implementing the lower layers of SIP message handling as described in RFC 3261. As far as I know, this is the first implementation of this protocol in Python that has thorough unit test coverage! While reviewing the code from Sine, Divmod's SIP implementation, and comparing to the spec I discovered some significant misunderstandings that I had the chance to fix here. This code lays the foundation for both user agent code (like VoIP clients or SIMPLE instant messaging) and proxies.&lt;br /&gt;&lt;br /&gt;Thanks to the &lt;a href="http://conservancy.softwarefreedom.org"&gt;SFC&lt;/a&gt; and all of the &lt;a href="http://twistedmatrix.com/trac/wiki/TSF/FoundingSponsors"&gt;sponsors&lt;/a&gt; who made this possible, as well as to all the other Twisted developers who helped out by writing or reviewing code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-4625106150053701532?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/4625106150053701532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=4625106150053701532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/4625106150053701532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/4625106150053701532'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2009/01/more-january-sponsored-twisted.html' title='&lt;i&gt;More&lt;/i&gt; January Sponsored Twisted Development'/><author><name>Allen Short</name><uri>http://www.blogger.com/profile/02476178041186364808</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15720162227492062297'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-6768074928800843034</id><published>2009-01-19T09:13:00.000-08:00</published><updated>2009-01-19T15:05:25.608-08:00</updated><title type='text'>January Sponsored Twisted Development</title><content type='html'>On Friday I finished the first two weeks of sponsored Twisted development for 2009.  This week, the number of open tickets in the Twisted issue tracker hit 1040 - going down.  We hit 1040 on the upside in November of 2007.  Thanks in very large part of the sponsors who made so much of my time available for Twisted development in 2008, we closed more tickets than we opened last year for the first time (&lt;a href="http://bigasterisk.com/"&gt;Drew P&lt;/a&gt; quipped that Twisted will be bug-free and feature-complete in 2636 - better than never ;).  On average, we closed one ticket every 14 hours last year - &lt;i&gt;all year&lt;/i&gt;.  This trend is clearly visible in the graph included in the weekly summary of issue tracker activity.  The green line shows total tickets filed, the red line shows total open tickets.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_znn42E7gLcw/SXUD5V_tr7I/AAAAAAAAAAM/oyWYodbJ7gQ/s1600-h/index.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_znn42E7gLcw/SXUD5V_tr7I/AAAAAAAAAAM/oyWYodbJ7gQ/s320/index.png" alt="" id="BLOGGER_PHOTO_ID_5293141220735692722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;During this round of development, there was the usual smattering of web-related work:&lt;br /&gt;&lt;br /&gt;#446 - Twisted Web accepts any HTTP method as if it was GET&lt;br /&gt;#886 - Add an HTTP 1.1 client protocol implementation to twisted.web&lt;br /&gt;#1176 - A t.web glossary is needed (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;#1522 - Remove woven from next release of twisted.web (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;#2446 - Python 2.4 has poor round-trip behaviour for xmlrpclib.DateTime; Twisted should work around&lt;br /&gt;#2030 - Deprecate twisted.web.trp&lt;br /&gt;#3035 - deprecate Resource subclasses in twisted.web.error, add equivalents in twisted.web.resource&lt;br /&gt;#3416 - rename `twisted.web2.iweb.IOldRequest` to `twisted.web.iweb.IRequest` (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;#3457 - Session expiry check frequency should be based on sessionTimeout&lt;br /&gt;#3600 - test twisted.web.domhelpers against xml.dom.minidom (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;#3601 - crash in twisted.web.http triggered by a blackberry web browser (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;#3605 - Factor "identity" transfer encoding support out of HTTPChannel.rawDataReceived into an object like the chunked transfer encoding object (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;#3610 - Give twisted.web.http_headers.Headers a nice repr (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;&lt;br /&gt;Of course #886 shows up in the list yet again.  At this point the protocol implementation is essentially done.  The code has been reviewed and most of the feedback dealt with.  The only reason it isn't closed yet is that we want to provide more than just an HTTP/1.1 client protocol implementation.  We want to provide an easy-to-use, high-level web client.  Before I call #886 finished, I want to implement a few of those high-level APIs.  So #886 is going to remain open for a little while longer, but I expect it to be closed very soon now.&lt;br /&gt;&lt;br /&gt;Another highlight on this list is #1522 - the removal of Woven from Twisted.  That's right, it's gone, guys.  I really hope that after almost three years of being deprecated and almost six years of there being better alternatives around no one still has code using this.  If so, you're out of luck for the next Twisted release.  Perhaps you should take a look at &lt;a href="http://divmod.org/trac/wiki/DivmodNevow"&gt;Nevow&lt;/a&gt;. :)&lt;br /&gt;&lt;br /&gt;Aside from web tickets, there were some more FTP improvements:&lt;br /&gt;&lt;br /&gt;#3593 - passivePortRange in ftp.py not working (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;#3596 - Active mode makes ftp.py crash (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;&lt;br /&gt;Some improvements which make writing unit tests with Twisted and for Twisted-based code easier:&lt;br /&gt;&lt;br /&gt;#3598 - TestCase.flushWarnings shouldn't use source files to implement its "offendingFunctions" feature (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;#3609 - Add IConsumer and IProducer support to StringTransport to facilitate testing producers and consumers (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;&lt;br /&gt;And all kinds of other assorted fixes and enhancements:&lt;br /&gt;&lt;br /&gt;#733 - twisted's SIGCHLD handler breaks popen&lt;br /&gt;#1785 - reactor.run should raise an error when called while the reactor is running (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;#3560 - remove usage of microdom from twisted.lore&lt;br /&gt;#3576 - add high-level, cross-platform close-on-exit togglers to twisted.internet.fdesc (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;#3591 - ThreadedResolver--and twisted.internet.thread--assumes that the reactor is the installed reactor&lt;br /&gt;#3595 - the interaction of the fireOnOneErrback and consumeErrors parameters to DeferredList is not well documented&lt;br /&gt;#3602 - Improve factoring of various reactor implementations of "internal" FD tracking&lt;br /&gt;#3606 - incorrect link in application howto (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;&lt;br /&gt;Changes to the internal factoring of reactors (#3602) and additions to fdesc (#3576) were both made in support of #733 - a very old ticket for a behavior which often trips people up.  Glyph did the initial work on these improvements and Itamar and I came back and polished them a bit last week.  With one of these closed and the other almost closed, Twisted is getting pretty close to not getting in the way of popen (and more generally, not causing syscalls to start to fail with EINTR).  This is a generally nice thing, but it's taken a long time because it requires access to POSIX APIs Python doesn't expose.&lt;br /&gt;&lt;br /&gt;Further work on #3560 has gotten Lore almost to the point where it's using minidom instead of microdom.  Glyph raised a point in his review of the code which threw one further wrench into the workings, though.  Currently, Lore input documents are implicitly XHTML.  This means a Lore input document may use named character entities without declaring one of the XHTML DTDs.  However, in order to continue to support this with minidom, it's necessary to reach way into expat and use a couple very confusing features.  Itamar and I finally worked out how to do this, but if one is using xml.sax (which we are) then it involves using private attributes.  Not nice.  Tune in next month to learn how this turns out. ;)&lt;br /&gt;&lt;br /&gt;Of course, I also review some tickets over the past two weeks:&lt;br /&gt;&lt;br /&gt;#532 - Big jump from finger18.py to finger19.py in tutorial&lt;br /&gt;#918 - If program has &gt; 1024 fds, the select() used in t.i.process can fail (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;#1009 - Document defgen&lt;br /&gt;#2110 - finger tutorial uses unclear python idioms (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;#2682 - twisted.conch.ssh.userauth is poorly tested&lt;br /&gt;#3245 - __slots__ in Deferred class&lt;br /&gt;#3498 - conch connection-sharing should be disabled by default, at least until it works a little&lt;br /&gt;#3575 - Common implementation of RFC 2617 digest authentication (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;#3584 - SIP transaction layer&lt;br /&gt;#3613 - a streaming producer doesn't have to be resumed when a buffer is empty (&lt;b&gt;closed&lt;/b&gt;)&lt;br /&gt;&lt;br /&gt;Several documentation tickets there, as well as some good SIP stuff (more of Allen's work).  The digest authentication ticket (#3575) was a nice one. Twisted has something like three different implementations of digest authentication in it, each for a different protocol with slightly different requirements.  #3575 is the beginning of the consolidation of that code, a pretty important task.&lt;br /&gt;&lt;br /&gt;Meanwhile, Allen has been working on the SIP code in Twisted in parallel with my development.  A report of his work will show up here shortly.&lt;br /&gt;&lt;br /&gt;Thanks to the &lt;a href="http://conservancy.softwarefreedom.org/"&gt;SFC&lt;/a&gt; and all of the &lt;a href="http://twistedmatrix.com/trac/wiki/TSF/FoundingSponsors"&gt;sponsors&lt;/a&gt; who made this possible, as well as to all the other Twisted developers who helped out by writing or reviewing code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-6768074928800843034?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/6768074928800843034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=6768074928800843034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/6768074928800843034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/6768074928800843034'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2009/01/january-sponsored-twisted-development.html' title='January Sponsored Twisted Development'/><author><name>Jean-Paul Calderone</name><uri>http://www.blogger.com/profile/17618512204583118375</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04711372862663071517'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_znn42E7gLcw/SXUD5V_tr7I/AAAAAAAAAAM/oyWYodbJ7gQ/s72-c/index.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-8045500326614104797</id><published>2008-12-30T06:45:00.000-08:00</published><updated>2008-12-30T07:41:01.907-08:00</updated><title type='text'>Summary of December Sponsored Twisted Development</title><content type='html'>With a lot of help from Allen Short, two more weeks of sponsored Twisted development have just been completed.  During this round, I continued to work on the new HTTP client and spent some time trying to resolve some long-standing issues around Twisted's support for starting and controlling child processes.  Meanwhile, Allen developed a &lt;a href="http://twistedmatrix.com/trac/wiki/SIPPlan"&gt;plan&lt;/a&gt; for integrating the SIP code, maintained by Divmod, Inc. outside of Twisted for several years, into Twisted and the existing SIP support in Twisted.&lt;br /&gt;&lt;br /&gt;The SIP-related work that Allen did encompassed these tickets:&lt;br /&gt;&lt;br /&gt;#2194 - small bug in SIP Via header generation&lt;br /&gt;#3575 - Common implementation of RFC 2617 digest authentication&lt;br /&gt;#3582 - Improve SIP URI parsing/formatting&lt;br /&gt;#3583 - Include SIP message-parsing changes from &lt;a href="http://divmod.org/trac/wiki/DivmodSine"&gt;Sine&lt;/a&gt;&lt;br /&gt;#3584 - SIP transport layer and transaction layer&lt;br /&gt;&lt;br /&gt;These are the process tickets that I worked on:&lt;br /&gt;&lt;br /&gt;#733 - twisted's SIGCHLD handler breaks popen&lt;br /&gt;#1997 - perhaps wakeUp could be slightly simpler (&lt;span style="font-weight: bold;"&gt;closed&lt;/span&gt;)&lt;br /&gt;#2967 - Reaping child processes has superlinear complexity on POSIX&lt;br /&gt;#3571 - intermittent spawnProcess failure in test_process on Linux (&lt;span style="font-weight: bold;"&gt;closed&lt;/span&gt;)&lt;br /&gt;#3576 - add high-level, cross-platform close-on-exit togglers to t.i.fdesc&lt;br /&gt;&lt;br /&gt;A lot of this work consisted of getting some old code which Glyph had previously worked on but never completed updated and brought closer to being ready for a real code review.  The summary of #1997 is a bit misleading - while the change did simplify the reactor's "wake up" mechanism, it also removed a race condition, fixing a bug which could cause certain events to fall into a limbo where they could only ever be processed after another event arrived.&lt;br /&gt;&lt;br /&gt;Aside from process related tickets and the HTTP client, I worked on a few other tickets as well:&lt;br /&gt;&lt;br /&gt;#2808 - AMP should raise MissingArgument (or other) if a callRemote is called with wrong arguments (&lt;span style="font-weight: bold;"&gt;closed&lt;/span&gt;)&lt;br /&gt;#3246 - remove all mentions of plugins.tml from the documentation (&lt;span style="font-weight: bold;"&gt;closed&lt;/span&gt;)&lt;br /&gt;#3562 - Setup Python 3.0 buildslave(s) (&lt;span style="font-weight: bold;"&gt;closed&lt;/span&gt;)&lt;br /&gt;#3568 - ERROR from conch test when pycrypto is not installed&lt;br /&gt;#3569 - Twisted Web WSGI container sometimes emits too many (or duplicate) headers (&lt;span style="font-weight: bold;"&gt;closed&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;The Python 3.0 buildslave will probably garner the most interest of the bunch.  The resolution of this ticket does &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; mean that Twisted supports Python 3.0 now.  It just means that we've added a &lt;a href="http://buildbot.twistedmatrix.com/waterfall?builder=ubuntu64-py3.0-select"&gt;column&lt;/a&gt; to our buildbot (continuous integration system).  We can now tell at any given time that Twisted does not support Python 3.0. ;)  But seriously, with this slave set up, we can accept contributions which move Twisted towards Python 3.0 compatibility, but I don't plan to spend any time doing such development myself in the near future.  There's a ton of other more pressing issues, so I'll leave Python 3.0 work to people who think they'll benefit from it.&lt;br /&gt;&lt;br /&gt;As for the new HTTP client, this round of development moves it inexorably towards completion.  Itamar Shtull-Trauring and I spent several days improving its error handling, simplifying some of the more hideous parts of the implementation, and dealing with various corner cases (and HTTP 1.1 sure has a lot of them).  The &lt;a href="http://twistedmatrix.com/trac/browser/branches/expressive-http-client-886?rev=25721"&gt;development branch&lt;/a&gt; also includes a &lt;span style="font-style: italic;"&gt;sketch &lt;/span&gt;(&lt;span style="font-weight: bold;"&gt;only&lt;/span&gt; a sketch) of the &lt;a href="http://twistedmatrix.com/trac/browser/branches/expressive-http-client-886/high-level-http-client.py?rev=25721"&gt;higher-level API&lt;/a&gt; we're planning to provide on top of the low-level protocol implementation (the sketch is currently undocumented and a bit obtuse, so it may not make sense without me or Itamar looking over your shoulder) and an &lt;a href="http://twistedmatrix.com/trac/browser/branches/expressive-http-client-886/doc/web/examples/httpclient.py?rev=25721"&gt;example&lt;/a&gt; which uses the APIs provided by the low-level protocol to implement a simple web client (something along the lines of wget or curl, but obviously much, much, much more rudamentary).&lt;br /&gt;&lt;br /&gt;That's it for now.  It'll be 2009 when I post the next one of these.  2008 has been a great year for Twisted development, and I know that things are just going to get better. :)  Thanks again to the &lt;a href="http://conservancy.softwarefreedom.org/"&gt;Software Freedom Conservancy&lt;/a&gt;, all of the &lt;a href="http://twistedmatrix.com/trac/wiki/TSF/FoundingSponsors"&gt;Twisted Sponsors&lt;/a&gt;, and all the other developers who contribute to Twisted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-8045500326614104797?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/8045500326614104797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=8045500326614104797' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/8045500326614104797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/8045500326614104797'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/12/summary-of-december-sponsored-twisted.html' title='Summary of December Sponsored Twisted Development'/><author><name>Jean-Paul Calderone</name><uri>http://www.blogger.com/profile/17618512204583118375</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04711372862663071517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-8010767148337979600</id><published>2008-12-03T05:44:00.000-08:00</published><updated>2008-12-03T07:36:58.092-08:00</updated><title type='text'>Summary of November Sponsored Twisted Development</title><content type='html'>I've just completed another round of sponsored Twisted development (the sixth so far).  This period sees a lot of documentation improvements, as well as various bug fixes and continued work on a new HTTP client for Twisted Web (#886).&lt;br /&gt;&lt;br /&gt;These are the documentation issues which were resolved:&lt;br /&gt;&lt;br /&gt;#2281 - Annotations for Twisted Finger Tutorial&lt;br /&gt;#3548 - twisted.conch.client.knownhosts.PlainEntry misdocuments its "_hostnames" attribute.&lt;br /&gt;#3455 - CONNECTION_LOST not an Integer...&lt;br /&gt;#3537 - Conch's public key authentication process is confusing.&lt;br /&gt;#3490 - FTPClient errors should provide ftp errorcode&lt;br /&gt;&lt;br /&gt;There were some improvements to Twisted Web:&lt;br /&gt;&lt;br /&gt;#1878 - twisted.web.monitor traceback_ AttributeError: class IChangeNotified has no attribute '__class__'&lt;br /&gt;#2402 - client.py crashes on URL's that would be no problem for most browsers&lt;br /&gt;#3192 - HTTPClientFactory sets followRedirect on the HTTPPageGetter class&lt;br /&gt;#3469 - Exception is rendered when NotFound is more appropriate.&lt;br /&gt;&lt;br /&gt;A problem with Conch's SFTP server's reporting of modification times was fixed (and then a problem with the unit tests for the fix was fixed):&lt;br /&gt;&lt;br /&gt;#3503 - Wrong date format delivered by twisted.conch.ls.lsLine&lt;br /&gt;#3551 - TZ=Pacific/Auckland python2.4 ./bin/trial twisted.conch.test.test_cftp.ListingTests fails&lt;br /&gt;&lt;br /&gt;With #3551, I was once again reminded that working with timezones is extremely challenging.  This time, I found that the range of local renderings of any particular UTC timestamp is greater than 24 hours, so you cannot rely on &lt;span style="font-weight: bold;"&gt;any&lt;/span&gt; particular timestamp falling on a particular day in an arbitrary timezone.  So like other unit tests in Twisted, the unit tests for &lt;span style="font-style: italic;"&gt;lsLine&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;explicitly set the timezone when they want to make assertions which depend on it, then reset it to its original value.  Unfortunately, this means they can't run on Windows, since Windows apparently lacks APIs for doing this.  I also rediscovered that &lt;span style="font-style: italic;"&gt;time.tzset()&lt;/span&gt; is a no-op, at least on Linux (but the unit tests call it anyway, in case Solaris or HP-UX or some other POSIX implementation requires it).&lt;br /&gt;&lt;br /&gt;An important issue with Twisted's Jabber support was fixed as well (#3463).  This one prevented Twisted's Jabber client from successfully negotiating TLS when connected to Google Talk (and possibly other Java-based Jabber servers).  This problem was ultimately caused by a bug in the TLS support on Google Talk which caused TLS negotiation to fail if the client included a session ticket (RFC 5077) section in the handshake.  This is allowed and servers which do not support session tickets should ignore the section, but for some reason it causes problems with Google Talk.  OpenSSL (on which Twisted's SSL support is based) 0.9.9 enables session tickets and the 0.9.8 package distributed with some platforms (eg Ubuntu 8.10) includes a backport of this feature.  So Twisted's Jabber client cannot communicate with Google Talk if one of those versions of OpenSSL is installed.&lt;br /&gt;&lt;br /&gt;A couple issues related to Python 2.6 support were fixed:&lt;br /&gt;&lt;br /&gt;#2763 - md5 and sha module will be deprecated in python 2.6&lt;br /&gt;#3545 - Support Python 2.6 in the Windows build system.&lt;br /&gt;&lt;br /&gt;A bug in Twisted Mail's IMAP4 client which prevented the &lt;span style="font-style: italic;"&gt;unseen&lt;/span&gt; part of a server's response to a &lt;span style="font-style: italic;"&gt;select&lt;/span&gt; or &lt;span style="font-style: italic;"&gt;examine &lt;/span&gt;command from being made available to applications was fixed (#3550).&lt;br /&gt;&lt;br /&gt;And there were several other assorted fixes:&lt;br /&gt;&lt;br /&gt;#3521 - Documentation for `processExited()` conflicts with the implementation&lt;br /&gt;#3315 - t.p.reflect.safe_repr includes the wrong traceback and misformats the return value&lt;br /&gt;#3541 - twisted.internet.abstract.FileDescriptor.loseConnection drops reason (will be reported as clean shutdown)&lt;br /&gt;#3544 - bin/admin/change-versions should update the main README file&lt;br /&gt;&lt;br /&gt;I also spent some time working on converting Twisted Lore from using microdom, Twisted's XML parser and DOM implementation (circa 2002), to using minidom, the XML parser and DOM implementation in the Python standard library.  For a long time, microdom was better than any of the alternatives, but it's seen very little maintenance in the past several years and there are some problems with Lore (eg #414) which are caused by behavior of microdom that it would be difficult to change.&lt;br /&gt;&lt;br /&gt;Unfortunately, switching to minidom brings a new set of problems.  It's still probably worthwhile, but it seems like it's harder to use than it should be.  Some of the issues I've run into so far (and I'm not done yet):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;minidom's constructors are less convenient than microdom's constructors.  For example, the Text constructor doesn't accept a string to use as the text node's value.  Instead, you have to instantiate Text and then set an attribute.  This expands code which should have been one line into three lines.  And to make things worse, a Text instance with no data set raises an exception from the __repr__ method.&lt;/li&gt;&lt;li&gt;The parse error exceptions raised by expat are less informative than the parse error exceptions raised by microdom.  For example, if a document contains mismatched tags, microdom reports the name and location of both the opening and closing tags.  minidom will report only the location of the closing tag.  It's easy enough to find out the name of the closing tag by finding that location in the input document, but finding the offending start tag means parsing the document in your head.  For any non-trivial document this is ridiculous.  Fortunately, by switching to sax and providing custom error and content handlers, most of the information can be recovered.  This information is always useful though, and it would be better if minidom provided it by default.&lt;/li&gt;&lt;li&gt;Once you switch to xml.sax, you have to remember to disable its validation features or it will try to retrieve DTDs from the internet every time you parse something.  This is bad, bad default behavior.&lt;/li&gt;&lt;/ul&gt;Some of these issues may turn into Python bug reports once I've made more progress on converting Lore.  A much bigger difficulty with the conversion than the problems minidom has is the fact that Lore is largely pre-UQDS code.  Some of it has tests, but they're mostly whole-system tests which compare gigantic xhtml strings and are subject to extremely obscure failures.  And most of it doesn't have any tests at all.&lt;br /&gt;&lt;br /&gt;Switching away from microdom should be worth the effort though.  minidom is a bit faster and Lore will generate better looking output once the switch is done.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Itamar points out I didn't separate tickets into groups for those I reviewed and those I did development on myself this time.  So let me point out that of the above tickets, many were developed by others and reviewed by me.  The Twisted development process is highly collaborative.  I couldn't accomplish &lt;span style="font-weight: bold;"&gt;anything&lt;/span&gt; without the help of all the other great Twisted developers who volunteer to contribute to Twisted in their free time.  If you want to find out which are which, head over to the &lt;a href="http://twistedmatrix.com/trac/report/"&gt;Twisted issue tracker&lt;/a&gt;&lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;where you can look up the development(/authorship/etc) history of any ticket.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That's all for now.  Thanks again to the &lt;a href="http://conservancy.softwarefreedom.org/"&gt;Software Freedom Conservancy&lt;/a&gt;, all of the &lt;a href="http://twistedmatrix.com/trac/wiki/TSF/FoundingSponsors"&gt;Twisted Sponsors&lt;/a&gt;, and all the other developers who contribute to Twisted (hi &lt;a href="https://launchpad.net/%7Emwhudson"&gt;Michael&lt;/a&gt;!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-8010767148337979600?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/8010767148337979600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=8010767148337979600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/8010767148337979600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/8010767148337979600'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/12/summary-of-november-sponsored-twisted.html' title='Summary of November Sponsored Twisted Development'/><author><name>Jean-Paul Calderone</name><uri>http://www.blogger.com/profile/17618512204583118375</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04711372862663071517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-3948351566475104212</id><published>2008-11-03T15:31:00.000-08:00</published><updated>2008-11-03T15:50:55.236-08:00</updated><title type='text'>Summary of October Sponsored Twisted Development</title><content type='html'>Hello again,&lt;br /&gt;&lt;br /&gt;I've just spent another two weeks on sponsored Twisted development.  This round sees 25 tickets resolved.  Considering the fact that two tickets in particular took up a lot of development time, I'm pretty happy with this progress.  I did a lot of reviews for other people this time around.  Here are some of the more interesting things developed by other people to which I gave the thumbs up:&lt;br /&gt;&lt;br /&gt;#2026 - Edit the twisted.internet docstring to make contents clearer&lt;br /&gt;#2902 - bad flag value in twisted.conch.ssh.filetransfer&lt;br /&gt;#3335 - FTPClient should support renaming files&lt;br /&gt;#3491 - FTPClient should support deleting files&lt;br /&gt;#3500 - Add directory creation method to FTPClient&lt;br /&gt;&lt;br /&gt;(The other tickets I reviewed which weren't quite as as interesting were: #532 #745 #1853 #2281 #2375 #2682 #2748 #3197 #3216 #3315 #3381 #3393 #3439 #3464 #3466 #3471 #3482 #3486 #3504 #3505 #3507)&lt;br /&gt;&lt;br /&gt;And here are some of the more interesting ones I worked on myself (bold tickets are now closed):&lt;br /&gt;&lt;br /&gt;#886 - Rewrite twisted.web.client.getPage to support streaming of result data and returning headers etc&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#2346 - Header generation not conforming to RFC822 and RFC2046&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#2605 - stdlib unittest change breaks a trial test&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#3298 - twisted.internet.defer.FirstError masks errors when logged&lt;/span&gt;&lt;br /&gt;#3329 - HTTP's #(...) syntax allows null contents&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#3477 - BinaryBoxProtocol.makeConnection calls startReceivingBoxes too early&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#3478 - AMP should enforce MAX_KEY_LENGTH in the protocol parser&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#3487 - Add TestCase.flushWarnings&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(The other slightly less exciting tickets I worked were: #3169 #3197 #3216 #3515 #3519)&lt;br /&gt;&lt;br /&gt;#3487 and #886 took up a lot of my time this round.  With #3487 resolved, the way is clear for the next Twisted release to run well on Python 2.6 (ie, there are no more known issues).  Once I got that out of the way, I moved back to web issues.  #886 is going to represent a big step towards having a good HTTP client API in Twisted.  Anyone who has tried to use twisted.web.client for anything non-trivial knows how much work is needed in this area. :)&lt;br /&gt;&lt;br /&gt;As usual, this work is made possible by the &lt;a href="http://conservancy.softwarefreedom.org/"&gt;SFC&lt;/a&gt; and all of the &lt;a href="http://twistedmatrix.com/trac/wiki/TSF/FoundingSponsors"&gt;sponsors&lt;/a&gt; who made this possible, as well as to all the other Twisted developers who helped out by writing or reviewing code!&lt;br /&gt;&lt;br /&gt;That's all until next time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-3948351566475104212?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/3948351566475104212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=3948351566475104212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/3948351566475104212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/3948351566475104212'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/11/summary-of-october-sponsored-twisted.html' title='Summary of October Sponsored Twisted Development'/><author><name>Jean-Paul Calderone</name><uri>http://www.blogger.com/profile/17618512204583118375</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04711372862663071517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-4847200269357384462</id><published>2008-09-26T12:28:00.000-07:00</published><updated>2008-09-26T12:42:27.279-07:00</updated><title type='text'>Summary of September Sponsored Twisted Development</title><content type='html'>Another round (the fourth) of sponsored Twisted development has just wrapped up.&lt;br /&gt;&lt;br /&gt;I had a lot of excellent help again from Thomas Hervé and  Thijs Triemstra.  Thomas is a great reviewer and Thijs has been making steady progress on resolving lots of documentation tickets.&lt;br /&gt;&lt;br /&gt;Here are the tickets I spent time developing:&lt;br /&gt;&lt;br /&gt;#1068 - UNIX Port creation has race condition in permission setting code&lt;br /&gt;#1382 - twisted.web.client.HTTPClientFactory sends Host header (and others) more than once&lt;br /&gt;#1903 - Twisted doesn't reset timeout when getting POST data&lt;br /&gt;#2542 - twisted.web.microdom.Node.isEqualToNode does no actual comparison&lt;br /&gt;#2683 - twisted/web/http.py has self._header instead of self.__header&lt;br /&gt;#2878 - Intermittent unclean errors from twisted.test.test_ftp.FTPServerPasvDataConnectionTestCase.testTwoDirLIST on OS X&lt;br /&gt;#2947 - intermittent twisted.test.test_pb.NSPTestCase.test_NSP failure on OS X&lt;br /&gt;#2974 - twisted.vfs.test.test_vfs.OSVFSTest.setUp does not close the files it opens&lt;br /&gt;#2976 - twisted.mail.smtp.xtext_encode and xtext_decode take the wrong number of arguments&lt;br /&gt;#3133 - Whois function for the ircclient class&lt;br /&gt;#3211 - twisted.python.log.showwarning doesn't take the new line argument added in Python 2.6&lt;br /&gt;#3222 - Intermittent failure of twisted.test.test_twistd.AppProfilingTestCase.test_profileSaveStats on Windows&lt;br /&gt;#3223 - twisted.trial.unittest.TestCase.assertWarns always fails when the C warnings module_ new in Python trunk_ is in use&lt;br /&gt;#3239 - Intermittent failure of twisted.test.test_iutils.UtilsTestCase.testOutputWithErrorIgnored on Windows&lt;br /&gt;#3266 - Provide tools for managing new deprecation policy&lt;br /&gt;#3402 - Intermittent failure of twisted.test.test_tcp.LocalRemoteAddressTestCase.test_hostAddress on OS X&lt;br /&gt;#3404 - twisted.test.test_process.ProcessTestCase.testManyProcesses fails on WinXP&lt;br /&gt;#3416 - rename `twisted.web2.iweb.IOldRequest` to `twisted.web.iweb.IRequest`&lt;br /&gt;#3424 - Intermittent failure of twisted.names.test.test_names.ServerDNSTestCase.testZoneTransfer on OS X&lt;br /&gt;#3426 - twisted/internet/test/test_process.py tests which might fail while waiting for an event should use runReactor instead of reactor.run&lt;br /&gt;&lt;br /&gt;As you can see, work improving Twisted Web continues here.  There's also been some long-needed fixes to tests in the suite which fail intermittently on various platforms.  With more of these problems resolved, it gets easier and easier to determine if new proposed changes introduce any regressions.&lt;br /&gt;&lt;br /&gt;Of course, I reviewed a lot of tickets over the last few weeks as well.  Here they are:&lt;br /&gt;&lt;br /&gt;#532 - Big jump from finger18.py to finger19.py in tutorial.&lt;br /&gt;#1124 - getHost and getPeer not needed for IProcessTransport&lt;br /&gt;#1157 - web.http.HTTPClient does not support chunked transfer-encoding&lt;br /&gt;#1262 - Document Twisted copyright policy&lt;br /&gt;#1328 - People keep asking about _trial_temp&lt;br /&gt;#1852 - Replace uses of @ivar in interfaces with z.i.Attribute&lt;br /&gt;#1853 - Fix/eliminate @cvar in Interfaces.&lt;br /&gt;#2026 - Edit the twisted.internet docstring to make contents clearer&lt;br /&gt;#2500 - Add @since to the coding standard&lt;br /&gt;#2514 - Documentation bug in the list of possible &lt;span/&gt; classes&lt;br /&gt;#2555 - Documentation update: deferred results in PB&lt;br /&gt;#2909 - Document XXX Comment Policy&lt;br /&gt;#3045 - Coding standard should forbid the use of "foo %s" % notATuple&lt;br /&gt;#3197 - IProcessTransport.pid is incompletely documented&lt;br /&gt;#3236 - Remove the FAQ from doc/core/howto_ since it is a duplicate of the FAQ wiki page&lt;br /&gt;#3254 - twisted.python.deprecate does the wrong thing for methods&lt;br /&gt;#3315 - t.p.reflect.safe_repr includes the wrong traceback and misformats the return value&lt;br /&gt;#3382 - coding-standard.xhtml mislinks to twisted.python.compat&lt;br /&gt;#3414 - Coding standard refers to old tools&lt;br /&gt;#3415 - Get rid of X{} references in docstrings&lt;br /&gt;#3422 - Remove acceptance tests in coding standard&lt;br /&gt;#3423 - Get rid of references to old admin tools&lt;br /&gt;#3435 - XmlStream should be convenient to use in a server context where there should be one authenticator per connection&lt;br /&gt;#3446 - Infinite loop/memory-usage in irc.split()&lt;br /&gt;&lt;br /&gt;These tickets represent a lot of good work by other Twisted developers (and you can see there are a lot of documentation tickets here, almost all the work of Thijs!).&lt;br /&gt;&lt;br /&gt;I also spent a bit of time cleaning up our issue tracker.  When you've been keeping track of bugs and feature requests for more than five years, it's hard to avoid having a certain amount of invalid tickets pile up.  It's a bit of a drag going through the issue tracker to try to find these, but it's well worth while (and I can't expect &lt;span style="font-weight: bold;"&gt;everything&lt;/span&gt; to be fun ;).&lt;br /&gt;&lt;br /&gt;That's it for this time.  I'll be back with another report in about a month.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-4847200269357384462?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/4847200269357384462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=4847200269357384462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/4847200269357384462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/4847200269357384462'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/09/summary-of-september-sponsored-twisted.html' title='Summary of September Sponsored Twisted Development'/><author><name>Jean-Paul Calderone</name><uri>http://www.blogger.com/profile/17618512204583118375</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04711372862663071517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-3033419541046810688</id><published>2008-08-05T06:54:00.000-07:00</published><updated>2008-08-05T08:30:22.371-07:00</updated><title type='text'>Summary of July/August TSF Sponsored Twisted Development</title><content type='html'>I've just completed the third two-week period of TSF sponsored Twisted development.&lt;br /&gt;&lt;br /&gt;Tickets I worked on during this period:&lt;br /&gt;&lt;br /&gt;#686 - [TEST] startTLS is broken if there's already data in the outgoing buffer.&lt;br /&gt;#966 - [PATCH] Add --umask option to twistd&lt;br /&gt;#1200 - twisted.test.test_internet calls reactor.iterate()&lt;br /&gt;#1493 - static File web module doesn't support byte ranges&lt;br /&gt;#2276 - Changes to TwistedNames to make it support NAPTR records&lt;br /&gt;#2338 - trial should handle concurrent usage in the same directory gracefully&lt;br /&gt;#2753 - twisted.web WSGI support&lt;br /&gt;#2790 - UDP Transport write() raises socket.error EWOULDBLOCK&lt;br /&gt;#2845 - twisted.internet.thread._putResultInDeferred should be public&lt;br /&gt;#2931 - FilePath.setContent writes and renames but does not sync&lt;br /&gt;#3342 - twisted.names dns-spoofing vulnerability&lt;br /&gt;#3347 - twisted.names dns-spoofing vulnerability (birthday paradox)&lt;br /&gt;#3367 - twisted.python.lockfile.FilesystemLock.lock fails with EEXIST&lt;br /&gt;&lt;br /&gt;Tickets I reviewed during this period:&lt;br /&gt;&lt;br /&gt;#637 - Odd filenaming in tutorial/intro.xhtml&lt;br /&gt;#638 - Allow overriding twistd's logging options&lt;br /&gt;#689 - twistd man page needs a section on signals&lt;br /&gt;#1246 - reactor.callWhenRunning is not in the Using Processes document&lt;br /&gt;#1253 - Create index.xhtml files for non-core doc trees&lt;br /&gt;#1490 - Allow twistd to "run" packages_ e.g. 'twistd run mypackage --port 8080'&lt;br /&gt;#1821 - Turn deferredgenerator wiki page into howto&lt;br /&gt;#1888 - Review man pages&lt;br /&gt;#1971 - Links in SEE ALSO section of doc/lore/man/lore.1 are bogus&lt;br /&gt;#2208 - Standardize on the Python shebang line&lt;br /&gt;#2375 - these objects' docstrings are not proper epytext:&lt;br /&gt;#2438 - Get rid of references to maintainer email addresses from code&lt;br /&gt;#2607 - conch.checks.SSHPublicKeyDatabase calls os.seteuid/os.setegid even if it's not necessary&lt;br /&gt;#3244 - runInteraction exceptions are swallowed if rollback fails&lt;br /&gt;#3254 - twisted.python.deprecate does the wrong thing for methods&lt;br /&gt;#3285 - Add ISUPPORT implementation for irc.py&lt;br /&gt;#3332 - SSHAgent implementation_ unit tests&lt;br /&gt;#3355 - t.application.app.AppProfiler handles options oddly&lt;br /&gt;#3365 - a few more IRCClient docstrings&lt;br /&gt;#3366 - add IRCClient.back()&lt;br /&gt;#3377 - words.protocol - irc.py assumes nickchange to be successful before server ack&lt;br /&gt;&lt;br /&gt;Allen Short also helped out with a few reviews this time.  Thijs Triemstra, a new Twisted contributor, has also been very active lately working though documentation tickets and making great headway.&lt;br /&gt;&lt;br /&gt;Twisted's open ticket count also fell below 1100 this week.  For the last three months, for the first time ever, we've been able to consistently resolve more tickets than have been filed.&lt;br /&gt;&lt;br /&gt;Thanks to the SFC (&lt;&lt;a href="http://conservancy.softwarefreedom.org/"&gt;http://conservancy.softwarefreedom.org/&lt;/a&gt;&gt;) and all of the sponsors  (&lt;&lt;a href="http://twistedmatrix.com/trac/wiki/TSF/FoundingSponsors"&gt;http://twistedmatrix.com/trac/wiki/TSF/FoundingSponsors&lt;/a&gt;&gt;) who made this possible, as well as to all the other Twisted developers who helped out by writing or reviewing code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-3033419541046810688?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/3033419541046810688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=3033419541046810688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/3033419541046810688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/3033419541046810688'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/08/summary-of-julyaugust-tsf-sponsored.html' title='Summary of July/August TSF Sponsored Twisted Development'/><author><name>Jean-Paul Calderone</name><uri>http://www.blogger.com/profile/17618512204583118375</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04711372862663071517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-6407412283062388964</id><published>2008-07-10T13:23:00.000-07:00</published><updated>2008-07-10T14:02:47.027-07:00</updated><title type='text'>June/July TSF Sponsored Development</title><content type='html'>The second (of what should end up being many) round of TSF sponsored development has just wrapped up.  Like last time, this was two weeks of work by yours truly (with an afternoon of Glyph's time spent reviewing code to keep things moving).  This time around there were fewer tickets waiting to be reviewed when I got started, however there was still plenty of code to look at.  Over the full period, I reviewed:&lt;br /&gt;&lt;br /&gt;#1144 Documentation: twisted.internet.reactor does not appear in the API docs&lt;br /&gt;#1253 Create index.xhtml files for non-core doc trees&lt;br /&gt;#1255 Update copyrights in the man pages&lt;br /&gt;#1878 twisted.web.monitor traceback_ AttributeError: class IChangeNotified has no attribute '__class__'&lt;br /&gt;#1890 move examples from core into correct sub-packages&lt;br /&gt;#1900 Error in documentation online&lt;br /&gt;#2169 twisted.plugin documentation errors&lt;br /&gt;#2208 Standardize on the Python shebang line&lt;br /&gt;#2438 Get rid of references to maintainer email addresses from code&lt;br /&gt;#2552 broken links in intro.xhtml&lt;br /&gt;#2607 conch.checks.SSHPublicKeyDatabase calls os.seteuid/os.setegid even if it's not necessary&lt;br /&gt;#2716 Eliminate relative imports from twisted.conch&lt;br /&gt;#2815 Update VFS backends to an async interface&lt;br /&gt;#2821 create twistd plugin for vfs&lt;br /&gt;#2845 twisted.internet.thread._putResultInDeferred should be public&lt;br /&gt;#3182 Trivial typo in twisted.internet.protocol&lt;br /&gt;#3257 Rewrite twisted.web.static.File.directoryListing to not use woven&lt;br /&gt;#3269 curses.setupterm must only be called once per process&lt;br /&gt;#3300 twistd should support setting the syslog facility&lt;br /&gt;#3326 Typo in gtkmanhole.py&lt;br /&gt;&lt;br /&gt;Other tickets I worked on included:&lt;br /&gt;&lt;br /&gt;#1069 log observers that throw exceptions should not be removed&lt;br /&gt;#1152 xmlrpc.html doesn't describe how to return errors to the client&lt;br /&gt;#1291 Expose "process exited" hook on ProcessProtocol_ turning current processEnded into user-overriddable behavior&lt;br /&gt;#1493 static File web module doesn't support byte ranges&lt;br /&gt;#2303 Deprecate setUpClass and tearDownClass and_ if possible_ fix the subclassing behaviour.&lt;br /&gt;#2327 Intermittent failure in PB tests&lt;br /&gt;#2631 Update coding standard to indicate preference for TestCase methods which being with "assert" and which do not have an underscore in their name&lt;br /&gt;#2874 _sslverify.problemsFromTransport should be deprecated&lt;br /&gt;#3029 documentation for twisted.python.deprecate.deprecated is incomplete (and other sundries)&lt;br /&gt;#3059 twisted.internet.tcp.Client.getPeer incorrectly returns hostnames&lt;br /&gt;#3116 Errors in processEnded can cause processes to be eternally reaped&lt;br /&gt;#3159 t.i.utils process functions should have a default cwd of None_ not '.'&lt;br /&gt;#3218 SSL disconnection sometimes hangs indefinitely with pyOpenSSL 0.7&lt;br /&gt;#3255 Trial fails to display the line where the error occured in case of SyntaxError&lt;br /&gt;#3300 twistd should support setting the syslog facility&lt;br /&gt;#3301 superfluous local in AMP.__init__&lt;br /&gt;#3305 CR IAC ignored in TelnetClient&lt;br /&gt;#3306 twisted.test.test_ssl.StolenTCPTestCase has a number of defects&lt;br /&gt;#3339 mailmail raises an exception instead of giving an error message&lt;br /&gt;&lt;br /&gt;In particular, I spent a lot of time on #1291 which will make it possible to control child processes more precisely with Twisted by separating out the notification that a child process has actually exited from the notification that all of its file descriptors have been closed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks to the SFC (&lt;&lt;a href="http://conservancy.softwarefreedom.org/"&gt;http://conservancy.softwarefreedom.org/&lt;/a&gt;&gt;) and all of the sponsors  (&lt;&lt;a href="http://twistedmatrix.com/trac/wiki/TSF/FoundingSponsors"&gt;http://twistedmatrix.com/trac/wiki/TSF/FoundingSponsors&lt;/a&gt;&gt;) who made this possible, as well as to all the other Twisted developers who helped out by writing or reviewing code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-6407412283062388964?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/6407412283062388964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=6407412283062388964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/6407412283062388964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/6407412283062388964'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/07/junejuly-tsf-sponsored-development.html' title='June/July TSF Sponsored Development'/><author><name>Jean-Paul Calderone</name><uri>http://www.blogger.com/profile/17618512204583118375</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04711372862663071517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-8148870156643013600</id><published>2008-07-02T13:23:00.000-07:00</published><updated>2008-07-03T00:00:05.802-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>Twisted in the News</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Everyone's Hiring Twisted Talent&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The jobs category made it to the top of the list this time around, with folks like Rackspace hiring Knowers in the Ways of Twist. This &lt;a href="http://careers.computing.co.uk/careers/jobsearch/detail?jobId=9679412&amp;amp;WT.mc_id=ctg-1Job&amp;amp;gad=CJqfxrkDEggXphqALZC3BRiah7r-AyD2jpAu"&gt;automation engineer position&lt;/a&gt; puts Twisted on par with .Net and C#, giving it title space. &lt;a href="http://www.odesk.com/jobs/Python-Twisted-multi-protocol-network-server-for-mobile-devices_%7E%7E5b9979f6861a3147?source=rss"&gt;This one&lt;/a&gt; is looking for talent working with custom protocols and mobile device products. &lt;a href="http://www.fluidinfo.com/"&gt;Fluidinfo&lt;/a&gt; is also looking for some Twisted talent; if you're interested, email me and I'll put you in touch with them.&lt;br /&gt;&lt;br /&gt;The &lt;a href="https://rackspace.ats.hrsmart.com/cgi-bin/a/highlightjob.cgi?jobid=1033"&gt;Rackspace job posting&lt;/a&gt; is interesting, because a reliable source said that they are doing some  very sexy stuff with Twisted and cloud computing. This would be quite the catch, job hunters...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Fredericksburg Twist&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.zope.com/"&gt;Zope Corp&lt;/a&gt; recently released zc.twist 1.3,  "Talking to the ZODB in Twisted Reactor Calls." Their &lt;a href="http://pypi.python.org/pypi/zc.twist/"&gt;page on PyPI&lt;/a&gt; has extensive documentation and some great examples. With their Zope 3 work, Zope Corp has consistently provided some of the best technical documentation I've seen in the Python world (possibly fueled by their excellent use of doctests). This release makes me want to jump back into the ZODB :-)&lt;br /&gt;&lt;br /&gt;Related to the ZODB, be sure to read Martijn Faassen's &lt;a href="http://faassen.n--tree.net/blog/view/weblog/2008/06/20/0"&gt;recent post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Compliments&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Terry Jones referred to the Twisted crew nicely in &lt;a href="http://www.fluidinfo.com/terry/2008/06/18/embracing-encapsulation/"&gt;his blog post&lt;/a&gt;, saying that the framework is "an extraordinarily good set of asynchronous networking libraries written by a set of extraordinarily young and gifted programmers." Well, we're starting to get grey hairs, bald spots, and love handles... so perhaps we're not quite as young as we used to be ;-) But we'll take the compliment anyway, Terry ;-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Holy Fervor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Colin Alston had some &lt;a href="http://syllogism.co.za/2008/07/thoughts-on-frameworks-why-i-u.html"&gt;interesting things to say&lt;/a&gt; about "religious" technology debates and managed to nicely support Twisted and Divmod's Nevow at the same time. I'm saddened when people try to debate with us about the "right way" to do network programming (right now, everyone's asking how we compare to Erlang). This isn't a jihad, folks. Colin said it very well:&lt;br /&gt;&lt;blockquote&gt;Why is it though that people become so fanatical about a particular framework or language? At the end of the day our choices of language and framework should be based on merit and not on emotion. &lt;/blockquote&gt;Colin also highlighted a few of the many reasons I like to use Twisted and Nevow:&lt;br /&gt;&lt;blockquote&gt;Once you can break this mould, the endless possibilities of web applications become far more apparent. Twisted and Nevow gives you a clean web server tailored for your application, and you can keep your own state information and event control without needing the client to hit on special pages or abusing AJAX to poll resources.&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Scaling&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next up is Glyph's absolutely fantastic &lt;a href="http://glyph.twistedmatrix.com/2008/06/this-word-scaling.html"&gt;essay on scaling&lt;/a&gt; with Twisted and Mantissa.  JP and I have actually been talking to him about this stuff in great detail lately, due to the messaging work that Glyph is doing. It's a delight that Glyph took the time to put his thoughts and analysis on "paper."  There's too much good stuff in there to quote it; you'll have to read the whole thing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Intermediate to Advanced&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Glyph gets the spotlight again with &lt;a href="http://glyph.twistedmatrix.com/2008/07/constructive-criticism.html"&gt;his response&lt;/a&gt; to a recent critique of Twisted by a programmer who prefers to write threaded applications. This is a must-read for intermediate to advanced Twisters.&lt;br /&gt;&lt;br /&gt;In a similar vein, folks wanting to push their Twisted skills further and do some integration would do well to read &lt;a href="http://oubiwann.blogspot.com/2008/06/so-you-want-your-code-to-be-asynchonous.html"&gt;this post&lt;/a&gt;, which got upmodded at reddit.com last week. It covers some basic advice on creating Twisted-ready async code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;More Blog Bits&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JP sketched out a quick prototype of &lt;a href="http://jcalderone.livejournal.com/42060.html"&gt;TCP in the browser&lt;/a&gt; using Nevow/Athena. The PyPy team has &lt;a href="http://morepypy.blogspot.com/2008/06/running-nevow-on-top-of-pypy.html"&gt;Nevow running on PyPy&lt;/a&gt; now! Prasanna Gautam has a &lt;a href="http://infinity-unbound.blogspot.com/2008/06/sending-binary-files-over-xml-rpc.html"&gt;quick example&lt;/a&gt; of sending binary data over XML-RPC using Twisted.  Jack Moffitt of Chesspark fame &lt;a href="http://metajack.wordpress.com/2008/06/27/hello-world-meet-speeqe/"&gt;blogged about&lt;/a&gt; their new chat product (based on Twisted) called &lt;a href="http://www.speeqe.com/"&gt;speeqe&lt;/a&gt;. Jack gives us another node in his earlier &lt;a href="http://metajack.wordpress.com/"&gt;Firefox GTD blog post&lt;/a&gt;. There was a post by Duncan covering some &lt;a href="http://oubiwann.blogspot.com/2008/06/async-batching-with-twisted-walkthrough.html"&gt;examples of "batching" deferreds&lt;/a&gt; in Twisted. Glyph posted &lt;a href="http://holdenweb.blogspot.com/2008/06/why-twisted-july-11-2008-washington-dc.html"&gt;an interesting comment&lt;/a&gt; on Steve Holden's blog. And finally, Jonathan Lange &lt;a href="http://mumak.net/2008/06/13/arent-code-reviews-great/"&gt;gives a shout out&lt;/a&gt; to the crew on his post about code reviews.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-8148870156643013600?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/8148870156643013600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=8148870156643013600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/8148870156643013600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/8148870156643013600'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/07/twisted-in-news.html' title='Twisted in the News'/><author><name>Duncan McGreggor</name><uri>http://www.blogger.com/profile/17155270977759488515</uri><email>oubiwann@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11761565810112908517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-857805174852123555</id><published>2008-06-12T14:11:00.001-07:00</published><updated>2008-06-12T14:15:13.540-07:00</updated><title type='text'>Twisted in the News</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;b&gt;&lt;br /&gt;Love our Monkey&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Two great posts from the &lt;a href="http://www.chesspark.com/"&gt;Chesspark&lt;/a&gt; (and &lt;a href="http://www.wuchess.com/"&gt;WuChess&lt;/a&gt;!) guys:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://metajack.wordpress.com/2008/05/20/5-reasons-you-should-love-twisted-python/"&gt;5 Reasons You Should Love Twisted Python&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The Twisted-based &lt;a href="http://thetofu.livejournal.com/71339.html"&gt;BOSH Cloud&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Oh, and did I mention Twisted-based &lt;a href="http://www.wuchess.com/"&gt;WuChess&lt;/a&gt; was released?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://valleywag.com/5012351/wu-tang-clan-producer-launches-pay+to+play-chess-and-michael-arrington-cant-get-money-off-his-mind"&gt;ValleyWag&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://latimesblogs.latimes.com/webscout/2008/06/rza-wu-tang-wuc.html"&gt;LA Times&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.npr.org/templates/story/story.php?storyId=91312556&amp;amp;ft=1&amp;amp;f=1019"&gt;NPR&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.wired.com/music/2008/06/wu-tang-archite.html"&gt;Wired&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Contracts and Jobs&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Looks like someone wants some Twisted development done on &lt;a href="http://www.freelance-projects.info/python/ldap-server-on-twistedpython-by-despiegk/"&gt;LDAP&lt;/a&gt; and &lt;a href="http://www.freelance-projects.info/python/implement-a-cifs-smb-server-based-on-twisted-python-by-despiegk/"&gt;CIFS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;France's &lt;a href="http://google.com/translate?u=http%3A%2F%2Fwww.afpy.org%2FMembers%2Fgmonserand%2Fingdev_python_08&amp;amp;hl=en&amp;amp;ie=UTF8&amp;amp;sl=fr&amp;amp;sl=es&amp;amp;tl=en&amp;amp;tl=en"&gt;Olfeo&lt;/a&gt; and the U.K.'s &lt;a href="http://blog.isotoma.com/2008/06/were_hiring.html"&gt;Isotoma&lt;/a&gt; also looking for Twisted talent (among other skill sets).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Research&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Travis Branham is using Twisted in a CS/CE &lt;a href="http://travisbranham.blogspot.com/2008/06/fun-times.html"&gt;university internship&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;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.&lt;br /&gt;&lt;/blockquote&gt;He's written a custom SMTP and HTTP server for this.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Seminar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://holdenweb.com/"&gt;Holden Web&lt;/a&gt; and &lt;a href="http://about.divmod.com/"&gt;Divmod&lt;/a&gt; are providing an &lt;a href="http://news.divmod.com/2008/06/introductory-offer-divmodholden-web.html"&gt;introductory Twisted seminar&lt;/a&gt; for executives,  managers, and technical directors in Washington, D.C. this Summer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-857805174852123555?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/857805174852123555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=857805174852123555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/857805174852123555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/857805174852123555'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/06/twisted-in-news.html' title='Twisted in the News'/><author><name>Duncan McGreggor</name><uri>http://www.blogger.com/profile/17155270977759488515</uri><email>oubiwann@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11761565810112908517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-6143323455282584</id><published>2008-06-09T07:30:00.000-07:00</published><updated>2008-06-09T07:33:30.361-07:00</updated><title type='text'>TSF Sponsored Development</title><content type='html'>Hello all,&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;br /&gt;#1789 - twisted.conch.test.test_filetransfer.TestOurServerOurClient.testOpenFileAttributes (and perhaps others) leaks file descriptors&lt;br /&gt;#3213 - twisted.conch.ssh.filetransfer.FileTransferServer leaks file descriptors&lt;br /&gt;#3203 - PortableGtkReactor is broken&lt;br /&gt;#3098 - filepath.FilePath.walk loops forever if there is a symlink pointing back up the file tree&lt;br /&gt;#3033 - mkdir(a); mkdir(a) logs an unhandled error in SFTP&lt;br /&gt;#3054 - Small error in the documentation for pb&lt;br /&gt;#2881 - Add a variable in twisted.python.runtime to check for vista&lt;br /&gt;#2374 - testOpenSSLBuffering fails intermittently on a dapper machine (running in vmware) because it uses reactor.iterate&lt;br /&gt;#2918 - intermittent twisted.test.test_ssl.SpammyTLSTestCase.testUnTLS failure on OS X&lt;br /&gt;#3210 - test_pb.NewCredTestCase is insanely long and causes some intermittent failures&lt;br /&gt;#3119 - trial leaks memory/objects/something&lt;br /&gt;#3052 - twistd logging options needs to be tested&lt;br /&gt;#3266 - Provide tools for managing new deprecation policy&lt;br /&gt;#3191 - in manhole in gnome-terminal_ lines longer than the terminal is wide result in excessive scrolling and duplication&lt;br /&gt;#3105 - symlink support and docstrings in filepath.FilePath.copyTo/moveTo&lt;br /&gt;#3267 - Typo in the Asynchronous Programming howto&lt;br /&gt;#3184 - Trial minimal reporter prints a negative run time in summary&lt;br /&gt;#1410 - spawnProcess on unix doesn't handle case where os.fork fails cleanly&lt;br /&gt;#2305 - twisted/internet/process.py leaks file descriptors when os.fork() raises&lt;br /&gt;#3272 - sorting the --profile output in trial&lt;br /&gt;#3259 - Improved some error messagge in reflect.py&lt;br /&gt;#2713 - trial -u can fail doctests on second pass&lt;br /&gt;#2698 - Build Bug on Cygwin&lt;br /&gt;#914 - xmlrpc.QueryFactory failed to catch some exceptions&lt;br /&gt;#1057 - Incorrect and misleading arg name msSinceEpoch&lt;br /&gt;#2017 - t.w.client.getPage returning ConnectionDone: Connection was closed cleanly error&lt;br /&gt;#1412 - ExpatError on xmlrpc client connection close&lt;br /&gt;#393 - [PATCH] HTTP Basic Auth based guard&lt;br /&gt;#1108 - web2 needs SOAP support&lt;br /&gt;#909 - microdom getElementsByTagName&lt;br /&gt;#687 - web.client needs documentation and/or data-checking for method argument&lt;br /&gt;#165 - [PATCH]Multiple header with same name support in http&lt;br /&gt;&lt;br /&gt;Of particular note, I think, are the following:&lt;br /&gt;&lt;br /&gt;#3213: Prior to this fix, the Twisted SFTP server would leak any file descriptors not closed before the end of an SFTP session.&lt;br /&gt;&lt;br /&gt;#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.&lt;br /&gt;&lt;br /&gt;#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.&lt;br /&gt;&lt;br /&gt;#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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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, &lt;a href="http://buildbot.twistedmatrix.com/"&gt;http://buildbot.twistedmatrix.com/&lt;/a&gt; - 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.&lt;br /&gt;&lt;br /&gt;Thanks to the SFC (&lt;&lt;a href="http://conservancy.softwarefreedom.org/"&gt;http://conservancy.softwarefreedom.org/&lt;/a&gt;&gt;) and all of the sponsors  (&lt;&lt;a href="http://twistedmatrix.com/trac/wiki/TSF/FoundingSponsors"&gt;http://twistedmatrix.com/trac/wiki/TSF/FoundingSponsors&lt;/a&gt;&gt;) who made this possible.&lt;br /&gt;&lt;br /&gt;Jean-Paul&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-6143323455282584?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/6143323455282584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=6143323455282584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/6143323455282584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/6143323455282584'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/06/tsf-sponsored-development.html' title='TSF Sponsored Development'/><author><name>Jean-Paul Calderone</name><uri>http://www.blogger.com/profile/17618512204583118375</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04711372862663071517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-3519934114309367844</id><published>2008-06-04T17:29:00.001-07:00</published><updated>2008-06-04T22:21:04.793-07:00</updated><title type='text'>A Place for Everyone</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;After an &lt;a href="http://twistedmatrix.com/pipermail/twisted-python/2008-May/thread.html#17817"&gt;intense volley&lt;/a&gt; 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: &lt;a href="https://launchpad.net/tx"&gt;&lt;b&gt;Twisted Community Code&lt;/b&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is what &lt;a href="https://launchpad.net/"&gt;Launchpad&lt;/a&gt; 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 &lt;a href="http://twistedmatrix.com/trac/wiki/CommunityCode"&gt;wiki page&lt;/a&gt;, with more info, help, and documentation to come.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://twistedmatrix.com/trac/browser/trunk/doc/development/policy/coding-standard.xhtml?format=raw"&gt;coding standard&lt;/a&gt; and our &lt;a href="http://twistedmatrix.com/trac/wiki/ReviewProcess"&gt;famous review process&lt;/a&gt;? Do we have a place in the community for them? Now, &lt;a href="https://launchpad.net/tx"&gt;the answer to that&lt;/a&gt; is "yes" :-)&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://www.canonical.com/"&gt;Canonical&lt;/a&gt;'s and Launchpad platform, we're starting to do this.&lt;br /&gt;&lt;br /&gt;You might notice that the "Twisted Community Code" lives at the "tx" URL. This came up in the &lt;a href="http://twistedmatrix.com/pipermail/twisted-python/2008-May/thread.html#17817"&gt;email discussions&lt;/a&gt; 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:&lt;br /&gt;&lt;blockquote&gt;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.&lt;br /&gt;&lt;/blockquote&gt;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 &lt;a href="http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python"&gt;Twisted mail list&lt;/a&gt;... you'll likely get a quick response from Phil :-)&lt;br /&gt;&lt;br /&gt;We're hoping that both new Twisted projects and those that have felt alienated in the past can find a home on Launchpad with &lt;a href="https://launchpad.net/tx"&gt;Twisted Community Code Team Alpha Super Awesome Cool Dynamite Wolf Squadron&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-3519934114309367844?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/3519934114309367844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=3519934114309367844' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/3519934114309367844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/3519934114309367844'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/06/place-for-everyone.html' title='A Place for Everyone'/><author><name>Duncan McGreggor</name><uri>http://www.blogger.com/profile/17155270977759488515</uri><email>oubiwann@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11761565810112908517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-268540164063816106</id><published>2008-05-20T11:59:00.001-07:00</published><updated>2008-05-20T11:59:02.503-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tsf'/><category scheme='http://www.blogger.com/atom/ns#' term='twisted'/><title type='text'>ITA, The Twisted Foundation Rockstar</title><content type='html'>&lt;p&gt;This is amazing: the &lt;a href="http://conservancy.softwarefreedom.org/"&gt;Software Freedom Conservancy&lt;/a&gt; has just received a Twisted sponsorship check from &lt;a href="http://www.itasoftware.com/"&gt;ITA&lt;/a&gt;... and it's a big one: $20,000!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.itasoftware.com/"&gt;ITA&lt;/a&gt; is our first Diamond-level sponsor!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We are deeply grateful and excited that our project means so much to people and businesses.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We expect to be able to share some good news about Google, Canonical, and Microsoft in the next week or two, so stay tuned :-)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-268540164063816106?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/268540164063816106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=268540164063816106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/268540164063816106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/268540164063816106'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/05/ita-twisted-foundation-rockstar.html' title='ITA, The Twisted Foundation Rockstar'/><author><name>Duncan McGreggor</name><uri>http://www.blogger.com/profile/17155270977759488515</uri><email>oubiwann@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11761565810112908517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-1336040182969810688</id><published>2008-05-17T12:50:00.001-07:00</published><updated>2008-05-20T12:14:32.325-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='twisted'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrency'/><title type='text'>Twisted in the News</title><content type='html'>&lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;More Thoughts on Concurrency&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The folks at isotoma took some time to &lt;a href="http://blog.isotoma.com/2008/05/some_thoughts_on_concurrency.html"&gt;thoughtfully respond&lt;/a&gt; to my inquiry for more information on the areas where they felt that Twisted was lacking in support of concurrency. This was a &lt;em&gt;fabulous&lt;/em&gt; read. Really well done with some hilarious Steve Yegge quotes. I encourage everyone to check it out (but I won't spoil the ending :-) For related reading, you might want to check out these PDFs (thanks &lt;a href="http://washort.twistedmatrix.com/"&gt;Allen Short&lt;/a&gt;!):&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;&lt;a href="http://dreamsongs.com/Files/DesignBeyondHumanAbilitiesSimp.pdf"&gt;Design Beyond Human Abilities&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.sei.cmu.edu/uls/files/ULS_Book2006.pdf"&gt;Ultra-Large-Scale Systems: The Software Challenge of the Future&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Software Releases&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The open source world has seen some Twisted-related software releases:&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;&lt;a href="http://foolscap.lothar.com/trac"&gt;foolscap&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://beepy.sourceforge.net/"&gt;BEEPy&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=224462"&gt;twlogging&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Buildbot&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;We got a mention in Jon Resig's blog post about &lt;a href="http://ejohn.org/blog/mozilla-build-and-test-integration/"&gt;Mozilla Build and Test Integration&lt;/a&gt; as one of the projects that uses &lt;a href="http://buildbot.net/trac"&gt;Buildbot&lt;/a&gt;. Sadly, he failed to mention that Buidlbot itself is &lt;em&gt;built&lt;/em&gt; with Twisted ;-)&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Press&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.zenoss.com/"&gt;Zenoss&lt;/a&gt;, a &lt;a href="http://twistedmatrix.com/trac/wiki/TSF/FoundingSponsors"&gt;Founding Sponsor&lt;/a&gt; of the &lt;a href="http://twistedsoftwarefoundation.org/"&gt;Twisted Software Foundation&lt;/a&gt;, has issues a &lt;a href="http://www.zenoss.com/news/archive/zenosspressrelease.2008-05-09.2364162990"&gt;press release&lt;/a&gt; about their support of Twisted. Additionally, we're now sponsored by three subsidiaries (&lt;a href="http://www.contentinople.com/"&gt;Contentinople&lt;/a&gt;, &lt;a href="http://www.internetevolution.com/"&gt;Internet Evolution&lt;/a&gt;, and &lt;a href="http://www.lightreading.com/"&gt;Light Reading&lt;/a&gt;) of the publishing megacorp &lt;a href="http://www.unitedbusinessmedia.com/"&gt;UBM&lt;/a&gt; (formerly &lt;a href="http://cmp.com/"&gt;CMP&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Business&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://about.divmod.com/"&gt;Divmod&lt;/a&gt; has a new web site up, where they announce that they're officially providing specialized Twisted services in the form of consulting (full disclosure: I work for Divmod).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-1336040182969810688?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/1336040182969810688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=1336040182969810688' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/1336040182969810688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/1336040182969810688'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/05/twisted-in-news_17.html' title='Twisted in the News'/><author><name>Duncan McGreggor</name><uri>http://www.blogger.com/profile/17155270977759488515</uri><email>oubiwann@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11761565810112908517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-6156817609992926521</id><published>2008-05-09T11:37:00.000-07:00</published><updated>2008-05-09T11:45:09.237-07:00</updated><title type='text'>Zenoss' Twisted Press Release</title><content type='html'>Get it while it's hot: &lt;a href="http://www.zenoss.com/news/archive/zenosspressrelease.2008-05-09.2364162990"&gt;Zenoss Announces Membership in the TSF&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's exciting to see companies supporting Twisted like this; increasing exposure to the community's efforts is one of the best things that can be done by organizations using Twisted.&lt;br /&gt;&lt;br /&gt;Thanks Zenoss!&lt;br /&gt;&lt;br /&gt;&lt;!-- technorati tags start --&gt;&lt;p style="text-align:right;font-size:10px;"&gt;Technorati Tags: &lt;a href="http://www.technorati.com/tag/community" rel="tag"&gt;community&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/tsf" rel="tag"&gt;tsf&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/twisted" rel="tag"&gt;twisted&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-6156817609992926521?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/6156817609992926521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=6156817609992926521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/6156817609992926521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/6156817609992926521'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/05/zenoss-twisted-press-release.html' title='Zenoss&apos; Twisted Press Release'/><author><name>Duncan McGreggor</name><uri>http://www.blogger.com/profile/17155270977759488515</uri><email>oubiwann@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11761565810112908517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-386488475154145435</id><published>2008-05-06T12:11:00.001-07:00</published><updated>2008-05-06T12:13:34.705-07:00</updated><title type='text'>Twisted in the News</title><content type='html'>&lt;strong&gt;An Inflection Point&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In a recent &lt;a href="http://blog.isotoma.com/2008/04/inflection_points_1.html"&gt;blog post&lt;/a&gt;, the London-based &lt;a href="http://www.isotoma.com/about/"&gt;Isotoma consulting firm&lt;/a&gt; gave Twisted a mention. Their post was a commentary on Tim Bray's &lt;a href="http://www.tbray.org/ongoing/When/200x/2008/04/24/Inflection"&gt;Multi-Inflection-Point Alert&lt;/a&gt;, a concise run-down on what's going on with internet tech, as he puts, "right now."&lt;br /&gt;&lt;br /&gt;Isotoma had this to say:&lt;br /&gt;&lt;blockquote&gt;"We’re a lot further down this particular inflection curve than most, I think. We make heavy use of Twisted, a single-threaded cooperatively multitasking network programming system that specifically addresses the threading problem."&lt;/blockquote&gt;They went on to mention that it doesn't seem like a complete solution. I'd love to hear their comments on where they find it lacking, what they'd like to see supported -- either specific features or general thoughts on the future of computing in the consulting industry.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Imitation and Flattery&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Ruby has something called &lt;a href="http://rubyforge.org/projects/eventmachine/"&gt;EventMachine&lt;/a&gt; and was described as implementing the "Twisted-introduced" deferred pattern in a &lt;a href="http://nutrun.com/weblog/distributed-programming-with-jabber-and-eventmachine/"&gt;nutrun post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Mashed and Twisted?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Twisted and &lt;a href="http://divmod.org/trac/wiki/DivmodNevow"&gt;Nevow&lt;/a&gt; made a mashup list on InnovationStartups' blog of &lt;a href="http://nutrun.com/weblog/distributed-programming-with-jabber-and-eventmachine/"&gt;120+ Web Development Resources&lt;/a&gt;. Also on the list were launchpad, rBuilder, Ohloh, Ruby on Rails, MochiKit, Django and Zope.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Scratch that Itch!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jessenoller.com/2008/05/03/twisted-concurrency-with-bruce-e/"&gt;Jesse Noller blogs&lt;/a&gt; about Bruce Eckle's latest Twisted mention, saying "Dangit Bruce gave me the twisted itch again."&lt;br /&gt;&lt;br /&gt;Bruce Eckle talks about &lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=230001"&gt;Concurrency with Python, Twisted, and Flex&lt;/a&gt; in his Artima Developer post, where he also mentions &lt;a href="http://pyamf.org/"&gt;PyAMF&lt;/a&gt; (which I helped update the Twisted docs for :-)).  Bruce takes a quick look at asynchronous programming, object brokering with Twisted, and XML-RPC. I wish he'd used &lt;span style="font-family:monospace;font-size:9pt;"&gt;twisted.application.service&lt;/span&gt; instead of running the reactor directly, but hey -- it's a great Twisted post about stuff that lots of people are using right now :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;New Users&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Paul Stevens blogged about &lt;a href="http://fivefiftyone.blogspot.com/2008/04/getting-twisted-working-on-mac-os-x.html"&gt;setting up Twisted&lt;/a&gt; &lt;a href="http://fivefiftyone.blogspot.com/2008/04/twisted-on-your-mac-redux.html"&gt;on his mac&lt;/a&gt;. He's now off to the races :-) Good luck, Paul! Be sure to stop by IRC and/or post messages on the mail list with questions...&lt;br /&gt;&lt;br /&gt;&lt;!-- technorati tags start --&gt;&lt;p style="text-align:right;font-size:10px;"&gt;Technorati Tags: &lt;a href="http://www.technorati.com/tag/community" rel="tag"&gt;community&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/flex" rel="tag"&gt;flex&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/networking" rel="tag"&gt;networking&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/processing" rel="tag"&gt;processing&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/programming" rel="tag"&gt;programming&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/ruby" rel="tag"&gt;ruby&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/technology" rel="tag"&gt;technology&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/twisted" rel="tag"&gt;twisted&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-386488475154145435?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/386488475154145435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=386488475154145435' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/386488475154145435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/386488475154145435'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/05/twisted-in-news.html' title='Twisted in the News'/><author><name>Duncan McGreggor</name><uri>http://www.blogger.com/profile/17155270977759488515</uri><email>oubiwann@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11761565810112908517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-568209985492286910</id><published>2008-04-23T22:10:00.000-07:00</published><updated>2008-04-23T22:11:12.777-07:00</updated><title type='text'>The Twisted Show: Episode 3</title><content type='html'>In our third installment, we have interviewed &lt;a href="http://www.synthesisstudios.com/"&gt;Synthesis Studios&lt;/a&gt; of Boston, MA. Co-founder Raffi Krikorian gave a fabulous interview with some phenomenal Twisted sound bites. We'll definitely be quoting him!&lt;br /&gt;&lt;br /&gt;One of my favorite bits was the value Raffi sees in Twisted as a tool for improving the &lt;em&gt;actual mind&lt;/em&gt; of the software developer; in particular, finding "outside the box" solutions to challenging problems.&lt;br /&gt; &lt;br /&gt;Check out the interview from either the &lt;a href="http://twistedmatrix.com/trac/wiki/InterviewSynthesis200804"&gt;wiki page&lt;/a&gt; or the &lt;a href="http://thetwistedshow.blogspot.com/"&gt;Twisted Show blog&lt;/a&gt;...&lt;br /&gt;&lt;!-- technorati tags start --&gt;&lt;p style="text-align:right;font-size:10px;"&gt;Technorati Tags: &lt;a href="http://www.technorati.com/tag/community" rel="tag"&gt;community&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/entertainment" rel="tag"&gt;entertainment&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/geeks" rel="tag"&gt;geeks&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/software" rel="tag"&gt;software&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/twisted" rel="tag"&gt;twisted&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-568209985492286910?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/568209985492286910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=568209985492286910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/568209985492286910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/568209985492286910'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/04/twisted-show-episode-3.html' title='The Twisted Show: Episode 3'/><author><name>Duncan McGreggor</name><uri>http://www.blogger.com/profile/17155270977759488515</uri><email>oubiwann@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11761565810112908517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-6230365840346210297</id><published>2008-04-23T16:15:00.000-07:00</published><updated>2008-04-23T16:20:18.332-07:00</updated><title type='text'>April 20th Sprint Report</title><content type='html'>Hello all,&lt;br /&gt;&lt;br /&gt;The first TSF sponsored Twisted sprint is done.  Here's a quick rundown of some of the things that happened (this is the same summary as I sent to the mailing list so you can skip it if you already read it there).&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Glyph Lefkowitz made a huge dent in the current review queue, dealing with more than half of the outstanding tickets.&lt;/li&gt;&lt;li&gt;After some discussion about the value of a bugfix-only release vs a normal bugfix and feature enhancement release, Christopher Armstrong got the wheels rolling on 8.1.0 (which will be of the latter type). You probably already saw the pre1 announcement.  Give it a spin!&lt;/li&gt;&lt;li&gt;Paul Swartz continued to strive towards the goal of Twisted Conch being as soft and cuddly as a little bunny rabbit.&lt;/li&gt;&lt;li&gt;Ying Li worked on permission and ownership features for FilePath.&lt;/li&gt;&lt;li&gt;Jeff Mancuso came by for a while and talked about Twisted Conch performance (and did some benchmarks) and SFTP access control issues.&lt;/li&gt;&lt;li&gt;Roland Hedberg got his hands dirty in pyOpenSSL working on adding an API to get arbitrary X509v3 extensions.&lt;/li&gt;&lt;li&gt;Itamar Shtull-Trauring helped out all around.&lt;/li&gt;&lt;li&gt;I finished fixing some reactor startup and shutdown issues introduced in 8.0.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;We also discussed Twisted's backwards compatibility policy, guided mostly by Jonathan Lange's email of the 18th to this list, with the goal of creating an official document.&lt;br /&gt;&lt;br /&gt;The next sprint is tentatively scheduled for May 18th at the Divmod office.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-6230365840346210297?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/6230365840346210297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=6230365840346210297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/6230365840346210297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/6230365840346210297'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/04/april-20th-sprint-report.html' title='April 20th Sprint Report'/><author><name>Jean-Paul Calderone</name><uri>http://www.blogger.com/profile/17618512204583118375</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04711372862663071517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-521617762917241357</id><published>2008-04-15T09:01:00.001-07:00</published><updated>2008-04-15T17:16:15.570-07:00</updated><title type='text'>Founding Sponsors Window Closes May 15th</title><content type='html'>&lt;strong&gt;Current Founding Sponsors&lt;/strong&gt;: You guys rock! Thanks!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Potential Founding sponsors&lt;/strong&gt;: You too can rock, but you only have a limited window of opportunity in which to do so!&lt;br /&gt;&lt;br /&gt;We were going to set the deadline to April 30th, but we've been so busy working with those of you that have been sponsoring that we didn't get the chance (just look at those awesome logos on the front page!) to send out an email. We wanted to provide people and companies with a 30 day notice, so May 15th it is.&lt;br /&gt;&lt;br /&gt;Thanks again, everyone -- you are helping make Twisted a thriving project that gives you more and more of what you need.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Originally posted on the &lt;/em&gt;&lt;em&gt;&lt;a href="http://twistedmatrix.com/pipermail/twisted-python/2008-April/017451.html"&gt;Twisted Python mail list&lt;/a&gt;&lt;/em&gt;&lt;em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; Thanks to feedback from &lt;a href="http://agiletesting.blogspot.com/" rel="nofollow"&gt;Grig Gheorghiu&lt;/a&gt;, we now have two domains that direct to the TSF page:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://twistedsoftwarefoundation.org/"&gt;twistedsoftwarefoundation.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tsf.name/"&gt;tsf.name&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!-- technorati tags start --&gt;&lt;p style="text-align: right; font-size: 10px;"&gt;Technorati Tags: &lt;a href="http://www.technorati.com/tag/community" rel="tag"&gt;community&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/tsf" rel="tag"&gt;tsf&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/python" rel="tag"&gt;python&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/twisted" rel="tag"&gt;twisted&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-521617762917241357?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/521617762917241357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=521617762917241357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/521617762917241357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/521617762917241357'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/04/founding-sponsors-window-closes-may.html' title='Founding Sponsors Window Closes May 15th'/><author><name>Duncan McGreggor</name><uri>http://www.blogger.com/profile/17155270977759488515</uri><email>oubiwann@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11761565810112908517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-4322588945483955371</id><published>2008-03-27T07:20:00.000-07:00</published><updated>2008-03-27T07:29:14.231-07:00</updated><title type='text'>Twisted 8.0 released!</title><content type='html'>MASSACHUSETTS (DP) -- Version 8.0 of the &lt;a href="http://twistedmatrix.com/"&gt;Twisted networking framework&lt;/a&gt; has been released, Twisted Matrix Laboratories announced Wednesday.&lt;br /&gt;&lt;br /&gt;Enslaved by his new robotic overlords, Master of the Release Christopher Armstrong presented the new package to the Internet on March 26th. Armstrong was unable to comment, because of a device worn around his neck preventing him from doing so, scientists say.&lt;br /&gt;&lt;br /&gt;Secretary of Defense Jean-Paul Calderone was asked about concerns that French interference may have played a role in the delay of this release. "I find such speculation preposterous. Thomas Hervé is an upstanding member of the Labs and his loyalties lie with us. He is a fine addition to our team."  Rumors in the community allege that Secretary Calderone is holding Hervé's cat ransom until the release is successfully distributed. Hervé was unavailable for comment.&lt;br /&gt;&lt;br /&gt;This release comes shortly after the announcement by Chief of Public Affairs Duncan McGreggor that Twisted had joined the Software Freedom Conservancy. "We're happy to join the SFC, and we are now accepting sponsorship. The fact that we are now ruled by a cabal of robots should not put off potential donors. Our robotic overlords are running us at peak efficiency, so we can most effectively distribute The Love."&lt;br /&gt;&lt;br /&gt;Asked about the version number jump in this release, Commander-in-Chief Glyph Lefkowitz had the following to say: "Our benefactors have found our previous dice-rolling version number scheme to be inadequate, and have deigned to propose to us a more... logical system of versioning."&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Twisted 8.0 is a major feature release, with several new features and a great number of bug fixes. Some of the highlights follow.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The IOCP reactor is now much improved and many bugs have been resolved.&lt;/li&gt; &lt;li&gt;Twisted is now easy_installable.&lt;/li&gt; &lt;li&gt;Many improvements were made to Trial, Twisted's unit testing system.&lt;/li&gt; &lt;li&gt;A new memcache client protocol implementation was added.&lt;/li&gt; &lt;li&gt;&lt;a href="http://twistedmatrix.com/trac/browser/tags/releases/twisted-8.0.1/NEWS?format=raw"&gt;So much more&lt;/a&gt;!&lt;/li&gt;&lt;/ul&gt;To see the full list of changes in its fifteen kilobytes of glory, &lt;a href="http://twistedmatrix.com/trac/browser/tags/releases/twisted-8.0.1/NEWS?format=raw"&gt;see the release notes&lt;/a&gt;. We welcome you to download and enjoy, and please &lt;a href="http://twistedmatrix.com/"&gt;file any bugs&lt;/a&gt; you find and send comments to the &lt;a href="http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python"&gt;mailing list&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Why the large version number bump? We've decided to switch to a time-based versioning scheme. "8.0" means the first release in 2008.&lt;br /&gt;&lt;br /&gt;Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-4322588945483955371?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/4322588945483955371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=4322588945483955371' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/4322588945483955371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/4322588945483955371'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/03/twisted-80-released.html' title='Twisted 8.0 released!'/><author><name>Christopher Armstrong</name><uri>http://www.blogger.com/profile/11041638059246049826</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='12167247497581436023'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267458971896358542.post-5986976666977133525</id><published>2008-03-16T15:30:00.000-07:00</published><updated>2008-04-15T17:13:55.723-07:00</updated><title type='text'>Twisted Announces Membership in the Software Freedom Conservancy</title><content type='html'>&lt;p&gt;At PyCon 2008 we were delighted to share some good news with the Python community: the announcement of the &lt;a class="wiki" href="http://twistedmatrix.com/trac/wiki/TwistedSoftwareFoundation"&gt;Twisted Software Foundation&lt;/a&gt;. Glyph had previously emailed the Twisted mail list, letting those close to the project know of this major event shortly after the paperwork was signed. Before we brought this before a more public audience, we wanted to give companies a chance to become "founding sponsors" -- and this is what has happened at PyCon. We're looking forward to issuing a formal press release about this (including info on the founding sponsors) and will have more details in the near future.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;We would like to send a special thank-you out to those sponsors who made contributions immediately. In order of contribution, they are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Chris Armstrong&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Michel Pelletier&lt;br /&gt;&lt;/li&gt;&lt;li&gt;AdytumSolutions, Inc.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;tummy.com&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Drew Perttula&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Glenn Tarbox&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ilya Novoselov&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Read the initial announcement &lt;a href="http://twistedmatrix.com/pipermail/twisted-python/2008-February/016740.html"&gt;here&lt;/a&gt;. If the video for the announcement made at PyCon gets published somewhere, we will post an update.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; Thanks to feedback from &lt;a href="http://agiletesting.blogspot.com/" rel="nofollow"&gt;Grig Gheorghiu&lt;/a&gt;, we now have two domains that direct to the TSF page:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://twistedsoftwarefoundation.org/"&gt;twistedsoftwarefoundation.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tsf.name/"&gt;tsf.name&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267458971896358542-5986976666977133525?l=labs.twistedmatrix.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://labs.twistedmatrix.com/feeds/5986976666977133525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1267458971896358542&amp;postID=5986976666977133525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/5986976666977133525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267458971896358542/posts/default/5986976666977133525'/><link rel='alternate' type='text/html' href='http://labs.twistedmatrix.com/2008/03/twisted-announces-membership-in.html' title='Twisted Announces Membership in the Software Freedom Conservancy'/><author><name>Duncan McGreggor</name><uri>http://www.blogger.com/profile/17155270977759488515</uri><email>oubiwann@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11761565810112908517'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>