서비스를 운영하다보면, 문제가 생겼을 때, 본인이 직접 에러를 해결하려고 원인을 찾아본 것 마냥 자세히 상황 설명을 하시는 분이 있는가 하면, 그냥 무턱대고 권한이 없데요. 권한을 주세요. 라는 분들이 있습니다. 전자처럼 자세히 상황설명을 하면, 상황을 이해하기도 쉽고, 재현을 할 수 있기 때문에 원인을 찾아 고치던, 사용법을 알려드리던 할 수 있는데, 후자처럼 무턱대고 안되요라고 시작하면, 사용자와 스무고개 놀이를 시작하곤 합니다. 동일한 문제에 대해서도 정확한 대답을 하는데 까지 걸리는 시간이 더 많이 걸리게 되는 건 당연합니다.
이걸 무조건 질문하는 사용자의 탓이라고 할 수 없는게, 상황을 해결해야겠다는 급한 마음에 안된다고 상황을 먼저 말하는 뿐일테니까요. 그럴 때일 수록 그런 심정과 상황을 이해하려고 노력하는 자세도 필요하고, 질문하는 사람이 정확한 질문을 할 수 있도록 유도하는 장치도 마련하는 것이 문제 상황을 빠르게 해결하는 데 도움이 됩니다.
GitHub에도 비슷한 장치가 있는데, Issue 템플릿이라는 것입니다. 오픈소스 운영자들이 사용자들로 하여금 문제가 발생하거나, 버그에 대한 소통창구로 이용하는 것이 Issue라는 기능입니다. 초창기에 사용자들이 무턱대고 안된다는 만드는 Issue를 해결하기 위해 정형화한(문제 상황, 재현방법, 스크린캡쳐등을 포함하는) 형식으로 질문하도록 유도하는 식으로 대응하 던 것을, 이제는 하나의 기능으로 만든 것입니다.
처음 기능이 생겼을 때는, 특정한 위치에 템플릿 파일을 만들어다 두는 것으로 시작했는데, 이제는 템플릿을 만드는 기능도 생겼습니다. GitHub의 리파지토리 Settings에 중간 쯤 보면 "Set up templates"라는 버튼을 누르면 템플릿 만들기를 시작할 수 있습니다.
버튼을 누르면 만들 템플릿을 만드는 화면이 나오는데, 자주 쓰이는 Bug report, Feature request에 대해서는 일반적인 템플릿을 만들어져 있어서 각자 상황에 맞게 고쳐서 사용할 수 있습니다. 그리고 Custom template을 통해서는 처음부터 원하는 대로 만들 수 있습니다.
"Preview and edit" 버튼을 누르면 지정된 템플릿을 볼 수 있고, 제목 옆의 연필 버튼을 통해서 내용 편집이 가능합니다. 맨 윗 두줄은 템플릿의 이름과 설명을 나타내고, 이 부분은 Issue를 만드는 사람이 제일 먼저 보게 되는 부분이므로 간결하고 내용을 바로 알 수 있도록 작성해야 합니다.
다음 문단은 Issue작성 창에 보이게 될 템플릿의 내용인데, Bug report템플릿에 맞게, 문제 설명, 재현 방법, 원하는 결과 스크린샷, 사용환경에 대한 내용을 넣도록 되어있습니다. 그리고 마지막 부분은 Issue를 작성할 때 기본 설정되는 내용인데, 제목, 담당자, 레이블 입니다. 이 경우엔, 제목에 "[Bug]"라고 넣어두면 Issue를 작성하는 사람이 무의식적으로 말머리에 버그라고 표시하게 할 수 있습니다.
살짝만 (한글로)고쳐보면,
그리고 나머지도 살짝살짝 고쳐서 템플릿을 마무리 합니다.
우측 상단에 "Propose changes" 버튼을 눌러 커밋을 하면, 이슈 템플릿이 완성됩니다.
만들어진 템플릿은 템플릿의 이름을 가진 md 파일로 .github/ISSUE_TEMPLATE 폴더 아래에 저장됩니다. 주의할게 하나 있는데, 템플릿 이름을 한글로 할경우 "-"로 표시됩니다. 버그리포트라는 이슈 템플릿은 -----.md로 만들어집니다. 그래서 앞에 숫자를 붙이거나, 영문으로만 작성하거나 선택이 필요합니다. -----.md라도 잘 동작하기는 합니다.
만들어진 템플릿을 확인하고, 이슈를 생성해보면, 아까 생성한 템플릿들을 확인할 수 있습니다.
템플릿 파일에 맞게 이슈를 생성할 수 있는 버튼이 보입니다. (사용자는 원하는 템플릿 유형이 없다면 템플릿 없는 이슈도 생성은 가능합니다. ) 그리고 버튼을 클릭하면 아까 만든 템플릿이 작성창에 보이게 됩니다.
아까 템플릿에서 만든 제목, 내용, 담당자, 레이블이 모두 잘 작성된 것을 확인 할 수 있습니다.
내가 운영하는 오픈소스가 있다거나, 프로젝트를 진행하더라도, 기능에 따른 스토리등을 이슈로 만들어 둔다면, 무턱대고 내용을 적어 놓기 보다는 구조화된 템플릿을 만들어 두면, 작성하는 시간도 절약하고 다른 사람들과 같이 기능을 만드는데 도움이 될테니, GitHub을 이용해서 개발 중이라면, 한번 쯤 사용해보시면 좋겠습니다.