Asterisk, Digium, SIP, Olle, release engineering…
Hace unos meses ya hice un comentario acerca del modelo de desarrollo y release engineering de Asterisk. A pesar del nuevo modelo de gestión de versiones que implantaron, parece que aún quedan cosas por pulir.
Esta semana Olle Johanson, el responsable del chan_sip de Asterisk ha abierto la caja de Pandora en la lista de desarrollo de Asterisk al enviar un mail en el que entre otras cosas dice que la nueva política de releases no es buena y que Russell (el actual “release engineer”) no está preparado para ejercer esa función.
Olle habla de que el soporte de SIP TCP/TLS en las versiones 1.6 simplemente no funciona, como se pudo comprobar en el pasado SIPIt23 y que los cambios que hay que hacer para arreglar esa parte son tan extensos y profundos que SIP sobre TCP/TLS no estará listo hasta dentro de algunas versiones y que estos cambios van en contra de la política de releases implantada, igual que otras nuevas funcionalidades como soporte de IPv6, el nuevo sistema de bridging, nuevo framework de negociación de codecs o el tan discutido ultimamente Pinemango y el framework de seguridad.
La verdad es que este tipo de problemas son comunes a todos los proyectos de desarrollo (personalmente lo he vivido muchas veces como desarrollador de FreeBSD) y siempre son complicados de gestionar porque cada desarrollador, de una forma o de otra, piensa que lo suyo es más importante o es más necesario o tiene más valor y después de horas y horas desarrollando lo que quieres es ver todo ese código implementado en las versiones release… porque ¿cuantos usuarios hay que prueben las nuevas funcionalidades de versiones “release candidate” o trunk en sistemas de producción?. Y claro, luego cuando esos cambios se pasan a las versiones estables salen bugs y problemas… y es el pez que se muerde la cola.
Ser el “release engineer” de un proyecto importante es realmente complicado, hay que ser muy político y tener mucha mano izquierda para saber moverse entre tantos “tiburones”
Además, creo que en este caso hay cierta ¿frustación? por parte de Olle. A pesar de que (aún sin tener números reales) SIP debe ser el protocolo más usado en Asterisk y con mucha diferencia sobre IAX, pienso que Digium no ha apostado nunca por SIP, siempre lo ha dejado de lado y parece que no ha mostrado ningún interés por apoyarlo, soportarlo, mejorarlo e impulsarlo. La apuesta de Digium ha sido siempre IAX/IAX2 y hasta ahora no he entendido el porqué. SIP es un estándar, IAX/IAX2 no (aunque puede que lo sean en un tiempo ya que el draft anda en el IETF), SIP se ha convertido en el protocolo de facto para VoIP y cada vez más para vídeo sobre IP, aplicaciones, etc, y Digium sigue con su IAX. ¿Porqué?.
Olle ha invertido muchas horas en mejorar el soporte de SIP en Asterisk pero siempre de forma voluntaria o con proyectos específicos pagados. Por el camino se han quedado cosas tan interesantes como chan_sip2, chan_sip3 y algunas cosas más que darían un verdadero stack SIP a Asterisk. Estos proyectos se han tenido que abandonar por falta de tiempo y recursos por parte de Olle y Digium nunca ha decidido poner a algún programador o recursos para que se pueda dedicar a ellos así que si Olle no programa y Digium no pone recursos, el soporte de SIP se queda tal y como está, es decir, cogido con pinzas.
En la versión 1.4.22, el archivo chan_sip.c tiene 18678 líneas… hasta ahora, lo único que se ha hecho ha sido parchear este archivo, añadir todos los comentarios posibles y rezar para que si tocas codigo en las 500 primeras líneas no afecte a algo mucho más abajo.
Supongo que toda esta situación es lo que hace que Olle envíe un mail tan provocador (según sus propias palabras) a la lista de desarrollo de Asterisk para ver si hay algún tipo de reacción por parte de alguien, llegando incluso a hablar de forks, renombrar el proyecto, etc… y creo que algo habrá conseguido porque hasta el momento no se ha convertido en una “flame war”.
En un mail de ese thread leí que algunos desarrolladores estuvieron hablando sobre la posibilidad de integrar resiprocate como el stack SIP de Asterisk… lo que creo que no sería mala idea.
Digium sabrá lo que hace y porqué lo hace (¿alguien recuerda los comentarios que habían hace un tiempo en el chan_sip.c escritos por Mark Spencer?)… eso, aunque igual es una tontería, quizás podría dar una idea de lo que hay detrás… además de que queda muy bonito ser autor de una RFC, aunque sea de un estándar que no usa nadie y que lo tiene realmente complicado para llegar a usarse fuera de tu ámbito más cercano.
[...] parezca extraño, y tras los últimos comentarios de la lista de Asterisk-DEV, el día de la Comunidad Asterisk-ES (14 de noviembre) va a tener especial relevancia ya que [...]
> ¿alguien recuerda los comentarios que habían hace un tiempo en el
> chan_sip.c escritos por Mark Spencer?)
Esto me lo he perdido, ¿sabes dónde podría encontrar esos comentarios? (sin tener que examinar todos los commits del chan_sip de su historia XD).