Participación mexicana en Open Source

Esto salió a partir de una discusión en un foro de este sitio. Tengo dos proyectos de software libre registrados en Source Forge, y quiero hablar un poco acerca de ello. No tanto de los aspectos técnicos sino de las razones por las que liberé este software y algo de mi ideología al respecto del software libre.

En un proyecto que desarrollé para un cliente, utilizamos Asterisk, un PBX por software que permite hacer toda clase de monerías como conmutador, IVR, contestadora, fax, etc tanto con líneas telefónicas analógicas como con líneas digitales (E1, T1, etc) y VoIP. Este software lo hace una compañía llamada Digium, pero es software libre, y además gratuito; lo puedes bajar e instalar en tu computadora y usarlo sin tener que pagar un centavo. Cómo puede ser que una empresa se dedique a hacer un software que la gente descarga de manera gratuita? Ah pues muy fácil: si quieres usar Asterisk con líneas analógicas o digitales, ellos hacen unas tarjetas de telefonía para ambos casos, tienen varios modelos, desde las que reciben 4 u 8 líneas analógicas, o incluso 24 líneas (un channel bank) hasta las que reciben de 1 a 4 enlaces E1 o T1. Viéndolo de manera simplista, podemos decir que regalan el software porque así venden su hardware. Realmente creo que el asunto es un poco más complicado pero dejémosle ahí.
Yo he instalado algunos conmutadores a otros clientes usando Asterisk, porque es una alternativa bastante buena a un conmutador tradicional (es más barato y como es por software, puedes hacer muchas más cosas, y es más fácil de programar que un conmutador tradicional). Los clientes compran sus tarjetas de telefonía así que Digium gana algo con eso. Pero yo me puse a pensar que estoy ganando algo sin dar nada a cambio... y por otra parte, hice una especie de compilador (estrictamente hablando es más como un pre-procesador) para la programación de las extensiones de Asterisk, porque su notación nativa es bastante engorrosa de manejar (al menos en la versión 1.0 lo era, ahora ya no) y pues hice un software que me simplificaba la vida. Pensé que tal vez eso me da una ventaja competitiva sobre otras personas que dan servicios de Asterisk, pero finalmente todos estamos lucrando con un software que no hicimos nosotros, así que decidí publicar este compilador como software libre.

http://ast-dpc.sourceforge.net/

En otro proyecto, estuve haciendo varias implementaciones de mensajería ISO8583, un protocolo un poco complicado de manejar pero muy utilizado por instituciones financieras, terminales de tarjeta de crédito, y otros sistemas (hay incluso varios middleware que traducen entre ISO8583 y otros protocolos).
Después de varias implementaciones para este cliente, sus clientes empezaron a preguntar acerca de la implementación que usaban de ISO8583. La respuesta pues era que tenían una implementación propietaria, y prestarles ese código era complicado porque tenía dependencias con otras partes del sistema que no tenían por qué ver los clientes. Así que decidí hacer una implementación más, la última, que fuera más configurable y no tuviera dependencias con nada de este sistema. La reescribí desde cero, y la publiqué. La razón en este caso fue que me cansé de estar haciendo varias versiones de esta mensajería, además de que realmente mi cliente no tiene una ventaja competitiva sobre alguien más por tener una implementación de ISO8583 (puedes comprar librerías o aplicaciones completas que se dedican a manejar esto). Pero en cambio sus clientes ahora sí podrían recibir una respuesta sencilla: Bajen la librería en Java de http://j8583.sourceforge.net/ y úsenla. Mi cliente ya tiene un par de clientes que la usan. Pero la librería es mía, no de mi cliente. Si sus clientes requieren soporte, se los puedo dar yo. Y si es algo muy complicado como que lo quieren integrar a su aplicación o requieren algún servicio adicional, se los cobro. Estoy cobrando por mis servicios, no por vender licencias de la librería. De todas maneras cuántas licencias podría vender? Una, dos, diez? Y luego mi software estará disponible en todos los sitios de torrents más populares y se acabó. Podría protegerlo contra copias, pero podría terminar con código mucho más complejo para proteger la librería de piratería que para la funcionalidad de la misma. Y tampoco pienso vivir exclusivamente de esa librería; esos tiempos ya pasaron hace muchos años, la época en que alguien podía hacer un software bueno y vivir de sus ventas.
Hoy en día el software debe verse como un servicio. Si hago proyectos interesantes o participo en proyectos interesantes, puedo ofrecer mis servicios para customización, instalación, modificaciones, soporte, etc para esos proyectos.
Alguien que se dedica a desarrollar aplicaciones empresariales web en Java y utiliza JBoss por ejemplo, puede ofrecer además sus servicios de soporte para JBoss, porque es un software que ya conoce bastante bien y lo puede configurar rápido y dejarlo bien optimizado. Tal vez yo desarrollo buen software pero no puedo o no quiero estarme peleando con JBoss durante días para dejarlo funcionando adecuadamente para un sitio con mucha carga; puedo entonces contratar los servicios de alguien que solamente lo optimiza para mi aplicación. Y tal vez esa persona trabaja tanto con JBoss que llega a encontrar algunos defectos y los reporta directo a RedHat (que son dueños de JBoss), mandando la información necesaria e incluso tal vez el código corregido; por qué se va a tomar la molestia de hacer eso? Pues porque entonces la siguiente versión de JBoss va a incluir la corrección a ese defecto que seguramente le afectó y por eso lo encontró... de otra forma, tendría que estar parchando el código de JBoss en cada instalación que hace. Es más fácil contribuir que no contribuir en este caso, tiene más ventajas.
Tal vez el problema en México no reside tanto en los programadores, sino en las compañías donde trabajan. Los directivos siguen pensando que el software que usan les da una ventaja sobre los demás, cuando muchas veces no es así. Hoy en día estoy seguro que cualquier aplicación a la medida para una empresa, utiliza varias librerías o aplicaciones de software libre. Por qué no devolver a la comunidad algunas de las customizaciones o correcciones que les hayan tenido que hacer? Por qué no publicar algunos de los módulos que hicieron para esas aplicaciones?
Si un programador en una empresa que no es precisamente una consultora pero tiene gente que está manteniendo algún software (un banco por ejemplo, o qué se yo), un día se da cuenta que el proyecto en el que está trabajando tiene una o varias partes que no son precisamente un secreto de estado que le va a dar ventaja a su empresa sobre todas las demás de su giro, sino que simplemente es algo que puede servir para muchas otras cosas, debería hablar con sus superiores y proponer que se publique dicho proyecto bajo una licencia de software libre. Qué ventajas tiene? Para la empresa, pues si más gente usa esa aplicación y les mandan contribuciones, tienen correcciones y mejoras gratis. Tienen buena reputación con la comunidad de software libre porque están contribuyendo algo. Si el programador que hizo ese software un día se va o le cae un piano en la cabeza o lo que sea, no se les cae el mundo porque el software está ahí y pueden reclutar a alguien que ya lo conozca (se ahorran el tiempo de capacitación).
Para el programador, tiene la ventaja de que si un dia se va a otra empresa, seguirá teniendo acceso a ese código porque no es algo que se quedó tras una bóveda impenetrable. Es algo que además puede poner en su CV. Tal vez pueda conseguir trabajo en un lugar donde usan ese software. O cuando consiga un trabajo nuevo que no tenga nada que ver con eso, simplemente puede dar servicios relacionados con su software en ratos libres y tener un ingreso adicional.
En fin, creo que esas son las ventajas que contribuir y no solamente utilizar el software libre. Si todos terminamos solamente utilizándolo pero nadie contribuye, se va a estancar y al rato nadie le va a dar mantenimiento, y entonces todos perdemos.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de iberck

Proyectos open source

Interesantes los proyectos, felicidades por la iniciativa!, si hace unos años hubiera sabido que existía Asterisk le hubiera dicho a mi cliente que tirara su pbx para no romperme la cabeza con tantas librerías extrañas =P

Hablando un poco de los proyectos open source más importantes en los que he participado:

1. Un par de plugins para netbeans los cuales han sido muy simples pero de mucha ayuda para los programadores, entre ellos
http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?plug... el cual instala una barra de busqueda en el IDE para encontrar el jar de una clase a partir de su nombre.

2. Actualmente participando en la implementación de un generador de gráficos para autocad desde java (dxf). el proyecto se llama jDXF, la liga al mismo cuando suba el proyecto a un rep público. El proyecto surgió por la necesidad de trazar figuras complejas las cuales pueden ser calculadas matemáticamente (como torres telefónicas y todos sus componentes) a partir de ciertos datos de entrada, las cuales tenían que ser interpretadas por autocad.

3. Estoy organizando un proyecto opensource generador de aplicaciones, el cual sin utilizar un solo @anotation en las clases ni poner nada dentro de nuestro proyecto (no intrusivo), puede generar código fuente dentro del mismo. Se podría definir el proyecto como un framework de "meta meta programación" (será capaz de generar generadores de código fuente) pero su objetivo principal es automatizar las tareas repetitivas de cualquier tipo de proyecto existente de una manera muy simple.

La nueva versión no tiene una sola línea de código fuente ya que se encuentra en fase de re-análisis, pero se sigue trabajando en él. Si alguien esta interesado en colaborar puede contactarme y con mucho gusto le explicare la idea a detalle.

Qué es lo que he ganado de esos proyectos? Básicamente experiencia, crear mis propias herramientas para facilitar el trabajo, plasmar mis ideas.

JavaRanch big moose saloon member

jDXF

Buen día, de acuerdo al punto 2 donde menciona que colabora sobre un generador de graficos para autocad desde java(dxf). Debido a que me ha pasado un par de dias indagando sobre herramientas relacionados a autocad para poder editar un plano o escribir sobre ellas medidas, nombres, escalas en determinadas lineas, por que llego hasta este apartdo de javaMexico. Debido a que no encuentro tanta informacion relacionado con este tema, o quizas no he podido realizar bien las formulaciones de mi interrogante a google, por tanto pido sugerencias alguna libreria a utlizar para el desarrollo de mi aplicacion, es decir que atraves de un formulario yo introduzca los valores los cuales deben sobreescribir un plano dxf o dwg.

Cualquier sugerencia se agradece.

Saludos.