2010-01-01 13 views
5

Estoy buscando documentación sobre cómo hacer comúnmente la parte técnica de la publicación de la fuente de los primeros proyectos de código abierto, en particular con material de biblioteca en C/C++, Java, Python.¿Cómo se organizan y despliegan comúnmente los proyectos de código abierto?

Para dar un ejemplo, si he construido un proyecto de C++ con un IDE como Netbeans y varias bibliotecas como Xerces-C y Boost, me gustaría averiguar sobre estas preguntas:

  • que son las herramientas más comunes para organizar el proceso de compilación para un proceso así fuera de mi propio entorno, y más importante aún

  • ¿cómo los aprendo de la forma en que generalmente se hacen? Utilizo muchos proyectos de código abierto y puedo leer el código de compilación (makefiles y opciones de configuración, etc.), pero eso no me dice cómo llegar, cuáles son los detalles importantes y lo que generalmente se espera.

  • hay idiomas específicos (como los mencionados) algo así como una guía de 'estilo de codificación' en la implementación? ¿Hay proyectos de código abierto que tengan directrices sobre eso?

  • al implementar el código fuente (en lugar de paquetes con apt/port/etc, donde puede resolver dependencias), ¿cuál es la forma típica de implementar dependencias de biblioteca?

sé que puedo leer todas las páginas de manual y toda la documentación, pero me gustaría leer acerca de las 'convenciones' y cómo se implementan y se espera en lugar de todas las posibles opciones técnicas.

me encontré con éste en otro post StackOverflow, es bueno, pero no es muy específica: http://producingoss.com/en/producingoss.html

Respuesta

2

Veamos una de las características de código abierto. Si desea conocer cómo se implementa, descargue un par de proyectos similares de código abierto y aprenda de ellos. Por lo tanto, busque uno que esté hecho como el suyo y estudie sus fuentes.

¿Por qué debería ayudar? Lo que pasa es que los proyectos de código abierto tienen que poder construir en las máquinas de los usuarios fácilmente. De lo contrario, nadie podrá contribuir con ellos. Por lo tanto, toda la información necesaria acerca de cómo se deben implementar generalmente se incluye en los archivos INSTALL o README entre las fuentes que descargó. Por lo general, constan de varios pasos simples. Con el mismo propósito, la verificación de la disponibilidad y las versiones de los requisitos previos está automatizada (en los scripts configure), y en ocasiones tales scripts incluso ayudan a instalarlos.

Lo que generalmente se espera que sea algo así como

# Download sources (this line is read from your website) 
wget http://myapp.org/myapp-source-2.15.tgz 
tar -xzf myapp-source-2.15.tgz 
cd myapp-2.15 
less INSTALL 
# read INSTALL file, where instructions about installing prerequisites are 
./configure --help 
# Read help, learn about possible options 
./configure --prefix=/install/here --without-sound 
make 
make install 

Hoy en día algunas aplicaciones utilizan cmake en lugar de autotools (el stufff con configure script).

Dudo que los proyectos Linux en realidad requieran NetBeans como un sistema de compilación, eso sería una exageración. Pero este IDE parece generar makefiles, así que envíelos. También puede enviar archivos de porte específicos de IDE al repositorio, por conveniencia, pero no debe ser la forma principal de construir su software.

Hay algunas cosas más usuarios esperan encontrar en el paquete:

  • información de licencia (por lo general en LICENSE archivo y al principio de cada fichero fuente también)
  • Enlace para proyectar página de inicio (donde informar de los errores)
  • directrices de codificación (como flie texto)
  • Información para los mantenedores (cómo bump versión, cómo agregar módulo, etc)
+0

Tiene razón acerca de Netbeans, de que lo que realmente dije es que quiero que sea independiente de mi entorno privado. Probablemente tenga razón y simplemente leer muchas fuentes y documentación ayudará, pero esperaba que hubiera algo así como una forma estándar de hacerlo y una descripción de cómo se está haciendo.El proceso configure/make/makeinstall es algo así, y me preguntaba si alguien probablemente había escrito un libro o sitio sobre todo el proceso de empaquetado y publicación de fuentes para el público en general (porque los libros 'normales' tratan sobre el envío de productos) –

+0

Para la transformación de NetBeans a makefiles genéricos, es posible que desee escribir un script especial de "maintainer" (y quizás también publicarlo). Acerca de la organización del código, no hay mucho sobre lo que escribir, aparte de escribir sobre el uso de herramientas específicas (como autotools o cmake). Simplemente verifique cualquier código fuente para ver lo que debería estar allí (voy a editar mi respuesta para algunas ideas). –

2

Se podría empezar con http://llvm.org/docs/DeveloperPolicy.html y http://llvm.org/docs/CodingStandards.html. El proyecto LLVM es un proyecto de código abierto muy bien organizado.

+0

Gracias, pero eso es más acerca de estándares de codificación en lugar de estándares de implementación/construcción de origen, estoy buscando documentación sobre cómo alejarse de '.. bueno, se ejecuta en mi máquina ...'. –

+0

No estoy seguro de si esto ayuda, pero esto es lo que tengo para mi proyecto: http://ellcc.org/installation.html. Las instrucciones son un poco complejas porque uso cosas de una variedad de fuentes. –

2

Como parece que está escribiendo aplicaciones de Linux, es posible que desee echar un vistazo a las herramientas automáticas de GNU como autoconf. De hecho, hay a good book en ellos, y ellos se encargarán de la mayoría de los problemas de dependencia por usted.

+0

Buenos enlaces, gracias. –

1

recomiendo esto: http://producingoss.com/

Este libro explica la mayor parte de los procedimientos de uso común, así como un montón de cosas sociales, F. E. cómo lidiar con los contribuyentes.

0

Lo que se busca es construir sistema ++

Si desarrolla para las plataformas POSIX (Linux) o se trabaja únicamente con MingW bajo Win32 que sugeriría a aprender a trabajar con autotools - autoconf/automake/libtool y amigos.

Le da, empaquetado de código fuente, configuración, prueba, instalación. Son ardientes para los empaquetadores de distribución (deb/rpm).

Tienen una curva de aprendizaje bastante empinada, pero son herramientas muy poderosas para estas tareas.

Sin embargo, si desea admitir el compilador de MSVC, sugeriría echarle un vistazo a CMake, en mi humilde opinión es menos potente y requiere mucha más escritura, pero lo necesitaría para Windows con todos los problemas de dllexport/importación (o , en palabras menos amables - mierda).

Esto es lo que estás buscando.

Cuestiones relacionadas