<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<br>
-----BEGIN PGP SIGNED MESSAGE-----<br>
Hash: SHA1<br>
<br>
Hola de nuevo:<br>
<br>
Pues Piranna tiene razón, así que ahí va mi propuesta: formar
primeramente dos "equipos" de tres personas, uno digamos del lado de
Twisted y otro de las alternativas a Twisted. Estas seis personas
debatirían, desde un punto de vista técnico y de forma moderada (o
sea, con un moderador), los pros y contras de las diferentes
alternativas (Twisted y lo que no es Twisted). ¿Quienes están
dispuestos a incorporarse a uno y otro equipo?. Ya que he hecho la
propuesta, me ofrezco como moderador, aunque va a ser un trabajo
muuuy difícil.<br>
<br>
Jesús Cea propone en un mensaje el establecer un reto, aceptado
por ambos equipos, de forma que se pueda enseñar código escrito
usando Twisted y usando una alternativa a Twisted, ¿qué os parece?.
Entiendo que ese reto debería definirse una vez establecidos los
equipos.<br>
<br>
Es una pena Aitor que no puedas estar, entiendo que una persona
con tu experiencia sería una gran aportación en este debate.<br>
<br>
Por otro lado la propuesta que ha hecho Kiko también me parece
interesante, no sé si habrá tiempo en la próxima charla (posible
debate) de ver algo de este tema, pero si hay gente con propuestas
en este sentido, que lo indiquen y así reservamos una parte del
tiempo en el próximo encuentro para comentarlos.<br>
<br>
Bueno, por supuesto esta es mi propuesta respecto al debate,
pero toda sugerencia, propuesta de como organizarlo, etc, es
bienvenida.<br>
<br>
Un saludo.<br>
<br>
El 21/04/12 09:49, <a class="moz-txt-link-abbreviated" href="mailto:piranna@gmail.com">piranna@gmail.com</a> escribió:<br>
<span style="white-space: pre;">><br>
> Primero a ver si nos ponemos de acuerdo en si nos los tiramos
o no y de que forma, porque todavia no lo tengo claro...<br>
><br>
> Sent from my Android cell phone, please forgive the lack of
format on the text, and my fat thumbs :-P<br>
><br>
> El 21/04/2012 09:06, "Alberto Chamorro"
<<a class="moz-txt-link-abbreviated" href="mailto:a.chamorro.ruiz@gmail.com">a.chamorro.ruiz@gmail.com</a>
<a class="moz-txt-link-rfc2396E" href="mailto:a.chamorro.ruiz@gmail.com"><mailto:a.chamorro.ruiz@gmail.com></a>> escribió:<br>
><br>
> Puedo prometer y prometo que me he leído todo!! Guau!! Estoy
deseando llegar a la reunión y ver como os tiráis trastos ("de
codigo") a la cabeza!<br>
><br>
> El 20 de abril de 2012 23:48, Aitor Guevara
<<a class="moz-txt-link-abbreviated" href="mailto:aitorciki@gmail.com">aitorciki@gmail.com</a> <a class="moz-txt-link-rfc2396E" href="mailto:aitorciki@gmail.com"><mailto:aitorciki@gmail.com></a>>
escribió:<br>
><br>
> En fin, creo que esto puede hacerse eterno, porque tiene
mucho más que<br>
> ver con gustos personales que con limitaciones técnicas.<br>
><br>
> Si Twisted fuese inusable y la gente no quisiese "ni tocarlo
con un<br>
> palo", llevaría muerto años (lleva casi 10 dando guerra). En
cambio en<br>
> la lista de proyectos gordos que lo usan<br>
> (<a class="moz-txt-link-freetext" href="http://twistedmatrix.com/trac/wiki/SuccessStories">http://twistedmatrix.com/trac/wiki/SuccessStories</a>) veo
cantidad de<br>
> cosas no sólo nuevas, sino tremendamente exitosas (HipChat,
TweetDeck,<br>
> JustinTV, ...). OpenStack levanta una expectación brutal, y
ahí lo<br>
> tienes, Twisted de los pies a la cabeza.<br>
><br>
> Evidentemente, que otros lo usen o no no lo convierte en
bueno o malo,<br>
> pero la gente detrás de esos productos precisamente tontos no
son.<br>
><br>
> Varios puntos que se han tocado estos días, y como lo veo yo,
por si a<br>
> alguien le interesa (lo que sigue es un buen tochaco,
avisados<br>
> estáis):<br>
><br>
> * Twisted es complicado, no es Pythonico<br>
><br>
> Sí pero no :) Escribir software de red asíncrono de cierto
tamaño es<br>
> complicado, se use la herramienta que se use. Si alguien cree
en<br>
> librerías mágicas que eliminan toda la complejidad y permiten
crear<br>
> sistemas para cientos de miles de usuarios como si fuese un
script<br>
> chorra, se equivoca, y punto.<br>
><br>
> Que la herramienta me permita trabajar de manera más
eficiente,<br>
> pudiendo escribir menos (Python es muy expresivo) y
facilitando que el<br>
> código sea legible (Python desde luego apuesta por esa vía),
perfecto.<br>
> Que pretenda "ocultar" la complejidad inherente al sistema ya
no me<br>
> gusta tanto, eso no suele acabar bien. Y no acaba bien porque
cuando<br>
> las cosas empiezan a petar bajo carga, es muy probable que
los errores<br>
> ocurran fuera de mi comprensión del sistema, y ahora ves a
entender la<br>
> magia que hace la librería x.<br>
><br>
> Del famoso Zen de Python, mi afirmación favorita es "Explicit
is<br>
> better than implicit." Creo que es lo que distingue a Python
de Ruby,<br>
> donde mucha magia ocurre de manera implícita. Twisted es
explícito en<br>
> su tratamiento de la asincronía, sí, y eso para mí es bueno.
Más<br>
> cuando mi modelo mental de asincronía encaja muy bien con lo
que<br>
> propone Twisted.<br>
><br>
> * Twisted es un framework, te obliga a hacer las cosas a su
manera, eso es malo<br>
><br>
> Sí pero no :) Entiendo que, según las necesidades del
software que se<br>
> escribe, Twisted es matar moscas a cañonazos. Como lo es usar
Django<br>
> para según que aplicaciones web pequeñas. Pero no parece que
a Django<br>
> o Ruby on Rails les vaya mal por ser frameworks, parece que a
la gente<br>
> les son bien útiles.<br>
><br>
> Si sólo quiero hacer unas cuantas peticiones HTTP a un
servicio de por<br>
> ahí, mover toda mi aplicación al modelo reactor / deferred de
Twisted<br>
> es una locura, sin duda. Ahora bien, si pretendo escribir un
proceso<br>
> que sirve HTTP y HTTPS, además de ser cliente de otro
servicio web,<br>
> que ofrece una interfaz SSH a su estado de ejecución, usa su
propia<br>
> política de resolución de DNS por temas de geolocalización y
cache, y<br>
> que también es servidor de WebSocket, Twisted es excelente.
Es<br>
> excelente porque ese programa es, en el 90%, código de red
que implica<br>
> varios protocolos como cliente y servidor. Puedo usar 8
librerías<br>
> distintas, sí, y hacer que de algún modo funcionen juntas, y
adaptarme<br>
> a las peculiaridades de cada una. O puedo usar Twisted y
escribir toda<br>
> esa funcionalidad de manera integrada y con un único estilo.<br>
><br>
> Y no, no es un caso de uso inventado, es el tipo de software
que llevo<br>
> años escribiendo para ganarme el pan :)<br>
><br>
> * Twisted es feo, echa para atrás, nadie querría ni tocarlo
con un palo, ...<br>
><br>
> Mmmm, un poco sí, pero no :) Me costó introducirme en el
modelo<br>
> Twisted, viniendo del código procedural de toda la vida,
habían cosas<br>
> que no me encajaban. Además, todo ese camel case es horrible
xD. Pero<br>
> en algún momento se produjo un "click" en mi cabeza (como a
la semana<br>
> de usarlo, vamos, no penséis que lleva años) y de golpe todo
tenía<br>
> todo el sentido del mundo. El modelo de eventos, los
protocolos, las<br>
> cadenas de callbacks, de golpe todo encaja.<br>
><br>
> Ahora mismo me costaría mucho pensar en código asíncrono de
manera no<br>
> orientada a eventos. Los eventos me parecen una manera muy
natural de<br>
> pensar: cuando pase x, haz y. No importa cuando sea, no
esperes a que<br>
> ocurra bloqueando. Yo te digo que cuando ocurra, quiero que
lo hagas,<br>
> y ya está. Como digo me parece muy natural. La sintaxis puede
gustar<br>
> más o menos, pero como con todo, es una simple cuestión de
costumbre.<br>
><br>
> * Resumiendo, que es gerundio.<br>
><br>
> Entiendo que Twisted no guste a todo el mundo. De hecho, no
está<br>
> pensado para ser usado en cualquier proyecto, sólo en
aquellos<br>
> proyectos donde la comunicación de red es el núcleo del
software. Y<br>
> eso es una pequeña porción de todo el software que se
escribe.<br>
><br>
> Ahora bien, llevo cerca de 5 años escribiendo sistemas en
Twisted.<br>
> Sistemas que han soportado cargas totalmente locas (en
Flumotion<br>
> llegamos a tener cerca de 40Gbit/s de upload haciendo
streaming para<br>
> Antena3, TVE y otros). Me gusta Twisted, disfruto
escribiéndolo y<br>
> conozco a mucha gente que también lo hace. Es una solución
excelente<br>
> para un tipo dado de problema, y no valorarlo como tal por
prejuicios<br>
> me parece un error.<br>
><br>
> Pero al final, todo es cuestión de gustos, si alguien no
quiere<br>
> usarlo, por mi perfecto. Pero si alguien tiene curiosidad, mi
consejo<br>
> es que no se deje asustar por tanto odio en la lista :)<br>
><br>
> Ala, my two cents :)<br>
><br>
> On Fri, Apr 20, 2012 at 20:21, Jesus Cea <<a class="moz-txt-link-abbreviated" href="mailto:jcea@jcea.es">jcea@jcea.es</a>
<a class="moz-txt-link-rfc2396E" href="mailto:jcea@jcea.es"><mailto:jcea@jcea.es></a>> wrote:<br>
> On 20/04/12 20:02, Josep Danti wrote:<br>
> > >> Hay algún caso en el que creo que gana twisted.
Si se quieren usar<br>
> > >> puertos serie, twisted lo tiene implementado.
gevent no lo tiene<br>
> > >> por lo que en el primer read se quedaría
bloqueado. Habría que<br>
> > >> implementar el servicio con greenlets ¿verdad?
En general veo que<br>
> > >> Twisted tiene más protocolos.<br>
><br>
> Como ya he dicho, twisted es un framework.<br>
><br>
> Resumido, en cuanto tu código toca twisted, tiene que
adaptarse a él y<br>
> se vuelve dependiente, y si quieres usar una librería no
soportada, ya<br>
> puedes reescribirla...<br>
><br>
> Eso provoca que twisted incluya mucho ecosistema alrededor.
Pero es<br>
> precisamente porque no se habla con nadie, así que todo lo
que quieras<br>
> hacer depende de twisted. Básicamente twisted es un mundo
aparte,<br>
> incluyo soporte de muchas cosas porque no es posible usar
librerías<br>
> "normales".<br>
><br>
> Otros proyectos usando greenlets, por ejemplo, y con un
simple<br>
> "monkeypatching" del módulo "socket" (trivial) pueden
utilizar<br>
> CUALQUIER librería de terceros. Naturalmente, estos proyectos
no<br>
> incluyen apenas nada "de serie". No lo necesitan, porque usan<br>
> cualquier librería python que encuentres y que te venga bien.
No es<br>
> necesario que esa librería esté programada para "twisted".<br>
><br>
> Ejemplo simple:<br>
><br>
> Si mi libreria hace "monkeypatch" de "socket" haciendo que
cualquier<br>
> lectura o escritura se meta automáticamente en un "select" y
que ese<br>
> "greenlet" se pare o se reanude cuando toca, mi programa
puede usar<br>
> CUALQUIER librería de la biblioteca estándar, como "smtplib"
para<br>
> enviar 1000 mensajes en paralelo sin tener que tocar esa
librería y<br>
> sin lanzar ni un solo hilo.<br>
><br>
> Eso con twisted no se puede hacer.<br>
><br>
> Así que sí, twisted incluye muchas cosa de serie... porque no
tiene<br>
> más remedio. Si necesitas algo que no está ahí, o no te gusta
cómo lo<br>
> hace... prepárate a sufrir.<br>
><br>
> En su caso, si manejas el puerto serie como un fichero,
puedes usar<br>
> "select" o similares. Si tienes que hacer muchas más cosas a
la vez,<br>
> greenlets con un pelín de monkeypatching, o una librería
específica<br>
> como gevent o similar.<br>
><br>
> PS: Yo sigo usando "poll" de forma masiva.<br>
><br>
> --<br>
> Jesus Cea Avion _/_/ _/_/_/ _/_/_/<br>
> <a class="moz-txt-link-abbreviated" href="mailto:jcea@jcea.es">jcea@jcea.es</a> <a class="moz-txt-link-rfc2396E" href="mailto:jcea@jcea.es"><mailto:jcea@jcea.es></a> -
<a class="moz-txt-link-freetext" href="http://www.jcea.es/">http://www.jcea.es/</a> _/_/ _/_/ _/_/ _/_/ _/_/<br>
> jabber / <a class="moz-txt-link-freetext" href="xmpp:jcea@jabber.org">xmpp:jcea@jabber.org</a>
<a class="moz-txt-link-rfc2396E" href="mailto:xmpp%3Ajcea@jabber.org"><mailto:xmpp%3Ajcea@jabber.org></a> _/_/ _/_/ _/_/_/_/_/<br>
> . _/_/ _/_/ _/_/ _/_/ _/_/<br>
> "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/<br>
> "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/<br>
> "El amor es poner tu felicidad en la felicidad de otro" -
Leibniz<br>
> ><br>
> > --<br>
> > Grupo de usuarios de python ubicados en Madrid<br>
> > <a class="moz-txt-link-freetext" href="http://groups.google.es/group/python-madrid">http://groups.google.es/group/python-madrid</a><br>
> > <a class="moz-txt-link-freetext" href="http://python-madrid.es">http://python-madrid.es</a><br>
> > <a class="moz-txt-link-freetext" href="http://twitter.com/#!/python_madrid">http://twitter.com/#!/python_madrid</a><br>
> > Para darte de baja del grupo envía un mensaje a
<a class="moz-txt-link-abbreviated" href="mailto:python-madrid+unsubscribe@googlegroups.com">python-madrid+unsubscribe@googlegroups.com</a>
<a class="moz-txt-link-rfc2396E" href="mailto:python-madrid%2Bunsubscribe@googlegroups.com"><mailto:python-madrid%2Bunsubscribe@googlegroups.com></a><br>
><br>
> --<br>
> Grupo de usuarios de python ubicados en Madrid<br>
> <a class="moz-txt-link-freetext" href="http://groups.google.es/group/python-madrid">http://groups.google.es/group/python-madrid</a><br>
> <a class="moz-txt-link-freetext" href="http://python-madrid.es">http://python-madrid.es</a><br>
> <a class="moz-txt-link-freetext" href="http://twitter.com/#!/python_madrid">http://twitter.com/#!/python_madrid</a><br>
> Para darte de baja del grupo envía un mensaje a
<a class="moz-txt-link-abbreviated" href="mailto:python-madrid+unsubscribe@googlegroups.com">python-madrid+unsubscribe@googlegroups.com</a>
<a class="moz-txt-link-rfc2396E" href="mailto:python-madrid%2Bunsubscribe@googlegroups.com"><mailto:python-madrid%2Bunsubscribe@googlegroups.com></a><br>
><br>
><br>
> -- <br>
> Grupo de usuarios de python ubicados en Madrid<br>
> <a class="moz-txt-link-freetext" href="http://groups.google.es/group/python-madrid">http://groups.google.es/group/python-madrid</a><br>
> <a class="moz-txt-link-freetext" href="http://python-madrid.es">http://python-madrid.es</a><br>
> <a class="moz-txt-link-freetext" href="http://twitter.com/#!/python_madrid">http://twitter.com/#!/python_madrid</a><br>
> Para darte de baja del grupo envía un mensaje a
<a class="moz-txt-link-abbreviated" href="mailto:python-madrid+unsubscribe@googlegroups.com">python-madrid+unsubscribe@googlegroups.com</a>
<a class="moz-txt-link-rfc2396E" href="mailto:python-madrid%2Bunsubscribe@googlegroups.com"><mailto:python-madrid%2Bunsubscribe@googlegroups.com></a><br>
><br>
> -- <br>
> Grupo de usuarios de python ubicados en Madrid<br>
> <a class="moz-txt-link-freetext" href="http://groups.google.es/group/python-madrid">http://groups.google.es/group/python-madrid</a><br>
> <a class="moz-txt-link-freetext" href="http://python-madrid.es">http://python-madrid.es</a><br>
> <a class="moz-txt-link-freetext" href="http://twitter.com/#!/python_madrid">http://twitter.com/#!/python_madrid</a><br>
> Para darte de baja del grupo envía un mensaje a
<a class="moz-txt-link-abbreviated" href="mailto:python-madrid+unsubscribe@googlegroups.com">python-madrid+unsubscribe@googlegroups.com</a></span><br>
<br>
-----BEGIN PGP SIGNATURE-----<br>
Version: GnuPG v1.4.11 (Darwin)<br>
Comment: GPGTools - <a class="moz-txt-link-freetext" href="http://gpgtools.org">http://gpgtools.org</a><br>
<br>
iEYEARECAAYFAk+UiXMACgkQnPFBatEMYOejXgCgoSNpVdLBh9rHV9rmp7mdacNk<br>
MBEAoNJuDOL+DflELQNkX3B50aog9g/B<br>
=4lq7<br>
-----END PGP SIGNATURE-----<br>
<br>
</body>
</html>
<p></p>
-- <br />
Grupo de usuarios de python ubicados en Madrid<br />
<a href="http://groups.google.es/group/python-madrid">http://groups.google.es/group/python-madrid</a><br />
<a href="http://python-madrid.es">http://python-madrid.es</a><br />
<a href="http://twitter.com/#!/python_madrid">http://twitter.com/#!/python_madrid</a><br />
Para darte de baja del grupo envía un mensaje a python-madrid+unsubscribe@googlegroups.com<br />