5.5 협업

책을 쓰는 것은 거의 한 사람 이상을 포함합니다. 공동 저자는 물론 때때로 피드백을 제공하는 독자가 있을 수 있습니다.

모든 책의 장은 일반 텍스트 파일이기 때문에 버전 관리 도구에 적합합니다. 즉, 모든 공동 저자와 공동 작업자가 GIT와 같은 버전 관리 도구에 대한 기본 지식을 가지고 있다면 이러한 도구들을 사용하여 책 콘텐츠에 대해 공동 작업할 수 있습니다. 실제로 GIT 사용 방법을 모르더라도 GIT와의 협업은 가능합니다.

GitHub를 통해 웹 브라우저에서 바로 온라인으로 파일을 만들고 편집할 수 있기 때문입니다. 한 사람만이라도 GIT에 익숙해야 하며 그 사람이 책 저장소를 설정할 수 있습니다. 나머지 공동 작업자는 온라인으로 콘텐츠를 제공할 수 있지만 로컬에서 작업하는 GIT의 기본 사용법을 알고 있으면 더 많은 자유를 갖게 됩니다.

독자는 두 가지 방법으로 기여할 수 있습니다. 한 가지 방법은 콘텐츠를 직접 제공하는 것이며 가장 쉬운 방법은 책 출처가 GitHub에서 호스팅되는 경우 GitHub pull requests를 이용하는 것입니다. 기본적으로 모든 GitHub 사용자는 Rmd 소스 파일 페이지에서 편집 버튼을 클릭하고 콘텐츠를 편집하고 승인을 위해 변경 사항을 제출할 수 있습니다. 제안된 변경 사항에 만족하면 (정확하게 변경된 사항을 명확하게 확인할 수 있음) “병합(Merge)”버튼을 클릭하여 변경 사항을 병합할 수 있습니다. 만족스럽지 않은 경우 풀 요청에 피드백을 제공하여 독자가 요구 사항에 따라 추가로 수정할 수 있습니다.

섹션 3.1.1에서 GitBook 스타일의 수정 버튼에 대해 언급했습니다. 이 버튼은 각 페이지의 Rmd 소스에 링크되어 있으며 풀 요청을 생성하도록 안내할 수 있습니다. 오타 수정과 같은 간단한 변경 사항을 전달하기 위해 이메일을 주고 받을 필요가 없습니다.

독자가 책에 기여하는 또 다른 방법은 댓글을 남기는 것입니다. 댓글은 이메일, GitHub 문제 또는 HTML 페이지 댓글과 같은 여러 형식으로 남길 수 있습니다. 여기에서는 Disqus를 예로 사용합니다 (섹션 4.1 참고). Disqus는 웹 페이지에 토론 영역을 포함하는 서비스이며 JavaScript를 통해 로드할 수 있습니다. 다음과 같이 Disqus에 새 포럼을 등록하고 생성한 후 JavaScript 코드를 찾을 수 있습니다.

<div id="disqus_thread"></div>
<script>
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = '//yihui.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the
<a href="https://disqus.com/?ref_noscript">
  comments powered by Disqus.</a></noscript>

yihui라는 이름을 자신의 포럼 이름으로 바꿔야 합니다 (이 이름은 새 Disqus 포럼을 만들 때 제공해야 함). 코드를 disqus.html과 같은 이름의 HTML 파일에 저장할 수 있습니다. 그런 다음 after_body 옵션을 통해 모든 페이지 끝에 삽입할 수 있습니다 (그림 5.3는 토론 영역의 모양을 보여줍니다) :

---
output:
  bookdown::gitbook:
    includes:
      after_body: disqus.html
---
게시판이 있는 책 페이지

Figure 5.3: 게시판이 있는 책 페이지