Beruflich Dokumente
Kultur Dokumente
ndice de contenido
1. Preparando el cdigo ...................................................................................................................................2
1.1 Siguiendo metodologas de desarrollo...................................................................................................3
1.2 Estructurando el programa en mdulos.................................................................................................5
1.3 Facilitando la lectura del cdigo ............................................................................................................6
2. Elaborando la documentacin para ser liberada...........................................................................................7
2.1 Cmo gestionar la documentacin........................................................................................................8
2.2 Generando la documentacin automticamente...................................................................................9
3. Qu documentacin debes de tener en cuenta? .....................................................................................11
3.1 Documentacin a incluir.......................................................................................................................13
3.2 Documentacin recomendable............................................................................................................14
4. Herramientas para la liberacin..................................................................................................................16
4.1 Forja de proyectos...............................................................................................................................17
4.2 Repositorios.........................................................................................................................................20
4.2.1 Cmo funciona un Sistema de Gestin de Versiones (SGV)?...................................................21
4.3 Difusin: Blogs y Webs........................................................................................................................22
4.4 Comunicacin: Listas de correo e IRC.................................................................................................23
Glosario de trminos.......................................................................................................................................25
Material de Referencia....................................................................................................................................26
Material de Consulta.......................................................................................................................................28
Objetivos:
1. Ser conscientes de los aspectos a tener en cuenta para la liberacin del cdigo a nivel
tcnico.
2. Conocer cmo se debe modificar el cdigo para facilitar la inclusin de nuevos participantes
en el desarrollo del mismo.
3. Identificar la documentacin importante y til para la Comunidad.
4. Conocer las principales herramientas para la liberacin.
Fundacin CENATIC
1. Preparando el cdigo
La empresa de David lleva un tiempo analizando la situacin de liberar el cdigo del producto
desarrollado, sopesando las ventajas e inconvenientes que conllevara y finalmente la Direccin da el
paso y opta por abordar dicha liberacin.
Tenemos luz verde! El equipo de David est muy entusiasmado con este proyecto, aunque va a ser todo
un reto para ellos pues nunca antes haban liberado cdigo Por dnde empezar?
Para dar los primeros pasos en la liberacin de cdigo, lo idneo es que comiences llevando a cabo una
serie de buenas prcticas tanto de desarrollo como de documentacin.
Entre las buenas prcticas de desarrollo vers las metodologas de desarrollo y gestin de proyectos (XP,
Mtrica, SCRUM, CMMI, etc.) as como el respeto a los diversos paradigmas de programacin existentes
(modular, OOP, POA, etc.).
Pregunta de Autoevaluacin
A la hora de liberar el cdigo:
a) Tengo que elegir mi propia metodologa de desarrollo.
b) Tengo que elegir la metodologa de desarrollo al finalizar la liberacin.
c) *Tengo que analizar la metodologa de desarrollo ms conveniente para el proyecto.
1.1 Siguiendo metodologas de desarrollo
Entre las ventajas estudiadas por la empresa de David, la ms llamativa fue la oportunidad de
crecimiento y mejora que la comunidad ofrece al software desarrollado, diversificando y aumentando as
los potenciales clientes.
Pero para crear dicha comunidad, adems de una idea atractiva y un software funcional para los clientes,
tambin es necesario que pongas a disposicin pblica el cdigo fuente... De cualquier forma? O debe
estar estructurado de un modo concreto?
Y es que para facilitar la participacin de la comunidad en el desarrollo y el trabajo en grupo ser esencial
que publiques un cdigo fuente legible, documentado y bien estructurado.
Para ello emplea alguna de estas metodologas de desarrollo, usadas habitualmente en entornos de
software libre.
Metodologas de desarrollo
Test Driven Metodologa de desarrollo en la que primero escribes las pruebas del software y
Development (TDD) luego vas desarrollando el cdigo capaz de superar esas pruebas.
Scrum Aunque la idea no es nueva, la filosofa gil de aceptacin del cambio hace que
esta metodologa se adapte muy bien a los entornos de desarrollo de software
libre, donde los cambios de requisitos son continuos, pues no existe un cliente o
dueo del producto que especifique sus necesidades desde el principio del
desarrollo.
Paradigmas de programacin
Es un error muy comn comenzar el desarrollo con intencin de usar un paradigma y terminar usando otro.
Por ejemplo, que inicies el software como orientado a objetos y acabe siendo un gran programa modular
encapsulado en una nica clase.
Este tipo de errores no solo tienen impacto directo en la calidad del software sino tambin en la imagen de
inconsistencia que transmites a la comunidad, muy sensible con cualquier aspecto tcnico que indique falta
de seriedad o compromiso con la calidad del producto.
http://www.slideshare.net/kinfantas/metodologia-de-
desarrollo-de-software
1.2 Estructurando el programa en mdulos
Aparte del paradigma de programacin seguido para el diseo del software, tendrs que respetar un
aspecto comn no solo por diseo, sino tambin por facilitar su uso, desarrollo y comprensin del cdigo,
que es la modularidad del mismo.
Toma como ejemplo de esta modularizacin el diagrama UML de los distintos mdulos de un software y la
relacin entre ellos:
A pesar de la falta de conocimiento de este software en concreto, puedes apreciar los diferentes
componentes del sistema gracias a la separacin en mdulos. As por ejemplo, puedes adivinar que si
quisieras modificar la interfaz de usuario de los profesores tendras que modificar el mdulo SguiProfe.
Con la separacin en mdulos evitars el estudiar la estructura completa de un programa para saber
cmo funciona un mdulo en concreto. Esto es importante no solo en desarrollos privados, sino
especialmente en desarrollos abiertos donde cualquier persona puede aportar valor al producto.
Sabas que algunas guas de estilo llegan a tal nivel de detalle que especifican
incluso el nmero de espacios que debe existir entre diferentes elementos como
las asignaciones a variables (a=2 por contra de a = 2)?
As logrars que todas las aportaciones realizadas al proyecto encajen de forma homognea y
aumente la legibilidad del cdigo (el cdigo se lee ms veces de las que se escribe).
Y es que entender el software escrito por un tercero ya es suficientemente complejo de por s como
para no disponer de ninguna ayuda que facilite lo mximo posible la comprensin del sistema
software. Esto es clave para que atraigas no solo a colaboradores, sino tambin a usuarios
deseosos de conocer el funcionamiento interno.
Para ello te pueden interesar los sistemas de generacin de documentacin automticos como
doxygen o sphinx, que extraen informacin sobre el cdigo fuente y generan documentacin en
varios formatos que te ser de gran ayuda a la hora de comprender y estudiar el cdigo.
Pregunta de Autoevaluacin
Cmo puedes facilitar la lectura del cdigo?
a) Documentando el sistema y todos sus componentes.
b) Adoptando un estilo de cdigo comn.
c) *Todas son correctas.
2. Elaborando la documentacin para ser liberada
David saba que llevar a cabo el proyecto de liberacin de la aplicacin no iba a ser coser y cantar, ya
que va ms all del simple hecho de hacer pblico el cdigo. Deben seguir una metodologa, de
desarrollo, modularizar el programa y facilitar la lectura del cdigo.
Pero... esto es suficiente para que la comunidad colabore en el desarrollo?
Y es que la liberacin no solo es que pongas el cdigo a disposicin del pblico, sino tambin documentarlo
y facilitar en la medida de lo posible la comprensin del mismo a travs de esa informacin.
2.1 Cmo gestionar la documentacin
David cae en la cuenta de que cuando lleven a cabo la liberacin, sern muchas las personas quienes
modificarn el cdigo... Cmo controlar los cambios que hagan los colaboradores? y si lo hacen
simultneamente Sobrescribir los archivos y cambios de alguien ms sin querer?
Dispones de programas especialmente diseados para gestionar documentacin como Nuxeo o Alfresco ,
pero normalmente son programas complejos y pesados que estn sobrecargados de funcionalidades que no
necesita un proyecto de software libre.
Adems lo cierto es que parte de la documentacin del software se encuentra incluida dentro del mismo
cdigo, por lo que los sistemas de gestin como los comentados no resultan prcticos.
Por estos motivos, normalmente te resultarn ms prcticos sistemas no orientados a la gestin documental
propiamente dicha, pero que te ofrecen un equilibrio adecuado a las necesidades del proyecto, que suelen
ser:
Descentralizacin: Cualquier colaborador debe poder acceder a la documentacin desde
cualquier lugar del mundo en cualquier momento.
Histrico de cambios: Debe poder accederse a versiones antiguas de los documentos as como a
la informacin de los cambios, como autor, fecha, cambio realizado, etc.
Facilidad de acceso: Debe poderse acceder de forma annima para consulta y de forma
autenticada para realizar cambios en los documentos.
En cualquier caso, debes tener presente que la gestin de la documentacin es algo tan variable como los
distintos tipos de proyectos que pueden existir. Cada uno tiene una serie de caractersticas y necesidades
que pueden hacer inviable este tipo de gestin de documentacin o que haga necesario un sistema de
gestin de la documentacin completo.
Pregunta de Autoevaluacin
Qu propiedades debes buscar en un sistema de gestin de la documentacin?
a) Que permita acceder slo al administrador, sin necesidad de autenticarse y que guarde el histrico de
cambios.
b) *Que permita acceder a cualquier colaborador, con o sin autentificacin y que guarde el histrico de
cambios.
c) Que permita el acceso a cualquier colaborador, con o sin autentificacin y que guarde el histrico de
visitas.
2.2 Generando la documentacin automticamente
Como recordars del punto anterior, muchas veces es necesario y especialmente deseable que la
documentacin la generes automticamente a partir del cdigo fuente.
Para ello emplea sistemas especializados en este tipo de tareas, que generen de forma automtica la
documentacin tcnica del proyecto a partir de los fuentes y una serie de marcas, que enlazan incluso las
partes relacionadas entre s del sistema.
Estos sistemas de generacin de documentacin se basan en las marcas, comentarios e indicaciones que
el desarrollador coloca estratgicamente para que el sistema sepa qu parte del cdigo se est
documentando.
Por ello, resulta esencial que seas consciente desde el principio del proyecto o
durante el proceso de liberacin deberas usar un sistema de generacin
automtica de documentacin, para incluir su uso en las guas de estilo de
cdigo.
Puedes usar este tipo de sistemas para ambos cometidos, pero ten presente que requiere de un esfuerzo
adicional por parte de los desarrolladores y las personas a cargo de la documentacin, pues tienes que
coordinar en un mismo documento la informacin destinada al usuario final con la destinada a los
desarrolladores.
Normalmente estos generadores de documentacin pueden crear documentos de varios tipos, siendo los
ms comunes HTML, Latex y PDF.
http://www.youtube.com/watch?v=9u1mrVTRt4w
Pregunta de Autoevaluacin
Cmo puedes generar la documentacin automticamente?
a) *Usando sistemas que se basan en las marcas, comentarios e indicaciones que el desarrollador coloca
estrategicamente para documentarlo.
b) Usando sistemas que se basan en los estilos que el desarrollador ha documentado previamente en la
gua de estilo de cdigo.
c) Usando sistemas que se basan en las versiones que el desarrollador realiza sobre las modificaciones
efectuadas en el cdigo.
3. Qu documentacin debes de tener en cuenta?
David y sus compaeros llevan algunas semanas centrando sus esfuerzos en modularizar y documentar
el cdigo. Han descrito el propsito de cada subsistema y documentado sus interfaces y la forma en que
cada subsistema se comunica con el resto y con el exterior.
Es decir, que han documentado las entraas de la aplicacin, ahora bien, David ve que otra cuestin
diferente es explicar cmo el usuario puede usarla o describir los pasos para instalarla. De hecho, no
est del todo seguro de si es necesario incluir esa informacin, ni cmo hacerlo Sobre qu otros
aspectos deber informar a los desarrolladores?
David est en lo cierto al pensar que debe proporcionar ms detalles del producto para que los usuarios
sepan utilizarlo. Para esto tienes que elaborar la documentacin tcnica y de usuario.
La documentacin tcnica se refiere a los diferentes documentos informativos que posee un determinado
Software y en los que suele informarte de:
1.La definicin tcnica del producto y sus especificaciones.
2.El diseo del producto.
3.La descripcin de las propiedades del producto.
4.La Interfaz y las funciones del producto.
El objetivo de este tipo de documentacin es transmitir la informacin tcnica de un producto de manera
clara y ordenada a una audiencia determinada, adaptndola a las necesidades de sta. Gracias a esto
familiarizas al usuario con el producto y le ayudas a usarlo satisfactoriamente.
Este tipo de informacin suele ser utilizada por desarrolladores, usuarios avanzados, etc.
Teniendo en cuenta que el producto puede cambiar en un corto perodo de tiempo, debes actualizar
continuamente la documentacin, por ello te resultarn tiles las herramientas como Doxygen, Ndoc,
TwinText, etc, que extraen los comentarios del cdigo del producto y crean guas de referencia, muy tiles
para desarrolladores que necesitan conocer de manera rpida que hace una determinada parte del
producto.
Es importante que elabores la documentacin de usuario de forma que no sea confusa y que est
actualizada. Adems, incluye un ndice de temario, aunque no est organizado de una manera en particular,
y una parte de Solucin de errores.
Manuales de uso: Utiliza este tipo de documento para describir cmo usar un determinado
producto, estructurndolo en forma de tutorial gua al usuario a desempear las tareas ms
comunes en el producto.
Licencia: La licencia es un contrato entre el creador del producto y el usuario que utiliza el
producto. Mediante las licencias de software Libre puedes establecer criterios sobre el uso de
determinadas partes del producto, esto ir en funcin del elemento que hayas utilizado en el
producto y la licencia del mismo. Las licencias de SL pueden obligar a hacer cambios en el cdigo
(caso de BSD y/o GPL). Es necesario efectuar estos cambios antes de liberar el cdigo...
Informacin de contacto: En este tipo de documentos indicas los diferentes mtodos de contacto
que posee el creador del producto en cuestin. Se suele indicar una direccin fsica, un direccin de
correo electrnico, una pgina web, etc.
Pregunta de Autoevaluacin
Qu documentos no puedes olvidar para la liberacin?
a) *La licencia, los datos de contacto y los manuales de uso, instalacin y administracin.
b) La licencia, los datos de contacto y los manuales de uso, organizacin y administracin.
c) La licencia, los autores y los manuales de uso, instalacin y administracin.
3.2 Documentacin recomendable
Aparte de la documentacin de obligada inclusin, hay una serie de documentos que si bien no son
esenciales, s es recomendable que proporciones:
Documentos de diseo del software: Mediante estos documentos muestras cmo funciona el
producto a nivel interno, cules son los posibles usos del producto, etc. Tienes que organizarlos
como un diagrama de clases que explique la estructuracin y el flujo de trabajo del producto a
nivel interno, as como un diagrama de casos de uso en los que expliques los diferentes usos del
producto por parte de un usuario.
http://apiwiki.twitter.com/
4. Herramientas para la liberacin
El equipo de David ha investigado sobre las herramientas y sistemas abiertos para el proceso de
desarrollo. Aunque su proyecto sigue sus propias reglas, y usa su propio conjunto de herramientas,
saben que hay ciertas prcticas, entornos y tecnologas que son habituales en el mundo del desarrollo
del SFA.
Ahora se encuentran ante un dilema: Deben facilitar estas herramientas o pueden utilizar plataformas
especializadas ya disponibles?
Con carcter general, ser recomendable que se utilices plataformas ya existentes, pues suelen albergar
mltiples proyectos de software en los que los desarrolladores han de registrarse para poder contribuir.
Adems consta de numerosas aplicaciones normalmente con interfaz web para la administracin y
desarrollo de estos proyectos en comn.
Antes de repasar herramientas concretas, vas a ver las caractersticas y propiedades generales que tienen
en funcin del trabajo a realizar y el modo de organizarse los desarrolladores.
Es habitual que tanto el entorno como las herramientas de desarrollo e incluso la mquina
virtual (cuando la hay) sean tambin libres, pues ser imprescindible para que los
desarrolladores que las posean y puedan colaborar. En el caso de que sean privadas, el entorno y/o
la mquina virtual han de estar lo suficientemente difundidas y ser lo bastante econmicas como
para poder reunir suficientes desarrolladores que dispongan de esas herramientas.
Tambin para atraer el mayor nmero de desarrolladores, las herramientas deben ser sencillas,
ampliamente conocidas y aprovechen al mximo las capacidades del hardware. Posiblemente
por estas razones el mundo del software libre es relativamente conservador en lenguajes,
herramientas y entornos.
El modelo de desarrollo de software libre suele ser eminentemente distribuido, con muchos
colaboradores potenciales repartidos por todo el mundo. Por ello son precisas herramientas de
colaboracin, generalmente asncronas, que permitan que el desarrollo avance con facilidad,
independientemente de la cantidad y ritmo de trabajo de cada colaborador, sin retrasar a nadie.
En este sentido, para facilitar el trabajo del desarrollador puedes utilizar un Entorno Integrado de
Desarrollo (IDE, Integrated Development Environment). Se trata de un sistema que integra slidamente la
edicin orientada al lenguaje, la compilacin o interpretacin, la depuracin, las medidas de rendimiento, la
incorporacin de los fuentes a un sistema de control de fuentes, etc., normalmente de forma modular.
No obstante, a todos los desarrolladores no les gustan estas herramientas, a pesar de que su uso se ha ido
extendiendo progresivamente, por lo que su uso ser opcional.
A continuacin, repasa los entornos ms comunes y su impacto en la gestin y evolucin de los proyectos.
4.1 Forja de proyectos
Utilizando una forja de software te permitir el desarrollo de software en colaboracin a travs de Internet.
Por este motivo la forja se ha hecho popular, desarrollando un gran nmero de proyectos de software libre
en los ltimos aos.
Este tipo de plataforma engloba un conjunto de aplicaciones bajo una interfaz Web integrada, que
generalmente hospeda varios proyectos independientes. En ella los desarrolladores, que estn registrados
como contribuyentes, pueden utilizar las herramientas de gestin de proyectos y las herramientas de
desarrollo de software diferentes.
En general, todas estas plataformas ofrecen herramientas similares para los desarrolladores de software
que trabajan en los proyectos alojados:
Sistemas de gestin de cdigo fuente (compatible con otros SGV)
Listas de correo o foros
Wikis
Servicios de descarga de software
Sistema de seguimiento de errores
Servicios de copias de seguridad
Con el uso de estas herramientas atraers a los desarrolladores para encontrar, unir y contribuir en el
proyecto. No obstante, para que esto suceda las herramientas debes emplearlas con cuidado, pues el uso
de un sistema de colaboracin abierta debe de hacerte consciente que se trata de un sistema:
Los miembros del proyecto debes verlos como alguien que viene a ayudar, en
Igualitario lugar de verlos como un elemento externo. La documentacin del proyecto para
los futuros colaboradores es un aspecto a tener en cuenta.
Los miembros del proyecto tienen que darse cuenta que las aportaciones y
Meritocrtico
contribuciones importantes puede venir de todas partes.
Esto convierte a las forjas en el tipo de herramienta perfecto para obtener todo el entorno listo para liberar tu
software, sin la necesidad de realizar desembolso alguno en infraestructuras, facilitando la participacin
de desarrolladores, as como la fcil gestin del proyecto.
De hecho, el xito que han tenido las forjas en el mundo del SFA ha llevado a gran cantidad de empresas a
implantarlas internamente. Conoce algunos ejemplos exitosos de forjas:
Sourceforge (www.sf.net)
Durante el desarrollo de tu software, una modificacin produce un error oculto que descubres tardamente
No querras recuperar el original para analizar el problema? Por este motivo, es importante que todo
proyecto de desarrollo de programas guarde la historia del mismo.
Adems, si el proyecto lo desarrollan varias personas, es necesario tambin registrar el autor de cada
cambio, con las razones del mismo explicadas.
Asimismo, en caso de que hagas entregas versionadas del proyecto, tendrs que saber exactamente las
versiones de cada mdulo que forman dichas entregas. Muchas veces, un proyecto mantiene una versin
estable y otra experimental, que tendrs que mantenerlas, corregir sus errores y transferir errores corregidos
de una versin a la otra.
Pues esto es lo que normalmente hace un sistema de control de fuentes, tambin llamado Sistema de
Gestin de Versiones (SGV).
Analizando los tipos de repositorios, la principal clasificacin est basada en el almacenamiento del cdigo:
Centralizados Distribuidos
Existe un repositorio centralizado de todo el cdigo, Cada usuario tiene su propio repositorio, por lo que
del cual es responsable un nico usuario (o conjunto no es necesario tomar decisiones
de ellos). centralizadamente.
Se facilitan las tareas administrativas a cambio de Los distintos repositorios pueden intercambiar y
reducir flexibilidad, pues todas las decisiones fuertes mezclar revisiones entre ellos.
(como crear una nueva rama) necesitan la
aprobacin del responsable.
Ejemplos: Git y Mercurial.
Algunos ejemplos son CVS y Subversion.
4.2.1 Cmo funciona un Sistema de Gestin de Versiones (SGV)?
El sistema permite que varios usuarios obtengan copias del proyecto al mismo tiempo, de forma que cuando
introducen las modificaciones, el servidor intenta acoplarlas.
Si no es posible encajarlas, por ejemplo porque dos clientes estn intentando cambiar la misma
lnea de un mismo archivo, entonces el servidor deniega el segundo ingreso e informa al cliente
sobre el conflicto, que el usuario deber resolver manualmente.
Si la introduccin de la modificacin tiene xito, entonces los nmeros de versin de todos los
archivos implicados se incrementan automticamente, y el servidor escribe una lnea de descripcin
suministrada por el usuario, la fecha y el nombre del autor.
Otras funcionalidades que dispones en SGV, es comparar diferentes versiones de archivos, solicitar una
historia completa de los cambios, ver el estado del proyecto en una fecha determinada o en un nmero de
revisin determinado.
Muchos proyectos open source permiten el acceso de lectura annimo, este tipo de acceso te permite
sacar y comparar versiones sin necesidad de introducir una contrasea, necesaria slo si quieres introducir
modificaciones en los archivos.
Dispones tambin de una orden de actualizacin, que tes permite tener tus copias al da, con la ltima
versin que se encuentra en el servidor, evitndote as el tener que repetir las descargas del proyecto
completo.
Un SGV tambin puede mantener distintas ramas de un mismo proyecto. Por ejemplo,una versin difundida
de un proyecto puede formar una rama y ser utilizada para corregir errores. Todo esto se puede realizar
siempre que la versin que se encuentra actualmente en desarrollo y posee cambios mayores con nuevas
caractersticas se encuentre en otra lnea formando otra rama separada.
La estructura habitual de un repositorio de un SGV, salvando las diferencias entre las herramientas
utilizadas es:
Trunk: Desarrollo principal.
Tags: Ubicacin de las versiones congeladas.
Branches: Ubicacin con versiones de desarrollo paralelas al trunk.
Pregunta de Autoevaluacin
Cuando dos usuarios introducen modificaciones que generan un conflicto que el servidor no puede
encajar Cmo lo resuelve?
a) El servidor genera dos versiones para cada usuario.
b) *El servidor deniega el segundo ingreso e informa al cliente sobre el conflicto, que el usuario deber
resolver manualmente.
c) El servidor deniega el primer ingreso e informa al cliente sobre el conflicto, que el usuario deber
resolver manualmente.
4.3 Difusin: Blogs y Webs
Para llevar a cabo la difusin de tu proyecto dispones de diversos medios. Entre los ms usados y visitados
estn las pginas web especializadas en tecnologa y SFA, que gustan de hacer eco de noticias de
liberaciones y nuevos proyectos libres.
Por una parte, las webs colaborativas publican peridicamente informacin sobre nuevos proyectos libres,
liberaciones y noticias generales sobre proyectos de SFA.
En estas pginas puedes encontrar las noticias sobre productos o eventos que los usuarios consideran
importantes y de acuerdo a un sistema de votacin comunitaria, las ms populares salen a portada.
Algunos ejemplos de estas pginas son Slashdot, Reddit y Digg en ingls y Barrapunto en espaol.
Y por otro, dispones de los Weblogs o blogs, que son pginas de individuos, instituciones o empresas
donde se publican noticias relacionadas con productos o proyectos propios.
Normalmente los proyectos libres disponen de uno o varios blogs donde los autores o el grupo de trabajo
encargado, publican informacin relevante sobre el proyecto y comparten con la comunidad las nuevas
ideas, los problemas que se estn atravesando o las futuras caractersticas de los productos.
Los blogs sirven tambin como medio de conversacin entre los autores del
software y los usuarios finales a travs de los comentarios.
Algunos ejemplos de este tipo de pginas son los blogs de la Apache Fundation, del equipo de Mozilla o del
fundador de Ubuntu, Mark Shuttleworth.
Pregunta de Autoevaluacin
En qu se diferencian los blogs de las webs?
a) Las webs recogen noticias generales de tecnologa, mientras que los blogs son pginas o espacios
personales.
b) *Los blogs permiten mantener un dilogo directo con los autores del software, mientras que las webs
son publicaciones.
c) Los blogs estn ms actualizados que las webs.
4.4 Comunicacin: Listas de correo e IRC
Tampoco olvides que dispones de otros medios de comunicacin, eso s, ms clsicos. Hablamos de las
listas de correo y el IRC (Internet Relay Chat), que a diferencia de las pginas web, requieren de
programas especializados para su manejo, como un cliente de correo y de IRC, pero que cada vez es ms
comn el acceso mediante un navegador web.
Las listas de correo son un uso especial del correo electrnico que permite la distribucin masiva
de informacin entre mltiples usuarios de Internet. De esta forma, los proyectos disponen de una
forma sencilla de comunicacin entre todas las personas interesadas, centrada en una nica
direccin de correo electrnico.
Por ejemplo, un proyecto podra tener una lista de correo centrada en el desarrollo del software, otra
para compartir informacin sobre los problemas que se encuentran y una ltima destinada a los
usuarios finales, donde comparten experiencias y dudas sobre el uso.
De esta forma, si te interesa slo el tema de la colaboracin con el proyecto te suscribes a las listas
de desarrollo y problemas.
En cuanto al IRC, se trata de un protocolo de comunicacin en tiempo real basado en texto, que
permite charlas entre dos o ms personas en compartimentos semi-privados llamados salas. Estas
salas se crean en los servidores de IRC y permiten la comunicacin entre los usuarios que estis
suscritos a dicha sala.
Como ejemplo, el proyecto python dispone de una sala llamada #python en el servidor de IRC
irc.freenode.org. Al igual que las listas de correo, los canales de irc tambin pueden especializarse,
de forma que puedes encontrar canales en distintos idiomas (#python-es, #python-it, #python-fr, ),
distintos aspectos del producto (#python-devel, #python-bugs, etc).
A travs de estas salas, puedes comunicarte en tiempo real no slo con otros
usuarios del software, sino tambin con los propios autores del mismo.
Estos dos sistemas tienen una serie de virtudes y defectos que se complementan:
En IRC, aunque un usuario est presente en la sala, nada garantiza que la persona
est disponible para interactuar. De hecho existen ocasiones en las que los
usuarios de IRC pasan das o semanas conectados sin prestar atencin a lo que
Disponibilidad ocurre en el canal.
Por contra, en las listas de correo aunque el tiempo para obtener respuesta a los
mensajes es mayor, por lo general se garantiza que alguien leer y prestar
atencin al correo.
Al ser un protocolo de tiempo real, la interaccin entre los usuarios de IRC, cuando
existe, es casi instantnea, de forma que pueden darse conversaciones limitadas
solo por la velocidad de escritura de los participantes y su capacidad de expresin.
Tiempo de respuesta
En cambio, en las listas de correo pueden pasar semanas hasta que un mensaje
recibe respuesta, ya que no slo debe ser ledo, sino que la persona que responda
debe disponer del tiempo suficiente para elaborar el mensaje de respuesta.
Claridad En las listas de correo, al ser mayores los tiempos de respuesta se aprecia una
claridad en el orden de las mismas, haciendo que en la mayora de los casos sea
fcil seguir una conversacin.
En cambio en IRC, al ser conversaciones en tiempo real, no es raro que se de el
caso de conversaciones mezcladas o personas respondiendo cuestiones de forma
desordenada.
Por lo general es fcil perderse en una conversacin con muchos participantes en
IRC. Por este motivo, en reuniones oficiales de proyectos en IRC suele existir la
figura del moderador, que cede turnos de palabra a los distintos partipantes.
Las lista de correo son fcilmente consultables, pues los servidores disponen de
un histrico de los mensajes que se han enviado incluso indexados para permitir la
bsqueda de informacin dentro de los mismos.
Histrico Sin embargo, son raros los servidores de IRC que guardan en copia las
conversaciones de los canales que albergan. Normalmente esto se lleva a cabo
mediante bots de IRC que se limitan a guardar todas las conversaciones que
ocurren en un canal determinado. Estos registros tienen la desventaja de que
suelen existir solo como texto plano en los que es tedioso realizar bsquedas
Las listas de correo y el IRC requieren de una infraestructura modesta para funcionar y existen servidores
gratuitos de ambos medios. Pueden parecerte que, por sus caractersticas y aspecto, son servicios y medios
poco potentes y carentes de atractivo, pero han demostrado ser los medios ms eficientes para la
comunicacin en proyectos de SFA.
Glosario de trminos
Bot de IRC: Programa de ordenador diseado para conectarse a redes de IRC y ejecutar acciones
automticamente o bajo peticiones de usuarios. Un ejemplo son los bots informativos del canal #ubuntu, que
pueden dar informacin variada sobre, por ejemplo, paquetera. Otro uso ms extendido de los bots de IRC
es el de guardar un registro de las conversaciones mantenidas en el canal.
Branch: es la duplicacin de un objeto bajo control de revisiones (por ejemplo, un archivo de cdigo fuente,
o un rbol de directorios) de modo que las modificaciones que puede suceder de forma paralela a lo largo
de las dos ramas.
Comunidad: La comunidad del software libre es un trmino que hace referencia informal a los usuarios y
desarrolladores de software libre, as como los partidarios del movimiento de software libre.
Git: Software de control de versiones diseado por Linus Torvalds, pensando en la eficiencia y la
confiabilidad del mantenimiento de versiones de aplicaciones cuando estas tienen un gran nmero
archivos de cdigo fuente.
IRC (Internet Relay Chat): Es un protocolo de comunicacin en tiempo real basado en texto, que permite
debates entre dos o ms personas. Se diferencia de la mensajera instantnea en que los usuarios no
deben acceder a establecer la comunicacin de antemano, de tal forma que todos los usuarios que se
encuentran en un canal pueden comunicarse entre s, aunque no hayan tenido ningn contacto anterior.
Merge: en un control de revisiones, es una operacin fundamental que reconcilia los mltiples cambios
realizados a una coleccin de archivos controlados por un SGV. Es necesario cuando un archivo se
modifica por dos personas en dos ordenadores diferentes al mismo tiempo. Cuando dos ramas se mezclan,
el resultado es una coleccin nica de los archivos que contiene dos conjuntos de cambios.
Sistemas de Gestin de Versiones (SGV): Se llama control de versiones a la gestin de los diversos
cambios que se realizan sobre los elementos de algn producto o una configuracin del mismo.
Subversion (svn): Es un sistema de gestin de fuentes centralizado diseado para sustituir al antiqusimo
CVS y que es el usado por la gran mayora en los proyectos libres.
Utiliza un repositorio central al que se accede segn un sistema cliente/servidor, donde el administrador del
sitio puede decidir quienes tienen acceso al repositorio o a qu partes del repositorio. Adems puede
permitirse un acceso annimo, slo en lectura a todo el mundo.
Material de Referencia
Metodologa de desarrollo de software. Consultado el 23 de julio de 2010,
Wikipedia:
http://es.wikipedia.org/wiki/Metodolog%C3%ADa_de_desarrollo_de_software
Sourceforge. Sitio web donde se describe con gran detalle las tecnologas y
servicios disponibles en Sourceforge. Tambin sirve como ejemplo si se desea
montar un sistema similar. Consultado el 21 de julio de 2010:
http://sourceforge.net/apps/trac/sourceforge/wiki/WikiStart
Sitio web del Centro Nacional de Referencia de Aplicacin de las TIC basadas en
fuentes abiertas. Consultado el 21 de julio de 2010:
http://www.cenatic.es/
Sitio web donde se informa de forma detallada, a travs de una tabla comparativa,
los diferentes servicios de hosting para los proyectos de software libre. Consultado
el 21 de julio de 2010:
http://en.wikipedia.org/wiki/Comparison_of_open_source_software_hosting_facilities
Sitio web donde se informa de forma detallada, a travs de una tabla comparativa,
las diferentes herramientas de control de versiones para el software. Consultado el
21 de julio de 2010:
http://en.wikipedia.org/wiki/Comparison_of_revision_control_software
Directorio web con informacin relativa a las forjas de Software Libre. Consultado el
21 de julio de 2010:
http://wiki.planetforge.org/index.php/Special:AllPages