Hey, I think some Twisted related sessions at PyCon would be great.<br>Based on what's been discussed so far, I would like to humbly suggest<br>the following (kind of breaking it down):<br><br>1) Simple line based chat server/client.<br>
2) Same thing except using AMP.<br>3) twistd and plugins<br>4) Axiom! (could show how to 'install' and launch the chat service using axiomatic and a plugin)<br><br>(Axiom rocks and I personally think it should be packaged along with Twisted itself. :)<br>
<br>Maybe that is too much for folks just starting out, but I think it could be<br>presented in a way that is easily grokked.<br><br>As far as reading material for the above (I'm certain to be redundant here, but eh):<br>
<a href="http://twistedmatrix.com/projects/core/documentation/howto/servers.html">http://twistedmatrix.com/projects/core/documentation/howto/servers.html</a><br><a href="http://twistedmatrix.com/projects/core/documentation/howto/clients.html">http://twistedmatrix.com/projects/core/documentation/howto/clients.html</a><br>
<a href="http://twistedmatrix.com/trac/browser/trunk/twisted/protocols/amp.py">http://twistedmatrix.com/trac/browser/trunk/twisted/protocols/amp.py</a> (docstrings)<br><a href="http://twistedmatrix.com/projects/core/documentation/howto/tap.html">http://twistedmatrix.com/projects/core/documentation/howto/tap.html</a><br>
<a href="http://www.divmod.org/trac/wiki/DivmodAxiom/WhyAxiom">http://www.divmod.org/trac/wiki/DivmodAxiom/WhyAxiom</a><br><a href="http://www.divmod.org/trac/wiki/Axiomatic">http://www.divmod.org/trac/wiki/Axiomatic</a><br>
<a href="http://www.divmod.org/trac/wiki/DivmodAxiom/Reference">http://www.divmod.org/trac/wiki/DivmodAxiom/Reference</a><br><br>-Cary<br><br><div class="gmail_quote">On Jan 23, 2008 7:47 PM, Steve Holden <<a href="mailto:steve@holdenweb.com">steve@holdenweb.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">alex clemesha wrote:<br>><br>><br>> On Jan 23, 2008 4:36 PM, <<a href="mailto:glyph@divmod.com">glyph@divmod.com</a> <mailto:<a href="mailto:glyph@divmod.com">glyph@divmod.com</a>>> wrote:<br>
<div><div></div><div class="Wj3C7c">><br>> On 12:10 am, <a href="mailto:clemesha@gmail.com">clemesha@gmail.com</a> <mailto:<a href="mailto:clemesha@gmail.com">clemesha@gmail.com</a>> wrote:<br>> >Thanks Steve Holden for organizing this, it's a great idea.<br>
><br>> Indeed!<br>> >Some nice topics might include:<br>><br>> Thanks for the suggestions. Do you have any others? :-)<br>><br>> For my usage of twisted, these are important to me and I am<br>
> the most familiar with them. (See below)<br>><br>><br>> I hate to<br>> rain on your parade here, but I think maybe my explanation of why I<br>> don't like these suggestions will spark discussion of more different<br>
> ones...<br>> >a) Start off simple with a " twisted.web2" example (everyone "gets"<br>> >http)<br>><br>> I think that this is actually something we should avoid in a tutorial.<br>
> The web situation in Twisted is complicated<br>> ( <a href="http://twistedmatrix.com/trac/wiki/WebDevelopmentWithTwisted" target="_blank">http://twistedmatrix.com/trac/wiki/WebDevelopmentWithTwisted</a>).<br>
> web2 in<br>> particular is suffering from an extreme lack of maintenance and still<br>> has never "officially" been released; work is just starting to get<br>> underway to unify t.web2 and nevow into t.web and reduce the confusion,<br>
> but this is all still in progress and who knows when, how, or even if it<br>> will be completed.<br>><br>><br>> Oh yes, I know, I know. While learning twisted I read *most* (that's<br>> alot ;)<br>
> of posts to the twisted-web mailing list. So I am very familiar with<br>> the state.<br>><br></div></div>Interesting. I am also subscribed to the twisted.web newsgroup, and I<br>have been surprised about how quiet it's been. I imagine that if<br>
twisted.web2 would be very good for things like high-volume web services<br>work. It has relatively few advantages in the heavily-competitive<br>templating world, and I have to say that my early experience with Nevow,<br>
while it caused me to admire the system, wasn't entirely trouble-free. I<br>think that may be partly because it wasn't being used in a Twisted<br>environment (I'm thinking of the <a href="http://python.org" target="_blank">python.org</a> reorganization that was put<br>
in effect after PyCon 2006).<br><div class="Ih2E3d"><br>> That said, oh how I wish you guys could make twisted.web2 the one and<br>> only!!!<br>> It would be good for beginners and others alike.<br>><br>> Note however: I can only barely imagine how hard that might be,<br>
> so I am *definitely not* complaining ... Twisted is excellent, thanks<br>> very much for it.<br>><br></div>Hear, hear. And the world needs to know, hence my enthusiasm for "Teach<br>Me Twisted".<br><div class="Ih2E3d">
<br>><br>> If you get a group of experienced Twisted folks<br>> together to talk about writing web applications, you're more likely to<br>> spark a debate than an educational session.<br>><br>
</div>Twisted's not alone there, of course.<br><div class="Ih2E3d"><br>> Even if all these problems were fixed, and there were a really good,<br>> well-supported, universally understood web server for Twisted, the<br>
> benefits of Twisted's programming model are not immediately obvious to<br>> the bread and butter of the web programming world. Learning how to use<br>> some combination of Twisted tools to generate a web page will always be<br>
> at least a little bit harder than writing the sort of glorified CGI<br>> script that most web frameworks require these days - unless you're<br>> using<br>> something like Athena, which might be too much complexity to address in<br>
> a single tutorial session. (And while Athena is more polished and "one<br>> right way" than the lower-level HTTP stuff, there is still a painful<br>> dearth of documentation, not to mention the fact that you need to write<br>
> JavaScript as well as Python.)<br>><br></div>Right. I think a Django replacement might be a bit ambitious for an open<br>space session or two ...<br><br>Maybe once I get into Twisted I'll be able to lend a hand with t.w2<br>
development (or maybe not).<br><div class="Ih2E3d"><br>><br>> "Comet" (aka what Athena does) is one of my main uses of twisted, see<br>><br>> <a href="http://svn.xantus.org/shortbus/trunk/cometd-twisted/" target="_blank">http://svn.xantus.org/shortbus/trunk/cometd-twisted/</a><br>
><br>> is some code that I use.<br>><br>> That and other ajax-y stuff. Not much templating html, etc.<br>><br></div>That's neat, but definitely a few too many layers for a starter project.<br><div class="Ih2E3d">
><br>><br>> Twisted really shines best when you're writing a client as well as a<br>> server. Chat is the quintessential application where Twisted makes the<br>> most sense - and the lack of a well-documented chat server is much less<br>
> of a problem than the lack of a well-documented web server, since you<br>> can easily define a wire protocol and wacky semantics for your purpose-<br>> built tutorial chat application.<br>><br>> Yes!<br>
><br></div>I'd suggest possibly a client/server game , but I am under the<br>impression that's already taken care of.<br><div class="Ih2E3d">><br>><br>> >b) then plug that into a simple sqlite database using<br>
> >" twisted.enterprise"<br>><br>> twisted.enterprise is similarly a scary and inconsistent area, and<br>> requires understanding the interaction of the DB thread and the reactor<br>> thread. (And at least part of this section would have to be dedicated<br>
> to "and never, ever touch anything in this package aside from adbapi".)<br>><br></div>We'll definitely stay away from that, then.<br><div class="Ih2E3d">><br>> I only ever use 'adbapi'. The reason I say this is database functionality<br>
> is pretty darn important for all non-trivial programs, so programmers<br>> need/want<br>> to know about this functionality, wouldn't you agree?<br>><br></div>Important but not fundamental, I'd say.<br>
<div class="Ih2E3d">><br>><br>> >d) Show how using "twistd" is really convient<br>> >(i.e. "twistd -ny server.tac" and "twistd -y server.tac", with some<br>> >logging<br>
> >capability, etc)<br>><br></div>Yes, yes, yes! If I could come away with a clear understanding of how a<br>.tac file encapsulated one or more Twisted network services I'd be happy.<br><div class="Ih2E3d">
<br>> This, however, is a great suggestion. Twisted plugins should be<br>> part of<br>> this discussion.<br>><br>> Yes.<br>><br>><br>> Thanks again for Twisted!<br>><br></div>This is great. Keep it coming! Still looking for reading suggestions ...<br>
<div class="Ih2E3d"><br>regards<br> Steve<br>--<br>Steve Holden +1 571 484 6266 +1 800 494 3119<br>Holden Web LLC <a href="http://www.holdenweb.com/" target="_blank">http://www.holdenweb.com/</a><br>
<br><br>_______________________________________________<br></div><div><div></div><div class="Wj3C7c">Twisted-Python mailing list<br><a href="mailto:Twisted-Python@twistedmatrix.com">Twisted-Python@twistedmatrix.com</a><br>
<a href="http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python" target="_blank">http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python</a><br></div></div></blockquote></div><br><br clear="all"><br>-- <br>
01100011 01100001 01110010 01111001