SidelabCode

SidelabCode es la forja de desarrollo de Sidelab. En ella tenemos todos nuestros proyectos alojados y nuestras páginas web. Para nosotros prácticamente todo acaba siendo un proyecto de SidelabCode, desde los proyectos software hasta la información para el desarrollo de una asignatura, pasando por los artículos de investigación. Para Sidelab, la forja SidelabCode es en realidad un plataforma colaborativa. Al final de la página podrás encontrar algo de información sobre los motivos que nos llevaron a instalar la forja.

SidelabCode identifica dos cosas:
  • Por un lado, SidelabCode es la forja de desarrollo del laboratorio Sidelab accesible desde http://code.sidelab.es.
  • Pero SidelabCode también es un software, que se puede descargar e instalar para que cualquiera pueda tener su propia forja en su servidor.

Ya, lo sé, llamar a esas dos cosas con el mismo nombre no es lo más "razonable". Estamos buscando un nuevo "esquema de nombrado", pero todavía no lo tenemos.

Servicios de SidelabCode

Básicamente SidelabCode permite tener proyectos software y dispone de una herramienta de administración de los mismos. A nivel general, SidelabCode dispone de:

  • SidelabCode Console: Una consola de administración de la forja.
  • Redmine: Una aplicación web para la gestión de proyectos sofware.

Por cada uno de los proyectos creados en SidelabCode, se dispone de los siguientes servicios:

  • Gestión de usuarios que tienen acceso de escritura a cada proyecto
  • Un proyecto en Redmine
  • Un repositorio Subversion accesible por https
  • Una carpeta privada protegida por contraseña accesible por SFTP (lectura y escritura) y por https (Sólo lectura)
  • Una carpeta pública accesible por http. La modificación del contenido de esa carpeta se realizará por SFTP protegido por contraseña.

Además, SidelabCode permite que los proyectos sean públicos o privados:

  • Privados: Sólo serán accesibles (tanto lectura como escritura) por los usuarios asignados al proyecto. De esa forma está garantizada la confidencialidad de los proyectos. Un proyecto privado es ideal para el desarrollo de proyectos internos.
  • Públicos: Sólo podrán escribir en ellos los usuarios asignados al proyecto. En cambio, la siguiente información será pública:
    • Proyecto en Redmine (wiki, issues, miembros del proyecto...)
    • Repositorio SVN: Accesible por http de sólo lectura sin autenticación

Documentación de SidelabCode

¿Por qué crear SidelabCode?

El laboratorio sidelab está formado por entusiastas de la programación. Entre unas cosas y otras siempre acabamos con Eclipse abierto y con el Ctrl+Espacio cargado. Dedicamos una buena parte de nuestro tiempo de trabajo y de nuestro tiempo libre al desarrollo. Estamos continuamente ideando, diseñando e implementamos todo tipo de códigos como algoritmos, herramientas interactivas, librerías, plugins para entornos de desarrollo, prácticas, páginas web... incluso documentos LaTeX. Cada día intentamos mejorar aprendiendo nuevas técnicas de desarrollo, tecnologías, herramientas, librerías, lenguajes de programación... todo lo que cae en nuestras manos relacionado con el desarrollo. Los proyectos desarrollados en el laboratorio tienen objetivos muy diferentes: proyectos de fin de carrera, investigación, colaboración con empresas, prácticas, ejercicios. Obviamente, necesitamos una forma adecuada de gestionar este desarrollo.

Un poco de historia

Al principio nos bastaba con el repositorio de código, la verdad es no recuerdo qué hacíamos cuando no teníamos el Subversion. Pusimos XWiki para las asignaturas, proyectos, páginas personales. Luego utlizamos Trac cuando colaboramos con la empresa Solaiemes:http://www.solaiemes.com y nos gustó mucho. Instalamos Bugzilla:http://www.bugzilla.org para ver qué tal funcionaba. Al final XWiki nos dió tantos problemas que decidimos tener un sofware especializado para cada tarea:
  • Drupal para las webs personales o páginas de herramientas
  • Moodle para la gestión de asignaturas
  • Una verdadera forja con SVN + Git + Redmine + LDAP + Apache + SFTP para el desarrollo software

En ese momento comenzó "la lucha". Drupal ha sido complicado de domar. Tres proyectos fin de carrera después y decenas de tardes mirando documentación nos ha permitido llegar a un punto "estable" con este CMS. También hay que decir que los requisitos no son nada convencionales.

Moodle ha dado pocos problemas. Según comentó Raul Cabido todo fue bastante directo. De momento aguanta bien un master y varias asignaturas. A ver si para el año que viene podemos pulir algunas cosas como la subida de ficheros.

La forja ha sido lo más complicado de todo. Menos mal que Patxi cogió el toro por los cuernos y se puso con ello. Desde el momento en que pusimos nuestro primer servidor de Subversion ya habíamos soñado con una aplicación de administración. Nunca nos ha gustado editar ficheros con vi para realizar tareas de administración (cuestión de manías). Después de dos proyectos de fin de carrera, ya teníamos SVNAdmin, un plugin de Eclipse para la administración de repositorios SVN. Con la llegada de Bugzilla, el declive de XWiki, la experiencia con Trac y después de usar SourceForge había que repensar el concepto de "forja". Tuvimos muchos problemas de diversa índole con SourceForge. También queríamos tener una forja en la que poder desarrollar proyectos que no queríamos hacer públicos.

SidelabCode va tomando forma

Después de evaluar alternativas y de casualidad decidimos instalar Redmine. Ya que estábamos, Patxi quiso hacerlo bien con LDAP. Y ya puestos, una carpeta pública y otra privada por proyecto accesible por http, https y sftp. Incluso Patxi hizo sus pinitos con git y con Hudson (ahora Jenkins). La verdad es que todo funciona de maravilla. Siempre quedan cosas por hacer, pero hemos avanzado varios órdenes de magnitud con esta forja. No tiene tantas cosas como otras forjas pero a nosotros nos sirve. Si quieres saber cómo está el mundo de las forjas, la página de comparativa de forjas públicas es una lectura obligada.