2010-03-12 11 views
8

Estoy enseñando programación a mis sobrinos y quiero que mejoren sus habilidades contribuyendo a proyectos de código abierto. Ahora mi pregunta es, ¿conoces algún proyecto de código abierto que sea adecuado para un programador novato? Lo que quiero decir es que el proyecto no tiene una gran base de código, el proyecto es muy interesante y el proyecto está escrito en C porque elegí el lenguaje C como su idioma de inicio, pero puede sugerir otro proyecto realizado en otro idioma.Contribución de código abierto para un programador novato

Mi objetivo aquí es mejorar su lógica leyendo otros códigos fuente, familiarizándome con las herramientas de desarrollo disponibles, como el rastreador de errores, el sistema de control de versiones, etc. y abrir su interés en la comunidad de código abierto.

Gracias. =)

+4

* el proyecto es muy interesante *: eso depende de tu propia opinión, por supuesto. Es por eso que te recomiendo que eches un vistazo a http://sourceforge.net/ para ver lo que te gusta ;-) – ChristopheD

+0

Gracias sourceforge tiene muchos proyectos. =) – domlao

Respuesta

3

¿Esto se ha preguntado antes?

Open source project: beginners [closed]

+2

Me cerraría como dup, pero todas las preguntas que abordan exactamente este mismo problema son "página no fundadas" o cerradas ... –

+0

por favor elimine su respuesta. este enlace ya no funciona – NikosKeyz

2

Esto es difícil de responder sin conocer el nivel y habilidades de sus estudiantes. Sin esa información de fondo, ni siquiera podría decir si es aconsejable dejarlos solos en cualquier proyecto existente.

En mi opinión, antes de que alguien esté listo para contribuir a cualquier esfuerzo de código abierto no trivial, deben tener una sólida comprensión de las estructuras de datos y el concepto de ADT y ocultamiento de información. Idealmente, habrían implementado algunos ADT básicos por sí mismos.

En mi experiencia esto con demasiada frecuencia falta especialmente cuando el lenguaje utilizado para instruir a los principiantes es C ya que C no tiene ADT incorporados ni una biblioteca ADT estándar y se espera que los desarrolladores sean capaces de escribir sus poseer o seleccionar una biblioteca de terceros y, si es necesario, personalizarla según sus necesidades.

He visto bastantes proyectos de código abierto escritos en C donde las únicas estructuras de datos utilizadas eran arreglos de tamaño fijo y listas enlazadas, donde cada algoritmo era el más ingenuo posible, donde la noción de una API era exponer estructuras y deja que todos lo modifiquen

Un colaborador que esté familiarizado con los ADT pronto se escapará de ese proyecto en horror. Un colaborador que no esté familiarizado con ADT solo aprenderá malos hábitos allí.

Si su objetivo es lograr que sus alumnos aprendan el uso del control de versiones y los sistemas de seguimiento de errores, quizás sea una mejor idea asignarles un ejercicio y hacer que configuren un repositorio en uno de esos sitios que integran la versión control, búsqueda de código fuente en línea y seguimiento de errores, por ejemplo, Github, Bitbucket, Google Code, etc.

Luego puede examinar el trabajo que hicieron para la tarea y si encuentra algún error, use el rastreador de errores para presentar un error que entonces tiene que tratar en consecuencia. A continuación, puede expandir la asignación presentando solicitudes de características nuevamente usando el rastreador de errores, etc.

Además, sitios como Github y Bitbucket tienen una función de clonar-este-repositorio. Esto se presta muy bien a la enseñanza de la colaboración también. Dependiendo del conjunto de habilidades de sus alumnos, pueden elegir un repositorio existente para clonar y luego seguir sus asignaciones, o pueden pedirles que busquen en un repositorio (posiblemente coincida con ciertos criterios) y elegir uno para ellos mismos, y luego extenderlo de nuevo. siguiendo tus asignaciones.

Hay una cosa más que personalmente creo que debe ser un requisito previo para contribuir a cualquier proyecto de fuente abierta no trivial: entender el diseño por contrato, cómo documentar un contrato de funciones, pensar en contratos de funciones, haber desarrollado el disciplina para nunca codificar nada sin antes documentar un contrato de función. Desafortunadamente, muy pocos proyectos de código abierto usan diseño por contrato. Una vez más, un colaborador familiarizado con esta práctica pronto escapará de ese proyecto en horror y el que no lo hará solo obtendrá los malos hábitos.

Sin embargo, podría convertir esto en un ejercicio diciéndoles a sus alumnos que clonen un repositorio existente de, digamos, Github o Bitbucket y luego asígneles la tarea de completar la documentación del contrato de función faltante. Huelga decir que para un ejercicio de este tipo, primero tendría que haberles enseñado qué es el diseño por contrato y cómo escribir contratos de función.

Una vez que sus alumnos hayan adquirido las habilidades que describí anteriormente, estoy seguro de que "¿a qué proyectos de código abierto podríamos contribuir?" será trivial responder porque en ese momento tus estudiantes podrán encontrar y elegir un proyecto adecuado para ellos.

Mientras tanto, si sientes que tus alumnos aún necesitan un código de ejemplo para los ADT escritos en C y cómo escribir contratos de función, y no tienes esos ejemplos a mano, es posible que quieras echar un vistazo en mi repositorio en Bitbucket. Tiene una variedad de ADT comunes en C y todas las fuentes contienen contratos de funciones. Siéntase libre para clonar cualquiera de los repositorios de allí y utilizarlos como base para ejercicios:

Estoy seguro que si miras a tu alrededor hay un montón de material adecuado por otros autores, también .

0

Siempre he encontrado que el proyecto freebsd es bueno para enseñar a las personas cómo programar en C. Obtendrán la revisión del código por parte de los commiters que les explicarán cómo mejorar y tienen excelentes documentos, http://www.freebsd.org/doc/en/books/developers-handbook/book.html. Puede ser voluntario para corregir errores: http://www.freebsd.org/cgi/query-pr-summary.cgi y tienen una larga lista de cosas que hacer: http://www.freebsd.org/projects/ideas/ideas.html algunos son simples y otros son difíciles

1

Recomendaría GitHub, ya que pueden comenzar sin tener que contactar personas para obtener un compromiso acceso al repositorio, y donde una confirmación incorrecta no creará un problema, ya que será solo una confirmación "local".

+0

PD: Estoy buscando colaboradores para mi proyecto de biblioteca RPC (https://github.com/green-coder/small-rpc). – Vincent

+0

vincent quiero contribuir en sus proyectos. He revisado algunos de ellos. aquí está mi correo electrónico: [email protected] – faysal

Cuestiones relacionadas