Qué debería tener un proyecto web Open Source

El uso de herramientas web open source es muy frecuente tanto en proyectos personales como profesionales. Existen alternativas de código abierto para casi todo lo que podemos necesitar: blogs, CMS, gestión de proyectos, galerías de imágenes, … Desgraciadamente, algunas veces estos proyectos open source no son demasiado “buenos” y trabajar con ellos puede ser un verdader suplicio.

Quizás hablo desde la desesperación que sufro últimamente por tener que lidiar con el desarrollo de otros, pero me gustaría compartir una serie de aspectos que debería tener un proyecto web open source, sobre todo aquellos que ya tienen unos cuantos años, lógicamente, sin desmerecer el trabajo altruista de nadie.

  • Buena documentación: imprescindible, ya sea para el usuario como para el desarrollador.
  • MVC: bueno, cualquier proyecto debería seguir esta arquitectura, pero en el caso de un proyecto open source en el que cualquiera puede echar mano al código, se convierte en algo absolutamente necesario ya que normalmente se requiere una personalización y si se ha de tocar el core para realizar los cambios necesarios, mal vamos. Además, el MVC te permite quitar las odiosas tablas que te encuentras en muchos proyectos.
  • Plugins: el proyecto deberá permitir que otros añadan funcionalidades a tu código. El éxito de un proyecto open source depende de la comunidad, y es la comunidad la que se suele encargar de los plugins. En versiones iniciales es posible que esta funcionalidad no exista, pero debería ser una futura implementación.
  • Themes: para proyectos de CMS, blogs o con frontend público, siempre viene bien tener una lista de themes donde poder elegir y diferenciar tu aplicación de otras similares. Además, también es un origen de colaboraciones por parte de la comunidad (al igual que los plugins) y existen numerosas webs o empresas que ofrecen themes de pago, lo cual aporta negocio e interés para los usuarios/desarrolladores.
  • I18N: aunque muchos estamos acostumbrados al inglés, es necesario que el proyecto permita la internacionalización para que existan versiones en diferentes idiomas; a todo el mundo le gusta usar las aplicaciones en su propio idioma.
  • Comunidad: el Santo Grial, si tienes comunidad, tendrás éxito (o casi). Creo que esto debe ser lo más complicado de obtener, porque en parte no depende de tí, depende del gusto de los otros desarrolladores, por eso, quizás, los puntos anteriores sean tan importantes.
  • Foro: aunque algunos crean que los foros están obsoletos, no hay nada más utilizado y necesario que un foro para resolver dudas, sobre todo si existe un foro mayoritario y no tienes que buscar en otros 100, y más importante aún, que las respuestas las ofrezcan, entre otros, los desarrolladores del proyecto open source.
  • Gestor de errores: da igual si es Trac, Bugzilla u otro similar. El problema de todo proyecto es la detección, corrección y seguimiento de errores, si se ofrece una herramienta para que la comunidad se involucre en esta fase el proyecto irá mucho mejor.
  • Gestor de versiones: SVN, git o similares, para que la gente se pueda descargar las últimas modificaciones
  • API: al igual que los plugins, permite que otros interactuen con tu aplicación, sobre todo desde otras aplicaciones diferentes, por lo que se añade riqueza al proyecto.
  • Código documentado: aunque exista una documentación del uso de las funciones “públicas”, siempre viene bien tener la documentación de core.
  • Sencillez: por favor, que para crear un plugin, módulo o componente no sea necesario crear 20 archivos y 30 directorios
  • Estándares: si todos vamos a nuestra bola, al final habrá que aprender 100 métodos distintos, siempre es mejor seguir los eśtandares y no volver loco al personal. Por ejemplo OAuth, no te crees tu propio método de autenticación porque si la gente lo necesita usar le causarás un inconveniente, y si no lo necesita usar se echará para atrás y cambiará de opinión porque no le apetecerá usarlo.
  • Interacción con otras aplicaciones: en el punto en el que nos encontramos es absurdo pensar únicamente en nuestra aplicación, ahora es necesario que todo se conecte con todo, no nos olvidemos de los archifamosos Google, Facebook y Twitter

Actualizado desde aquí

  • Administración: existe algunos proyectos que van por ficheros de configuración, lo cual no quiere decir que sea difícil de administrar, pero no todos los usuarios son avanzados y hay que poner las cosas fáciles a la gente.
  • Instalador: como bien dice Chema un instalador sencillo y paso a paso puede ser fundamental para el éxito del proyecto, ya que si la instalación es complicada, probablemente el usuario no avance y descarte usar nuestro proyecto.

No son nuevas verdades, pero aunque parezca mentira en muchos proyectos que he visto algunos puntos brillan por su ausencia y en otros se hace justamente lo contrario

Bitnami: simplificación del open source

Bitnami es una web que pretende simplificar el uso de las aplicaciones web open source. Para ello lo que hace es recopilar aplicaciones y agruparlas en paquetes (stacks) de fácil instalación para Linux, Windows y Mac.
bitnami.png
Además también agrupa los contenidos en aplicaciones para documentar, blogs, CMS o Wiki. Por ello podemos instalar aplicaciones como Joomla!, Drupal, Mediawiki y WordPress de forma muy sencilla. Además nos da la posibilidad de conocer algunas que nos pueden ser útiles y porder elegirlas por plataforma o licencia gracias al sistema de tags.
Los stacks son independientes a otras aplicaciones instaladas, completos, y pueden ser instalados en el directorio que se quiera, por lo que puede haber diferentes instancias del mismo stack. Algo bueno es que hasta que no se pulsa el botón finalizar, no se empieza con la instalación, evitando así instalaciones incompletas.
BitNami
Vía / dzone

10 razones para seguir estrategia Open Source

Actualmente algunas empresas son poco partidarias de utilizar herramientas open source a la hora de realizar sus proyectos. Aquí os paso algunas razones que nos pueden animar a hacerlo, aunque claro, esto es según gustos y habrá otras razones que invaliden las que se indican.

  • Disminuir la dependencia a vendedores de código propietario: esto suele ser debido a la necesidad de actualizar la versión del producto, esperando mejoras o nuevas funcionalidades, ocasionando en algunos casos un gasto de dinero y tiempo importante.
  • No hay necesidad de presupuestar el coste de mantenimiento de software y de personal encargado: el gasto que suponen las licencias de software y el salario de personal conocedor de esas herramientas suele ser bastante elevado, incrementando así los costes del proyecto y repercutiendo en los beneficios.
  • Acceso a más herramientas: se puede acceder a un casi ilimitado número de herramientas (desarrollo, testing, CMS, seguridad, …), sin necesidad de solicitar permiso para obtenerlo debido a su coste.
  • Pruébalo antes de comprarlo: aunque muchas de las herramientas propietarias si ofrecen versiones Trial o gratuitas para desarrollo, sí que es imposible a veces ver cómo funciona un producto sin tener que comprarlo antes.
  • Soporte por parte de una comunidad de usuarios: esto es algo que a las empresas les suele echar para atrás, el no tener un soporte oficial. Como desarrollador puedo asegurar que normalmente el soporte lo da Google y no el soporte oficial, del cual el 90% de las veces no se utiliza.
  • Acceso al código y la posibilidad de modificarlo según tus necesidades: algo bastante típico es tener que esperar a una nueva versión o tener que comprar una versión actualizada de un producto para conseguir una funcionalidad necesitada. Si dispones del código es posible que puedas modificarlo a tu gusto. Algo parecido hizo Google con MySQL.
  • Poder de negociación con vendedores de software propietario: con esta no estoy muy conforme, pero bueno, quizás nunca se me haya el caso, como dice, de poder obtener mejores condiciones de Microsoft si tienes Ubuntu instalado en 20 ordenadores como experiencia piloto.
  • No hay exceso de características inútiles: en los proyectos open source, las nuevas funcionalidades suelen venir dadas por las necesidades de los usuarios, no por las ideas de un departamento de desarrollo o marketing.
  • Más seguridad: algo que crea mucha controversia, pero estudios como el de Trend Micro muestra que el open source es más seguro.
  • Solución de errores y nuevas implementaciones con más rapidez: en algunos casos los errores se solucionan mucho antes incluso de que lo detecten los usuarios.

10 Reasons why you need an Open Source Strategy

Vía / OpenSourceCommunity.org