2009-05-11 19 views
5

Tengo un proyecto Java de código abierto bastante simple que estoy comenzando. Este proceso es nuevo para mí, estoy acostumbrado a escribir programas solo para mí. ¿Cuáles son algunas buenas prácticas para tener en cuenta al lanzar proyectos de código abierto en Java?Buenas prácticas de ingeniería de lanzamiento de Java

Aquí hay algunas cosas en las que puedo pensar, ¿puedes sugerir otras?

  • repositorio de control de versiones (¿qué es lo que se utiliza para explicar las etiquetas pertinentes/ramas? Un archivo README externa?)
  • incluyen apropiada open-source license en el código
  • archivo de inclusión preenvasados ​​JAR ejecutable, incluyendo el número de versión en el nombre del archivo
  • algún tipo de archivo README que explique las dependencias externas necesarias para compilar/ejecutar el software (¿hay una convención común para qué nombre de archivo y dónde ubicarlo?)
  • página web del proyecto, con un enlace al mismo en el código fuente y/o ex ecutable, en caso de que alguien obtenga el código fuente o el ejecutable primero (en lugar de a través de la página web en cuestión)

Respuesta

0

Generar un changelog desde los comentarios de checkin. Cree por separado una nota de publicación explicando lo que ha arreglado/agregado en cada lanzamiento.

+0

changelogs de los comentarios del desarrollador son inútiles. No tienen sentido si no eres el desarrollador. Si lo es, entonces el sistema SCM debería decirle la información. –

6

Una cosa que definitivamente debes hacer (porque es Java) es generar Javadocs para tu código. Esto significa comentar clases y métodos usando la notación Javadoc para facilitar la lectura a otros.

3
  1. Planifique el desarrollo de algún tipo de sitio web. Si su código involucra software web, la gente realmente se maravilla si lo está usando como parte de su sitio.

  2. Los desarrolladores adoran la buena documentación y muchas muestras. He visto proyectos que tienen muchos códigos potentes pero la documentación del 0% es difícil.

  3. Tener una configuración wiki para que las personas escriban ideas y recetas es una ventaja definitiva. (Recomiendo mediawiki).

  4. Un foro para publicar ideas, hilos de discusión, es decir, un foro de la comunidad también es bueno.

  5. Configura una lista de correo y anima a las personas a unirse.

  6. Publique actualizaciones reales en su lista de correo, sitio wiki y también como novedades en su sitio principal para mostrar que realmente está trabajando en las cosas. Fomentar la participación. Estar disponible. Todo esto genera la sensación de que eres interesante para participar y de que estás abierto a los comentarios de los demás.

1

sugiere emplear Maven como herramienta para la gestión de dependencias externas necesarias para construir/run

Puede aslo uso Vulcan o similar para inetgration continua, por lo que es conocido whetaher versión actual está trabajando realmente o no.

5

También podría usar Maven para liberar su código. Con él es bastante fácil crear un sitio para su proyecto, especificar las dependencias, optimizar las versiones ... Por ejemplo, los proyectos de Commons en Apache usan Maven.

4

Básicamente, desea que su proyecto funcione "de fábrica". Cuando las personas eligen el proyecto de código abierto adecuado para una tarea, descargan un grupo de proyectos que dicen que respaldan la tarea y usan la mejor. Si un proyecto necesita mucho trabajo para su instalación (por ejemplo, la descarga de 20 dependencias JAR de 20 sitios diferentes), la mayoría de las personas solo lo probará como último recurso o simplemente lo ignorará.

Repositorio: Usted puede tratar de algún motor de repositorio de nuevo - como Mercurial o Git. Facilitan el desarrollo y facilitan la fusión de sucursales. Sin embargo, y lo que es más importante, elija un motor compatible con su IDE de forma nativa.

Dependencias: Debe utilizar un readme a dependencias estatales, pero esto no es suficiente, ya sea para uso Maven para administrar dependencias, en cuyo caso sólo tiene que incluir pom.xml archivo, o incluir JAR que eres depende de tu distribución. En el segundo caso, divida las dependencias en mandatory, optional, compiletime y test. Un ejemplo de dependencia opcional son las herramientas de generación de códigos de bytes para Hibernate.

Sitio: Maven puede create a site que está asociado con una versión particular de su software (aunque nunca lo usó).

Documenation - JavaDoc: Documentar todo, y tratar de hacer cumplir una política que garantice javadocs de alta calidad:

/** 
    * Sets the cost 
    * @param decimal cost 
    */ 
public void setCost(BigDecimal decimal){ 

es inútil. Mejor es:

/** 
    * Sets the cost, cost is in currency setted by #setCurrency. 
    * @param decimal cost, precision shoule be at least three places 
    */ 
public void setCost(BigDecimal decimal){ 

Documentación: Javadoc no es suficiente. Da un punto de partida: es preferible un tutorial (y no me refiero al tipo de tutorial con muchas capturas de pantalla de los diálogos de eclipse;)). El código de ejemplo también está bien, o al menos escriba en alguna parte: "Leer el javadoc de la clase EntryPoint es una buena manera de empezar a usar esta biblioteca". Si solo tiene javadocs, cualquier persona que esté considerando usar su biblioteca recibirá una lista de todas las clases y paquetes, y no sabrá por dónde empezar.

Bugtracking Software: No recordará más de tres errores a la vez (y olvidará cosas) - también lo ayudará a administrar tareas y nuevas funciones deseadas. Es posible que desee probar:

  • FogBugz - es agradable, pero cuesta dinero. (Gratis para hasta dos desarrolladores).
  • Bugzilla - agradable, popular y gratuita

software gestión de proyectos: Esto le ayudará a calcular las fechas de lanzamiento, tareas divididas entre los desarrolladores etc.

tratan de pasar Joel test

proceso de construcción: hacer que la construcción de un proceso de un solo clic. Por ejemplo, un script ant que incrementa el número de versión, inicia maven compilaciones, implementa el sitio, etc. ¡Vale la pena el esfuerzo!

Forum: Una buena idea, ayudará a apoyar.

Wiki: En muchos proyectos (incluso bastante desarrollados) tales wikis son bastante vacíos, lo que es malo (ya que hace que la gente piense '¿cómo puede ser un gran software si nadie escribe en este wiki?').

1

Sé que Maven ya se menciona, pero creo que aún más importante que usar Maven es publicar artefactos en repositorios Maven, para que los proyectos que sí usan Maven puedan usarlos. Su página de proyecto puede proporcionar enlaces directos a un repositorio así como también servidor como espacio de almacenamiento para descargables.

También: de manera similar, hacer paquetes OSGi de jarras, que solo significa agregar algunas entradas Manifiesto, nada muy complicado, es otra cosa buena.

Ambos ayudan a otros a agregar dependencias más fácilmente a su paquete (si corresponde) y pueden ayudar a la adopción.

Algunas más cosas a considerar:

  • esquema de número de versión Sensible (versión principal golpe de cambios incompatibles; versión menor para las adiciones con compatibilidad hacia atrás, o algo por el estilo)
  • mantener buenos notas de la versión
  • Use un sistema de seguimiento de fallas, si puede usar uno fácilmente (Codehaus, dev.java.net, SourceForce etc.), ofrezca esto)
  • Proyecto simple Wiki para documentación
  • Listas de correo para discusión
Cuestiones relacionadas