SlideShare a Scribd company logo
1 of 17
Download to read offline
오픈 소스
컨트리뷰션 가이드
JBUG Korea
@tedwon
jwon@redhat.com
오픈 소스 문화의 키워드?
Contribution
&
Reputation
변경 사항 최소화
&
DRY principle
변경 사항 최소화
&
Don't Repeat Yourself
Git & Github 와 친해지기
● github 계정 생성하기
● github 에서 프로젝트 & 소스코드 검색
● 프로젝트 포킹해서 맘데로 고쳐보기
● https://guides.github.com
● git 레파지토리 생성하고 프로젝트 만들기
● https://guides.github.com/activities/hello-world/
● https://guides.github.com/pdfs/githubflow-online.pdf
시작하기
● JIRA 이슈 생성하기
○ 이슈 아이디 확보
○ 상세 내용 기술
● 업스트림 프로젝트 레파지토리로 이동
○ https://github.com/jboss-modules/jboss-modules
● 개인 레파지토리로 포킹
● 로컬에 프로젝트 클론닝
○ git clone git@github.com:tedwon/jboss-modules.git
● 업스트림 레파지토리 추가
○ git remote add upstream git@github.com:jboss-modules/jboss-modules.git
Tip - SourceTree 활용!
Hacking on WildFly
https://developer.jboss.org/wiki/HackingOnWildFly
Sample Project
https://github.com/JBUGKorea/helloworld-project
시작하기
● 업스트림 최신 변경 사항 master 브랜치로 가져오기
○ git fetch upstream
○ git reset --hard upstream/master
○ git push -u origin master
● 새로운 PR 브랜치 생성
○ 브랜치명은 이슈 아이디로 (ex: WFCORE-1563)
○ git checkout -b WFCORE-1563
● 작업 전 코드 무결성 확인
○ 빌드 mvn clean install -DskipTests
○ 단위 테스트 전체 수행 및 확인 mvn test
● 단위 테스트 코드 작성
● 코드 작성
코드 작업
● 코드 변경 사항 확인
○ 코드 스타일 준수
○ 변경 최소화
○ 중복 유무 확인
● 코드 인스펙션 수행
● 변경 후 단위 테스트 수행 결과 확인
● 리뷰 받기위한 철저한 준비
● 커밋
○ 메세지에 이슈 제목과 링크만 작성
■ WFCORE-1563 Fix replace deployment fail on CLI batch mode
■ https://issues.jboss.org/browse/WFCORE-1563
● 커밋은 한개로 만들 것
● PR 브랜치 푸쉬
○ git push -u origin WFCORE-1563
● Pull Request 생성하기
○ “base fork” 레파지토리와 “base” 브랜치 확인
○ 적용될 코드 변경 사항 최종 확인!
● 코드 리뷰 수행 및 컨버세이션
○ by Owner
○ by Maintainers and Collaborators
○ 논리적으로 변경사항에 대한 이해 및 설득
○ Ex: https://github.com/netty/netty/pull/4607
● 코드 수정 사항 반영 및 다시 푸쉬
○ 커밋은 한개로 만들 것 rebase, squash, cherry-pick
○ git rebase -i head~2
● 머지(Merged)!!
● 끝
코드 리뷰
Tips
● 코드 작업은 맘껏 push는 최소 변경분만
● Gist 활용하기
● IRC 사용하기
○ http://limechat.net/mac/
○ irc://irc.freenode.net/infinispan
● 메일링 리스트 가입
● 단위 테스트 코드에서 Thread.sleep() 사용하지 말 것
● 코드 수정 없는 단위 테스트 코드 컨트리뷰션도 좋음
● 문서 오타 수정 컨트리뷰션도 역시 좋음
References
1. Toshiya Kobayashi - HOW TO CONTIRBUTE TO UPSTREAM
2. https://guides.github.com/activities/contributing-to-open-source/
3. https://developer.jboss.org/wiki/HackingOnWildFly
4. http://infinispan.org/docs/stable/contributing/contributing.html
5. http://www.slideshare.net/chacon/getting-git
6. https://backlogtool.com/git-guide/kr/
7. http://learngitbranching.js.org/
8. https://gist.github.com/
9. https://help.github.com/articles/fork-a-repo/
10. https://help.github.com/articles/using-pull-requests/
11. https://chris.beams.io/posts/git-commit/
Thanks!

More Related Content

What's hot

[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용Ian Choi
 
[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on labNAVER D2
 
GITHUB와 함께 Social하게 코딩하기
GITHUB와 함께 Social하게 코딩하기GITHUB와 함께 Social하게 코딩하기
GITHUB와 함께 Social하게 코딩하기Young-Ho Cha
 
OSS SW Basics Lecture 10: Setting up term project
OSS SW Basics Lecture 10: Setting up term projectOSS SW Basics Lecture 10: Setting up term project
OSS SW Basics Lecture 10: Setting up term projectJeongkyu Shin
 
GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서jungseob shin
 
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기Youngbin Han
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습BJ Jang
 
Visual studio 2013 github 연동하기
Visual studio 2013 github 연동하기Visual studio 2013 github 연동하기
Visual studio 2013 github 연동하기Park JaiChang
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기nexusz99
 
국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우
국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우
국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우Ian Choi
 
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기덕규 임
 
초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHubYurim Jin
 
팀 개발을 위한 GitHub 사용법
팀 개발을 위한 GitHub 사용법팀 개발을 위한 GitHub 사용법
팀 개발을 위한 GitHub 사용법Eugene Park
 
How to use Github? (For Cien)
How to use Github? (For Cien)How to use Github? (For Cien)
How to use Github? (For Cien)민수 김
 
Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001BJ Jang
 

What's hot (20)

[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용
 
[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab
 
GITHUB와 함께 Social하게 코딩하기
GITHUB와 함께 Social하게 코딩하기GITHUB와 함께 Social하게 코딩하기
GITHUB와 함께 Social하게 코딩하기
 
Gitflow ppt
Gitflow pptGitflow ppt
Gitflow ppt
 
OSS SW Basics Lecture 10: Setting up term project
OSS SW Basics Lecture 10: Setting up term projectOSS SW Basics Lecture 10: Setting up term project
OSS SW Basics Lecture 10: Setting up term project
 
Git 코드랩 스터디 3
Git 코드랩 스터디 3Git 코드랩 스터디 3
Git 코드랩 스터디 3
 
GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서
 
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
Git 과 GitHub 를 이용한 버전관리와 협업 - 1주차 - 첫 커밋 푸시하기
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습
 
Visual studio 2013 github 연동하기
Visual studio 2013 github 연동하기Visual studio 2013 github 연동하기
Visual studio 2013 github 연동하기
 
Git lecture1
Git lecture1Git lecture1
Git lecture1
 
Git lecture2
Git lecture2Git lecture2
Git lecture2
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기
 
국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우
국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우
국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우
 
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
 
초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub
 
팀 개발을 위한 GitHub 사용법
팀 개발을 위한 GitHub 사용법팀 개발을 위한 GitHub 사용법
팀 개발을 위한 GitHub 사용법
 
How to use Github? (For Cien)
How to use Github? (For Cien)How to use Github? (For Cien)
How to use Github? (For Cien)
 
Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001
 
git-workflow
git-workflowgit-workflow
git-workflow
 

Similar to 오픈 소스 컨트리뷰션 가이드

오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료BJ Jang
 
Git Tutorial
Git TutorialGit Tutorial
Git TutorialMDLicht
 
Yobi-hands-on-lab-at-d2fest
Yobi-hands-on-lab-at-d2festYobi-hands-on-lab-at-d2fest
Yobi-hands-on-lab-at-d2festinsanehong Kim
 
Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Dabi Ahn
 
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기CONNECT FOUNDATION
 
Git: A Motivating Introduction
Git: A Motivating IntroductionGit: A Motivating Introduction
Git: A Motivating IntroductionJongwook Choi
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료지원 정
 
EOST2023-이보라-HackYourGitEducation.pptx
EOST2023-이보라-HackYourGitEducation.pptxEOST2023-이보라-HackYourGitEducation.pptx
EOST2023-이보라-HackYourGitEducation.pptxBora Lee
 
[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)Ildoo Kim
 
GitHub 실습 교육
GitHub 실습 교육GitHub 실습 교육
GitHub 실습 교육승엽 신
 
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603 KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603 jieun kim
 
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+githubGit 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+githubJunyoung Lee
 
201017 한주현 생물정보학 github 강의
201017 한주현 생물정보학 github 강의201017 한주현 생물정보학 github 강의
201017 한주현 생물정보학 github 강의Joohyun Han
 
깃헙 활용
깃헙 활용깃헙 활용
깃헙 활용Hun Yong Song
 
2020년 9월 12일 개발 이야기 정리
2020년 9월 12일 개발 이야기 정리2020년 9월 12일 개발 이야기 정리
2020년 9월 12일 개발 이야기 정리Jay Park
 
제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기Mario Cho
 
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXpressEngine
 
버전관리시스템 종류와 소개
버전관리시스템 종류와 소개버전관리시스템 종류와 소개
버전관리시스템 종류와 소개Jong-il Seok
 

Similar to 오픈 소스 컨트리뷰션 가이드 (20)

오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
 
Yobi-hands-on-lab-at-d2fest
Yobi-hands-on-lab-at-d2festYobi-hands-on-lab-at-d2fest
Yobi-hands-on-lab-at-d2fest
 
Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션
 
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
 
Git: A Motivating Introduction
Git: A Motivating IntroductionGit: A Motivating Introduction
Git: A Motivating Introduction
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 
EOST2023-이보라-HackYourGitEducation.pptx
EOST2023-이보라-HackYourGitEducation.pptxEOST2023-이보라-HackYourGitEducation.pptx
EOST2023-이보라-HackYourGitEducation.pptx
 
[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)
 
GitHub 실습 교육
GitHub 실습 교육GitHub 실습 교육
GitHub 실습 교육
 
Git
GitGit
Git
 
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603 KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
 
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+githubGit 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
 
201017 한주현 생물정보학 github 강의
201017 한주현 생물정보학 github 강의201017 한주현 생물정보학 github 강의
201017 한주현 생물정보학 github 강의
 
깃헙 활용
깃헙 활용깃헙 활용
깃헙 활용
 
2020년 9월 12일 개발 이야기 정리
2020년 9월 12일 개발 이야기 정리2020년 9월 12일 개발 이야기 정리
2020년 9월 12일 개발 이야기 정리
 
제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기
 
Fun git hub
Fun git hubFun git hub
Fun git hub
 
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
 
버전관리시스템 종류와 소개
버전관리시스템 종류와 소개버전관리시스템 종류와 소개
버전관리시스템 종류와 소개
 

More from Ted Won

Undertow RequestBufferingHandler 소개
Undertow RequestBufferingHandler 소개Undertow RequestBufferingHandler 소개
Undertow RequestBufferingHandler 소개Ted Won
 
JBoss EAP 7 & JDG 7 최신 기술 소개
JBoss EAP 7 & JDG 7 최신 기술 소개JBoss EAP 7 & JDG 7 최신 기술 소개
JBoss EAP 7 & JDG 7 최신 기술 소개Ted Won
 
JBoss Modules Internal
JBoss Modules InternalJBoss Modules Internal
JBoss Modules InternalTed Won
 
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...Ted Won
 
Jenkins X - automated CI/CD solution for cloud native applications on Kubernetes
Jenkins X - automated CI/CD solution for cloud native applications on KubernetesJenkins X - automated CI/CD solution for cloud native applications on Kubernetes
Jenkins X - automated CI/CD solution for cloud native applications on KubernetesTed Won
 
Hawkular overview
Hawkular overviewHawkular overview
Hawkular overviewTed Won
 
Complex Event Processing with Esper
Complex Event Processing with EsperComplex Event Processing with Esper
Complex Event Processing with EsperTed Won
 
JDG 7 & Spark Integration
JDG 7 & Spark IntegrationJDG 7 & Spark Integration
JDG 7 & Spark IntegrationTed Won
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기Ted Won
 
Nara - Personalized Web Recommendation Service Quick Review
Nara - Personalized Web Recommendation Service Quick ReviewNara - Personalized Web Recommendation Service Quick Review
Nara - Personalized Web Recommendation Service Quick ReviewTed Won
 
JBoss Community's Application Monitoring Platform
JBoss Community's Application Monitoring PlatformJBoss Community's Application Monitoring Platform
JBoss Community's Application Monitoring PlatformTed Won
 
Real-time Big Data Analytics Practice with Unstructured Data
Real-time Big Data Analytics Practice with Unstructured DataReal-time Big Data Analytics Practice with Unstructured Data
Real-time Big Data Analytics Practice with Unstructured DataTed Won
 
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...Ted Won
 
Building Real-time CEP Application with Open Source Projects
Building Real-time CEP Application with Open Source Projects Building Real-time CEP Application with Open Source Projects
Building Real-time CEP Application with Open Source Projects Ted Won
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링Ted Won
 
RHQ 공감 Seminar 6th
RHQ 공감 Seminar 6thRHQ 공감 Seminar 6th
RHQ 공감 Seminar 6thTed Won
 
Complex Event Processing with Esper
Complex Event Processing with EsperComplex Event Processing with Esper
Complex Event Processing with EsperTed Won
 

More from Ted Won (18)

Undertow RequestBufferingHandler 소개
Undertow RequestBufferingHandler 소개Undertow RequestBufferingHandler 소개
Undertow RequestBufferingHandler 소개
 
JBoss EAP 7 & JDG 7 최신 기술 소개
JBoss EAP 7 & JDG 7 최신 기술 소개JBoss EAP 7 & JDG 7 최신 기술 소개
JBoss EAP 7 & JDG 7 최신 기술 소개
 
JBoss Modules Internal
JBoss Modules InternalJBoss Modules Internal
JBoss Modules Internal
 
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
 
Jenkins X - automated CI/CD solution for cloud native applications on Kubernetes
Jenkins X - automated CI/CD solution for cloud native applications on KubernetesJenkins X - automated CI/CD solution for cloud native applications on Kubernetes
Jenkins X - automated CI/CD solution for cloud native applications on Kubernetes
 
Hawkular overview
Hawkular overviewHawkular overview
Hawkular overview
 
Complex Event Processing with Esper
Complex Event Processing with EsperComplex Event Processing with Esper
Complex Event Processing with Esper
 
JDG 7 & Spark Integration
JDG 7 & Spark IntegrationJDG 7 & Spark Integration
JDG 7 & Spark Integration
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
 
Nara - Personalized Web Recommendation Service Quick Review
Nara - Personalized Web Recommendation Service Quick ReviewNara - Personalized Web Recommendation Service Quick Review
Nara - Personalized Web Recommendation Service Quick Review
 
JBoss Community's Application Monitoring Platform
JBoss Community's Application Monitoring PlatformJBoss Community's Application Monitoring Platform
JBoss Community's Application Monitoring Platform
 
Real-time Big Data Analytics Practice with Unstructured Data
Real-time Big Data Analytics Practice with Unstructured DataReal-time Big Data Analytics Practice with Unstructured Data
Real-time Big Data Analytics Practice with Unstructured Data
 
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
 
Building Real-time CEP Application with Open Source Projects
Building Real-time CEP Application with Open Source Projects Building Real-time CEP Application with Open Source Projects
Building Real-time CEP Application with Open Source Projects
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
 
RHQ 공감 Seminar 6th
RHQ 공감 Seminar 6thRHQ 공감 Seminar 6th
RHQ 공감 Seminar 6th
 
Complex Event Processing with Esper
Complex Event Processing with EsperComplex Event Processing with Esper
Complex Event Processing with Esper
 

Recently uploaded

Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 

Recently uploaded (6)

Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 

오픈 소스 컨트리뷰션 가이드

  • 1. 오픈 소스 컨트리뷰션 가이드 JBUG Korea @tedwon jwon@redhat.com
  • 6. Git & Github 와 친해지기 ● github 계정 생성하기 ● github 에서 프로젝트 & 소스코드 검색 ● 프로젝트 포킹해서 맘데로 고쳐보기 ● https://guides.github.com ● git 레파지토리 생성하고 프로젝트 만들기 ● https://guides.github.com/activities/hello-world/ ● https://guides.github.com/pdfs/githubflow-online.pdf
  • 7.
  • 8. 시작하기 ● JIRA 이슈 생성하기 ○ 이슈 아이디 확보 ○ 상세 내용 기술 ● 업스트림 프로젝트 레파지토리로 이동 ○ https://github.com/jboss-modules/jboss-modules ● 개인 레파지토리로 포킹 ● 로컬에 프로젝트 클론닝 ○ git clone git@github.com:tedwon/jboss-modules.git ● 업스트림 레파지토리 추가 ○ git remote add upstream git@github.com:jboss-modules/jboss-modules.git
  • 12. 시작하기 ● 업스트림 최신 변경 사항 master 브랜치로 가져오기 ○ git fetch upstream ○ git reset --hard upstream/master ○ git push -u origin master ● 새로운 PR 브랜치 생성 ○ 브랜치명은 이슈 아이디로 (ex: WFCORE-1563) ○ git checkout -b WFCORE-1563 ● 작업 전 코드 무결성 확인 ○ 빌드 mvn clean install -DskipTests ○ 단위 테스트 전체 수행 및 확인 mvn test ● 단위 테스트 코드 작성 ● 코드 작성
  • 13. 코드 작업 ● 코드 변경 사항 확인 ○ 코드 스타일 준수 ○ 변경 최소화 ○ 중복 유무 확인 ● 코드 인스펙션 수행 ● 변경 후 단위 테스트 수행 결과 확인 ● 리뷰 받기위한 철저한 준비 ● 커밋 ○ 메세지에 이슈 제목과 링크만 작성 ■ WFCORE-1563 Fix replace deployment fail on CLI batch mode ■ https://issues.jboss.org/browse/WFCORE-1563 ● 커밋은 한개로 만들 것 ● PR 브랜치 푸쉬 ○ git push -u origin WFCORE-1563
  • 14. ● Pull Request 생성하기 ○ “base fork” 레파지토리와 “base” 브랜치 확인 ○ 적용될 코드 변경 사항 최종 확인! ● 코드 리뷰 수행 및 컨버세이션 ○ by Owner ○ by Maintainers and Collaborators ○ 논리적으로 변경사항에 대한 이해 및 설득 ○ Ex: https://github.com/netty/netty/pull/4607 ● 코드 수정 사항 반영 및 다시 푸쉬 ○ 커밋은 한개로 만들 것 rebase, squash, cherry-pick ○ git rebase -i head~2 ● 머지(Merged)!! ● 끝 코드 리뷰
  • 15. Tips ● 코드 작업은 맘껏 push는 최소 변경분만 ● Gist 활용하기 ● IRC 사용하기 ○ http://limechat.net/mac/ ○ irc://irc.freenode.net/infinispan ● 메일링 리스트 가입 ● 단위 테스트 코드에서 Thread.sleep() 사용하지 말 것 ● 코드 수정 없는 단위 테스트 코드 컨트리뷰션도 좋음 ● 문서 오타 수정 컨트리뷰션도 역시 좋음
  • 16. References 1. Toshiya Kobayashi - HOW TO CONTIRBUTE TO UPSTREAM 2. https://guides.github.com/activities/contributing-to-open-source/ 3. https://developer.jboss.org/wiki/HackingOnWildFly 4. http://infinispan.org/docs/stable/contributing/contributing.html 5. http://www.slideshare.net/chacon/getting-git 6. https://backlogtool.com/git-guide/kr/ 7. http://learngitbranching.js.org/ 8. https://gist.github.com/ 9. https://help.github.com/articles/fork-a-repo/ 10. https://help.github.com/articles/using-pull-requests/ 11. https://chris.beams.io/posts/git-commit/