¿Cómo hacer contribuciones a Go?

¿Cómo hacer contribuciones a Go?

Contribuir a Go sin morir en el intento.

Contribuir a Go sin morir en el intento.

Además de intimidante, hacer una contribución por primera vez en cualquier proyecto de cóidgo abierto suele ser complicado (aunque no lo sea), o por lo menos para mí suele ser así. Más cuando se trata del código fuente de un lenguaje de programación, que normalmente tiene a un equipo de genios trabajando sobre él y sus flujos de trabajo suelen ser complejos.

Para el caso de Go, hay una página de la documentación oficial que se enfoca en explicar los pasos para realizar contribuciones y hacer de este trabajo una tarea más amigable, por lo que gran parte de las instrucciones que se encuentran aquí son extraídas o están inspiradas en ella.

Requisitos

Proceso de contribución

Antes de empezar a trabajar, es bueno tener una idea de como se desarrolla el proceso de contribución para no sentir que todo funciona por arte de magia y que hay crear cuentas en sitios específicos solo porque la guía lo dice.

Cada versión estable de Go tiene un ciclo de desarrollo de seis meses, de los cuales los primeros tres tienen como meta recibir todos los cambios posibles, y durante los tres meses restantes solo se recibirán arreglos de fallas o mejoras en la documentación; para obtener más detalles sobre el ciclo de desarrollo, es recomendable ir a esta página.

El repositorio oficial del proyecto está alojado en https://go.googlesource.com/go, la rama master es la que recibe todo el código que será utilizado para generar la próxima versión estable; antes de llegar ahí, el código debe ser auditado por miembros de la comunidad, esto se hace desde https://go-review.googlesource.com; una vez auditado, dependiendo de la fecha y de cuanto afecten al lenguaje, los nuevos cambios son mezclados y esperan para ser liberados al final del ciclo de desarrollo activo; el estado actual del proyecto puede verse desde https://build.golang.org.

  • El código fuente. Se puede clonar desde el repositorio oficial o GitHub.
$ git clone https://go.googlesource.com/go
  • Instalar dos herramientas que facilitan algunas de las tareas durante el desarrollo.
git-codereview

Permite usar Git para enviar los cambios al Gerrit de Go.

$ go get -u -v golang.org/x/review/git-codereview

En la sección Realizar cambios muestro los comandos básicos, pero si se quiere conocer más sobre esta herramienta se puede ver su ayuda ejecutando el siguiente comando:

$ git codereview help
go-contrib-init

Verifica el entorno de desarrollo y determina si hacen falta algunas configuraciones.

$ go get -u -v golang.org/x/tools/cmd/go-contrib-init

Realizar cambios

1. Ir al código fuente de Go.

$ cd go

2. Verificar que esté actualizado y funcione correctamente.

$ git checkout master
$ git pull origin master
$ (cd src/ && ./all.bash)

3. Crear una rama.

$ git checkout -b fix-1234

4. Hacer los cambios.

Si se modifica el código, todo archivo creado debe tener el texto de licencia.

// Copyright YYYY The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

Toda funcionalidad agregada o modificada debe ser probada.

$ unset GOROOT
$ export GOROOT_BOOTSTRAP="$(go env GOROOT)"
$ go-contrib-init
$ cd src
$
$ # Para ejecutar solo algunas pruebas
$ export OLD_GOPATH="$(go env GOPATH)"
$ export GOPATH="$(dirname "$PWD")"
$ ./make.bash
$ "$GOPATH/bin/go" test -run '^TestHostHandlers$' -v net/http
$
$ # Para ejecutar todas las pruebas
$ ./all.bash

5. Confirmar los cambios.

$ git add .
$ git codereview gofmt
$ git codereview change

Este comando solicitará un mensaje para la confirmación, que debería ser algo como:

PAQUETE: descripción corta que complete "This change modifies Go to ___."

Descripción detallada que responda "¿Por qué se hace la
modificación?" y que no sobrepase los 72 caracteres por línea.

Fixes: #123

Si se debe hacer una modificación después de confirmar, simplemente se repite este paso.

6. Verificar que el código esté actualizado.

$ git codereview sync

Si hay cambios deben ejecutarse nuevamente las pruebas.

7. Publicar los cambios para que sean auditados.

$ git codereview mail

Si se debe hacer una modificación después de la auditoria, simplemente se repiten los pasos desde el número 4.

Atribuciones

Go Team. Contributing Guide. https://golang.org/doc/contribute.html