---
title: Contribuir a FreeBSD
authors:
  - author: Jordan Hubbard
  - author: Sam Lawrance
  - author: Mark Linimon
releaseinfo: "$FreeBSD$" 
trademarks: ["freebsd", "ieee", "general"]
---

= Contribuir a FreeBSD
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:lang: es
:toc-title: Tabla de contenidos
:part-signifier: Parte
:chapter-signifier: Capítulo
:appendix-caption: Apéndice
:table-caption: Tabla
:figure-caption: Figura
:example-caption: Ejemplo

include::shared/es/urls.adoc[]

[.abstract-title]
Resumen

Este artículo describe las diferentes formas en que una persona u organización puede contribuir al proyecto FreeBSD.

'''

toc::[]

¿Así que quiere contribuir a FreeBSD? ¡Genial! FreeBSD _depende_ de las contribuciones de su base de usuarios para sobrevivir. Sus contribuciones no solo son gratamente apreciadas, son vitales para que FreeBSD continúe creciendo.

El grupo de desarrolladores de FreeBSD lo componen un grupo grande y siempre creciente de gente de todas partes del mundo, de edades y áreas de experiencia técnica muy diversas. Siempre hay más trabajo pendiente que manos disponibles y siempre se agradece ayuda adicional.

El único límite que ponemos a los voluntarios es el que su disponibilidad misma dicte. Por otra parte le pedimos que esté al tanto de lo que otros miembros de la comunidad de FreeBSD esperan de usted. Tener esto en cuenta es importante antes de decidir ser voluntario.

El proyecto FreeBSD es responsable de mantener un sistema operativo completo, en lugar de un solo kernel o unas pocas utilidades sueltas. Por lo tanto nuestra lista de tareas pendientes [.filename]#TODO# incluye una gran variedad de tareas: desde la documentación, realización de pruebas en las versiones beta, hasta el desarrollo del instalador del sistema y tareas de desarrollo del kernel altamente especializadas. Todo el mundo puede ayudar, independientemente del nivel nivel de habilidad, en un área u otra del proyecto.

Invitamos a las empresas que tengan proyectos relacionados con FreeBSD a que se pongan en contacto con nosotros. ¿Necesitan de un desarrollo concreto para hacer que su producto funcione? Estaremos encantados de escuchar sus peticiones, siempre y cuando que no sean demasiado raras. ¿Está trabajando en un producto de alto valor añadido? ¡Por favor, háganoslo saber! Podemos trabajar conjuntamente en algunos aspectos del mismo. El mundo del software libre está desafiando muchas de las suposiciones existentes sobre cómo se desarrolla, vende y mantiene el software y le instamos encarecidamente a que al menos considere seriamente su uso.

[[contrib-what]]
== Qué se necesita

La lista de tareas y subproyectos que se muestra a continuación es una amalgama de varias listas de [.filename]#TODO# y solicitudes de los usuarios.

[[non-programmer-tasks]]
=== Tareas en curso para personas que no son programadores

Muchas de las personas que están involucradas en FreeBSD no son programadores. El proyecto incluye a escritores de documentación, diseñadores web y personas que dan soporte. Todo lo que estas personas necesitan para contribuir es invertir tiempo y la voluntad de aprender.

. Lea cada cierto tiempo las FAQ y el Handbook. Si algo está mal explicado, es ambiguo, está desactualizado o es incorrecto, avísenos. Aún mejor, envíenos una solución (Docbook no es difícil de aprender, pero no hay ningún problema si lo envía en ASCII).
. Ayude a traducir la documentación de FreeBSD a su lengua materna. Si ya existe documentación en su idioma, puede ayudar a traducir otros documentos o comprobar si las traducciones están actualizadas y son correctas. Antes de nada, consulte las link:{fdp-primer}#translations[FAQ de las traducciones] en el FreeBSD Documentation Project Primer. El hecho de traducir algo no implica la obligación de traducir todo; como voluntario, puede tanto o tan poco como desee. Una vez que alguien empieza a traducir, casi siempre se apunta alguien más. Si solo tiene tiempo o energía para traducir una parte de la documentación, por favor, traduzca las instrucciones de instalación.
. Lea la http://lists.FreeBSD.org/mailman/listinfo/freebsd-questions[lista de correo de preguntas generales de FreeBSD] de vez en cuando (o regularmente, si es posible). Puede ser muy satisfactorio compartir su experiencia y ayudar a las personas a resolver sus problemas ¡A veces incluso puede aprender algo nuevo! Estos foros también pueden ser una fuente de ideas de cosas que puede ser mejoradas.

[[ongoing-programmer-tasks]]
=== Tareas en curso para personas que son programadores

La mayoría de las tareas aquí expuestas requieren de una considerable cantidad de tiempo, o un conocimiento profundo del kernel de FreeBSD, o ambas cosas. Sin embargo, también hay muchas tareas útiles que son ideales para "hackers de fin de semana".

. Si usa FreeBSD-CURRENT y tiene una buena conexión a Internet, existe una máquina en `current.FreeBSD.org` que genera una release completa una vez al día--de vez en cuando, intente instalar una de estas releases e informe de cualquier problema en el proceso.
. Lea la http://lists.FreeBSD.org/mailman/listinfo/freebsd-bugs[lista de correo de informes de problemas de FreeBSD]. Puede encontrar algún problema sobre el que hacer un comentario constructivo o sobre el que probar parches. O quizás pueda solucionar uno de los problemas usted mismo.
. Si sabe de alguna corrección que ha sido aplicada con éxito en -CURRENT y cuya solución no ha sido aplicada aun en -STABLE después de un período de tiempo razonable (normalmente, un par de semanas) envíe, de forma educada, un mensaje al committer responsable del cambio.
. Mueva el software de terceros a [.filename]#src/contrib# en el árbol del código fuente.
. Asegúrese de que el código de [.filename]#src/contrib# está actualizado.
. Compile el árbol del código fuente (o solo una parte del mismo) con un nivel de depuración adicional habilitado y corrija los warnings.
. Corrija los warnings en los ports que aún utilizan recursos obsoletos como `gets()` o que incluyan [.filename]#malloc.h#.
. Si ha contribuido con algún port y tuvo que hacer cambios específicos para FreeBSD, envíe sus parches a los autores originales (esto les hará la vida más fácil cuando lancen la próxima versión).
. Hágase con copias de estándares formales como POSIX(R). Compare el comportamiento de FreeBSD con el requerido por el estándar. Si el comportamiento difiere, particularmente en áreas sutiles u oscuras de la especificación, envíenos un PR al respecto. Si puede, averigüe cómo solucionarlo e incluya un parche en el PR. Si cree que el estándar es incorrecto, pídale al organismo de estándares que considere su propuesta.
. ¡Sugiera nuevas tareas para esta lista!

=== Trabaje en la base de datos de PR

La https://bugs.FreeBSD.org/search/[lista de PR de FreeBSD] muestra todos los informes de problemas activos y las solicitudes de mejora que los usuarios de FreeBSD han enviado. La base de datos de PR incluye tanto tareas para programadores como para no programadores. Eche un vistazo a los PR abiertos y mire si alguno de ellos le interesa. Algunos pueden ser tareas muy sencillas que solo necesitan una revisión adicional para confirmar que la solución adjunta al PR es la adecuada. Otros pueden ser mucho más complejos, o incluso no incluir una solución.

Comience con los PRs que no han sido asignados a nadie. Si el PR ya ha sido asignado a otra persona, pero cree que puede ayudar, envíe un correo electrónico a la persona que lo tiene asignado y pregúntele si puede colaborar; quizás ya tenga un parche listo para pruebas, o ideas adicionales que proponer.

=== Tareas en curso relacionadas con la colección de ports

La colección de ports es un trabajo que está siempre activo. Queremos ofrecer a nuestros usuarios un repositorio de software de terceros fácil de usar, actualizado y de gran calidad. Necesitamos que las personas den parte de su tiempo y esfuerzo para ayudarnos a lograr este objetivo.

Cualquiera puede participar y hay muchas formas diferentes de hacerlo. Contribuir a la colección de ports es una forma excelente de "devolver" algo al proyecto. Si está buscando un trabajo para realizar de forma contínua o un desafío divertido para un día lluvioso estaríamos encantados de que nos ayude.

Existen varias formas de ayudar a mantener la colección de ports actualizada y en buen funcionamiento:

* Encuentre algún software interesante o útil y link:{porters-handbook}[cree un port].
* Hay una gran cantidad de ports que no tienen un maintainer. Conviertase en un maintainer y <<adopt-port>>.
* Si ha creado o adoptado un port tenga en cuenta lo <<maintain-port>>.
* Si busca un desafío rápido, puede <<fix-broken>>.

=== Escoja uno de los elementos de la página de ideas

La https://wiki.freebsd.org/IdeasPage[lista de proyectos e ideas de FreeBSD para voluntarios] también está disponible para las personas que deseen contribuir al proyecto FreeBSD. Esta lista se actualiza regularmente y contiene elementos para programadores y no programadores, así como información sobre cada proyecto.

[[contrib-how]]
== Cómo colaborar

Las contribuciones al sistema generalmente pueden catalogarse en las siguientes 5 categorías:

[[contrib-general]]
=== Informes de errores y comentarios generales

Una idea o sugerencia técnica de interés general debe enviarse a la http://lists.FreeBSD.org/mailman/listinfo/freebsd-hackers[lista de correo de discusiones técnicas de FreeBSD]. Del mismo modo, las personas interesadas en estas cosas (¡y una tolerancia para un _gran_ volumen de correo!) pueden subscribirse a la http://lists.FreeBSD.org/mailman/listinfo/freebsd-hackers[lista de correo de discusiones técnicas de FreeBSD]. Consulte el link:{handbook}#eresources-mail[Handbook de FreeBSD] para obtener más información sobre esta y otras listas de correo.

Si encuentra un error o quiere enviar un cambio concreto puede informar sobre él utilizando el https://bugs.FreeBSD.org/submit/[formulario de envío de errores]. Trate de rellenar cada campo del informe. Incluya el parche directamente en el informe salvo que exceda los 65KB. Si el parche es adecuado para ser añadido al árbol del código fuente incluya `[PATCH]` en la sinopsis del informe. Cuando incluya parches no utilice copiar y pegar, porque copiar y pegar transforma las tabulaciones en espacios, haciendo el parche inútil. Cuando el parche exceda los 20KB por favor comprímalo (por ejemplo, con man:gzip[1] o man:bzip2[1]) antes de enviarlo.

Tras rellenar el informe debería recibir un mensaje de confirmación junto con un número de seguimiento. Conserve este número de seguimiento para que pueda informarnos con nuevos detalles sobre el problema.

Consulte también link:{problem-reports}[este artículo] sobre cómo escribir buenos informes de problemas.

=== Cambios en la documentación

Los cambios en la documentación son revisados por los miembros de http://lists.FreeBSD.org/mailman/listinfo/freebsd-doc[la lista de correo del proyecto de documentación de FreeBSD]. Por favor, consulte el link:{fdp-primer}[FreeBSD Documentation Project Primer] si quiere información detallada. Envíe contribuciones y cambios (¡incluso los más pequeños son bienvenidos!) utilizando el mismo método que cualquier otro informe de errores.

=== Cambios en el código fuente ya existente

Añadir o modificar el código fuente existente es un tema delicado y depende en gran medida de lo obsoleto que esté el desarrollo actual de FreeBSD. Hay una release especial de FreeBSD conocida como "FreeBSD-CURRENT" que está disponible de varias formas para mayor comodidad de los desarrolladores que trabajan activamente en el sistema. Consulte el link:{handbook}#current-stable[Handbook de FreeBSD] para obtener más información sobre cómo obtener y usar FreeBSD-CURRENT.

Por desgracia trabajar con código fuente antiguo significa que a veces sus cambios podrían resultar obsoletos o diferir demasiado para hacer una reintegración en FreeBSD. Esta posibilidad puede minimizarse suscribiéndose a la http://lists.FreeBSD.org/mailman/listinfo/freebsd-announce[lista de anuncios de FreeBSD] y a la http://lists.FreeBSD.org/mailman/listinfo/freebsd-current[lista de correo FreeBSD-CURRENT], donde tienen lugar los debates sobre el estado actual del sistema.

Suponiendo que pueda obtener acceso a una versión lo suficientemente actualizada del código fuente del sistema sobre el que realizar sus cambios, el siguiente paso es generar los diffs para enviar a los maintainers de FreeBSD. Esto se realiza con el comando man:diff[1].

El formato man:diff[1] recomendado para enviar parches es el formato de salida unificado generado por el comando `diff -u`.

[source,bash]
....
% diff -u fichero-antiguo fichero-nuevo
....

o

[source,bash]
....
% diff -u -r -N directorio-antiguo directorio-nuevo
....

debería generar un conjunto de diffs unificados para el archivo de origen o la jerarquía de directorios.

Consulte el manual de man:diff[1] para obtener más información.

Una vez que tenga el conjunto de diffs (que debería probar con el comando man:patch[1]), debe enviarlos para que sean incluídos en FreeBSD a través de un informe de error. ¡__No envíe__ los diffs a la http://lists.FreeBSD.org/mailman/listinfo/freebsd-hackers[lista de correo de discusiones técnicas de FreeBSD] o se perderán! Agradecemos inmensamente su colaboración (¡este es un proyecto voluntario!). Estamos muy ocupados por la gran carga de trabajo, por lo tanto, es posible que no podamos abordarlo de inmediato, pero permanecerán en la base de datos de PR hasta que lo hagamos. Etiquete sus envíos incluyendo `[PATCH]` en la sinopsis del informe.

Si lo considera oportuno (por ejemplo si ha agregado, eliminado o renombrado archivos) empaquete sus cambios en un archivo `tar`. También aceptamos los archivos creados con man:shar[1].

Si sus cambios son delicados, por ejemplo, si no está seguro acerca de los problemas de derechos de autor que regirán su distribución en el futuro, envíelos directamente al Core Team mailto:core@FreeBSD.org[core@FreeBSD.org] en lugar de enviarlo como un informe de error. El Core Team mailto:core@FreeBSD.org[core@FreeBSD.org] es un grupo mucho más pequeño de gente que se encarga de muchas de las tareas diarias de administración del proyecto FreeBSD. Tenga en cuenta que este grupo también está _muy ocupado_ y, por lo tanto, solo debe enviarles correos cuando realmente sea necesario.

Consulte los manuales de man:intro[9] y man:style[9] para obtener más información sobre el estilo de programación requerido. Agradeceríamos que tuviera esa información en cuenta antes de enviar el código.

=== Código nuevo o paquetes de gran valor añadido

En el caso de una contribución significativa o de gran impacto, o si se trata de añadir una nueva característica importante a FreeBSD es necesario enviar los cambios comprimidos en un archivo tar o subirlos a un sitio web o FTP para que otras personas puedan acceder a ellos. Si no tiene acceso a un sitio web o FTP solicitelo en la lista de correo de FreeBSD más adecuada para que alguien busque un sitio para alojar los cambios.

Cuando se trabaja con grandes cantidades de código, siempre surge el delicado tema del copyright. FreeBSD prefiere licencias de software libre como BSD o ISC. Las licencias de Copyleft como la GPLv2, a veces están permitidas. La lista completa se puede encontrar en la link:https://www.FreeBSD.org/internal/software-license/[página de policita de licencias del core team].

=== Dinero o hardware

Estamos encantados de aceptar donaciones económicas para ayudar a impulsar el proyecto FreeBSD y, como en cualquier proyecto mantenido por voluntarios, ¡un poco puede significar mucho! También son importantes las donaciones de hardware para poder ampliar nuestra lista de hardware soportado, ya que generalmente no podemos permitirnos comprar estos artículos nosotros mismos.

[[donations]]
==== Donar dinero

La FreeBSD Foundation es una fundación sin ánimo de lucro, libre de impuestos, creada para impulsar los objetivos del proyecto FreeBSD. Como entidad 501(c)3, la FreeBSD Foundation está exenta del impuesto federal de la renta de los EEUU así como del Estado de Colorado. Las donaciones a una entidad exenta de impuestos suelen ser deducibles (en los EEUU).

Las donaciones pueden enviarse mediante cheque a:

[.address]
****
The FreeBSD Foundation +
P.O. Box 20247, +
Boulder, +
CO 80308 +
USA
****

La FreeBSD Foundation también puede aceptar donaciones via web mediante PayPal. Para hacer una donación, visite la https://www.freebsdfoundation.org[página web]. de la FreeBSD Foundation.

Puede encontrar más información sobre la FreeBSD Foundation en https://people.FreeBSD.org/~jdp/foundation/announcement.html[The FreeBSD Foundation -- an Introduction]. Para contactar con la FreeBSD Foundation por correo electrónico, escriba a mailto:info@FreeBSDFoundation.org[info@FreeBSDFoundation.org].

==== Donar hardware

El proyecto FreeBSD acepta encantado donaciones de hardware que le resulten útiles. Si desea donar componentes de hardware por favor póngase en contacto con la link:https://www.FreeBSD.org/donations/[Donations Liaison Office].

[[ports-contributing]]
== Contribuyendo a la colección de ports

[[adopt-port]]
=== Adoptar un port que no está mantenido

==== Elegir un port que no esté mantenido

Asumir el mantenimiento de ports que no están matenidos es una forma excelente de involucrarse. Los ports que no están mantenidos solo se actualizan y arreglan cuando alguien se ofrece como voluntario para trabajar en ellos. Hay una gran cantidad de ports sin mantenimiento. Es una buena idea empezar adoptando un port que use de forma regular.

Los ports que no están mantenidos tiene como `MAINTAINER` asignado `ports@FreeBSD.org`. Puede ver un listado de todos los ports sin mantenimiento, así como sus errores actuales e informes de problemas en el http://portsmon.FreeBSD.org/portsconcordanceformaintainer.py?maintainer=ports%40FreeBSD.org[FreeBSD Ports Monitoring System].

Algunos ports afectan a muchos otros debido a las dependencias y las relaciones con los ports que dependan de ellos. En general, esperamos que las personas tengan algo de experiencia antes de ofrecerse voluntariamente para mantener dichos ports.

Puede comprobar si un port tiene o no dependencias o si otros puertos depende de él consultando el índice maestro de ports, [.filename]#INDEX#. (El nombre del archivo varía según la versión de FreeBSD; por ejemplo, [.filename]#INDEX-8#) Algunos ports tienen dependencias condicionales que no están incluidas en la compilación predeterminada de [.filename]#INDEX#. Esperamos que pueda reconocer dichos ports analizando el archivo [.filename]#Makefile# de otros ports.

==== Cómo adoptar un port

Primero, asegúrese de de comprender cuáles serán sus <<maintain-port>>. Lea también el link:{porters-handbook}[Handbook del Porter]. _Por favor, no se comprometa con más de lo que crea que puede manejar cómodamente._

Puede solicitar el mantenimiento de cualquier port que esté sin mantenimiento cuando lo desee. Simplemente configure el parámetro `MAINTAINER` con su propia dirección de correo electrónico y envíe un PR (informe de problemas) con el cambio. Si el port tiene errores de compilación o necesita actualizarse, es posible que desee aprovechar la oportunidad para incluir cualquier otro cambio que se requiera en ese mismo PR. Esto acelerará el proceso, ya que muchos committers no están dispuestos a asignar la responsabilidad del mantenimiento del port a alguien que no tenga un historial de trabajo con FreeBSD. La mejor forma de crear un historial de trabajo es enviando PRs corrigiendo errores de compilación o actualizando ports.

Envíe su PR a la categoría `ports` y utilice la clase `change-request`. Un committer revisará su PR, commiteara los cambios y finalmente cerrará el PR. En algunas ocasiones, este proceso puede llevar cierto tiempo (los committers también son voluntarios :).

[[maintain-port]]
=== El desafío para los maintainers de un port

Esta sección le dará una visión general de por qué los ports deben mantenerse y describirá las responsabilidades de un maintainer de port.

[[why-maintenance]]
==== Por qué los ports requieren mantenimiento

Crear un port es una tarea que se realiza una vez. Pero asegurar que un port esté siempre actualizado y continúe compilandose y ejecutándose correctamente requiere de un esfuerzo de mantenimiento continuo. Los Maintainers son las personas que dedican parte de su tiempo a cumplir estos objetivos.

La razón principal por la que los ports necesitan mantenimiento es para disponga de las versiones más actualizadas y mejor software de terceros a la comunidad de FreeBSD. Un desafío adicional es mantener los ports para que continuen funcionando dentro del framework de la colección de ports a medida que este evoluciona.

Como maintainer deberá enfrentarse a los siguientes desafíos:

* *Nuevas versiones y actualizaciones de software.* Las nuevas versiones y actualizaciones de software están disponibles todo el tiempo para las aplicaciones que ya han sido portadas, y deben incorporarse a la colección de ports para proporcionar un software actualizado.

* *Cambios en las dependencias.* Si se realizan cambios significativos en las dependencias de su port es posible que deba actualizarlas para que continúe funcionando correctamente.

* *Cambios que afectan a los ports que dependen de los suyos.* Si otros ports depende de un port que mantiene, los cambios en su port pueden requerir que se coordine con otros maintainers.

* *Interacción con otros usuarios, maintainers y desarrolladores.* Parte de ser maintainer es asumir el rol de proporcionar soporte. No esperamos que de soporte a nivel general (pero aceptaremos gustosos si decide hacerlo). Lo que debe proporcionar es un punto de apoyo para los problemas específicos de FreeBSD que estén relacionados con sus ports.

* *Caza de bugs.* Un port puede verse afectado por errores específicos de FreeBSD. Deberá investigar, encontrar y corregir estos errores cuando sean reportados. Es mucho mejor probar meticulosamente un port para identificar todos sus potenciales problemas antes de añadirlo a la colección de ports.

* *Cambios en la infraestructura y política de ports.* Ocasionalmente, los sistemas que se utilizan para compilar los ports y paquetes se actualizan o se hace una nueva recomendación que afecta a la infraestructura. Debe tener en cuenta estos cambios en caso de que sus ports se vean afectados y requieran de una actualización.

* *Cambios en el sistema base.* FreeBSD está en constante desarrollo. Los cambios en el software, en las bibliotecas, en el kernel o incluso los cambios en las políticas pueden hacer necesarios ciertos de cambios en los ports.

==== Responsabilidades del maintainer

===== Mantenga sus ports actualizados

Esta sección describe el proceso a seguir para mantener sus ports actualizados.

Esto es un resumen. Dispone de más información sobre la actualización de un port en el link:{porters-handbook}[Handbook del Porter].

[.procedure]
====
. Esté atento a las actualizaciones
+ 
Monitorice el desarrollo para estar al tanto de nuevas versiones, actualizaciones y correcciones de seguridad. Las listas de correo de anuncios o las páginas web de noticias son útiles para este propósito. En ocasiones los usuarios se pondrán en contacto con usted para preguntarle cuándo se actualizará su port. Si está ocupado con otras cosas o simplemente no puede actualizarlo por alguna razón pregunte al usuario si puede ayudarlo enviándole una actualización.
+ 
También puede recibir un correo electrónico automatizado de `FreeBSD Ports Version Check` informándole que ya hay una nueva versión disponible del distfile de su port. En el mensaje se incluirá más información (incluido el cómo dejar de recibir los correos electrónicos en el futuro).
. Incorporar cambios
+ 
Una vez que estén disponibles incorpore los cambios en el port. Es necesario generar un parche con las diferencias entre el port original y el port actualizado.
. Revisar y probar
+ 
Revise y pruebe a fondo sus cambios:

** Compile, instale y pruebe su port en tantas plataformas y arquitecturas como pueda. Es común que un port funcione en una rama o plataforma y falle en otra.
** Asegúrese de que las dependencias de su port estén completas. La forma recomendada de hacerlo es instalando su propio tinderbox de ports. Tiene más información en la sección de <<resources>>.
** Compruebe que la lista de componentes del paquete esté actualizada. Esto implica añadir nuevos archivos y directorios, así como eliminar entradas no utilizadas.
** Compruebe su port utilizando man:portlint[1] como guía. Consulte los <<resources>> para obtener información importante sobre el uso de portlint.
** Tenga presente la posilidad de que los cambios en su port puedan causar que otros ports dejen de funcionar (se rompan). Si este es el caso coordine los cambios con los maintainers de esos ports. Esto cobra especial importancia si su actualización cambia la versión de la librería compartida; en este caso, como mínimo, los ports que dependan del suyo deberán aumentar de versión su `PORTREVISION` para que puedan actualizarse de forma automática con herramientas como portmaster o man:portupgrade[1].

. Enviar los cambios
+ 
Envíe su actualización enviando un PR con una explicación de los cambios y un parque que contenga las diferencias entre el port original y el actualizado. Consulte el artículo link:{problem-reports}[Cómo enviar informes de problemas de FreeBSD] para obtener más información sobre como escribir un PR correctamente.
+
[NOTE]
======
No envíe un archivo man:shar[1] de todo el port; en su lugar, utilice el comando man:diff[1] `-ruN`. De esta forma, los committers pueden ver más fácilmente de forma exacta qué cambios se están están realizando. Consulte la sección de link:{porters-handbook}#port-upgrading[actualización] del Handbook del Porter para más información.
======
. Esperar
+ 
Llegado el momento un committer se encargará de su PR. Esto puede llevar entre unos minutos y varias semanas, así que tenga paciencia.
. Proporcione feedback
+ 
Si un committer encuentra algún problema en sus cambios lo más probable es que se los devuelva. Una respuesta rápida ayudará a que se haga más rápido el commit. Es muy importante mantener abierto el canal de comunicación para acelerar la resolución de cualquier problema.
. Y para concluir
+ 
Se hará el commit con sus cambios y el port habrá sido actualizado. Después se cerrará el PR. ¡Eso es todo!
====

===== Asegúrese de que sus ports continuan compilando correctamente.

Esta sección trata sobre descubrir y solucionar problemas que impiden que sus ports se compilen correctamente.

El proyecto FreeBSD solo garantiza que la colección de ports funcione en la rama `-STABLE`. En teoría debería poder ejecutarse la última versión de cada rama estable (ya que se espera que las ABIs no cambien) pero si funciona también en las demás ramas es aun mejor.

Dado que la mayor parte de las instalaciones de FreeBSD se ejecutan en ordenadores comunes (arquitectura `i386`), esperamos que mantenga el port funcionando en esta arquitectura. También preferimos que los ports funcionen de forma nativa en la arquitectura `amd64`. No dude en pedir ayuda si no dispone de una de estas máquinas.

[NOTE]
====
Los fallos habituales para ordenadores que no son `x86` se producen porque los programadores originales asumieron que, por ejemplo, los punteros son `int`s, o que se utilizaría una versión mas antigua del compilador gcc. Cada vez más, los autores de las aplicaciones están reescribiendo su código para eliminar estos fallos -- pero si el autor no mantiene activamente su código, es posible que deba hacerlo usted mismo.
====

Estas son las tareas que debe realizar para garantizar que su port pueda compilarse:

[.procedure]
====
. Esté atento a los fallos en la compilación
+ 
Revise su correo y busque mensajes de `pkg-fallout@FreeBSD.org` y revise el http://portscout.FreeBSD.org[distfiles scanner] para ver si alguno de los ports que mantiene y que no se está compilando está desactualizado.
. Recopile información
+ 
Cuando encuentre algún problema recopile información para ayudar a solucionarlo. Los errores de compilación reportados por `pkg-fallout` incluyen registros que le mostrarán dónde falló la compilación. Si un usuario le informó sobre el fallo pídale que le envíe información que pueda ayudar a identificar el problema, como por ejemplo:

** Logs de la compilación
** Los comandos y opciones utilizados para compilar el port (incluidas las opciones establecidas en [.filename]#/etc/make.conf#)
** Un listado de los paquetes instalados en su sistema, por ejemplo la salida del comando man:pkg-info[8]
** La versión de FreeBSD que está ejecutando, es decir, la salida del comando man:uname[1] `-a`
** Cuándo se actualizó por última vez su colección de ports
** Cuándo se actualizó por última vez su árbol de ports e [.filename]#INDEX#

. Investigue y encuentre una solución
+ 
Lamentablemente no hay un proceso a seguir que sea sencillo. Sin embargo, recuerde que si está atascado puede pedir ayuda. La http://lists.FreeBSD.org/mailman/listinfo/freebsd-ports[lista de correo de los ports de FreeBSD] es un buen sitio para encontrarla, así como los desarrolladores originales del programa.
. Enviar los cambios
+ 
Al igual que con la actualización de un port, ahora debe incorporar los cambios, revisar, probar y enviar sus cambios en eun PR y proporcionar feedback si es necesario.
. Enviar parches a los autores originales
+ 
En algunos casos necesitará aplicar parches un port para que se ejecute en FreeBSD. Algunos autores originales (aunque no todos) aceptarán incorporar dichos parches en su código en la próxima versión. Si lo hacen esto podría ayudar a los usuarios de otros sistemas BSD y tal vez evitar duplicar esfuerzos. Como cortesía, recomendamos enviar los parches de este tipo a los autores originales.
====

===== Investigue los informes de errores y PRs relacionados con su port

Esta sección trata sobre encontrar y corregir errores.

Los errores específicos de FreeBSD son causados generalmente por suposiciones sobre los entornos de compilación y ejecución que no afectan a FreeBSD. Es poco probable que encuentre este tipo de problemas, pero pueden ser sutiles y difíciles de diagnosticar.

Estas son las tareas que debe realizar para garantizar que su port continúe funcionando según lo previsto:

[.procedure]
====
. Responda a los informes de errores
+ 
Los errores le pueden llegar por correo electrónico a través del https://bugs.FreeBSD.org/search/[sistema de informe de problemas]. Los usuarios también le pueden informar de los errores directamente.
+ 
Debe responder a los PRs y otros reportes en máximo 14 días, pero trate de no demorarse tanto. Intente responder lo antes posible, incluso si es solo para decir que necesita más tiempo antes de empezar a trabajar en el PR.
+ 
Si no ha respondido después de 14 días, cualquier committer puede realizar el commit de un PR al que no ha respondido utilizando la regla `maintainer-timeout`.
. Recopile información
+ 
Si la persona que informó del error no ha proporcionado una solución es su obligación recopilar la suficiente información para proporcionar una.
+ 
Si puede reproducir el error podrá recoger la mayor parte de la información que necesita. Si esto no es posible solicite a la persona que reportó el error que le proporcione la siguiente información:

** Una descripción detallada de sus acciones, comportamiento esperado del programa y comportamiento real.
** Una copia de los datos de entrada que producen el error
** Información sobre su entorno de compilación y ejecución, por ejemplo, una lista de los paquetes instalados y la salida del comando man:env[1]
** Core dumps
** Stack traces

. Eliminar informes incorrectos
+ 
Algunos informes de errores pueden ser incorrectos. Por ejemplo el usuario podría simplemente haber usado mal el programa, o los paquetes que tiene instalados pueden estar desactualizados y necesitan actualizarse. Algunas veces un error reportado no es específico de FreeBSD. En este caso informe del error a los desarrolladores originales del software. Si puede corregir el error también puede aplicar el parche al port para que se aplique antes de la próxima versión original.
. Encontrar una solución
+ 
Al igual que sucede con los errores de compilación su tarea es encontrar una solución para el problema. Una vez más, tenga presente que si se atasca puede (y debe) pedir ayuda.
. Enviar o aprobar cambios
+ 
Al igual que sucede con la actualización de un port debe incorporar los cambios, revisar, probar y enviar sus cambios en un PR (o hacer un seguimiento si ya existe un PR para el problema). Si otro usuario ha enviado cambios en el PR también puede enviar un seguimiento diciendo si aprueba o no los cambios.
====

===== Proporcionar ayuda

Parte de las funciones de un maintainer es proporcionar soporte, no para el software en general sino para el port y las peculiaridades y problemas específicos de FreeBSD. Los usuarios pueden contactarle con preguntas, sugerencias, problemas y parches. La mayoría de las veces serán para asuntos específicos de FreeBSD.

Puede que ocasionalmente tenga que usar sus habilidades diplomáticas y dirigir amablemente a los usuarios que buscan asistencia técnica hacia los recursos apropiados. Alguna que otra vez se encontrará con que alguien le preguntará que por qué los `RPMs` no están actualizados o qué hay que hacer para ejecutar tal software en tal o cual distribución de Linux. Aproveche la oportunidad para decirle que su port está actualizado (si ese es el caso, claro). Y sugiérale que pruebe FreeBSD.

A veces, los usuarios y desarrolladores decidirán que usted es una persona icupada cuyo tiempo es valioso y harán parte del trabajo por usted. Por ejemplo, podrían:

* enviar un PR o enviarle parches para actualizar su port
* investigar y tal vez proporcionar una solución a un PR o
* incluso enviar cambios para su port.

En estos casos su obligación principal es responder rápidamente. Una vez más, el tiempo de espera para los maintainers es de 14 días. Después de este período se puede realizar el commit sin aprobación. Se han tomado la molestia de hacerlo por usted, así que por lo menos intente responder lo más rápido posible. Hecho esto, revise, apruebe, modifique o discuta los cambios con ellos lo antes posible.

Si puede hacerles saber que su contribución no cae en saco roto (y así debería ser) será posible que le ayuden en otras ocasiones más adelante :-).

[[fix-broken]]
=== Encontrar y arreglar un port roto

Hay dos lugares realmente buenos para encontrar un port que necesite atención.

Puede usar la https://bugs.freebsd.org/search[interfaz web] de la base de datos de informes de problemas para buscar PRs que no están resueltos. La mayoría de los PRs relacionados con ports son actualizaciones, pero con un poco de investigación y hojeando las sinopsis debería encontrar algo interesante en lo que trabajar (la clase `sw-bug` es un buen lugar para empezar).

El otro sitio es el http://portsmon.FreeBSD.org/[FreeBSD Ports Monitoring System]. En particular busque ports que no están mantenidos, con errores de compilación y marcados como `BROKEN`. Es totalmente correcto enviar cambios para un port que está mantenido, pero recuerde preguntar al maintainer para así saber si ya están trabajando en el problema.

Una vez que haya encontrado un error o problema recopile información, investigue y arréglelo. Si ya existe un PR haga seguimiento del PR. Si no existe un PR créelo. Sus cambios serán revisados. Si son correctos serán aceptados y se hará el commit.

[[mortal-coil]]
=== Cuándo dejarlo

En cualquier caso el Ports Management Team (portmgr) se reserva el derecho a revocar su estatus de maintainer si no ha mantenido activamente su port durante un cierto periodo de tiempo. Actualmente este periodo se establece en 3 meses. Es decir, que transcurran tres meses durante los que haya problemas no resueltos o actualizaciones pendientes que no hayan sido abordadas en tiempo y forma.

En cualquier caso, el Ports Management Team (`portmgr`) se reserva el derecho a revocar su estatus de maintainer si no ha mantenido activamente su port durante un cierto periodo de tiempo. (Actualmente, este periodo se establece en 3 meses). Con esto, queremos decir que haya problemas no resueltos o actualizaciones pendientes que no hayan sido abordadas durante este periodo.

[[resources]]
=== Recursos para maintainers y colaboradores de los ports

El link:{porters-handbook}[Handbook del Porter] es su guía de referencia para el sistema de ports. ¡Tengala a mano!

El artículo link:{problem-reports}[Cómo enviar informes de problemas de FreeBSD] describe la mejor forma de formular y enviar un PR. ¡En 2005, se enviaron más de once mil PR relacionados con los ports! Seguir este artículo nos ayudará enormemente a reducir el tiempo necesario para lidiar con sus PRs.

La https://bugs.freebsd.org/bugzilla/query.cgi[base de datos de informes de problemas].

El http://portsmon.FreeBSD.org/[FreeBSD Ports Monitoring System] puede mostrarle información con referencias cruzadas sobre los ports, como errores de compilación e informes de problemas. Si es un maintainer, puede usarlo para verificar el estado de la compilación de sus ports. Como colaborador, puede usarlo para encontrar ports rotos y sin mantenimiento que deban ser reparados.

El http://portscout.FreeBSD.org[FreeBSD Ports distfile scanner] puede mostrarle los ports para los cuales los archivos distfiles no están disponibles. Puede usarlo para verificar sus propios ports o para encontrar ports que necesiten actualizar sus `MASTER_SITES`.

package:print/ports-mgmt/poudriere[] es la forma más completa de probar un port a través de todo el ciclo de instalación, empaquetado y desinstalación. La documentación se encuentra en el repositorio de https://github.com/freebsd/poudriere[poudriere en github].

man:portlint[1] es una aplicación que permite verificar que su port cumple con muchas pautas importantes de estilo y funcionamiento. portlint es una aplicación heurística simple, por lo que __solo debe utilizarla como guía__. Si portlint sugiere cambios que parecen no tener sentido, consulte el link:{porters-handbook}[Handbook del Porter] o pida consejo.

La http://lists.FreeBSD.org/mailman/listinfo/freebsd-ports[lista de correo de ports de FreeBSD] está destinada a discusiones generales relacionadas con los ports. Es un buen lugar para pedir ayuda. Puede https://lists.freebsd.org/mailman/listinfo[suscribirse, leer y buscar en los archivos historicos de la lista]. También puede ser de su interés leer los archivos de la http://lists.FreeBSD.org/mailman/listinfo/freebsd-ports-bugs[lista de correo de errores en los ports de FreeBSD] y los http://lists.FreeBSD.org/mailman/listinfo/svn-ports-head[mensajes de commit en el árbol del código fuente de los ports de la rama head/].

[[ideas-contributing]]
== Empezar en otras áreas

¿Busca algo interesante para empezar que no haya sido mencionado en el artículo? El proyecto FreeBSD tiene varias páginas en la wiki que contienen áreas dentro de las cuales las nuevas personas que tengan interes en contribuir pueden obtener ideas sobre cómo empezar.

La página https://wiki.freebsd.org/JuniorJobs[Junior Jobs] tiene una lista de proyectos que pueden ser de interés para las personas que acaban de empezar a usar FreeBSD y desean trabajar en cosas interesantes por primera vez.

La https://wiki.freebsd.org/IdeasPage[Ideas Page] contiene propuestas sobre cosas que "sería bueno tener" o son "interesantes" para trabajar en el proyecto.
