Qiskit 에 기여하기#
Qiskit은 다양한 배경지식을 가진 사람들이 양자 컴퓨팅을 사용할 수 있게 하는 오픈소스 프로젝트다. 이 페이지는 Qiskit 커뮤니티에 참여할 수 있는 방법을 설명한다.
시작하기 전에#
Qiskit 기여를 처음 진행하는 경우에는 코드에 진입하기 전에 다음 과정을 진행하는 것이 좋다.
행동 강령 읽기
기여하기로 결정한 저장소의 고유한 기여 지침 읽기
Qiskit 커뮤니티와 친해지기 (Slack, Stack Exchange, GitHub 등을 통해)
특정 저장소에 기여하기#
각 Qiskit 패키지에는 코드 저장소에 기여하기 위한 정보를 자세히 설명해둔 기여 가이드라인 세트 (CONTRIBUTING.md
파일 존재)가 있다. 프로젝트마다 요구 사항과 과정이 약간 차이가 있을 수 있으므로 특정 저장소에 기여하기 전에 저장소별 기여 가이드라인을 자세히 읽어봅시다. 메인 저장소인 Qiskit Terra 경우, 기여 가이드라인은 here 에서 찾을 수 있다. 기여를 받을 수 있는 다른 Qiskit 패키지는 공식 Qiskit Github 의 별도 저장소로 찾을 수 있다.
개발 환경 설정하기#
Python 기반 Qiskit 저장소에 기여를 시작하기 위해서는 Python 가상 개발 환경을 설치하고 소스로부터 적절한 패키지를 설치해야 한다.
qiskit-terra 를 위해 이를 수행하는 빠른 안내를 위해서는 How to Install Qiskit - Contributors 유투브 영상을 보도록 하자.
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>에 이메일로 발송한다.