Korean
Languages
English
Bengali
French
German
Japanese
Korean
Portuguese
Spanish
Tamil

Qiskit 에 기여하기

Qiskit은 다양한 배경지식을 가진 사람들이 양자 컴퓨팅을 사용할 수 있게 하는 오픈소스 프로젝트다. 이 페이지는 Qiskit 커뮤니티에 참여할 수 있는 방법을 설명한다.

시작하기 전에

Qiskit에 기여하는 것이 처음이라면 코드에 뛰어들기 전에 다음과 같은 작업을 수행할 것을 권장한다.

  1. 행동 강령 읽기

  2. 작업할 대상 선택하기

  3. 기여하기로 결정한 저장소의 고유한 기여 지침 읽기

  4. 개발 환경 설정하기

  5. Qiskit 커뮤니티와 친해지기 (Slack, Stack Exchange, GitHub 등을 통해)

작업할 대상 선택하기

어떤 기여를 하는 게 적합한지 확신이 서지 않는다면, 다음 순서도를 참조하는 것이 도움이 될 것이다.

Report/fix typos, broken links etc. in the relevant package or textbook repo Documentation: Answer questions in , , or Help others in the community! Slack StackExchange Twitter other channels Check out the Translations: repo qiskit-community/qiskit-translations Looking to contribute to Qiskit? I’m not sure how yet but I want to get involved! Is there already a GitHub issue open for this bug? Would you like to code? Which programming language are you most comfortable with? Rust , Take a look at: retworkx qiskit-terra Take a look at: qiskit-aer , Take a look at: platypus qiskit.org , , , , , , , Take a look at: qiskit-terra qiskit-nature qiskit-finance qiskit-optimization qiskit-machine-learning qiskit-experiments qiskit-dynamics qiskit-metal C++ Javascript/web dev. Python Consider the following options: I’d like to report a bug I have an idea for a feature I have some code for this feature It’s just an idea Do you know which Qiskit package you would like your feature added to? Yes No Yes No work is in scope work is not in scope Discuss your idea with maintainers Work with maintainers to integrate your feature into Qiskit Consider creating a standalone module and join the Qiskit Ecosystem Open a feature request GitHub issue Open a GitHub discussion in the repo qiskit-community/feedback Yes No Open an issue with a minimum reproducible code example Leave a comment or +1 in the issue (with a code example even better!) If you would like to work on this issue, leave a comment in the issue requesting to be assigned Get coding and open a PR! Choose the repo you want to work on, look at the open issues in the issues tab, look for issues with "good first issue" or "help wanted" labels

특정 저장소에 기여하기

각 Qiskit 배키지는 해당 저장소에 기여하는 것에 대한 고유의 정보를 자세히 설명하고 있는 (CONTRIBUTING.md 파일 안에 저장된) 고유의 기여 지침을 가지고 있다. 각 프로젝트마다 요구 사항 및 과정에 약간의 차이가 있을 수 있으므로 특정 저장소에 기여하기 전에 그 저장소 고유의 기여 지침을 읽어보도록 하자.

저장소

기여 지침

Qiskit Terra

https://github.com/Qiskit/qiskit-terra/blob/main/CONTRIBUTING.md

Qiskit Aer

https://github.com/Qiskit/qiskit-aer/blob/main/CONTRIBUTING.md

Qiskit Nature

https://github.com/Qiskit/qiskit-nature/blob/main/CONTRIBUTING.md

Qiskit Machine Learning

https://github.com/Qiskit/qiskit-machine-learning/blob/main/CONTRIBUTING.md

Qiskit Finance

https://github.com/Qiskit/qiskit-finance/blob/main/CONTRIBUTING.md

Qiskit Optimization

https://github.com/Qiskit/qiskit-optimization/blob/main/CONTRIBUTING.md

Qiskit Experiments

https://github.com/Qiskit/qiskit-experiments/blob/main/CONTRIBUTING.md

Qiskit Dynamics

https://github.com/Qiskit/qiskit-dynamics/blob/main/CONTRIBUTING.md

Qiskit Metal

https://github.com/Qiskit/qiskit-metal/blob/main/CONTRIBUTING.md

Qiskit Textbook (legacy)

https://github.com/qiskit-community/qiskit-textbook/blob/main/CONTRIBUTING.md

Qiskit Textbook (beta)

https://github.com/Qiskit/platypus/blob/main/CONTRIBUTING.md

Qiskit Tutorials

https://github.com/Qiskit/qiskit-tutorials/blob/master/CONTRIBUTING.md

Retworkx

https://github.com/Qiskit/retworkx/blob/main/CONTRIBUTING.md

Qiskit (meta-package)

https://github.com/Qiskit/qiskit/blob/master/CONTRIBUTING.md

개발 환경 설정하기

Python 기반 Qiskit 저장소에 기여를 시작하기 위해서는 Python 가상 개발 환경을 설치하고 소스로부터 적절한 패키지를 설치해야 한다.

qiskit-terra 를 위해 이를 수행하는 빠른 안내를 위해서는 How to Install Qiskit - Contributors 유투브 영상을 보도록 하자.

소스로부터 다른 Qiskit 패키지를 설치하는 방법은 소스로부터 설치하기 에서 배울 수 있다.

Python이 아닌 패키지의 경우, CONTRIBUTING.md 를 통해 개발 환경을 설정하기 위한 세부 정보를 확인해야 한다.

Python 가상 개발 환경 설정하기

가상 환경은 Qiskit 개발에서 개발 환경을 시스템 전반의 패키지에서 분리하기 위해 사용된다. 이렇게 하면 실수로 특정 시스템 구성에 종속되는 것을 방지할 수 있다. 개발자들에게는 다양한 환경을 쉽게 유지할 수 있도록 해 준다 (예: 지원되는 Python 버전 당 하나, Qiskit의 이전 버전들 등).

Qiskit 에서 지원하는 모든 Python 버전에는 내장 가상 환경 모듈 〈venv <https://docs.python.org/3/tutorial/venv.html>〉 __가 있다.

먼저 《venv》 로 새 가상 환경을 생성하는 것부터 시작한다. 생성된 환경에서는 이를 생성한 것과 동일한 버전의 Python을 사용하며 기본적으로 설치된 시스템 전체 패키지를 상속하지 않는다. 가상 환경이 생성되면 특정한 폴더가 생성되며 이 폴더는 가상 환경 설치를 보유하는 데 사용된다. 이 폴더는 어디에나 배치될 수 있다. 자세한 내용은 공식 Python 문서, 〈가상 환경의 작성〉 ( <https://docs.python.org/3/library/venv.html>) 을 참조하라.

python3 -m venv ~/.venvs/qiskit-dev

사용자 시스템에 적합한 활성화 스크립트를 호출하여 가상 환경을 활성화하라. 이 스크립트는 가상 환경 폴더 내에서 찾을 수 있다. 예를 들어, bash/zsh의 경우:

source ~/.venvs/qiskit-dev/bin/activate

가상 환경 내에서 pip을 업그레이드하여 후속 섹션에 설치된 Qiskit 라이브러리를 시스템에 맞게 확인할 수 있다.

pip install -U pip

Conda 사용자의 경우, 다음과 같이 새 가상 환경을 작성할 수 있다.

conda create -y -n QiskitDevenv python=3
conda activate QiskitDevenv
pip install -e .

Pull Request

커뮤니티는 Github pull request 을 통해 여러분의 기여를 받는다.

필수는 아니지만 풀 리퀘스트를 제출하기 전 본인이 수정 중인 버그나 개발 중인 기능에 대한 커뮤니티에서 논의를 시작하기 위해 새로운 이슈(Issue)를 제출하는 것은 중요하다. 이슈는 아이디어를 어떻게 코드로 구현을 할 수 있을지 함께 논의하는 공간을 제공한다. 아울러 여러분이 하는 일을 커뮤니티가 알 게하고, 도움이 필요한 경우에 다른 커뮤니티와 팀 멤버들이 이슈를 통해 확인할 수 있게 돕는다.

코드를 일부 작성하였으나 마무리하는 데 도움이 필요하거나, 마무리하기 전에 초기 피드백을 받고 싶거나, 또는 구현을 완료하기 전에 그것을 공유하고 논의하고 싶다면, 초안 풀 리퀘스트를 열고 제목 앞에 [WIP] 태그(Work In Progress; 진행 중을 의미)를 붙일 수 있다. 이는 검토자에게 이 PR의 코드가 최종 상태가 아니며 변경될 것임을 암시한다. 또한 그것이 완료될 때까지 커밋을 병합하지 않을 것임을 의미하기도 한다. 코드가 병합될 만큼 충분히 검토되었을 때 당신이나 다른 리뷰어가 [WIP] 태그를 제거할 수 있다.

풀 리퀘스트를 《검토 준비》로 표시하기 전에, 아래의 PR 체크리스트를 따랐는지 확인하라. 이 목록을 준수하는 PR은 시기 적절하게 검토되고 병합될 가능성이 높다.

풀 리퀘스트 체크리스트

  • 기여하고 있는 특정 저장소의 CONTRIBUTING.md 파일의 요구 사항을 따랐다.

  • 모든 CI 검사가 통과되었다(푸시하기 전에 로컬에서 테스트와 린트를 수행하는 것을 권장한다).

  • 도입된 모든 새로운 기능에 대해 새로운 테스트가 존재한다.

  • 문서가 모든 새로운/수정된 기능에 따라 갱신되었다.

  • 변경 사항이 사용자에게 영향을 미칠 경우 릴리즈 정보가 추가되었다.

  • 불필요한 주석 또는 출력 명령문이 제거되었다.

  • 모든 기여자는 기여자 라이센스 계약(CLA) 에 서명하였다.

  • PR은 간결하고 설명적인 제목을 갖는다 (예시. 이슈1234 해결 은 나쁜 제목이다!).

  • PR에서 공개된 이슈에 대해 다루는 경우, fixes #issue-number 구문이 포함된다. (PR이 병합되었을 때 GitHub에서 이슈를 자동으로 닫히도록 하려면 정확한 구문을 사용해야 한다.)

코드 검토

코드 리뷰는 공개적으로 이루어지며 누구에게나 열려 있다. 관리자만 커밋 병합에 접근할 수 있지만, 풀 리퀘스트에 대한 커뮤니티 피드백은 매우 중요하다. 또한 그것은 코드 기반에 대해 배울 수 있는 좋은 메커니즘이기도 하다.

응답 시간은 PR에 따라 다를 수 있는데, 내부적인 다른 약속으로 인해 관리자가 당신의 작업을 검토하기를 몇 주 동안 기다리는 일은 드문 일이 아니다. 당신의 PR이 검토되기를 1주일 넘게 기다리고 있다면, 부담 갖지 말고 관련 관리자를 댓글에서 태그하여 작업을 검토해줄 것을 정중히 상기시키도록 하자.

잠깐! 관리자는 집중해야 할 다른 우선 순위가 많이 있어 작업을 검토하고 병합하는 데 시간이 걸릴 수 있다. (가령, 풀 리퀘스트 체크리스트 를 따르는) 좋은 형태의 PR은 관리자가 검토하기 쉽고 시기 적절하게 병합될 가능성이 높다. 또한 관리자 및 다른 기여자와의 상호작용에서 항상 친절하고 정중하게 행동하라. Qiskit 행동 강령 을 읽어볼 수 있다.

기여자 라이센스 계약(CLA)

코드를 제출할 수 있기 전에 모든 코드 기여자는 기여자 라이센스 계약에 (CLA) 서명해야만 한다. 기여자 라이센스 계약에 서명함으로써 본인이 기여 코드의 작성자이며, 아파치-2.0 라이센스의 조건 하에서 자유롭게 기여를 함을 인증한다.

Qiskit 프로젝트에 새로운 풀 리퀘스트를 기여할 때, 봇이 기여자 사용 계약에 서명을 했는지 자동으로 확인한다. 서명이 필요한 경우, 봇은 풀 리퀘스트에 계약에 사인할 수 있는 링크를 포함한 코멘트를 자동으로 생성한다. 개인 기여자 사용 계약 문서는 PDF로 확인할 수 있다.

참고

당신의 기여가 고용을 통해 이뤄진 활동이거나, 고용자의 자산이라면, 기업 기여자 사용 계약 에 서명한 후, <qiskit@us.ibm.com>에 이메일로 발송한다.