git
y GitHubEn este hito tenemos que mostrar que entendemos correctamente el concepto de aplicación que se va a desplegar en la nube, así como demostrar nuestro conocimiento del uso de herramientas habituales en desarrollo de software.
En este hito 0 del proyecto se trata de poner a punto las herramientas que se
van a usar para comunicar los objetivos, los ejercicios y las
prácticas durante el resto del curso. Durante el mismo, se busca
también que se interioricen
una serie de buenas prácticas a la hora de trabajar con
repositorios de git
.
git
yGitHub
son herramientas suficientemente conocidas y documentadas y esenciales en el desarrollo de software hoy en día. Trabajar con ellas de forma fluida es un prerrequisito para poder trabajar correctamente en esta asignatura, empezando por este mismo hito.
Para ello, se creará un repositorio, que se usará durante el resto de la asignatura, para mostrar el avance el proyecto de despliegue de una aplicación en diferentes hitos. Este repositorio contendrá obligatoriamente
No estamos recomendando que se use ninguno de ellos. De hecho, preferimos que no se haga. En todo caso, eso es tema para el siguiente hito.
Licencia que se va a usar en el proyecto.
Otra serie de ficheros de uso habitual en repositorios, sobre todo los que se generan automáticamente cuando se crea un repositorio.
Documentación sobre la realización de este proyecto. En este hito no va a hacer falta, pero conviene que se cree un documento aparte usando los diferentes mecanismos que ofrece GitHub y se enlace desde el fichero donde se explique el proyecto, en el directorio principal.
La corrección de los hitos siempre se hará a partir de este README, por lo que lo que no se enlace, será difícil tenerlo en cuenta, sobre todo porque es imposible encontrarlo.
Estas buenas prácticas se comprobarán a lo largo del resto de los proyectos. Si no se siguen correctamente el hito del proyecto correspondiente será calificado a la baja, y en algunos casos simplemente no pasará los tests.
Darse de alta en el grupo de Telegram para tutorías y actualizaciones de los apuntes.
Adicionalmente, se supone en el estudiante el conocimiento esencial de una ingeniería informática, incluyendo uso de git y Github. Este tutorial puede ayudar con algunos aspectos específicos que se usan aquí.
Primero, hay que configurar correctamente el entorno, lo que incluye
git
para usarlo desde línea de órdenes (cómo se
descargue no hace falta documentarlo).La justificación de lo hecho no forma parte del proyecto en sí, sino que es parte de la documentación. Por tanto, mostrar que se ha hecho esto tendrá que hacerse en el documento aparte que se ha indicado arriba.
Usar un repositorio de forma correcta no sólo permite organizar el trabajo de forma más eficiente, sino que también contribuye a que sea más fácil colaborar con él y a la creación de buenos hábitos de trabajo colaborativo. Hay una serie de buenas prácticas, que incluyen, pero no se limitan, a
Usar o bien el sistema de control de versiones que se incluya en el entorno de desarrollo, y con esto quiero decir, por ejemplo, que si se suele usar Emacs o NetBeans, suelen tener un sistema de control de versiones integrado, o bien la línea de órdenes, lo que se recomienda. No usar nunca el cliente gráfico de GitHub ni, salvo en caso de urgencia (considerándose como tal que tengas que hacer algo urgentemente y no tengas acceso a tu propio ordenador, sino sólo a un navegador y recuerdes tu contraseña de GitHub (no es que estemos recomendando meter contraseñas de nada en ordenadores ajenos (vale, ya paro. Que no lo hagáis y ya está (salvo para hacer los pull request de esta asignatura, donde quizás es más conveniente para crear las ramas sobre la marcha))), editar usando el editor de GitHub.
Trabajar siempre con hitos (milestones) y órdenes de trabajo (issues) en el repositorio en GitHub. En este caso, el último hito será la entrega de la práctica y las órdenes de trabajo las diferentes tareas necesarias para terminar el hito.
Hacer commits que abarquen una sola funcionalidad o tarea, pero sólo si la funcionalidad es correcta (no tiene errores sintácticos, por ejemplo). Hacer commits a menudo.
Hacer commits descriptivos que indiquen en qué han avanzado la tarea, no solamente una referencia a la tarea o “cambios en el fichero tal”, siendo tal el fichero que se ha cambiado y que fácilmente se puede ver en el commit.
Todo commit debe corresponder a una tarea que se haya establecido
en el repositorio propio, toda tarea se cierra con un commit (simplemente
incluyendo closes #[tarea], por ejemplo closes #1
si es el
primer issue o tarea. Para referenciar una tarea, simplemente se
pone el número de la tarea, por ejemplo
Avanza la tarea #1 añadiendo la funcionalidad X
No incluir en el repositorio ningún fichero que pueda ser generado a
partir del mismo, incluir un procedimiento para generar tales
ficheros. Por ejemplo, ningún fichero compilado a partir de otros, o
un PDF generado a partir de los ficheros LaTeX, o los ficheros
generados por los entornos virtuales de ciertos lenguajes. Esos
ficheros, además, se tendrán que incluir en .gitignore
para que no
aparezcan como “no seguidos” cuando se haga git status
.
No incluir en el repositorio ningún código que no sea propio, incluir en el mismo el procedimiento para incluir ese código en la compilación o instalación, generalmente en forma de fichero de requisitos. Si el código sobre el que se va a trabajar es directamente de otro repositorio, hacer un fork del mismo, no copiar los ficheros. La estructura de un repositorio siempre tiene que respetarse, y la mejor forma de atribuir correctamente los cambios es trabajar sobre el repositorio original modificado.
Usar desde el principio un fichero .gitignore
para evitar añadir
accidentalmente ficheros que no deban estar en el repositorio, como
ficheros de respaldo o ficheros generados en compilación o
construcción.
No publicar ficheros binarios en el repositorio, aunque se necesiten en el proyecto. Para ello están los releases. Si son generados por el repositorio, ver la primera regla.
Si se va a usar algún proyecto anterior, hacer un fork del mismo, no copiar los ficheros y subirlos como contribución propia. Las contribuciones, siempre que sea posible, deben estar firmadas por la persona que las haya creado, por eso no se deben copiar simplemente los ficheros, sino forkear los repositorios correspondientes.
Siempre comprobar, antes de hacer un pull request, que se está trabajando sobre la última copia del fichero para evitar conflictos que imposibiliten que se lleve a cabo la fusión por parte de la persona encargada del mismo.
Hacer siempre un rebase (con --rebase
) cuando se vaya a fusionar
el repositorio de la asignatura para evitar merge commits y re-firma
de commits. Los commits de cada usuario deben de permanecer igual.
Incumplir alguna de las buenas prácticas anteriores puede conllevar penalización en este hito y en los sucesivos.
Será el problema que se resolverá a lo largo del curso, eventualmente desplegándose en la nube. Por lo tanto, debe tener las siguientes características
Subir los fuentes a GitHub y añadir al fichero de entrega del proyecto el nombre del proyecto, el autor y un enlace al mismo y hacer un pull request.
Cada proyecto tendrá su propio repositorio en GitHub. La documentación se
incluirá en ficheros Markdown. Esta descripción de la aplicación irá
evolucionando con los diferentes hitos. En cada hito el fichero README.md
describirá el estado del proyecto actual, y se sacará a otros ficheros
(enlazándolos) la documentación adicional que haya podido necesitarse para la
corrección de otros hitos.
Cuando se incluya material adicional externo al proyecto, pero que puede ser útil para complementar la entrega de la práctica, por ejemplo capturas de pantalla de la configuración de git o del par clave pública/privada, se deben seguir las directivas mencionadas anteriormente.
El enlace a esta documentación adicional debe estar bien claro en el fichero principal del proyecto y etiquetado también correctamente.
Rúbricas de evaluación:
En esta asignatura tenemos tolerancia 0 con el plagiarismo y el “trabajo en común”. Cada estudiante tiene que hacer las entregas de forma autónoma, sin “hacerlo en colaboración” o “copiar código que se encuentre uno por ahí”. Esto incluye tanto material evaluable como material no evaluable. Se aconseja que no se pida a un compañero/a “qué hay que poner aquí”, sino que se lea este documento y se interprete y comprenda de forma autónoma.
Si el repositorio no existe, no se ha rellenado su nick de GitHub en el documento compartido, no tiene la licencia de software libre correcta, tiene algún error, no se ha hecho pull request correctamente o no están los fuentes publicados, la práctica estará suspensa.
Este hito contribuirá 0.5 puntos a la nota final.