<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>
¿Qué ha pasado?, ¿ya lo habeis discutido todo en la lista?, el
único que ha dicho algo es piranna, ¿ya nadie quiere realizar este
"debate"?.<br>
<br>
Saludos.<br>
<br>
El 23/04/12 00:42, Pablo Lobariñas escribió:<br>
<span style="white-space: pre;">><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>
><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><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></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+YczgACgkQnPFBatEMYOd6TgCeLqgF4QJ7DFyzmF0TE0HYKu0l<br>
+cMAoLDBiIeXuzkBZBFrZw6gDBmZ8d37<br>
=jFb5<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 />