[Twisted-Python] regarding callbacks.
![](https://secure.gravatar.com/avatar/720afc713bf3bbe1e97a4a1015cf4e88.jpg?s=120&d=mm&r=g)
Hi Guys I was reading http://technicae.cogitat.io/2012/03/conversation-with-guido-about-callbacks.... . I'm not done with it yet but I'm sure some of you would have already read this. Would there be any changes required in Twisted code because of the views in this blog ? Or put it in another way, is there anything we can take from it that we can use to help make Twisted better ? regards moijes12
![](https://secure.gravatar.com/avatar/e1554622707bedd9202884900430b838.jpg?s=120&d=mm&r=g)
On Apr 30, 2012, at 4:57 AM, moses dsouza wrote:
I was reading http://technicae.cogitat.io/2012/03/conversation-with-guido-about-callbacks.... . I'm not done with it yet but I'm sure some of you would have already read this. Would there be any changes required in Twisted code because of the views in this blog ? Or put it in another way, is there anything we can take from it that we can use to help make Twisted better ?
I don't think so. Most of what Guido wants is already available via inlineCallbacks, and the drawbacks of using that are documented pretty well in the comments there. I also have some issues with the premises and conclusions of that article. For example, batching, pipelining and pooling are all easier to implement with a callback-driven style. I think that article is mainly about aesthetic choices, and the culture of the Python community. However, it does highlight the need to document the reasons why things are the way that they are in the Twisted world, so that the broader Python community understands that it's not weird for the sake of weird; but this is a documentation issue. For example, Node.JS doesn't have this problem, despite having a much worse convention of callback spaghetti (as far as I know, they don't have an abstraction analogous to a Deferred yet); this is because the JavaScript community has already accepted callbacks and is intimately familiar with them before approaching Node for the first time. There are a few analogues in Python (for example, GUI toolkit programming) but a smaller proportion of the community at large are familiar with that style. But, if you can think of something actionable that would make Twisted better based on that blog post - or anything else, for that matter! - feel free to file a ticket. -glyph
![](https://secure.gravatar.com/avatar/1ad090ce5daf76c3549f0970637704be.jpg?s=120&d=mm&r=g)
On Mon, Apr 30, 2012 at 4:15 PM, Glyph <glyph@twistedmatrix.com> wrote:
On Apr 30, 2012, at 4:57 AM, moses dsouza wrote:
I don't think so. Most of what Guido wants is already available via inlineCallbacks, and the drawbacks of using that are documented pretty well in the comments there. I also have some issues with the premises and conclusions of that article. For example, batching, pipelining and pooling are all easier to implement with a callback-driven style.
I think that article is mainly about aesthetic choices, and the culture of the Python community. However, it does highlight the need to document the reasons why things are the way that they are in the Twisted world, so that the broader Python community understands that it's not weird for the sake of weird; but this is a documentation issue. For example, Node.JS doesn't have this problem, despite having a much worse convention of callback spaghetti (as far as I know, they don't have an abstraction analogous to a Deferred yet); this is because the JavaScript community has already accepted callbacks and is intimately familiar with them before approaching Node for the first time. There are a few analogues in Python (for example, GUI toolkit programming) but a smaller proportion of the community at large are familiar with that style.
Several large JS toolkits have the concept of a Deferred or a Promise. MochiKit stole Twisted's, where it got forked into Dojo, and then forked into Google's Closure library. jQuery has a separate Deferred implementation that looks like Twisted's, and is similar enough that we can call it a Deferred, although I know a few people who object to that. This is a bit off-topic, but generators are expected to be in Harmony (they're already in Mozilla's JS, stolen wholesale from Python). The latest specification draft has "yield" as a future reserved word, and has a reference to an undefined "YieldExpression", though this may just be an editing oversight. Right now, you could implement inlineCallbacks in Mozilla JavaScript.
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
-- Jasper
![](https://secure.gravatar.com/avatar/600622ecee46188f0b8abd95b3a8df64.jpg?s=120&d=mm&r=g)
On Mon, Apr 30, 2012 at 20:45, Jasper St. Pierre <jstpierre@mecheye.net> wrote:
Right now, you could implement inlineCallbacks in Mozilla JavaScript.
A few years ago, I confirmed that this actually works: http://ludios.org/js-inlineCallbacks-POC/ (though the above is inconvenient to use because it relied on my fork of Divmod's JS). I think there has been similar work in the node.js world. I recall some node.js forks that run on SpiderMonkey just so that they can use its `yield`. Ivan
participants (4)
-
Glyph
-
Ivan Kozik
-
Jasper St. Pierre
-
moses dsouza