¿Cómo puedo encontrar un buen proyecto de código abierto para unirme? [cerrado]

152

Empecé a trabajar hace un año y quiero unirme a un proyecto de código abierto por los mismos motivos que cualquier otra persona: ayudar a crear algo útil y desarrollar aún más mis habilidades.

Mi problema es que no sé cómo encontrar un proyecto en el que pueda encajar.

¿Cómo puedo encontrar un proyecto amigable para principiantes? ¿Qué atributos debo buscar? ¿Cuáles son las señales de advertencia de que un proyecto podría no ser el adecuado? ¿Existe alguna herramienta para ayudar a unir a las personas con proyectos de código abierto?

Hay una pregunta similar aquí , pero esa pregunta tiene que ver con el empleo y se limita a PHP / Drupal.

Estallidos
fuente
99
Genial, acabo de echar un vistazo a ArsTechnica y vi esta pregunta como un artículo. Aquí está el enlace. arstechnica.com/business/guides/2012/03/…
Evan Plaice

Respuestas:

111

Mi primera contribución de código abierto fue para una biblioteca que había usado previamente (y habría sufrido mucho sin ella) en un proyecto pago previo. Durante mi uso inicial había detectado un error en el código, así que creé un parche, me uní al proyecto y lo envié para su revisión.

Aproximadamente 8 meses después, cuando tenía algo de tiempo libre, decidí que devolvería (y trabajaría en mis habilidades de desarrollo) contribuyendo más al proyecto. Así que cloné el repositorio y comencé a familiarizarme con la base de código. Después de algunas semanas de enviar pequeñas correcciones de parches a la base de código y monitorear las solicitudes de funciones, recogí una solicitud de funciones para agregar un módulo bastante sustancial al proyecto.

Dado que generar muchas correcciones de parches individuales es bastante tedioso para cualquier desarrollo significativo, cloné el repositorio en una rama en git hub y comencé a eliminar el código. Unas semanas y varios miles de líneas de código más tarde, el líder del proyecto y yo trabajamos integrando y probando mis correcciones en la biblioteca de una manera que funcionó de manera consistente con el resto de la base de código.

Fue un proceso invaluable del que aprendí mucho:

  • Cuando comencé no sabía cómo usar Git, al final pude crear ramas de seguimiento remotas y fusionarlas o volverlas a formar en la rama maestra sin sudar.
  • Comencé en VS 2008 y terminé migrando a Linux y Monodevelop para trabajar en la escritura de código (porque VS es unicode retardado y las terminaciones de línea son un gran problema en git). Resulta que no hay mucho que no puedas hacer en * nix que puedas hacer en * dows.
  • Nunca antes había hecho ninguna prueba de unidad, Nunit es muy fácil de usar y escribir pruebas de unidad es algo bastante elemental.
  • Tuve que aprender a tragarme la lengua y escuchar, así como practicar la paciencia. No tiene sentido mantener una posición firme en su posición en un proyecto de código abierto porque todos los involucrados están bien informados (probablemente más que usted) y capaces de aceptar / rechazar sus ideas basadas en la sustancia y no en la entrega. Es extremadamente humillante y gratificante al mismo tiempo.
  • Solo tener los ojos de otro desarrollador experto en una gran base de mi código señaló fallas en mi estilo que nunca había considerado antes (así como también señalé fallas en su código). Para mí, aprendí que es más fácil / mejor definir constantes que usar un montón de números mágicos con comentarios detallados.

Ese proyecto particular se basó en generar y decodificar paquetes de red en todos los niveles de protocolos de red. Tengo un interés personal en las redes de nivel inferior, por lo que fue genial tener conversaciones con otro desarrollador con intereses y conocimientos compartidos en el dominio.

Si solo quieres mojarte los pies: busca un proyecto que ya uses; clonar el repositorio; y empiece a ver si puede corregir algunos errores y / o agregar algunas pruebas unitarias. Parece intimidante mirar la base de código de otra persona con ojos nuevos, pero es una habilidad extremadamente valiosa para aprender. Envía algunos parches. Puede esperar que su código sea analizado de cerca al principio. No se preocupe, es una parte normal del proceso ganarse la confianza de los administradores del proyecto.

Después de establecer una base de mérito con los administradores del proyecto, comience a buscar más responsabilidades, como proponer nuevas características o solicitar que se le asigne la implementación de solicitudes de características.

Si no puede encontrar un proyecto ya existente en una de las principales redes de repositorio de código abierto (github, sourceforge, código de google) piense en una aplicación que realmente le gustaría usar que aún no existe y comience la suya.

Prepárese para ser humilde y espere que el trabajo sea rechazado a favor de nuevas revisiones. El mito de que cualquiera puede agregar código a un proyecto de código abierto es completamente falso. Siempre hay un guardián entre usted y el acceso push. Cuanto mejor sea su código, menos será analizado a largo plazo a medida que se gane la confianza de los administradores del proyecto. Si es tu proyecto, serás ese guardián.

Actualizar:

Simplemente lo pensé y me di cuenta de que no me molesté en mencionar a qué proyecto hace referencia gran parte de mi respuesta. Para aquellos que quieren saber, es SharpPcap . El desarrollador principal Chris Morgan es muy profesional y puntual. Él hace un gran trabajo gestionando el proyecto y me enseñó mucho sobre lo que se necesita para madurar un proyecto OSS.

Debido a limitaciones de tiempo personal, no he podido contribuir con código en más de un año, pero todavía trato de devolver al acecho en Stack Overflow y respondiendo preguntas sobre SharpPcap ocasionalmente.

Evan Plaice
fuente
¿Puedes sugerir algún sitio popular al respecto?
Aditya P
2
@AdityaGameProgrammer Pondría más énfasis en buscar un proyecto específico que no sea un sitio de alojamiento de código abierto. Los sitios de alojamiento son solo un vertedero para proyectos de código abierto y algunos proyectos migrarán a diferentes sitios si se pueden encontrar mejores características (es decir, licencias específicas compatibles, mejor soporte de control de versiones, mejores rastreadores de errores, etc.). Ya he nombrado algunos. En mi humilde opinión, github, google code y sourceforge son los más populares. Launchpad (utiliza el control de versiones de bazar) es donde encontrarás la mayor parte del desarrollo de Ububtu / Linux.
Evan Plaice
2
@AdityaGameProgrammer (cont) Github, sourceforge y el código de google son multitud de proyectos. Debido a que sourceforge ha existido por más tiempo, probablemente encontrarás muchos más proyectos muertos / huérfanos. Es mucho más fácil encontrar un proyecto al que unirse si se toma un tiempo para considerar lo que le interesa primero. La excepción es, si está buscando alojar su propio proyecto. Luego, tómese un tiempo para darse una vuelta por las características que mejor se adaptan a su flujo de trabajo de desarrollo habitual.
Evan Plaice
Gracias. Mis intentos anteriores de encontrar uno en sourceforge me llevaron a una gran cantidad de proyectos muertos / huérfanos.
Aditya P
28

Aquí te sugiero que hagas para encontrar tu pareja perfecta:

  1. Si tiene un proyecto de código abierto que ya utiliza, conoce y le interesa, debería ser su primer candidato para intentarlo. De lo contrario, piense en lo que le gustaría hacer en general y busque un proyecto en esta área.

  2. Cuando haya encontrado un proyecto potencial, no se apresure. Intenta usarlo tú mismo. ¿Es tan bueno en acción como parecía por descripción y comentarios? Si no, no es un completo show-stopper; tal vez sea una oportunidad para que saltes y realmente marques la diferencia. Después de todo, nadie necesita otro desarrollador para un producto perfecto. Pero le dará una idea importante de si desea ser parte de este proyecto, mientras adquiere experiencia de primera mano con las nuevas tecnologías en un área que le interesa.

  3. Además, antes de comenzar a invertir demasiado tiempo en el proyecto y aprender sus entresijos, considere quedarse en las listas de correo del proyecto, foros e incluso en el sistema de seguimiento de errores durante un par de semanas. Si comenzará a contribuir al proyecto regularmente, pasará mucho tiempo allí.

Averigüe: ¿le gusta pasar el rato allí, o es un lastre para usted? ¿Siente que este proyecto tiene una comunidad buena y enérgica o está muriendo lentamente? ¿Las personas centrales parecen alentar y orientar a los recién llegados o usted estará solo?

Siga estos pasos para varios proyectos, potencialmente en diferentes áreas y es menos probable que experimente la decepción que se produce cuando se une a un equipo equivocado. Tal experiencia puede potencialmente desanimarlo de volver a hacerlo en el futuro.

Algunas reflexiones más:

Si el proyecto que realmente le interesa es uno de alto perfil con muchos desarrolladores y actividad a su alrededor, probablemente le resulte difícil establecer una reputación suficiente para obtener, por ejemplo, comprometer derechos o un papel interesante en la comunidad. En este caso, considere unirse a un proyecto derivado relacionado con menor visibilidad. Por ejemplo, en lugar de intentar comenzar a contribuir a jQuery, intente encontrar el complemento jQuery que se ajuste bien a usted. Más tarde puede considerar "subir".

Si le gusta un proyecto pero se siente intimidado por su tamaño, complejidad o requisitos de calidad de código, considere comenzar desde roles de soporte, como pruebas, mantenimiento de documentación o verificación de informe de errores. Si pregunta en la lista de correo del proyecto qué tipo de ayuda necesitan más en este momento, estarán más que felices de guiarlo allí. :)

De esta manera, aprenderá el proyecto y construirá su reputación allí mientras contribuye mucho más que si comenzara a enviar parches por debajo del estándar que serían rechazados varias veces hasta que estuvieran listos.

Lo último y lo más importante: si te quemas en un lugar, sigue adelante; no te rindas

Espero que ayude.

kdubinets
fuente
2
+1 para "considerar comenzar desde roles secundarios". Escribir pruebas es realmente fácil y una mirada cercana a las pruebas da una buena idea sobre lo que el código está tratando de lograr. La documentación es una buena manera de comprender el 'panorama general', y verificar los errores es un buen punto de entrada de baja barrera para romper el hielo. Trabajar en las cosas que los desarrolladores generalmente descuidan demuestra que su enfoque es mejorar el proyecto y que sus contribuciones no son solo impulsadas por el ego. Los problemas de ego pueden dificultar la vida de los encargados del mantenimiento del proyecto, por lo que deben estar atentos a ese tipo de cosas.
Evan Plaice
9

Recomiendo encarecidamente que encuentre un proyecto de código abierto que tenga su sincero interés y que lo use activamente .

La razón es simple: hace la diferencia entre una tarea y un pasatiempo.

Echa un vistazo a tu computadora. ¿Qué software has puesto que sea de código abierto? Una conjetura sería Chrome o Firefox, o quizás Open Office o un cliente de Instant Messenger. ¿Son perfectos o hay algo pequeño que te gustaría cambiar si pudieras?

Si es así, ahora es el momento de hacer algo al respecto.


fuente
8

Sugeriría encontrar (o comenzar) un proyecto tal como la gente ha estado haciendo durante años, comenzar a usar el software de código abierto para hacer cosas. Eso puede parecerle trivial, incluso quizás demasiado simplificado. Sin embargo, es realmente difícil describir la satisfacción de usar algo, encontrar un error, agarrar la fuente y solucionarlo. O, tal vez cambiándolo para que funcione de la manera que usted quiere que funcione.

Además, no solo hackeo por el simple hecho de involucrarse. El 95% de mis parches para el kernel de Linux nunca verán la luz del día, estoy seguro de que nadie los querría sino yo, y probablemente me vería obligado a someterme a una evaluación psiquiátrica si algún otro pirata informático competente los viera alguna vez. Pero todavía disfruto mi implementación, piglatin_printk()que comenzó como una mordaza del 1 de abril hace varios años :)

Si bien sí, poner su código y su proceso de pensamiento frente a muchas otras personas competentes no tiene precio, también lo es aprender a comunicarse y colaborar. Un proyecto en solitario es una excelente manera de mostrarte lo que no debes hacer. Sugerencia, hay más que solo usar el software de control de versiones, listas de correo y un rastreador de errores.

Para empezar, sugiero a excavar alrededor Ohloh a encontrar el software que usted podría estar interesado en utilizar , en primer lugar. Descárgalo, construyelo, juega con él. Entonces ve a buscar otra cosa. Eventualmente, llegará a querer mejorar algo, o se dará cuenta de que tiene la necesidad de implementar algo completamente diferente de lo que encontró.

La otra cosa que ayuda es trabajar para una empresa abierta y amigable. Mi compañía usa Xen ampliamente, por lo que no tienen ningún problema para que encuentre errores interesantes y los repare, ya que de todos modos tendríamos que hacerlo. Tampoco les importa que los empleados participen en cosas como RFC y especificaciones preliminares, ya que finalmente utilizaremos el resultado.

Tim Post
fuente
+1 piglatin_printk ()? Suena gracioso Me gustaría ver eso en acción. No es sorprendente que la mayoría de los parches del kernel de Linux hayan sido rechazados, no hay mucho espacio para la diversión / creatividad en un proyecto tan crítico. Afortunadamente, hay muchos proyectos más pequeños que tienen una barrera de entrada mucho menor para aceptar el código, incluso si las contribuciones necesitan algo de trabajo antes de comprometerse.
Evan Plaice
1
@EvanPlaice No fueron rechazados, simplemente nunca se presentaron;)
Tim Post
7

OpenHatch fue creado específicamente para esto.

Citar:

OpenHatch es una organización sin fines de lucro dedicada a unir posibles contribuyentes de software libre con comunidades, herramientas y educación.

Puede explorar proyectos por tipo, tecnología, nivel de habilidad requerido, etc. y encontrar lo que coincida con su nivel.

phw
fuente
Great little site :) También se puede visitar freecode.com
nha
4

Una cosa que he notado repetidamente cuando se trata de personas que buscan comenzar con el desarrollo de código abierto es que se sienten abrumados por la gran complejidad y magnitud de los grandes proyectos. Enfrenté el mismo problema hace un par de años, y desde mi experiencia, es mejor no mirar los proyectos más grandes de inmediato.

Después de pasar algún tiempo mirando proyectos que me podrían gustar, me di cuenta de que todavía estaban fuera de mi alcance y luego comencé a trabajar en proyectos muy pequeños por mi cuenta. Me propongo publicar el código en Github, independientemente de si es realmente relevante o si otras personas comenzarán a usarlo. Eventualmente, la gente podría comenzar a interesarse en lo que haces. Incluso de lo contrario, ganará confianza y capacidad técnica para avanzar lentamente hacia proyectos más grandes y más populares.

Suma de comprobación
fuente
3

Existe un nuevo sitio web específicamente para este llamado Código 52 que alienta a los nuevos desarrolladores a involucrarse en el código abierto al comenzar un nuevo proyecto OSS cada semana.

La idea es que parecerá mucho menos desalentador para las personas que nunca antes han estado involucradas en el código abierto y, con suerte, también se sentirán más inclinadas a involucrarse en otros proyectos de OSS.

Marcus Swope
fuente
1
Lo he estado investigando y tengo algunas notas para agregar. Code52 está encabezado por 3 desarrolladores de la compañía Readify que afirman haber ganado el título de 'Socio del año 2012 de Microsoft'. Aunque los proyectos están alojados en GitHub, cada uno de los proyectos está escrito en WinJS (es decir, Win8 objetivo) y lleva la Licencia Pública de Microsoft. Desde un punto de vista superficial, MPL tiene copia izquierda pero conlleva ciertas restricciones que requieren derivados para heredar la misma licencia o una similar. Es decir, se parece más a la licencia GPL que a la licencia MIT, mucho menos restrictiva.
Evan Plaice
El proyecto parece muy atractivo, pero no puedo evitar la sensación de que este es el recién creado programa Open Share Developer Digital Sharecropping creado por Microsoft para poblar el nuevo ecosistema de Windows 8 sin gastar un centavo. No suena como un sombrero de papel de aluminio con cuello de oso, pero MS no tiene exactamente la mejor reputación cuando se trata de integrarse con Open Source.
Evan Plaice
1
-1 Parece que este sitio básicamente murió (no hay más actualizaciones) hace más de un año
Michael Durrant
3

Recomiendo leer: http://open-advice.org/ .

Su objetivo es ayudar a aquellos que crean y mantienen comunidades, y a aquellos que no confían en a cuál quieren unirse o cómo hacerlo.

De lo contrario, encuentre un proyecto que tenga una misión que resuene con usted, o bifurque y contribuya a uno que ya le sea útil.

Buena suerte.

usuario549213
fuente
3

Cuando comencé, busqué opciones en línea y resultó difícil encontrar algo en lo que pueda hundirse los dientes como principiante.

Es difícil contribuir a algunos proyectos no porque sean demasiado avanzados sino porque la comunidad no es acogedora. Por lo tanto, no se desanime cuando golpee una pared.

Durante la búsqueda, decidí armar una lista de 10 proyectos de código abierto que los principiantes pueden comenzar a apoyar sin procesos estresantes. Aquí está el enlace para usar:

Diez proyectos para principiantes para apoyar y aprender de

¡Espero que les sea útil y siempre puedan agregar más si encuentran geniales!

Eenvincible
fuente
¿Le importaría explicar más sobre lo que hace y por qué lo recomienda como respuesta a la pregunta que se hace? Las "respuestas de solo enlace" no son bienvenidas en Stack Exchange
mosquito
2

Sugiero comenzar un proyecto por su cuenta sobre un tema que le interese.

Se puede aprender mucho trabajando en un proyecto en general. No es necesario ver cómo alguien más codifica para aprender a codificar mejor. Y a veces verás qué no hacer, ya que las otras personas a menudo no tienen más experiencia que tú.

Por lo general, es útil ver el código de otros, pero encontrará el código de otras personas en su propio proyecto solo a través de las bibliotecas y los componentes que usa.

La experiencia te enseñará lo que es buena y mala práctica.

Brian R. Bondy
fuente
1
Si bien creo que esta es una gran idea, hacerlo como un proyecto para principiantes puede ser intimidante. Especialmente cuando no tiene revisiones de código u otras personas que pueden agregar información. Mis propios proyectos han pasado por muchas reescrituras y miles de líneas de código porque nadie me dijo que X era mejor, un problema que todavía tengo. Unirse a un proyecto establecido acelerará el aprendizaje mucho mejor
TheLQ
@TheLQ: Supongo que depende de tu nivel de experiencia, hacer algo desde cero te enseñará muchas lecciones y cosas que no aprenderías al unirte a un equipo que ya ha hecho muchas cosas. En mi opinión, hay bienes y desventajas sobre su propio proyecto o el de otra persona.
Brian R. Bondy
@TheLQ Estoy completamente de acuerdo. Es una experiencia muy valiosa unirse a un proyecto ya existente porque le da una idea de cómo se gestionan los proyectos de código abierto y cómo se estructura la organización. Después de trabajar en el exitoso proyecto de otra persona, dar el salto a la creación de uno propio fue un paseo por el parque.
Evan Plaice
2

Soy propietario de un proyecto en Google Code, y estoy buscando colaboradores. (Sin embargo, no utilizaré mal esta respuesta para publicidad). Por lo tanto, mi opinión puede ser interesante para usted.

Primero tendrá que averiguar en qué está interesado. Luego, desarrolle cierta experiencia en algunos campos relacionados con sus intereses. Luego, encuentre un proyecto donde se exija y necesite su experiencia.

Cuanto más pequeño sea el proyecto, menos contribuyentes estarán allí, mayores serán las posibilidades de que se busquen contribuyentes y puede contactar a los autores / propietarios del proyecto directamente. Dígales a) cuál es su experiencia b) dónde ve que podría aplicarse en el proyecto c) qué cree que puede lograr.

Recuerde: solo conocer uno o dos lenguajes de programación convencionales no es experiencia.

Ingo
fuente
¿Cómo aconsejaría a alguien que determine lo que le interesa o que acumule experiencia en esas áreas?
Adam Lear
2
@ Anna, no estoy segura de entender tu pregunta. Quiero decir que hay cientos de temas, desde cosas de bajo nivel como protocolos de red o funcionamiento interno de una GPU hasta temas altamente abstractos y casi matemáticos (análisis, sistemas de tipos, teoría de categorías, etc.). El genio más grande no los dominará a todos y estará feliz de tener a alguien experto en un campo en el que él, el genio, no lo es. Pero cuáles son tus intereses realmente, ¿quién puede decir eso sino tú?
Ingo
1
Sí, descubrir los intereses es quizás bastante personal (o el consejo equivale a "probar cosas diferentes y ver lo que te gusta"), pero ¿qué hay de adquirir experiencia? Dices que es más que solo saber un par de idiomas. Entonces, dado un nuevo tema / tema, ¿qué harías para obtener esa experiencia? Para mí, unirme a un proyecto de OSS sería parte de ese proceso, pero si te leo bien, estás sugiriendo que uno debería ser un experto antes de unirte a un proyecto.
Adam Lear
¿Que debería hacer? Leer libros. Leer archivos PDF. Discuta con alguien que conozca o en la red. Probar algo Práctica. Responda todas las preguntas sobre SO que surjan con respecto a ese tema. Entonces un día notarás que pocos saben mejor que tú. - No me tome demasiado literalmente con respecto al "experto", pero recuerde, en los proyectos de código abierto, ya que es voluntario, no hay forma de obligar a alguien a hacer el trabajo, por lo tanto, las personas que saben lo que están haciendo y quieren hacer eso son bienvenidos.
Ingo