(how-to-contribute)=
# 기여하는 방법

Nix 생태계는 많은 자원봉사자와 소수의 유급 개발자가 개발하고 있으며, 세계에서 가장 큰 오픈 소스 소프트웨어 배포판 중 하나를 유지 관리하고 있습니다. 이를 계속 작동시키고 최신 상태로 유지하며 지속적으로 개선하는 일은 여러분의 지원 없이는 불가능합니다.

이 가이드는 {term}`Nix`, {term}`Nixpkgs` 또는 {term}`NixOS`에 기여하는 방법을 보여 줍니다. 이 가이드는 여러분이 [입문자 튜토리얼 시리즈](tutorials)에서 설명하는 기본 개념과 워크플로에 이미 어느 정도 능숙하다고 가정합니다. 가장 중요한 부분은 [Nix 언어](reading-nix-language), [소프트웨어를 빌드하기 위해 derivation을 구성하는](packaging-tutorial) 다양한 Nixpkgs 메커니즘, [모듈 시스템](module-system-tutorial), 그리고 [NixOS 통합 테스트](integration-testing-vms)입니다.

:::{important}
시간을 내어 기여할 수 없다면 [Open Collective를 통해 NixOS 재단에 기부하는 것](https://opencollective.com/nixos)을 고려해 보십시오.

현재는 지식을 공유하고 Nix에 능숙한 개발자 커뮤니티를 키우기 위해 [대면 행사에 자금을 지원하는 것](https://github.com/NixOS/foundation/issues?q=is%3Aissue%20label%3Afunding-request%20)에 중점을 두고 있습니다. 예산이 충분하다면 핵심 인프라와 코드의 지속적인 유지 관리 및 개발에 비용을 지불할 수 있을 것입니다. 이는 자원봉사자가 무기한으로 해 주기를 기대할 수 없는 고된 작업입니다.
:::

## 시작하기

관심 있는 부분과 관련된 [참조 문서](reference)와 코드를 읽은 후, 충분히 알아본 상태에서 질문하는 것부터 시작하십시오.

다른 사용자 및 개발자와 연락하려면 [커뮤니티 소통 플랫폼에 참여하십시오](https://nixos.org/community). 특정 주제에 관심이 있다면 [커뮤니티 팀](https://nixos.org/community/#governance-teams)을 살펴보고 참여를 고려해 보십시오.

모든 소스 코드와 문서는 [GitHub](https://github.com/NixOS)에 있으며, 변경 사항을 제안하려면 GitHub 계정이 필요합니다. 기술적인 논의는 이슈와 풀 리퀘스트 댓글에서 이루어집니다.

:::{tip}
Nix를 처음 접한다면 먼저 [문서에 기여하는 것](./documentation/index.md)을 고려해 보십시오.

이 부분이 가장 많은 도움이 필요한 곳이며 가장 쉽게 시작할 수 있는 곳입니다.

저희도 그렇지 않기를 바라지만, 문서와 기여 가이드는 불완전하거나 오래된 경우가 많습니다. 저희는 이를 개선하기 위해 노력하고 있습니다. 기여 워크플로에서 문제를 마주칠 때마다 즉시 해결하면 모든 사람을 위해 상황을 개선하는 데 도움을 줄 수 있습니다. 이로 인해 원래 해결하려던 문제를 처리하는 속도가 느려질 수 있습니다. 하지만 앞으로 누구나 의미 있는 기여를 훨씬 쉽게 할 수 있게 될 것입니다. 그리고 장기적으로 더 나은 코드와 문서로 이어질 것입니다.
:::

## 이슈 보고하기

:::{note}
코드나 작업 방법에 관한 일반적인 질문은 [커뮤니티 소통 플랫폼](https://nixos.org/community)을 이용해 주십시오

기술적인 문제를 설명하고 해결책을 제안하려면 GitHub 이슈를 열고, 문제가 해결되거나 무효화되면 이슈를 닫으십시오.
:::

저희는 알고 있는 이슈만 고칠 수 있으므로, 마주치는 이슈는 무엇이든 보고해 주십시오.

- {term}`Nix`([Nix 참조 매뉴얼](https://nix.dev/manual/nix/stable) 포함)에 관한 이슈는 <https://github.com/NixOS/nix/issues>에 보고하십시오.

- {term}`Nixpkgs` 또는 {term}`NixOS`(패키지, 설정 모듈, [Nixpkgs 매뉴얼](https://nixos.org/manual/nixpkgs/stable), [NixOS 매뉴얼](https://nixos.org/manual/nixos/stable) 포함)에 관한 이슈는 <https://github.com/NixOS/nixpkgs/issues>에 보고하십시오.

여러분의 문제에 관해 이미 열려 있는 이슈가 없는지 확인하십시오. 이슈 템플릿을 따르고 요청된 정보를 모두 기입해 주십시오.

겪고 있는 문제를 재현할 수 있는 최소한의, 이해하기 쉬운 예제를 제공하는 데 특히 주의를 기울이십시오. 또한 문제를 직접 해결하려고 시도하면서 알아낸 내용도 함께 보여 주십시오. 이렇게 하면 이슈가 결국 해결될 가능성이 훨씬 높아지며, 이는 여러 가지 이유로 중요합니다.

- 재현 가능한 예제는 간결하고 모호하지 않습니다.

  이는 이슈를 분류하고, 문제를 이해하고, 근본 원인을 찾고, 해결책을 개발하는 데 도움이 됩니다. 여러분이 사전에 조사한 내용은 유지 관리자의 분석에도 도움이 됩니다.

- 누구나 해당 이슈가 여전히 유효한지 판단할 수 있게 해 줍니다.

  이슈는 오랫동안 처리되지 않은 채로 남아 있을 수 있습니다. 몇 달 또는 몇 년이 지난 뒤에도 이슈를 어떻게 처리할지 결정하려면 근본적인 문제가 여전히 남아 있는지, 아니면 해결되었는지 확인해야 합니다. 이 확인은 쉽게 할 수 있어야 합니다. 그래야 누구나 이슈 분류를 돕고, 유지 관리자에게 알려 이슈를 닫거나 우선순위를 다시 정하도록 할 수 있습니다.

- 이 예제는 문제를 해결할 때 회귀 테스트로 사용할 수 있습니다.

:::{tip}
이상적으로는 해결책도 제안하거나 대략적으로 제시하는 것이 좋습니다. 사실 완벽한 이슈란 문제를 직접 해결하고 테스트를 통해 문제가 다시 발생하지 않도록 보장하는 풀 리퀘스트입니다.
:::

:::{important}
새로운 기능(패키지, 모듈, 명령 등)을 요청하는 이슈는 직접 구현할 의향과 능력이 있는 경우에만 열어 주십시오. 그러면 해당 이슈를 사용자 관심도를 가늠하고, 기능이 프로젝트에 적합한지 판단하고, 구현 전략을 논의하는 데 활용할 수 있습니다.
:::

## Nix에 기여하기

{term}`Nix`는 생태계의 초석이며 대부분 C++로 작성되어 있습니다.

개발을 돕고 싶다면 [GitHub의 Nix 저장소에 있는 기여 가이드](https://github.com/NixOS/nix/blob/master/CONTRIBUTING.md)를 확인하십시오.

(contribute-nixpkgs)=
## Nixpkgs에 기여하기

:::{tip}
말로 된 소개를 원하시면 NixCon 2024 발표 [Nixpkgs 기여자 되기](https://www.youtube.com/watch?v=eijTOBBbCv4)를 시청하십시오.
:::

{term}`Nixpkgs`는 다양한 개발 영역을 가진 대규모 소프트웨어 프로젝트입니다. [Nixpkgs 이슈 트래커][nixpkgs issues]에서 개선할 거리에 대한 영감을 얻을 수 있습니다.

[nixpkgs issues]: https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+is%3Aissue+-label%3A%226.topic%3A+nixos%22+-label%3A%226.topic%3A+module+system%22+-label%3A%226.+topic%3A+nixos-container%22+sort%3Areactions-%2B1-desc

돕고 싶다면 [GitHub의 Nixpkgs 저장소에 있는 기여 가이드](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md)부터 읽고 코드와 기여 절차의 개요를 파악하십시오. 패키지 추가를 위한 [프로그래밍 언어별 안내](https://nixos.org/manual/nixpkgs/unstable/#chap-language-support)도 있습니다.

## NixOS에 기여하기

{term}`NixOS`는 공동으로 개발되는 Linux 배포판으로, 선언적 프로그래밍 인터페이스를 통해 매우 유연한 방식으로 편리하게 설정할 수 있습니다. 모듈과 기본 설정의 코드는 [`nixpkgs` GitHub 저장소의 `nixos` 디렉터리](https://github.com/NixOS/nixpkgs/tree/master/nixos)에 있습니다.

개선 작업을 시작하려면 [NixOS 매뉴얼의 개발 섹션](https://nixos.org/manual/nixos/stable/index.html#ch-development)을 참고하십시오. NixOS 전용 기여자 문서는 아직 부족하지만, [Nixpkgs 기여](contribute-nixpkgs)에 대한 관례 대부분이 적용됩니다. 이를 개선하는 데 도움을 주시면 대단히 감사하겠습니다.

새로운 기여자라면 [`good-first-bug` 레이블이 붙은 이슈](https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+label%3A%223.skill%3A+good-first-bug%22+label%3A%226.topic%3A+nixos%22)를 확인하십시오. 이미 익숙하다면 [인기 있는 이슈][nixos issues]를 해결해 주시는 것을 다른 NixOS 사용자들이 매우 고마워할 것입니다.

[nixos issues]: https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+is%3Aissue+label%3A%226.topic%3A+nixos%22+sort%3Areactions-%2B1-desc

# 도움을 받는 방법

풀 리퀘스트를 준비했는데 진행하는 데 도움이 필요하다면, 자세한 내용은 [contributing-how-to-get-help](https://nix.dev/contributing/how-to-get-help#contributing-how-to-get-help)를 확인하십시오.
