Push, Pull, Fork: GitHub para académicos

Este artículo es una traducción de Push, Pull, Fork: Github for Academics escrito por Kris Shaffer y publicado en Hybrid Pedagogy en mayo de 2013

N.d.T.: He traducido o dejado de traducir los términos open-source, push, pull y fork con la completa libertad con la que los uso en el lenguaje oral, cuando uso el castellano. Disculpad las molestias.

En su artículo, "Open-source Scholarship", Kris Shaffer explica cómo el modelo del software de fuentes abiertas tiene algunas lecciones para la comunidad académica. En este, Kris demuestra como los investigadores pueden aplicar la filosofía de fuentes abiertas usando una herramienta específica diseñada por y para la comunidad: GitHub.

Uno de los objetivos principales de las artes liberales es la creación y clasificación de conocimiento humano. Como discutí en mi anterior artículo (N.d.T. del autor original del texto), esta tarea incluye la discusión crítica y el desarrollo del trabajo de terceros, y hacerlo de manera pública y accesible. ¿Cómo puede una comunidad de investigadores facilitar este trabajo? ¿Cómo puede un investigador o un docente crear un artículo, una tarea, un libro, una base de datos, o un sitio web disponible para los demás de manera que sea fácil trabajar sobre el mismo y desarrollarlo más allá? Colgar un PDF de un sitio web no es suficiente, incluso si se trata de materiales de moderada complejidad. Necesitamos herramientas que hagan relativamente fácil llevar a cabo la ideología de la educación liberal, desde los más simples deberes o tareas del aula hasta los libros multimedia. Una de estas herramientas es GitHub.

Puede que no haya sido diseñada específicamente para su uso acadámico, pero GitHub tiene los conceptos de texto, compartir, colaborar y libertad en el núcleo de su diseño. Para los que buscan hackear el mundo, ofrecer su propio material para que otros lo hackeen, colaborar con otros, y particularmente hacerlos con sitios web, software, o complicados recursos de texto, GitHub es un herramienta fabulosa. Y debido a su naturaleza social y colaborativa, es un recurso acorde con la ideología de la educación liberal, y su utilidad crecerá cuanto más uso haga de él nuestra comunidad académica.

Github fue creado como un alojamiento online de código. Los desarrolladores que quieren compartir su código con el mundo puede alojarlo en GitHub, y los grupos de desarrolladores que quiere colaborar en un proyecto pueden usar GitHub como su estación base para compartir el código. Cualquier projecto con una licencia abierta puede alojarse gratuitamente en GitHub, mientras que GitHub hace su negocio cobrando una tarifa a los usuarios que alojan proyectos privados, y ofreciendo servicios y herramientas de análisis. GitHub usa Git, una aplicación de control de versiones multi plataforma creada para los desarrolladores del kernel de Linux, para coordinar las colaboraciones y gestionar las cargas y descargas (pushes y pulls) a GitHub. Aunque fue desarrollada para código fuente, cualquier tipo de fichero puede formar parte de un repositorio de GitHub, y cualquier fichero basado en texto (incluyendo texto plano, MarkDown, HTML, LaTeX, y ficheros del software de anotación musical LilyPond) pueden beneficiarse del increíble control de versiones, y la capacidad de mezclar (merging en el original) de Git. GitHub es además algo así como una red social, proporcionando a los colaboradores un método fácil de discutir los problemas de un proyecto, y seguir a otros usuarios o proyectos interesantes.

Puesto que GitHub da alojamiento a proyectos de fuentes abiertas y está diseñado para la colaboración, permite a cualquier usuarios hacer un fork de un proyecto público. Al pulsar el botón fork, cualquier usuario de GitHub puede crear su propia versión de un proyecto existente de manera casi instantánea. El proyecto forkeado puede ser usado como la base de un nuevo proyecto, o para desarrollar nuevas características que puedan ser añadidas de nuevo al original.

GitHub también ofrece tipo original de alojamiento web, que es donde reside buena parte de su potencial académico. Cualquier repositorio de GitHub puede tener su propia wiki y su propio sitio web. Además, cualquier proyecto puede ser mismo un sitio web. En otras palabras, el proyecto en GitHub con un enfoque en ser compartido y colaborar puede ser un sitio web, alojado en GitHub. O sea, un sitio web de GitHub no es solo una herramienta de código abierto. Es una plataforma de publicación, un sistema de revisión por pares (tanto para el propósito de revisión, como para el propósito de evaluación: por ejemplo, ¿qué usuarios y proyectos tienen más forks?), un LMS, y un lugar de colaboración intra- e inter-institucional.

El blog ProfHacker y Chronicle of Higher Education han publicado varios tutoriales sobre GitHub, los últimos de ellos la serie GitHub 101 de Konrad Lawson. No voy a reproducir ninguno de ellos aquí. En su lugar, demonstrará la capacidad de GitHub para la academia de fuentes abiertas usando un sitio web que creé para mis cursos de Mísica en la Charleston Southern University que substituyó al libro de texto.

Decidí construir este sitio web cuando me di cuenta que pasaba más y más tiempo, pensando, añadiendo material, o cambiando los capítulos del libro de texto que había escogido para el curso. No solo era material más nuevo, puntos de vistas más útiles para el tema del curso que todavía no aparecían en ningún libro de texto publicado, si no que todos los libros de texto se basan en un modelo leer-hacer los deberes. Descubrí que es necesario otro tipo de recursos para un modelo pregunta primero como el que yo llevaba en esa clase. Además, escribí esos recursos para un grupo específico de estudiantes, con unas actividades para la clase en mente, desde la perspectiva de una escuela de pensamiento concreta - ninguna de esas cosas son posibles en un libro de texto escrito para decenas de miles de alumnos de cientos de universidades en docenas de países. También quería compartir ese sitio web con otros teóricos musicales de otras universidades. Ellos tienen estudiantes diferentes (con distintas materias y áreas de especialización), diferentes tareas para el aula, y viene de diferentes escuelas de pensamiento.

Empecé construyendo el sitio web en WordPress. Me encanta WordPress - es código abierto, fácil de instalar, fácil de usar. Sin embargo, el proyecto sobrepasó WordPress. WordPress es genial para crear el sitio web de mis clases, y para compartir contenido con otros, pero no facilita compartir con aquellos que necesitan modificar el contenido. Incluso aunque cada página tiene una licencia Creative Commons al final, cualquier profesor que quisiera modificar el material tendría que construir un nuevo sitio web desde cero, y entonces copiar, pegar y editar mi material. Esto puede ser un proceso arduo. GitHub ofrecía una forma fácil tanto de publicar como de compartir con otros que puedan querer modificarlo. Así que el 15 de mayo, mi Musicianship Resources recibió el primer fork de otro teórico musical que lo usará como base para los materiales de su curso online.

Como muestra el vídeo[N. d. T.: en inglés], el proceso de fork es bastante simple. Y aprender los comandos de Git necesarios ¡puede llevar menos tiempo que crear un nuevo sitio con WordPress desde cero e importar los contenidos desde el primer sitio! (Los lectores poco familiares con la línea de comandos pueden empezar con el artículo de Lincoln Mullen "Getting Comfortable on the Command Line."). En realidad, la siguiente lista de comandos cubre la mayoría de las necesidades que un académica encontrará para hacer un fork de un sitio web, clonarlo en su ordenador personal, modificarlo, y actualizar el sitio.

  • git clone URL - Este comando clonará un repositorio de git en la máquina local (insertando la URL de GitHub apropiada).
  • git add filename - Este comando añade un nuevo fichero al directorio de trabajo local (al lugar donde van los ficheros antes de que los cambios sean committed)
  • git add . - Usando . en lugar de un nombre de fichero añadirá todos los ficheros del directorio actual (recursivamente, es decir incluyendo subdirectorios) al directorio de trabajo.
  • git status - Este comando listará todos los ficheros listos para hacer commit, así como los ficheros que aún no han sido incorporados por git al proyecto (o sea que sus cambios no serán controlados).
  • git commit -m 'insert notes here' - Este comando hará commit de los ficheros nuevos o modificados que hayan sido añadidos al proyecto. Una vez una versión ha sido commiteada, puede ser subida (push) al servidor.
  • git commit -am 'insert notes here' - Con este comando se hará commit de todos los ficheros modificados o eliminados desde el commit anterior, sin necesidad de que hayan sido añadidos con git add. No incluirá ficheros nuevos, que sí tendrán que ser añadidos con git add.
  • git push origin master - Este comando toma la cambios commiteados en la versión local del proyecto y los sube al repositorio de GitHub del que se clonó. Funciona tanto para un fichero o varios, o un sitio web. Solo se suben los cambios, por lo que suele ser una operación rápida incluso para sitios web grandes.
  • git log - Usa log para ver la historia de versiones del repositorio. (Esto abre el log en un editor de texto de línea de comando. En Mac o Linux, puede usar las flechas arriba y abajo para navegar. Pulse q para salir).
  • git reset --hard versionNumber - Git almacena todos los commits anteriores en un fichero oculto en el interior del repositorio. Si estropeas algo accidentalmente, usa log para encontrar la versión a la que quieres volver, y usa reset para volver a esa versión.
  • Hay otros comandos que vale la pena explorar para usos avanzados y de trabajo colaborativo como git branch, git checkout, git merge, git diff, y git init (para proyectos que empiecen y/o se queden siempre en una máquina local).

Si eres el único usuario trabajando en un proyecto en un único ordenador, una vez que has clonado el proyecto inicial, todo lo que necesitas es git add, git commit y git push. Es bastante simple. Pero Git y GitHub también ayudan para proyectos colaborativos.

Así que ponle una licencia abierta a ese temario, a esas tareas, al borrador de ese artículo, a aquel trabajo para el seminario de la facultad, ese adelanto que escribiste para tus estudiantes que te gustaría que apareciera en un libro de texto y ¡vuélcalo (push) en GitHub! Luego forquea el proyecto de alguien, hazlo mejor, y envíale un pull request. Push, pull, fork - la vía open-source de crear y destacar el conocimiento humano.

N.d.T.: Si tenéis alguna duda sobre como Git o GitHub pueden ser útiles para vuestro proyecto académico o educativo, no dudéis en dejar un comentario o poneros en contacto por mail o twitter. Si os ha gustado el artículo, compártelo, twittea un link, o habla sobre él en tu blog. No olvides que no soy el autor.

:wq

Comments !

blogroll

social