[GitHub 100일 챌린지] Day 78 - GitHub Discussions 활용
100일 챌린지 Day 78 - GitHub Discussions로 커뮤니티를 만들고 소통하는 방법을 마스터합니다.
⏱️ 예상 학습 시간: 45-50분 📚 난이도: ⭐⭐⭐ (중급)
배울 내용
- Discussions의 개념과 Issues와의 차이점
- 카테고리 설정과 관리
- Q&A로 지식 베이스 만들기
- Polls(투표)로 의견 수렴하기
- 커뮤니티 모더레이션
- 고급 기능과 통합
시작하기 전에
이 내용은 다음 개념을 알고 있다면 더 쉽게 이해할 수 있습니다:
- ✅ [Day 71-73 - Issues 사용 경험]
- ✅ 온라인 커뮤니티/포럼 사용 경험
- ✅ 마크다운 기본 문법
Discussions는 Issues와 비슷하지만 더 자유로운 대화를 위한 공간입니다. 포럼이나 커뮤니티를 사용해봤다면 쉽게 이해할 수 있어요!
1. GitHub Discussions란?
정의와 목적
GitHub Discussions는 저장소에 내장된 커뮤니티 포럼입니다.
1
2
3
4
5
6
7
8
9
10
11
Issues = 작업 추적
├─ 버그 리포트
├─ 기능 요청
└─ 태스크 관리
Discussions = 대화와 협업
├─ 질문과 답변
├─ 아이디어 공유
├─ 공지사항
├─ 투표
└─ 일반 토론
Discussions vs Issues
| 구분 | Issues | Discussions |
|---|---|---|
| 목적 | 작업 추적 | 대화와 소통 |
| 생명주기 | Open → Closed | 영구적 |
| 구조 | 단일 스레드 | 답글과 스레드 |
| 카테고리 | 라벨로 분류 | 카테고리 |
| 답변 채택 | 없음 | Q&A에서 가능 |
| 투표 | 이모지 반응 | Polls 기능 |
| 검색 | Issue 검색 | Discussion 검색 |
언제 무엇을 사용?
1
2
3
4
5
6
7
8
9
10
11
12
13
Issue 사용:
✅ 명확한 버그 리포트
✅ 구체적인 기능 요청
✅ 수정이 필요한 작업
✅ 완료/닫힘 상태 필요
Discussion 사용:
✅ "어떻게 하나요?" (How-to)
✅ "왜 이렇게 동작하나요?" (Why)
✅ "이런 기능 어떤가요?" (Ideas)
✅ 커뮤니티 공지사항
✅ 장기적인 토론
✅ 여러 해결책 논의
2. Discussions 활성화하기
활성화 방법
1
2
3
4
5
6
Repository → Settings → Features
☑ Discussions
Host discussions in your repository
→ Save
활성화 후:
1
2
3
4
5
6
7
8
9
Repository 탭에 Discussions 추가:
Code | Issues | Pull requests | Discussions | ...
자동으로 기본 카테고리 생성됨:
📢 Announcements
💡 Ideas
🙏 Q&A
💬 General
🙌 Show and tell
권한 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Settings → Discussions
권한 레벨:
- Read: Discussion 읽기만
- Write: Discussion 작성 및 댓글
- Moderate: 모더레이터 권한
- Admin: 카테고리 관리 등 모든 권한
Public Repository:
● Anyone with read access can create discussions
○ Only users with write access can create discussions
Private Repository:
● Only collaborators (자동)
3. 카테고리 활용
기본 카테고리
1. Announcements (공지사항)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
📢 Announcements
특징:
- 관리자와 maintainer만 작성 가능
- 중요한 업데이트와 공지
- 댓글은 모두 가능
용도:
- 새 릴리스 발표
- 중요한 변경 사항
- 이벤트 공지
- 정책 변경
예시:
제목: v2.0 릴리스 발표
내용:
MyProject v2.0이 출시되었습니다! 🎉
주요 변경사항:
- 새로운 API 엔드포인트
- 성능 30% 향상
- React 18 지원
자세한 내용: [Release Notes](...)
2. Ideas (아이디어)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
💡 Ideas
특징:
- 새로운 기능 아이디어
- 브레인스토밍
- upvote로 인기 파악
용도:
- 기능 제안
- 개선 아이디어
- 미래 계획 논의
예시:
제목: 다크 모드 지원
내용:
다크 모드를 추가하면 어떨까요?
장점:
- 눈의 피로 감소
- 배터리 절약 (OLED)
- 현대적인 UX
구현 방법:
1. CSS 변수로 테마 정의
2. localStorage에 사용자 선택 저장
3. 토글 버튼 추가
👍 찬성 투표 부탁드립니다!
3. Q&A (질문과 답변)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
🙏 Q&A
특징:
- 답변 채택 가능 (✅ 표시)
- Stack Overflow 스타일
- 지식 베이스 구축
용도:
- 사용법 질문
- 문제 해결
- 모범 사례 공유
예시:
제목: npm install 시 EACCES 오류
내용:
```bash
npm install -g myproject
# Error: EACCES: permission denied
어떻게 해결하나요?
환경:
- OS: macOS 14.0
- Node: v18.0.0
- npm: v9.0.0
답변 (채택됨 ✅): sudo 없이 글로벌 설치 경로를 변경하세요:
1
2
3
4
5
6
7
8
9
# npm 글로벌 경로 변경
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
# .bashrc 또는 .zshrc에 추가
export PATH=~/.npm-global/bin:$PATH
# 재시도
npm install -g myproject
이렇게 하면 권한 문제가 해결됩니다!
1
2
3
**4. General (일반)**
💬 General
특징:
- 자유로운 대화
- 카테고리 미정 주제
- 커뮤니티 교류
용도:
- 일상적인 대화
- 프로젝트 관련 잡담
- 자기소개
- 피드백
예시: 제목: 프로젝트 사용 후기 내용: MyProject를 2주 동안 사용해봤는데 정말 좋네요!
좋은 점:
- 설치가 간단함
- 문서가 잘 되어 있음
- 커뮤니티가 활발함
개선 제안:
- 튜토리얼 영상이 있으면 좋겠어요
- 예제가 더 많았으면…
전체적으로 만족합니다! 👍
1
2
3
**5. Show and tell (쇼앤텔)**
🙌 Show and tell
특징:
- 프로젝트 활용 사례
- 만든 것 자랑
- 영감 공유
용도:
- MyProject로 만든 앱 소개
- 플러그인 공유
- 튜토리얼 공유
- 성공 사례
예시: 제목: MyProject로 만든 할 일 관리 앱 내용: MyProject를 사용해서 Todo 앱을 만들었습니다!
[스크린샷]
기능:
- 태그로 분류
- 마감일 알림
- 다크 모드
GitHub: https://github.com/user/todo-app Demo: https://todo.example.com
코드에 대한 피드백 환영합니다!
1
2
3
### 커스텀 카테고리 만들기
Settings → Discussions → Categories → New category
예시 1: Tutorials (튜토리얼) 이름: Tutorials 이모지: 📚 설명: Step-by-step guides and tutorials 포맷: Open-ended discussion
예시 2: Showcase (쇼케이스) 이름: Showcase 이모지: ✨ 설명: Share your projects built with MyProject 포맷: Announcement (관리자만 작성)
예시 3: Feature Requests (기능 요청) 이름: Feature Requests 이모지: 🚀 설명: Suggest new features 포맷: Open-ended discussion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
---
## 4. Q&A로 지식 베이스 만들기
### 답변 채택 기능
**질문 작성**:
```markdown
Category: Q&A
제목: API 인증은 어떻게 하나요?
본문:
MyProject API를 사용하려고 하는데 인증 방법을 모르겠습니다.
```javascript
fetch('https://api.example.com/users')
.then(res => res.json())
// 401 Unauthorized 오류
어떻게 해야 하나요?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
**답변 작성 및 채택**:
```markdown
답변:
API 키를 헤더에 포함해야 합니다!
```javascript
fetch('https://api.example.com/users', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
})
.then(res => res.json())
.then(data => console.log(data))
API 키 발급 방법:
- Settings → API Keys
- “Generate New Key” 클릭
- 키를 안전하게 저장
→ 질문자가 “Mark as answer” 클릭 → 답변에 ✅ 표시됨 → Discussion 목록에서 “Answered” 배지
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
### 검색 가능한 지식 베이스
**효과적인 Q&A 작성**:
```markdown
✅ 좋은 질문:
제목: React에서 API 호출 시 CORS 오류 해결 방법
본문:
- 명확한 문제 설명
- 재현 가능한 코드
- 에러 메시지 포함
- 시도한 해결책
- 환경 정보
❌ 나쁜 질문:
제목: 안 돼요
본문: API가 작동하지 않습니다.
검색 최적화:
1
2
3
4
5
6
7
8
제목에 키워드 포함:
✅ "Node.js에서 환경 변수 설정하는 방법"
✅ "Docker 배포 시 포트 설정 오류"
✅ "TypeScript 타입 에러 해결"
❌ "질문있어요"
❌ "도와주세요"
❌ "이거 왜 이래요?"
5. Polls (투표)로 의견 수렴하기
Polls 만들기
기본 투표:
1
2
3
4
5
6
7
8
9
10
11
12
13
Category: Ideas
제목: 다음 릴리스에 어떤 기능을 우선 추가할까요?
본문:
v2.1에 추가할 기능을 투표로 결정하려고 합니다!
- [ ] 다크 모드
- [ ] 모바일 앱
- [ ] API v2
- [ ] 실시간 알림
투표는 7일간 진행됩니다. 많은 참여 부탁드립니다! 🗳️
복수 선택 투표:
1
2
3
4
5
6
7
8
9
제목: 어떤 플랫폼을 사용하시나요? (복수 선택 가능)
- [ ] Windows
- [ ] macOS
- [ ] Linux
- [ ] iOS
- [ ] Android
결과를 바탕으로 테스트 환경을 개선하겠습니다.
투표 결과 활용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
제목: [결과] 다음 릴리스 기능 투표
투표 결과:
1. 다크 모드: 234표 (48%)
2. API v2: 128표 (26%)
3. 모바일 앱: 89표 (18%)
4. 실시간 알림: 38표 (8%)
총 489명 참여
결정 사항:
✅ v2.1: 다크 모드 추가
✅ v2.2: API v2 작업 시작
⏰ 모바일 앱은 2025년 Q2에 검토
참여해주신 모든 분께 감사드립니다! 🙏
6. 커뮤니티 모더레이션
모더레이터 권한
1
2
3
4
5
6
7
8
Settings → Moderation
모더레이터는:
✅ Discussion 고정/잠금/삭제
✅ 부적절한 댓글 숨기기
✅ 사용자 차단
✅ 카테고리 이동
✅ Spam 신고 처리
고정 (Pinning)
1
2
3
4
5
6
7
8
9
10
11
중요한 Discussion을 상단에 고정:
1. Discussion 페이지 → "..." → Pin discussion
2. 최대 4개까지 고정 가능
3. 카테고리별로 별도 고정
고정할 Discussion:
- 시작 가이드
- FAQ
- 중요 공지
- 커뮤니티 규칙
예시:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
📌 고정됨
제목: 처음 오셨나요? 여기서 시작하세요!
환영합니다! MyProject 커뮤니티에 오신 것을 축하합니다.
👋 시작하기
1. [설치 가이드](...)
2. [튜토리얼](...)
3. [FAQ](...)
💬 도움 받기
- 질문: Q&A 카테고리
- 버그: Issues 탭
- 아이디어: Ideas 카테고리
📝 규칙
- [커뮤니티 가이드라인](...)
- [행동 강령](...)
Happy coding! 🚀
잠금 (Locking)
1
2
3
4
5
6
7
8
9
10
11
12
13
토론이 과열되거나 해결된 경우:
1. Discussion → "..." → Lock conversation
2. 사유 선택:
- Off-topic (주제 이탈)
- Too heated (과열)
- Resolved (해결됨)
- Spam
잠금 후:
- 새 댓글 불가
- 기존 댓글 읽기는 가능
- 필요시 다시 unlock
댓글 숨기기
1
2
3
4
5
6
7
8
9
10
스팸이나 부적절한 댓글:
1. 댓글 → "..." → Hide
2. 사유:
- Spam
- Abuse
- Off-topic
→ 댓글이 숨겨지고 "This comment was marked as spam" 표시
→ 관리자는 볼 수 있음
7. 고급 기능
카테고리 자동 전환
Issue → Discussion:
1
2
3
4
5
6
Issue가 질문인 경우:
Issue → "..." → Convert to discussion
→ 카테고리 선택 (Q&A)
→ Discussion으로 자동 이동
→ Issue는 자동 닫힘
Discussion → Issue:
1
2
3
4
5
Discussion에서 버그 발견 시:
"This should be an issue" 댓글
→ 관리자가 Issue로 변환
→ Discussion 링크 유지
레이블 활용
1
2
3
4
5
6
7
8
9
10
11
Discussion에도 레이블 추가 가능:
예시:
- status:in-progress
- priority:high
- help-wanted
- good-first-issue
필터링:
label:"help-wanted" → 도움 필요한 Discussion
label:"in-progress" → 진행 중인 논의
GitHub Actions 연동
새 Discussion 알림:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
name: New Discussion Notification
on:
discussion:
types: [created]
jobs:
notify:
runs-on: ubuntu-latest
steps:
- name: Send to Slack
uses: slackapi/slack-github-action@v1
with:
payload: |
{
"text": "New Discussion: $",
"url": "$"
}
env:
SLACK_WEBHOOK_URL: $
자동 답변 봇:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
name: Auto Reply
on:
discussion:
types: [created]
jobs:
auto_reply:
runs-on: ubuntu-latest
steps:
- name: Welcome Message
uses: actions/github-script@v6
with:
script: |
github.rest.discussions.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
discussion_number: context.payload.discussion.number,
body: '환영합니다! 질문에 곧 답변드리겠습니다. 🙏'
})
8. 실전 활용 사례
오픈소스 프로젝트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
카테고리 구성:
📢 Announcements → 릴리스 공지
💡 Feature Requests → 기능 제안
🙏 Q&A → 사용법 질문
🐛 Bug Reports → Issue로 이동 안내
🙌 Showcase → 사용자 프로젝트
📚 Tutorials → 커뮤니티 튜토리얼
💬 General → 자유 토론
고정 Discussion:
1. 시작 가이드
2. 기여 방법
3. 2024 로드맵
4. FAQ
기업 내부 프로젝트
1
2
3
4
5
6
7
8
9
10
11
12
카테고리:
📢 Team Announcements → 팀 공지
💡 Ideas → 개선 아이디어
🙏 Q&A → 기술 질문
📊 Weekly Updates → 주간 업데이트
🎯 Goals → 분기별 목표
활용:
- 매주 Sprint 회고 Discussion
- 기술 문서 Q&A
- 팀 빌딩 이벤트 공지
- 내부 도구 showcase
학습 커뮤니티
1
2
3
4
5
6
7
8
9
10
11
12
카테고리:
📚 Tutorials → 튜토리얼
🙏 Q&A → 학습 질문
💡 Project Ideas → 프로젝트 아이디어
🙌 Student Showcase → 학생 작품
📝 Study Groups → 스터디 그룹
활용:
- 강의 질문 답변
- 프로젝트 피드백
- 스터디 모집
- 취업 정보 공유
💡 초보자 팁 Discussions가 처음이라면 먼저 다른 프로젝트의 Discussions를 둘러보세요! 카테고리는 5-6개 정도가 적당합니다. 너무 많으면 혼란스러워요. Q&A 카테고리에서는 답변 채택 기능을 꼭 활성화하세요. 나중에 찾기 쉽습니다!
직접 해보기 (25-30분)
실습을 통해 배운 내용을 체화해봅시다!
📝 실습 1: Discussions 활성화 및 카테고리 설정 (10분)
1
2
3
4
5
- [ ] 1. 연습용 리포지토리에서 Discussions 활성화
- [ ] 2. 기본 카테고리 확인
- [ ] 3. "Ideas" 카테고리 추가
- [ ] 4. "Q&A" 카테고리에 답변 채택 기능 활성화
- [ ] 5. 각 카테고리 설명 작성
📝 실습 2: Discussion 작성하기 (10분)
1
2
3
4
5
- [ ] 1. Announcements에 공지사항 작성
- [ ] 2. General에 자유 주제 Discussion 작성
- [ ] 3. Q&A에 질문 작성
- [ ] 4. 질문에 답변 달기
- [ ] 5. 답변 채택하기
📝 실습 3: 투표 만들기 (5분)
1
2
3
4
5
- [ ] 1. 새 Discussion 생성
- [ ] 2. Poll (투표) 추가
- [ ] 3. 투표 옵션 2-4개 작성
- [ ] 4. 다른 계정으로 투표해보기 (가능하면)
- [ ] 5. 결과 확인
📝 실습 4: 관리 기능 사용하기 (5분)
1
2
3
4
- [ ] 1. Discussion 하나를 상단에 고정
- [ ] 2. 댓글 숨기기 기능 테스트
- [ ] 3. Discussion을 Issue로 전환해보기
- [ ] 4. 라벨 추가해보기
실습 완료 후: 이제 프로젝트에 커뮤니티 공간을 만들 준비가 되었습니다!
😰 어려우시다면
이 내용이 어렵게 느껴진다면:
- Discussions와 Issues의 차이가 헷갈리는 경우
- Issues: 해야 할 작업, 버그, 기능 요청 (닫힘/열림 명확)
- Discussions: 대화, 질문, 아이디어, 공지 (계속 진행)
- 간단히: Issues는 TODO, Discussions는 Talk
- 어떤 카테고리를 만들어야 할지 모르겠는 경우
- 처음엔 기본 5개로 시작하세요
- 필요할 때 하나씩 추가
- 다른 유명 프로젝트 참고
- 언제 Discussion을 사용해야 할지 모르겠는 경우
- 질문/의견: Discussions
- 버그/기능: Issues
- 불확실하면: Discussions 먼저 (나중에 Issue로 전환 가능)
- 커뮤니티가 활성화되지 않는 경우
- 먼저 직접 질문/답변하여 예시 제공
- 정기적으로 투표나 토론 주제 게시
- 답변에 감사 인사와 채택
- 시간이 걸립니다. 꾸준히!
- 모더레이션이 부담스러운 경우
- 소규모 프로젝트는 모더레이션 최소화
- 명확한 규칙만 있으면 충분
- Code of Conduct 참고
- 복습이 필요하다면
- Day 71-73: Issues 복습
- 다른 프로젝트의 Discussions 둘러보기
- GitHub Discussions 공식 가이드
꼭 기억하세요: Discussions는 커뮤니티를 위한 공간입니다. 완벽하게 시작할 필요 없어요. 천천히 만들어가세요!
정리
완료 체크:
- Discussions의 개념과 Issues의 차이를 이해했다
- Discussions를 활성화하고 카테고리를 설정할 수 있다
- Q&A로 답변을 채택할 수 있다
- Polls로 투표를 만들 수 있다
- Discussion을 고정/잠금/숨기기 할 수 있다
- GitHub Actions와 연동할 수 있다
- 직접 실습을 완료했다
핵심 요약:
- 목적: Issues는 작업 추적, Discussions는 대화와 소통
- 카테고리: Announcements, Ideas, Q&A, General, Show and tell
- Q&A: 답변 채택으로 지식 베이스 구축
- Polls: 투표로 커뮤니티 의견 수렴
- 모더레이션: 고정, 잠금, 댓글 숨기기
- 통합: GitHub Actions, 라벨, Issue 전환
실전 팁:
- ✅ 중요한 Discussion은 상단에 고정
- ✅ Q&A 카테고리에서 답변 채택 활성화
- ✅ 명확한 카테고리 가이드라인 작성
- ✅ 정기적으로 인기 질문 정리
- ✅ 투표로 커뮤니티 참여 유도
- ✅ 모더레이터 권한을 신뢰할 수 있는 멤버에게
- ✅ 질문은 Issue보다 Discussion에서
- ✅ 장기 논의는 Discussion, 단기 작업은 Issue
- ✅ GitHub Actions로 자동 알림 설정
다음: Day 79 - 팀 협업 →
