---
title: FreeBSD에 기여하기
authors:
  - author: Jordan Hubbard
  - author: Sam Lawrance
  - author: Mark Linimon
trademarks: ["freebsd", "ieee", "general"]
---

= FreeBSD에 기여하기
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:images-path: articles/contributing/

ifdef::env-beastie[]
ifdef::backend-html5[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
:imagesdir: ../../../images/{images-path}
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[.abstract-title]
초록

이 글은 개인이나 단체가 FreeBSD 프로젝트에 기여할 수 있는 여러 가지 방법들을 소개합니다.

'''

toc::[]

그러니까 FreeBSD에 기여하고 싶으시다는 말씀이군요? 훌륭합니다! FreeBSD는 살아남기 위해 그 사용자들의 기여에 _의존하고_ 있습니다. 여러분의 기여는 단순히 고맙게 받아들여질 뿐만 아니라, FreeBSD의 지속적인 성장에 필수적이기도 합니다.

FreeBSD는 다양한 연령층과 기술적 전문 지식을 가진 전 세계의 기여자들에 의해 개발되고 있는데, 기여자들의 규모는 크고 또 계속 늘어나고 있습니다. 일거리는 이 사람들이 할 수 있는 일보다 항상 더 많이 존재하고, 더 많은 도움은 언제나 감사하게 받아들여지고 있습니다.

자원봉사자로서, 여러분은 여러분이 하고 싶은 일에만 참여하면 됩니다. 그러나, 우리는 여러분이 FreeBSD 커뮤니티의 다른 멤버들이 여러분에게 어떤 일을 할 것을 원하고 있는지 미리 알아볼 것을 부탁드립니다. 여러분은 봉사에 참여하기로 마음먹기 전에 이에 대해 고려해 보고 싶으실 수도 있겠군요.

FreeBSD 프로젝트는 단순히 커널 또는 몇몇의 유틸리티들만이 아니라, 운영체제 환경 전체를 책임지고 있습니다. 그렇기 때문에, 우리의 [.filename]#TODO# 목록은 다양한 분야의 일거리들을 수록하고 있습니다: 문서화 작업, 베타 테스트와 프리젠테이션에서부터 시스템 인스톨러 그리고 아주 특화된 종류의 커널 개발에 이르기까지 등등. 어떤 분야에 어떤 수준의 기술을 가지고 있더라도, 거의 확실하게 프로젝트에 도움을 줄 수 있을 것입니다.

FreeBSD에 관련된 사업을 하고 있는 기업들도 우리에게 연락할 것이 권장됩니다. 여러분의 제품이 동작하게 할 특별한 확장이 필요한가요? 너무 특이하지만 않다면, 우리는 여러분의 요청을 받아들일 것입니다. 부가 가치 제품으로 작업하고 있나요? 우리에게 알려 주세요! 우리는 부분적으로 협력할 수 있을지도 모릅니다. 자유 소프트웨어 세계는 소프트웨어가 어떻게 개발되고, 판매되고, 또 유지되는지에 대한 기존의 많은 전제들에 도전하고 있고, 우리는 최소한 여러분에게 또 다른 관점을 제시하고 싶습니다.

[[contrib-what]]
== 어떤 도움이 필요한가요?

아래에 제시된 작업 및 보조 프로젝트들의 목록은 여러 [.filename]#TODO# 항목들과 사용자 요청들을 나타내고 있습니다.

[[non-programmer-tasks]]
=== 비-프로그래머를 위한 진행 작업들

FreeBSD에 관여하는 사람들 중에는 프로그래머가 아닌 사람들도 많습니다. 프로젝트에는 문서 작성자, 웹 디자이너, 기타 도움을 주는 사람들도 포함되어 있습니다. 이들이 기여하는 데에는 시간 투자와 배우려는 의지만 있으면 됩니다.

. FAQ와 Handbook을 주기적으로 읽어 보세요. 만약 무언가가 어색하게 설명되어 있거나, 너무 오래 되었거나 심지어 완전히 잘못되어 있다면, 우리에게 알려 주세요. 직접 고친 내용을 보내 주신다면 더욱 좋습니다(DocBook은 배우기 어렵지 않습니다만, 그냥 ASCII 형식으로 보내 주셔도 괜찮습니다).
. FreeBSD 문서를 여러분의 모국어로 번역하는 것을 도와 주세요. 만약 문서가 이미 여러분의 언어로 존재한다면, 다른 문서를 추가적으로 번역하거나 번역본이 최신 상태인지를 점검해 보는 것도 좋습니다. 먼저 FreeBSD Documentation Project Primer의 extref:{fdp-primer}[Translation FAQ, translations]를 살펴 보세요. 여러분은 모든 FreeBSD 문서를 다 번역하는 데 헌신할 필요는 없습니다 -- 자원봉사자로서, 여러분은 원하는 만큼 많은 또는 적은 양을 번역할 수 있습니다. 한번 누군가가 번역을 시작하면, 다른 사람들은 거의 항상 그 노력에 동참합니다. 만약 여러분이 문서의 일부만을 번역할 시간 또는 노력밖에 없다면, 설치 과정 부분을 번역해 주세요.
. http://lists.FreeBSD.org/mailman/listinfo/freebsd-questions[FreeBSD general questions mailing list]를 종종 (또는 심지어 정기적으로) 읽어 주세요. 여러분의 전문 지식을 나누고 사람들이 문제를 해결하도록 도와 주는 일은 대단히 만족스러울 수 있습니다; 여러분은 심지어 종종 스스로 새로운 것을 배울 수도 있습니다! 이 포럼들은 할 일들의 아이디어의 원천이 되기도 합니다.

[[ongoing-programmer-tasks]]
=== 프로그래머를 위한 진행 작업들

여기에 수록된 일들 대다수는 상당한 시간 투자 또는 FreeBSD 커널에 대한 깊이 있는 지식, 심지어 둘 다를 요구합니다. 그러나, "심심풀이 해커"들을 위한 유용한 작업들도 많이 있습니다.

. 만약 여러분이 FreeBSD-CURRENT를 돌리고 있고 인터넷 연결이 괜찮다면, 하루에 한 번씩 전체 릴리즈를 빌드하는 `current.FreeBSD.org` 이 있습니다--종종 최신 릴리즈를 설치해 보고 과정에서 오류가 발생하면 제보해 주세요.
. http://lists.FreeBSD.org/mailman/listinfo/freebsd-bugs[FreeBSD problem reports mailing list]를 읽어 보세요. 여러분이 조언을 해줄 수 있거나 패치를 테스트해볼 수 있는 문제들이 있을 수 있습니다. 또는 심지어 그것들 중 하나를 스스로 고쳐볼 수도 있겠지요.
. 만약 여러분이 -CURRENT에서는 고쳐졌지만 상당한 시간이 지난 후(대체로 약 2주 정도)에도 -STABLE에 반영되지 않은 버그를 알고 있다면, 커미터에게 예의 바른 알림을 보내 주세요.
. contributed software를 소스 트리의 [.filename]#src/contrib# 으로 옮겨 주세요.
. [.filename]#src/contrib# 의 소스 코드를 최신 상태로 유지시켜 주세요.
. 추가적 경고 표시를 활성화한 뒤 소스 트리 (또는 그 일부) 빌드를 해 보고 경고가 나타나는 내용을 수정해 주세요.
. `gets()` 을 사용하거나 [.filename]#malloc.h# 을 include하는 등 deprecate된 방법을 사용하는 포트가 있으면 경고를 수정해 주세요.
. 여러분이 FreeBSD에 맞도록 패치한 ports에 기여했다면, 그 패치를 원 저자에게 보내 주세요 (이렇게 하면 그들이 다음 버전을 출시할 때 여러분이 할 일이 훨씬 간편해질 것입니다).
. POSIX(R)와 같은 공식 표준들을 살펴 보세요. 그리고 FreeBSD가 그러한 표준이 요구하는 조건에 충족되는지 확인해 보세요. 만약 그렇지 못하다면, 특히 표준의 사소하거나 불분명한 부분에서의 경우에, 그에 대한 PR을 보내 주세요. 가능하다면, 어떻게 고치는지를 찾아서 PR에 패치를 포함시켜 주세요. 만약 표준이 잘못되었다고 생각된다면, 해당 표준을 관리하는 단체에 문의해 보세요.
. 이 목록에 추가할 다른 일들을 제안해 주세요!

=== PR 데이터베이스로 할 것들

https://bugs.FreeBSD.org/search/[FreeBSD PR list]는 FreeBSD 사용자에 의해 제출된 모든 문제점 보고와 개선 사항 요청을 담고 있습니다. PR 데이터베이스는 프로그래머 작업과 비-프로그래머 작업을 모두 포함합니다. PR들을 살펴보고, 흥미로운 것이 있는지 살펴 보세요. 이들 중 일부는 매우 간단해서 누군가 살펴보고 PR에 포함된 수정 사항이 제대로 되어 있는지만 확인하면 됩니다. 다른 것들은 더 복잡하거나, 심지어는 수정 사항이 아예 포함되지 않아 있을 수도 있습니다.

다른 누군가가 맡고 있지 않은 PR부터 시작하세요. 만약 다른 누군가가 PR을 맡고 있는데 여러분이 해결할 수 있는 것처럼 보인다면, 맡고 있는 사람에게 이메일을 보내서 여러분이 작업해도 좋은지 요청해 보세요--그들은 이미 테스트받을 준비가 되어 있는 패치를 가지고 있거나, 여러분과 의논할 만한 아이디어를 가지고 있을 수도 있습니다.

=== 진행중인 포트 작업들

포트 컬렉션은 끝없이 진행되고 있는 작업입니다. 우리는 사용자들에게 사용하기 쉽고, 최신 상태로 유지되며, 높은 품질의 제3자 소프트웨어 저장소를 제공하고 싶어합니다. 우리는 이 목표를 달성하기 위해 약간의 시간과 노력을 투자해 도와줄 사람들이 필요합니다.

누구나 참여할 수 있고, 참여하는 방법은 여러 가지가 있습니다. 포트에 기여하는 것은 프로젝트에 무언가를 "되돌려 주는" 것을 돕는 훌륭한 방법입니다. 여러분이 책임감 있는 역할을 찾고 있든지, 아니면 비 오는 날 할 만한 재미난 일거리를 찾고 있든지 간에, 우리는 여러분이 도와 준다면 무척이나 기쁠 것입니다!

포트 트리를 최신 상태로 유지하고 잘 동작할 수 있도록 유지하기 위해 할 수 있는 여러 쉬운 방법들이 있습니다:

* 멋지거나 유용한 소프트웨어를 찾아 extref:{porters-handbook}[포트를 만들어] 주세요.
* 관리자가 없는 포트들이 많이 있습니다. 관리자가 되어 <<adopt-port>>해 주세요.
* 만약 여러분이 포트를 만들었거나 관리하기로 마음먹었다면, <<maintain-port>>에 대해 알아 보세요.
* 좀더 빠르게 끝낼 수 있는 일을 찾고 있다면 <<fix-broken>> 주세요.

=== Ideas 페이지에 있는 항목 중 하나를 선택하세요

FreeBSD 프로젝트에 기여하고 싶어하는 사람들은 http://wiki.freebsd.org/IdeaPage[자원봉사자를 위한 FreeBSD 계획과 아이디어 목록]을 살펴볼 수 있습니다. 이 목록은 정기적으로 갱신되며 프로그래머 작업과 비-프로그래머 작업에 대한 항목들이 설명과 함께 제시되어 있습니다.

[[contrib-how]]
== 어떻게 기여할 수 있나요

시스템에 기여하는 방법은 대개 다음의 5가지 중 한 가지 또는 그 이상에 해당됩니다:

[[contrib-general]]
=== 버그 보고와 일반적 조언

_일반적인_ 기술적 관심사에 대한 아이디어나 제안은 http://lists.FreeBSD.org/mailman/listinfo/freebsd-hackers[FreeBSD technical discussions mailing list]에 메일을 보내야 합니다. 마찬가지로, 그러한 내용에 관심이 있는 (그리고 _수많은_ 메일들을 견뎌낼 인내심이 있는) 사람들은 http://lists.FreeBSD.org/mailman/listinfo/freebsd-hackers[FreeBSD technical discussions mailing list]를 구독하면 됩니다. 이와 더불어 다른 메일링 리스트에 대한 더 많은 정보는 link:@URL_RELPREFIX@@/doc/ko_KR.UTF-8/books/handbook/eresources.html#eresources-mail[The FreeBSD Handbook]에서 찾아볼 수 있습니다.

만일 여러분이 버그를 찾아냈거나 특별한 수정을 제출하고자 한다면, https://bugs.FreeBSD.org/submit/[bug submission form]을 이용해 주세요. bug report의 각 항목을 완성하기 위해 노력해 주세요. 패치의 크기가 65KB를 넘지 않는다면, report에 직접 패치를 첨부해 주세요. 패치가 소스 트리에 적용되기에 적합하다면 report의 synopsys 부분에 [PATCH]를 적어 주세요. 패치를 첨부할 때, 복사-붙여넣기를 이용하면 탭이 공백(space)으로 바뀌어 적용이 불가능해기지 때문에 복사-붙여넣기 방식으로 첨부하면 __안 됩니다__. 패치가 20KB보다 훨씬 크다면, 업로드하기 전에 (man:gzip[1] 이나 man:bzip2[1] 등을 이용하여) 압축하는 것을 고려해 보세요.

report를 제출한 이후에, 여러분은 tracking number가 있는 확인 메일을 받을 겁니다. 이 문제에 대한 상세한 사항을 업데이트할 수 있도록 tracking number를 보관해 두세요.

좋은 problem report를 작성하기 위해서는 extref:{problem-reports}[이 article]을 참고하세요.

=== 문서 수정하기

문서의 편집은 http://lists.FreeBSD.org/mailman/listinfo/freebsd-doc[FreeBSD documentation project mailing list]에 의해 관리됩니다. 전체적인 방법에 대해서는 extref:{fdp-primer}[FreeBSD Documentation Project Primer]를 참고해 주세요. 다른 버그 리포트와 같은 방법을 사용해서 제출 및 편집(사소한 것이라도 환영합니다!) 내용을 보내 주세요.

=== 기존 소스 코드 수정하기

기존의 소스 코드에 무언가를 추가하거나 수정하는 것은 까다로운 작업이며 여러분이 FreeBSD 개발의 최신 상태로부터 얼마나 멀리 떨어져 있느냐에 따라 크게 영향을 받습니다. 시스템에 대해 활동적으로 작업하는 개발자들의 여러 편의를 위해 만들어진 "FreeBSD-CURRENT"라는 특별한 on-going 릴리즈가 있습니다. FreeBSD-CURRENT를 설치하고 사용하는 방법에 대한 정보는 extref:{handbook}updating-upgrading[The FreeBSD Handbook, current-stable]에서 찾아볼 수 있습니다.

오래된 소스로 작업하는 것은 불행히도 여러분의 수정이 종종 이미 필요없게 되거나 FreeBSD에 적용되기에 어려울 수도 있다는 것을 의미합니다. 시스템의 최신 상태에 대한 논의가 이루어지는 http://lists.FreeBSD.org/mailman/listinfo/freebsd-announce[FreeBSD announcements mailing list]와 http://lists.FreeBSD.org/mailman/listinfo/freebsd-current[FreeBSD-CURRENT mailing list] 리스트를 구독하면, 이러한 가능성을 최소화할 수 있습니다.

Assuming that you can manage to secure fairly up-to-date sources to base your changes on, the next step is to produce a set of diffs to send to the FreeBSD maintainers. 이는 man:diff[1] 명령어를 이용하여 이루어집니다.

패치를 제출하는 데 선호되는 man:diff[1] 형식은 `diff -u` 에 의해 생성되, 하나로 통합된 출력입니다.

[source,shell]
....
% diff -u oldfile newfile
....

또는

[source,shell]
....
% diff -u -r -N olddir newdir
....

는 주어진 소스 파일 또는 디렉토리에 대해 하나로 통합된 diff를 생성할 것입니다.

man:diff[1]에 더 많은 정보가 있습니다.

여러분이 diff 파일을 만들었다면 (그리고 man:patch[1] 명령어로 확인했다면), FreeBSD에 반영하기 위해 버그 리포트의 형식으로 제출해야 합니다. diff를 그냥 http://lists.FreeBSD.org/mailman/listinfo/freebsd-hackers[FreeBSD technical discussions mailing list]에 보내지 __마세요__! 그것들은 잊혀질지도 모릅니다. 우리는 여러분의 제출을 무척이나 감사히 여기고 있습니다만 (이것은 자원봉사에 의해 이루어집니다!); 우리는 바쁘기 때문에, 때때로 바로 작업에 착수할 수 없을 수도 있습니다. 그것은 우리가 할 때까지 PR 데이터베이스에 남아 있을 것입니다. 제출할 때 리포트의 synopsis에 [PATCH]을 포함시켜서 패치라는 것을 알려 주세요.

적합하다고 생각되는 경우에 (예를 들어 새 파일을 추가했거나, 기존의 파일을 삭제했거나, 파일의 이름을 바꾼 경우), 그 바꾼 내용을 `tar` 파일로 첨부해 주세요. man:shar[1]으로 생성된 아카이브도 괜찮습니다.

만약 여러분의 수정이 잠재적으로 민감할 수 있는 사항을 포함하고 있다면, 예를 들어 배포와 관련된 라이선스 문제에 대해 확신이 없는 경우라면, 버그 리포트로 제출하는 대신 코어 팀 mailto:core@FreeBSD.org[core@FreeBSD.org]에 직접 보내 주세요. 코어 팀 mailto:core@FreeBSD.org[core@FreeBSD.org]은 FreeBSD에 대해 관한 많은 일을 매일 하는 사람들의 작은 모임입니다. 이들은 _매우 바쁘기_ 때문에, 꼭 필요한 경우에만 메일을 보내 주세요.

코딩 스타일에 대해서는 man:intro[9]와 man:style[9]를 참조해 주세요. 여러분이 코드를 제출하기 전에 이 정보에 대해 최소한 알고 있었다면 우리는 감사할 것입니다.

=== 새로운 코드 또는 주요한 부가가치 패키지들

큰 규모의 작업에서 상당한 기여를 하는 경우에, 혹은 FreeBSD에 새롭고 중요한 기능을 추가하는 경우에, 수정한 내용을 다른 사람이 액세스할 수 있도록 tar 파일 형식으로 보내거나 웹/FTP 사이트에 업로드하는 것은 거의 언제나 필요합니다. 만약 여러분이 액세스할 수 있는 웹 또는 FTP 사이트가 없다면, 적절한 FreeBSD 메일링 리스트에 여러분의 수정사항을 호스팅해줄 것을 요청하세요.

많은 양의 코드에 대해 작업할 때, 저작권에 대한 민감한 주제 역시 언제나 나타납니다. FreeBSD는 BSD 또는 ISC 형식의 오픈 소스 라이선스를 선호합니다. GPLv2와 같은 카피레프트 라이센스 역시 종종 허용됩니다. 전체적인 목록은 link:https://www.FreeBSD.org/internal/software-license/[코어 팀 라이선스 정책] 페이지에서 찾아볼 수 있습니다.

=== 금전 또는 하드웨어

우리는 FreeBSD 프로젝트를 발전시키기 위한 기부를 받는 것을 매우 기쁘게 여기고 있으며, 우리와 같이 자원봉사 노력을 할 때에, 약간의 기부도 많은 일을 해낼 수 있습니다! 우리는 일반적으로 필요한 장비를 직접 구입할 여유가 없기 때문에, 지원 가능한 장비를 확대하기 위해 하드웨어를 기부받는 것 역시 매우 중요합니다.

[[donations]]
==== 재단에 기부하기

FreeBSD 재단은 FreeBSD 프로젝트의 목표를 발전시키기 위해 설립된 비영리, 비과세의 단체입니다. 501(c)3의 회원으로서, FreeBSD 재단은 Colorado 주 소득세뿐만 아니라 미국 연방 소득세도 면제받습니다. 비과세 단체에 기부하는 것은 종종 과세 대상인 연방 소득으로부터 공제받을 수 있습니다.

기부하기 위해서는 다음의 주소로 수표를 보내 주시면 됩니다:

[.address]
****
The FreeBSD Foundation +
3980 Broadway Street +
STE #103-107 +
Boulder CO 80304 +
USA
****

FreeBSD 재단은 이제 Paypal을 통한 온라인 기부도 받고 있습니다. 기부하기 위해서는, 재단 http://www.freebsdfoundation.org[웹 사이트]를 방문해 주세요.

FreeBSD 재단에 대한 더 많은 정보는 http://people.FreeBSD.org/~jdp/foundation/announcement.html[The FreeBSD Foundation -- an Introduction]에서 찾아볼 수 있습니다. 이메일로 재단에 연락하려면, mailto:bod@FreeBSDFoundation.org[bod@FreeBSDFoundation.org]을 이용하세요.

==== 하드웨어 기부하기

FreeBSD 프로젝트는 유용하게 사용될 수 있는 하드웨어의 기부를 기쁘게 받아들이고 있습니다. 만일 여러분이 하드웨어 기부에 관심이 있다면, link:https://www.FreeBSD.org/donation/[Donations Liaison Office]에 연락해 주세요.

[[ports-contributing]]
== 포트에 기여하기

[[adopt-port]]
=== 관리되지 않는 포트를 책임지기

==== 관리되지 않는 포트 선택하기

관리되지 않는 포트를 책임지는 것은 참여하기에 좋은 방법입니다. 관리되지 않는 포트는 누군가가 자원봉사로 작업할 때에만 업데이트되고 고쳐집니다. 관리되지 않는 포트는 많이 있습니다. 여러분이 정기적으로 사용하는 포트를 책임지는 것부터 시작해 보면 좋을 것입니다.

관리되지 않는 포트는 그 MAINTAINER이 ports@FreeBSD.org로 설정되어 있습니다. 관리되지 않는 포트와 그것들의 현재 문제점 및 problem reports에 대한 목록은 http://portsmon.FreeBSD.org/portsconcordanceformaintainer.py?maintainer=ports%40FreeBSD.org[Ports Monitoring System]에서 찾아볼 수 있습니다.

어떤 포트는 그 의존성 관계 때문에 다른 많은 포트에 영향을 미칠 수 있습니다. 일반적으로, 우리는 사람들이 그러한 포트를 관리하기 전에 약간의 경험을 해볼 것을 원합니다.

[.filename]#INDEX# 라고 이름붙여진 포트의 마스터 인덱스를 살펴보면 포트의 의존성 관계를 파악할 수 있습니다. (파일의 이름은 FreeBSD의 릴리즈에 따라 다를 수 있습니다; 예를 들어, [.filename]#INDEX-8#.) 일부 포트는 기본 [.filename]#INDEX# 빌드에는 포함되지 않는 부가적인 의존성 관계를 가지고 있습니다. 우리는 여러분이 다른 포트의 [.filename]#Makefile# 을 살펴봄으로써 이러한 포트를 찾아낼 수 있기를 기대합니다.

==== 포트를 책임지는 방법

우선 <<maintain-port>>에 대해 명확히 이해해야 합니다. 또 extref:{porters-handbook}[Porter's Handbook]을 읽어 보세요. _여러분이 편안하게 다룰 수 있을 범위를 넘어서서 무리할 필요는 없습니다._

여러분은 원한다면 관리되지 않는 포트의 관리 권한을 언제든지 요청할 수 있습니다. 그냥 `MAINTAINER` 을 여러분의 이메일 주소로 설정하고 해당 내용을 PR(Problem Report)로 보내 주세요. 포트에 빌드 에러가 있거나 업데이트가 필요하다면, 같은 PR에 그러한 수정 내용을 포함해도 좋습니다. 많은 커미터들은 FreeBSD에 남긴 흔적이 없는 누군가에게 관리 권한을 부여하고 싶어하지 않기 때문에, 이는 도움이 되는 행동일 것입니다. 빌드 오류를 고치거나 포트를 업데이트하는 PR을 제출하는 것은 이러한 흔적을 남기는 가장 좋은 방법입니다.

여러분의 PR을 `ports` 카테고리와 `change-request` 클래스로 설정한 뒤 제출해 주세요. 커미터가 여러분의 PR을 검토하고, 수정 사항을 커밋하고, 마침내 PR을 종료시킬 것입니다. 이 과정은 종종 시간이 걸릴 수도 있습니다(커미터들 역시 자원봉사자들입니다 :).

[[maintain-port]]
=== 포트 관리자를 위한 도전 과제

이 항목은 포트가 관리되어야 하는 이유 및 포트 관리자의 책임에 대해 설명해줄 것입니다.

[[why-maintenance]]
==== 포트의 관리가 필요한 이유

포트를 만드는 일은 일회성 작업입니다. 포트가 최신 상태인지, 그리고 빌드 및 실행이 문제없이 되는지를 확인하는 일은 지속적인 관리 노력이 필요합니다. 관리자는 그들의 시간 중 일부를 이 목표를 달성하는 데 투자하는 사람들입니다.

포트에 관리가 필요한 가장 주요한 이유는 FreeBSD 커뮤니티에 최신의 많은 3rd party 소프트웨어를 제공하기 위함입니다. 추가적인 목표는 각각의 포트들이 지속적으로 개선되어도 계속 포트 컬렉션 프레임워크 안에서 동작할 수 있도록 유지시키기 위함입니다.

관리자로서, 여러분은 다음의 도전 과제들을 담당할 필요가 있습니다:

* *새로운 소프트웨어 버전 및 업데이트.* 포팅된 소프트웨어에 대해서는 언제든지 새로운 버전과 업데이트가 있을 수 있고, 최신의 소프트웨어를 제공하기 위해서 이들은 포트 컬렉션에 포함될 필요가 있습니다.

* *종속된 포트가 수정되었을 경우.* 여러분의 포트에 종속된 포트가 크게 수정되었을 경우, 여러분의 포트 역시 올바르게 동작하기 위해 업데이트되어야 할 수 있습니다.

* *종속된 포트에 영향을 미치는 수정 사항들.* 만일 여러분이 관리하는 포트에 다른 포트가 의존하고 있다면, 여러분은 여러분의 포트를 수정하기 위해 다른 관리자들과 공동 작업을 해야 할 수도 있습니다.

* *다른 사용자, 관리자 및 개발자와의 소통.* 관리자로서의 역할 중 하나는 지원자의 역할입니다. 일반적인 지원을 제공해야 할 필요는 없습니다 (여러분이 그렇게 한다면 우리는 환영할 것입니다). 여러분이 제공해야 하는 것은 FreeBSD 환경에서 여러분의 포트에 나타나는 특정한 문제들의 해결에 도움을 주는 것입니다.

* *버그 추적하기.* 포트는 FreeBSD 환경에서 특정하게 나타나는 버그의 영향을 받을 수도 있습니다. 여러분은 그러한 버그들이 제보되었을 때 조사하고, 찾아내고, 이들을 고쳐야 합니다. 포트 컬렉션에 넣기 전에 포트를 전체적으로 테스트해보는 것은 더욱 좋습니다.

* *포트의 기반 및 정책의 수정* 때때로 포트와 패키지를 빌드하는 데 사용되는 시스템이 업데이트되거나 그 기반에 영향을 미치는 새로운 제안이 나오기도 합니다. 여러분은 여러분의 포트가 영향을 받아 업데이트를 필요로 하게 될 경우를 위해 이러한 변화에 대해 알고 있어야 합니다.

* *베이스 시스템의 수정.* FreeBSD는 지속적으로 개발되고 있습니다. 소프트웨어, 라이브러리, 커널 또는 심지어 정책이 바뀌면 포트 역시 자연스럽게 수정이 필요해질 수 있습니다.

==== 관리자로서의 책임

===== 여러분의 포트를 최신 상태로 유지하세요

이 항목은 여러분의 포트를 최신 상태로 유지시키기 위한 과정을 설명하고 있습니다.

이것은 개괄적인 내용입니다. 포트를 업그레이드하는 것에 대한 더 자세한 정보는 extref:{porters-handbook}[Porter's Handbook]에서 찾아볼 수 있습니다.

[.procedure]
====
. 업데이트 지켜보기
+ 
소프트웨어의 새로운 버전, 업데이트 그리고 보안 수정 사항을 위해 upstream vendor를 주시하세요. 이를 위해서 announcement 메일링 리스트 또는 뉴스 웹 페이지가 도움이 될 것입니다. 사용자들이 종종 여러분에게 연락해서 여러분의 포트가 언제 업데이트될 것인지에 대해 문의할 수 있습니다. 만약 여러분이 다른 이유로 바쁘거나 지금 업데이트할 수 없는 어떤 이유가 있다면, 그들에게 업데이트 제출을 도와줄 수 있는지 요청해 보세요.
+ 
여러분은 또한 `FreeBSD Ports Version Check` 로부터 여러분의 포트에 대한 새 버전의 distfile이 사용 가능하다는 자동 이메일을 받을 수도 있습니다. 그 시스템에 대한 (앞으로의 이메일을 그만 받는 방법을 포함한) 더 많은 정보는 해당 메시지에 제공될 것입니다.
. 수정 사항을 적용시키기
+ 
변경 사항이 사용 가능해지면, 포트에 적용시켜 주세요. 원본 포트와 업데이트된 포트 사이의 패치를 생성할 수 있어야 할 것입니다.
. 검토 및 테스트하기
+ 
여러분의 수정 사항 전체를 검토하고 테스트해보세요:

** 가능한 많은 플랫폼과 아키텍처에서 여러분의 포트를 빌드, 설치 그리고 테스트해보세요. 하나의 브랜치 혹은 플랫폼에서 잘 작동하던 포트가 다른 곳에서 실패하는 것은 드문 일이 아닙니다.
** 여러분의 포트의 의존성 관계가 완전한지 점검해 주세요. 권장되는 방법은 여러분의 포트를 tinderbox 로 설치해 보는 것입니다. 더 자세한 정보를 위해서는 <<resources>>를 참조해 주세요.
** 패킹 리스트가 최신 상태인지 확인하세요. 이는 새로운 파일 및 디렉토리를 추가하는 일과 사용되지 않는 내용을 제거하는 일을 포함합니다.
** man:portlint[1]를 이용하여 여러분의 포트를 검토하세요. portlint 를 사용하는 방법에 대한 중요한 사항을 위해서는 <<resources>>를 참조하세요.
** 여러분의 포트에 대한 수정 사항이 다른 포트를 고장내는 일이 있을지에 대해 고려해 주세요. 만약 그럴 가능성이 있는 경우에는, 해당 포트의 관리자와 수정 내용을 조율해 주세요. 이는 여러분의 업데이트가 shared library의 버전에 수정을 가하는 경우에 특히 중요합니다; 이 경우, 적어도, 종속된 포트는 `PORTREVISION` bump를 얻어서 portmaster 또는 man:portupgrade[1]와 같은 자동화된 도구에 의해 자동으로 업데이트될 수 있도록 할 필요가 있습니다.

. 수정 내용 제출하기
+ 
수정 사항에 대한 설명 및 원본과 수정본 사이의 변경 내역을 포함한 패치를 담은 PR을 통해 여러분의 업데이트를 보내 주세요. 좋은 PR을 작성하는 방법에 대한 내용은 extref:{problem-reports}[Writing FreeBSD Problem Reports]를 참조해 주세요.
+
[NOTE]
======
포트 전체에 대한 man:shar[1] 아카이브를 제출하지는 말아 주세요; 그 대신에, man:diff[1] `-ruN` 를 사용해 주세요. 이렇게 하면, 정확히 무엇이 수정되었는지 커미터들이 훨씬 쉽게 파악할 수 있습니다. Porter's Handbook에 있는 extref:{porters-handbook}[Upgrading, port-upgrading] 항목에서 더 많은 정보를 찾아볼 수 있습니다.
======
. 기다리기
+ 
때가 되면 커미터가 여러분의 PR을 담당할 것입니다. 이는 몇 분, 또는 몇 주가 소요될 수 있습니다 -- 그러므로 그동안 기다려 주세요.
. 피드백하기
+ 
만약 커미터가 여러분의 수정 사항에서 문제점을 찾아내면, 그들은 대체로 여러분에게 다시 알려줄 것입니다. 신속한 답변은 여러분의 PR이 빨리 커밋되는 데 도움이 되고, 어떤 문제를 해결하고자 할 때 대화의 흐름을 유지하는 데에도 좋습니다.
. 그리고 마지막으로
+ 
여러분의 수정 사항이 커밋되고 여러분의 포트가 업데이트될 것입니다. 그런 다음 PR은 커미터에 의해 닫힐 것입니다. 그것으로 끝입니다!
====

===== 여러분의 포트가 지속적으로 올바르게 빌드되는지를 확인해 주세요

이 항목은 포트가 올바르게 빌드되지 못하도록 하는 문제를 찾아내고 고치는 방법에 대한 것입니다.

FreeBSD는 포트 컬렉션이 `-STABLE` 가지에서 동작하는 것만을 보장합니다. FreeBSD는 포트 컬렉션이 `-STABLE` 가지에서 동작하는 것만을 보장합니다.

FreeBSD 설치본의 대부분은 (`i386` 아키텍처라고 불리는) PC-호환 기종에서 동작하기 때문에, 우리는 여러분이 포트를 그 아키텍처에서 동작하도록 작업할 것을 기대합니다. 포트가 `amd64` 아키텍처에서 네이티브로 동작한다면 더욱 좋습니다. 만약 여러분이 이러한 기종을 가지고 있지 않다면 얼마든지 도움을 요청해도 괜찮습니다.

[NOTE]
====
`x86` 이외의 장치에서의 빌드 실패에 대한 대부분의 이유는 프로그램 작성자가, 예를 들어, 포인터를 `int` 로 가정했거나, 또는 상대적으로 오래된 gcc 컴파일러가 사용된 경우입니다. 점점 더 많은 프로그램 작성자들은 이러한 가정을 제거하기 위해 그들의 코드에 대해 재작업을 하고 있습니다 -- 그러나 작성자가 그들의 코드를 적극적으로 유지보수하지 않는다면, 여러분은 스스로 이 일을 해야 할 수도 있습니다.
====

여러분의 포트가 성공적으로 빌드될 수 있도록 하기 위해 여러분은 다음의 작업을 해야 합니다:

[.procedure]
====
. 빌드 실패 주시하기
+ 
빌드에 실패하거나 오래된 포트가 있는지 살펴보기 위해 `pkg-fallout@FreeBSD.org` 와 http://portscout.FreeBSD.org[distfiles scanner]로부터의 메일을 확인해 주세요.
. 정보 모으기
+ 
여러분이 문제점을 인식하면, 그것을 고치는 데 도움이 되는 정보를 모으세요. 여러분이 문제점을 인식하면, 그것을 고치는 데 도움이 되는 정보를 모으세요. 만약 그러한 빌드 실패가 사용자에 의해 여러분에게 보고되었다면, 문제점을 진단하는 데 도움이 될 수 있는 다음과 같은 정보를 요청하세요:

** 빌드 로그
** 포트를 빌드하는 데 사용되는 명령어 및 옵션들 ([.filename]#/etc/make.conf# 에 세팅된 옵션들을 포함)
** man:pkg_info[1]를 통해 보여지는, 그들의 시스템에 설치된 패키지들의 목록
** man:uname[1] `-a` 을 통해 보여지는, 그들의 현재 FreeBSD의 버전
** 그들의 포트 컬렉션이 마지막으로 업데이트된 때
** 그들의 포트 트리와 [.filename]#INDEX# 가 마지막으로 업데이트된 때

. 문제점을 조사하고 해결책을 찾아보기
+ 
불행히도 이를 위한 간단한 프로세스는 없습니다. 그렇지만, 기억하세요: 뭔가 잘 안 풀린다면, 도움을 요청하세요! http://lists.FreeBSD.org/mailman/listinfo/freebsd-ports[FreeBSD 포트 메일링 리스트]는 시작하기에 좋은 곳이고, 상부의 개발자들은 대개 대단히 잘 도와줍니다.
. 수정 내용 제출하기
+ 
포트를 업데이트할 때와 마찬가지로, 여러분은 이제 수정 사항을 적용하고, 검토하고 테스트하고, PR로 수정 사항을 제출하고, 필요하다면 피드백을 제공해야 합니다.
. 상부의 저자에게 패치 보내주기
+ 
특정한 경우에, 여러분은 포트가 FreeBSD에서 동작하도록 하기 위해 패치를 만들어야 합니다. 일부 (그러나 모두는 아닌) 상부의 작성자들은 다음 릴리즈에 그러한 패치를 그들의 코드에 반영할 것입니다. 그렇게 되면, 이는 다른 BSD 기반 시스템 사용자들에게 도움이 될 뿐만 아니라 중복된 작업을 할 노력을 절약해줄 수도 있습니다. 적용 가능한 패치를 작성자에게 보내 주는 호의를 베푸는 것을 고려해 보세요.
====

===== 여러분의 포트에 관련된 버그 보고와 PR을 살펴 보세요

이 항목은 버그를 찾아내고 고치는 방법에 대한 것입니다.

FreeBSD에 특정한 버그는 일반적으로 FreeBSD에는 적용되지 않는 빌드 및 런타임 환경을 가정하기 때문에 일어납니다. 여러분이 이런 유형의 문제를 마주하게 될 가능성은 낮지만, 이것은 더 미묘한 문제이며 찾아내기 어려울 수 있습니다.

여러분의 포트가 의도한 대로 계속 동작하도록 하기 위해 여러분은 다음의 작업들을 해야 합니다:

[.procedure]
====
. 버그 보고에 응답하기
+ 
버그는 https://bugs.FreeBSD.org/search/[Problem Report database]를 통한 이메일로 여러분에게 보고될 것입니다. 버그는 또한 사용자들에 의해 여러분에게 직접적으로 보고될 수도 있습니다.
+ 
여러분은 PR 및 다른 보고에 대해 14일 이내로 응답해야 합니다만, 그렇게 오래 걸리지는 않도록 노력해 주세요. 단지 여러분이 해당 PR에 대해 작업하기까지 시간이 더 필요하다는 답장만이라도, 가능한 한 빨리 응답할 수 있도록 노력해 주세요.
+ 
만약 여러분이 14일이 지나도록 응답하지 않았다면, 다른 커미터는 `maintainer-timeout` 을 통해 여러분이 응답하지 않은 PR로부터 커밋할 수 있습니다.
. 정보 모으기
+ 
만약 버그를 보고한 사람이 수정 사항을 제공하지 않았다면, 여러분은 그 수정을 하기 위한 정보를 모을 필요가 있습니다.
+ 
만약 버그를 재현할 수 있다면, 여러분은 필요한 정보의 대부분을 스스로 모을 수 있습니다. 그렇지 않다면, 버그를 보고한 사람에게 다음과 같은 정보들을 모아줄 것을 요청하세요:

** 그들의 행동에 대한 자세한 설명, 예상했던 프로그램의 행동과 실제 행동
** 버그를 발생시키기 위해 입력했던 데이터의 복사본
** 그들의 빌드 및 실행 환경에 대한 정보 -- 예를 들어, 설치된 패키지들의 목록과 man:env[1]의 출력값
** Core dumps
** Stack traces

. 잘못된 보고를 배제하기
+ 
일부 버그 제보는 잘못되었을 수도 있습니다. 예를 들어, 사용자가 단순히 프로그램을 잘못 사용했을 수 있습니다; 또는 그들이 설치한 패키지가 오래되었고 업데이트를 필요로 하는 경우일 수도 있습니다. 종종 제보된 버그는 FreeBSD에 국한되는 것이 아닐 수도 있습니다. 이 경우에는 upstream 개발자에게 버그를 제보해 주세요. 만약 여러분이 고칠 수 있을 만한 버그라면, 다음 upstream 릴리즈가 배포되기 전에 여러분이 직접 포트를 패치해서 수정 사항을 적용시켜도 됩니다.
. 해결책을 찾아보기
+ 
빌드 오류와 마주쳤다면, 여러분은 문제점에 대한 해결 방안을 찾아볼 필요가 있을 것입니다. 다시 한 번 강조하겠습니다, 뭔가 잘 안 풀린다면 도움을 요청하세요!
. 수정 사항을 제출하거나 승인하기
+ 
포트를 업데이트할 때와 마찬가지로, 여러분은 이제 수정 사항을 적용시키고, 검토 및 테스트를 수행하고, 그 내용을 PR로 제출(또는 해당 문제점에 대해 이미 존재하는 PR에 follow-up을 제출)해야 합니다. 다른 사용자가 이미 PR로 변경 사항을 제출했다면, 여러분은 그 변경 사항에 대한 승인 여부를 말하는 follow-up을 보낼 수도 있습니다.
====

===== 지원을 제공해 주세요

관리자로서의 역할 중 하나는 지원을 제공하는 것입니다 -- 이는 소프트웨어 자체에 대한 일반적인 지원이 아니라 -- 포트 그리고 FreeBSD에 특정한 특이 사항과 문제점에 대한 지원을 의미합니다. 사용자들은 질문, 제안, 문제점 그리고 패치에 대해서 여러분에게 연락할 수 있습니다. 대부분의 경우 그러한 연락들은 FreeBSD에 특정한 내용들일 것입니다.

종종 여러분은 외교적 수완을 발휘해서, 일반적인 지원을 찾는 사람들에게 적절한 리소스를 알려 주어야 합니다. 이보다는 덜 자주 있는 일이지만, 여러분은 `RPM` 이 왜 최신 상태가 아닌지 또는 소프트웨어를 아무개 리눅스에서 어떻게 실행시키는지에 대해 묻는 사람과 마주칠 수도 있습니다. 그들에게 여러분의 포트가 최신 상태임을 알리고(물론, 그럴 경우에만요!), 그들에게 FreeBSD를 사용해볼 것을 권하는 기회를 잡아 보세요.

종종 사용자와 개발자들은 여러분을 (여러분의 시간을 귀중히 여기는) 바쁜 사람으로 여기고 여러분을 위해 약간의 일을 해줄 수도 있습니다. 예를 들어, 그들은 다음과 같은 일들을 해줄 수도 있습니다:

* 여러분의 포트를 업데이트하는 PR을 제출하거나 패치를 보내주는 일,
* 조사하고 아마도 PR에 고친 내용을 제공하는 일, 또는
* 아니면 여러분의 포트에 대한 수정 사항을 제출하는 일.

이러한 경우에 여러분의 주요 의무는 적절한 때에 응답하는 것입니다. 다시 한번 강조합니다, 관리자의 무응답에 대한 제한 시간은 14일입니다. 이 기간이 지마면 수정 사항은 미승인 상태(unapproved)로 커밋될 것입니다. 그들은 여러분을 위해 이 일을 하는 수고를 했습니다; 그러므로 최소한 신속하게 답변할 수 있도록 노력해 주세요. 그리고 나서 가급적 빨리 이를 검토하고, 승인하고, 그들과 함께 수정 사항을 다듬거나 이에 대해 논의해 주세요.

만약 여러분이 그들의 기여에 감사를 표한다면 (물론 그래야 합니다만) 앞으로 그들이 여러분을 위해 더 많은 일을 해줄 수도 있을 것입니다 :-).

[[fix-broken]]
=== 고장난 포트를 찾아내고 고치기

관심이 필요한 포트를 찾아보기에 정말 좋은 두 개의 장소가 있습니다.

여러분은 해결되지 않은 PR들을 찾아보기 위해 Problem Report 데이터베이스의 http://bugs.freebsd.org/search[웹 인터페이스]를 사용할 수 있습니다. 포트 PR의 대부분은 업데이트이지만, 요약된 내용을 조금만 훑어보면 여러분은 흥미로운 일거리를 찾을 수 있을 것입니다 (`sw-bug` 클래스는 시작하기에 좋은 장소입니다).

다른 장소는 http://portsmon.FreeBSD.org/[FreeBSD Ports Monitoring System]입니다. 빌드 오류가 있고 관리되지 않는 포트와 `BROKEN` 이라고 표시된 포트에 특히 유의해서 살펴 보세요. 이미 관리되고 있는 포트에 대한 수정 사항을 제출하는 것도 괜찮지만, 관리자가 이미 같은 문제에 대해 작업하고 있는지 물어 보아야 한다는 것을 기억해 주세요.

여러분이 버그나 문제점을 발견했다면, 정보를 모으고, 분석한 뒤 고쳐 보세요! 이미 PR이 존재한다면, 같이 협력하세요. 그렇지 않다면 새로운 PR을 생성하세요. 여러분의 수정 사항은 검토되고 나서, 만약 모든 것이 괜찮다면, 커밋될 것입니다.

[[mortal-coil]]
=== 그만두어야 할 때

여러분의 흥미와 상황이 변함에 따라, 여러분은 여러분의 포트에 대한 일부 (또는 모든) 기여를 계속할 시간이 없을 수도 있습니다. 괜찮습니다! 만약 여러분이 더이상 포트를 사용하지 않거나 투자할 시간이 없거나 관리자로서의 흥미를 잃었다면 우리에게 알려 주세요. 그러면 우리는 일을 진행하면서 여러분의 답변을 기다리지 않고 포트의 문제들에 다른 사람들이 작업하도록 허락할 수 있습니다. 기억하세요, FreeBSD는 자원봉사자들에 의한 프로젝트입니다, 그러므로 포트를 관리하는 일이 이제 재미없다면, 다른 누군가에게 넘겨줄 때입니다!

어느 경우에든지, 여러분이 일정 기간동안 여러분의 포트를 활동적으로 관리하지 않았다면 포트 관리 팀(`portmgr`)은 여러분의 관리 권한을 초기화시킬 권한을 가지고 있습니다. (현재, 이 기간은 3개월로 정해져 있습니다.) 이것은, 이 기간동안 해결되지 않은 문제나 미루어진 업데이트가 있다는 것을 의미합니다.

[[resources]]
=== 포트 관리자와 기여자를 위한 자료

extref:{porters-handbook}[Porter's Handbook]은 포트 시스템을 여행하는 히치하이커를 위한 안내서입니다. 곁에 두고 자주 살펴 보세요!

extref:{problem-reports}[Writing FreeBSD Problem Reports]은 훌륭한 PR을 작성하고 제출하는 방법에 대해서 설명합니다. 2005년에는 11000개 이상의 포트 PR이 제출되었습니다! 이 글을 따라하는 것은 여러분의 PR을 다루는 데 필요한 시간을 절약해 준다는 점에서 큰 도움이 됩니다.

http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query[Problem Report database].

http://portsmon.FreeBSD.org/[FreeBSD Ports Monitoring System]은 빌드 에러 또는 problem report와 같이 포트에 대한 상호 참조 정보를 보여줄 수 있습니다. 여러분이 관리자라면 이러한 정보를 여러분의 포트의 빌드 상태를 확인하는 데 사용할 수 있습니다. contributor로서 여러분은 제대로 동작하지 않고 관리되지 않아서 고쳐질 필요가 있는 포트를 찾아보는 데 사용할 수 있습니다.

http://portscout.FreeBSD.org[FreeBSD Ports distfile scanner]는 distfiles를 다운로드할 수 없는 포트를 보여줍니다. 여러분은 이를 여러분의 포트를 확인해 보거나 `MASTER_SITES` 이 업데이트될 필요가 있는 포트를 찾아보는 데 사용할 수 있습니다.

package:ports-mgmt/poudriere[] 는 포트의 설치, 패키징, 그리고 제거까지의 전 과정을 전체적으로 테스트해볼 수 있는 방법입니다. 관련된 문서는 https://fossil.etoilebsd.net/poudriere/[poudriere home page]에서 찾아볼 수 있습니다.

man:portlint[1]는 여러분의 포트가 많은 중요한 외형적 그리고 기능적 지침을 준수하고 있는지를 검증하는 데 사용되는 애플리케이션입니다. portlint 는 단순한 휴리스틱 애플리케이션이기 때문에, 여러분은 이를 _지침서의 역할로만_ 사용해야 합니다. 만약 portlint 가 합리적이지 않아 보이는 수정을 제안한다면, extref:{porters-handbook}[Porter's Handbook]를 참고하거나 도움을 요청하세요.

http://lists.FreeBSD.org/mailman/listinfo/freebsd-ports[FreeBSD ports mailing list]는 포트와 관련된 일반적인 논의가 이루어지는 곳입니다. 여기는 도움을 요청하기에 좋은 장소입니다. 여러분은 http://lists.freebsd.org/mailman/listinfo[구독하거나, 리스트 아카이브를 읽어보고 검색해볼 수 있습니다]. http://lists.FreeBSD.org/mailman/listinfo/freebsd-ports-bugs[FreeBSD ports bugs mailing list]와 http://lists.FreeBSD.org/mailman/listinfo/cvs-ports[FreeBSD CVS ports commit list]의 아카이브를 읽어보는 것도 흥미로울 수 있습니다.
