SlideShare a Scribd company logo
1 of 134
Let The Contribution Begin
SeongJae Park <sj38.park@gmail.com>
Great To Meet You
SeongJae Park <sj38.park@gmail.com>
Great To Meet You
SeongJae Park <sj38.park@gmail.com>
Newbie hacker
Great To Meet You
SeongJae Park <sj38.park@gmail.com>
Newbie hacker
Contributing to some F/OSS for fun
This Talk Is...
This Talk Is...
For Newbie, By Newbie, Of Newbie
image src: http://1.bp.blogspot.com/_i0kiD-6jeeI/TRq1fzwZh8I/AAAAAAAAAGw/2ggLbFod4II/s1600/newbie.png
This Talk Is...
For Newbie, By Newbie, Of Newbie
About F/OSS & Contribution(What, Why, How)
image src: http://www.mrmc-tool.org/images/contribute.jpg
This Talk Is...
For Newbie, By Newbie, Of Newbie
About F/OSS & Contribution(What, Why, How)
Practice: Linux & AOSP
image src: http://www.bitdirect.nl/wp-content/uploads/2012/08/android_awesome.jpg, http://www.sitevip.
net/wallpapers/Computers/Linux/Linux-2.jpg
There Are Two Kinds Of S/W In This World
image src: http://4.bp.blogspot.com/-
U3u_nNgfrqE/Upzam3E5I7I/AAAAAAAAxAE/2WMA0teCYr4/s1600/ira+de+Dios+ateismo+religion+jesus+biblia+testamento+odio+furor+col
era+rabia+evangelios+castigos+desolacion.jpg
Two Kinds Of Software
At the Beginning, There was Software
Two Kinds Of Software
Villains Made It Proprietary
image src: http://upload.wikimedia.org/wikipedia/commons/a/a2/Steve_Jobs_and_Bill_Gates_(522695099).jpg
Two Kinds Of Software
Heroes Thought It Must Be Free / Open Source
image src: http://foro.ubuntu-guia.com/file/n3879119/rms-linus.jpg
There Are Two Kinds Of S/W In This World
Free / Open Source Software
Proprietary Software
image src: http://upload.wikimedia.org/wikipedia/commons/a/a2/Steve_Jobs_and_Bill_Gates_(522695099).jpg
Contribution
Translation
Contribution
Translation
Bug Fix
Contribution
Translation
Bug Fix
Feature Implementation
Contribution
Translation
Bug Fix
Feature Implementation
Use
Contribution
Translation
Bug Fix
Feature Implementation
Use
In This Talk, Only Code Contribution
Why Contribution
Why Contribution
Honor
image src: http://www.mailandfemail.com/wp-content/uploads/2011/06/Medal-of-honor.jpg
Why Contribution
Honor
Career
Why Contribution
Honor
Career
Training
image src: http://1.bp.blogspot.com/-yzBPR57Pg2M/T_VmgM976VI/AAAAAAAABz0/Rgj-co8__aU/s1600/Maggie-million-dollar-baby-18619084-720-480.jpg
Why Contribution
Honor
Career
Training
Upstream Development
image src: http://dustinkirkland.files.wordpress.com/2009/07/upstream.jpg
Why Contribution
Honor
Career
Training
Upstream Development
To Change The World
image src: http://media.focusonthefamily.com/blogmedia/images/jim-daly/changetheworld.jpg
Why Contribution
Honor
Career
Training
Upstream Development
To Change The World
Because We Can
image src: http://www.blogtap.net/wp-content/uploads/2010/02/obama-yes-we-can.jpg
Why Contribution
Honor
Career
Training
Upstream Development
To Change The World
Because We Can
...Need More?
General Contribution Process
General Contribution Process
Get Source Code
General Contribution Process
Get Source Code
Make a Goal
General Contribution Process
Get Source Code
Modify Source Code
(Make Patch)
Make a Goal
General Contribution Process
Get Source Code
Modify Source Code
(Make Patch)
Send Patch
Make a Goal
General Contribution Process
Get Source Code
Modify Source Code
(Make Patch)
Send Patch
Get Review
Make a Goal
General Contribution Process
Get Source Code
Modify Source Code
(Make Patch)
Send Patch
Get Review
Approved?
No
Make a Goal
General Contribution Process
Get Source Code
Modify Source Code
(Make Patch)
Send Patch
Get Review
Approved?
Yes
No
Make a Goal
Keep In Mind
Keep In Mind
Coding Style
image src: http://www.emacswiki.org/pics/static/TabsSpacesBoth.png
Keep In Mind
Coding Style
You Are Just A Newbie Here
Keep In Mind
Coding Style
You Are Just A Newbie Here
Start From Jab
image src: http://imalbum.aufeminin.com/album/D20070820/326879_GVBMZUNW3XLLR1G7O4RLQN6HXPCKKK_kick-boxing-
cat_H171540_L.jpg
Keep In Mind
Coding Style
You Are Just A Newbie Here
Start From Jab
Commit Log Style
Keep In Mind - Commit Log Style
Summarized title on First Line
aio: v3: fix kioctx not being freed after cancellation at exit time
v3 corrects a typo in v2 of this patch. The wrong version of the patch was
copied over and misspelled ctx in the first hunk. A known good tree with
this patch is at git://git.kvack.org/~bcrl/linux-next-20130213.git-v3 .
Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>
Keep In Mind - Commit Log Style
Summarized title on First Line
Just n on Second Line
aio: v3: fix kioctx not being freed after cancellation at exit time
v3 corrects a typo in v2 of this patch. The wrong version of the patch was
copied over and misspelled ctx in the first hunk. A known good tree with
this patch is at git://git.kvack.org/~bcrl/linux-next-20130213.git-v3 .
Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>
Keep In Mind - Commit Log Style
Summarized title on First Line
Just n on Second Line
Detailed log after 3rd Line
aio: v3: fix kioctx not being freed after cancellation at exit time
v3 corrects a typo in v2 of this patch. The wrong version of the patch was
copied over and misspelled ctx in the first hunk. A known good tree with
this patch is at git://git.kvack.org/~bcrl/linux-next-20130213.git-v3 .
Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>
Keep In Mind
Coding Style
You Are Just A Newbie Here
Start From Jab
Commit Log Style
Practice: Linux
One Of Famous, Successful F/OSS Project
Practice: Linux
One Of Famous, Successful F/OSS Project
Documentation/HOWTO
Documentation/development-process
Linux - Get Source Code
So many Source Trees at git.kernel.org
image src: https://twimg0-a.akamaihd.net/profile_images/1794549696/SourceTree_newlogo.png
Linux - Get Source Code
So many Source Trees at git.kernel.org
Use The linux-next Source Tree
Source Tree For Next Release
Linux - Get Source Code
So many Source Trees at git.kernel.org
Use The linux-next Source Tree
Source Tree For Next Release
Stephen Rothwell Manages
Linux - Get Source Code
So many Source Trees at git.kernel.org
Use The linux-next Source Tree
Source Tree For Next Release
Stephen Rothwell Manages
$ git clone git://git.kernel.
org/pub/scm/linux/kernel/git/next/linux-
next.git
Linux - Make a Goal
Find Your Task
Linux - Make a Goal
Find Your Task
Coding Style Can Be A Good Start Point
Linux - Make a Goal
Find Your Task
Coding Style Can Be A Good Start Point
$ ./scripts/checkpatch.pl --help
Linux - Version Control
Usual Life Of File
FileA ver 0 FileB ver 0
Linux - Version Control
Usual Life Of File
FileA ver 0 FileB ver 1
Linux - Version Control
Usual Life Of File
FileB ver 1 FileA ver 1
Linux - Version Control
Usual Life Of File
FileB ver 2FileA ver 1
Linux - Version Control
Usual Life Of File
FileB ver 2FileA ver 1
Linux - Version Control
Usual Life Of File
$ ls
foo.c
foo_20140111.c
foo_final.c
foo_realfinal.c
foo_planb.c
foo_finalfinal.c
Linux - Version Control
Usual Life Of File
$ ls
foo.c
foo_20140111.c
foo_final.c
foo_realfinal.c
foo_planb.c
foo_finalfinal.c
Linux - Version Control
Life Of File Under git
FileA ver 0 FileB ver 0
Linux - Version Control
Life Of File Under git
FileA ver 0 FileB ver 0
commit 1
Linux - Version Control
Life Of File Under git
FileA ver 0 FileB ver 0
commit 1
./
../
FileA
FileB
Linux - Version Control
Life Of File Under git
FileA ver 0 FileB ver 0
commit 1
Linux - Version Control
Life Of File Under git
FileA ver 0 FileB ver 0
commit 1
master
branch
Linux - Version Control
Life Of File Under git
FileA ver 0 FileB ver 0 FileB ver 1
commit 1
master
branch
Linux - Version Control
Life Of File Under git
FileA ver 0 FileB ver 0 FileB ver 1
commit 1 commit 2
master
branch
Linux - Version Control
Life Of File Under git
FileA ver 0 FileB ver 0 FileB ver 1
commit 1 commit 2
master
branch
Linux - Version Control
Life Of File Under git
FileA ver 0 FileA ver 1FileB ver 0 FileB ver 1 FileB ver 2
commit 1 commit 2 commit 3
master
branch
Linux - Version Control
Topic Branch
FileA ver 0 FileA ver 1FileB ver 0 FileB ver 1
commit 1 commit 2 commit 3
master
branch
topic branch
FileB ver 2
Linux - Version Control
Topic Branch
FileA ver 0 FileA ver 1FileB ver 0 FileB ver 1 FileB ver 2
commit 1 commit 2 commit 3
master
branch
FileA ver 2
commit 4
topic branch
Linux - Version Control
Upstream
Topic Branch: First time, Looks Needless
Linux - Version Control
Upstream
Topic Branch: First time, Looks Needless
Linux - Version Control
Upstream
Topic Branch: First time, Looks Needless
Linux - Version Control
Upstream
Local Repository
Topic Branch: First time, Looks Needless
clone!
Linux - Version Control
Upstream
Local Repository
Topic Branch: First time, Looks Needless
Linux - Version Control
Upstream
Local Repository
Topic Branch: First time, Looks Needless
Pull me!
Linux - Version Control
Upstream
Local Repository
Topic Branch: First time, Looks Needless
Pull me!
Thanks :)
Linux - Version Control
Topic Branch: What If Time Passes
Upstream
Local Repository
Linux - Version Control
Topic Branch: What If Time Passes
Upstream
Local Repository
Linux - Version Control
Upstream
Local Repository
Topic Branch: What If Time Passes
Pull me!
Linux - Version Control
Topic Branch: What If Time Passes
Upstream
Local Repository
Pull me!
Conflict Occurred.
Why should I merge
your change
manually? :p
Linux - Version Control
Topic Branch: What If Time Passes
Upstream
Local Repository
Pull me!
Also, merging you
manually will make
history looks ugly
Linux - Version Control
Topic Branch: What If Time Passes
Upstream
Local Repository
Pull me!
Also, merging you
manually will make
history looks ugly
If Upstream merge
the change manually
Linux - Version Control
Topic Branch: What If Time Passes
Upstream
Local Repository
Pull me!
Also, merging you
manually will make
history looks ugly
If nobody use topic
branch
Linux - Version Control
Topic Branch: Again.
Upstream
Local Repository
Linux - Version Control
Topic Branch: Get latest code while your
change resides in topic branch safely
Upstream
Local Repository
Linux - Version Control
Topic Branch: Ensure The Branch Can Be
Merged Cleanly
Upstream
Local Repository
Linux - Version Control
Topic Branch: Ensure The Branch Can Be
Merged Cleanly
Upstream
Local Repository
Pull me!
Thanks! :)
Linux - Version Control
● Golden Rule
○ Patch Should Be Made From Latest Source Code
$ git remote update
$ git merge upstream/master
○ Your Change Should Live Inside Topic Branch
$ git checkout -b <fix_the_foo>
Linux - Make a Patch
Topic Branch
Edit Code As You Prefer
image src: http://secretgeek.net/image/real-programmers-code-in-binary.jpg
Linux - Make a Patch
Topic Branch
Edit Code As You Prefer
Commit using -s option
Linux - Make a Patch
Topic Branch
Edit Code As You Prefer
Commit using -s option
commit 106edea2fe051df65a1a6231e9ffa2876cc391cc
Author: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Fri Mar 1 15:52:01 2013 +1100
Add linux-next specific files for 20130301
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Linux - Make a Patch
Signed-Off-By Means:
(a) I created this change; or
(b) Based this on a previous work with a
compatible license; or
(c) Provided to me by (a), (b), or (c) and not
modified
(d) This contribution is public.
Linux - Make a Patch
Topic Branch
Edit Code As You Prefer
Commit using -s option
$ git format-patch master..HEAD
Linux - Send Patch
$ ./scripts/get_maintainer.pl 
<path to patch file>
Linux - Send Patch
$ ./scripts/get_maintainer.pl 
<path to patch file>
$ sudo apt-get install git-email
Linux - Send Patch
$ ./scripts/get_maintainer.pl 
<path to patch file>
$ sudo apt-get install git-email
$ git config sendemail.smtpserver 
smtp.gmail.com
$ git config sendemail.smtpserverport 587
$ git config sendemail.smtpencryption tls
$ git config sendemail.smtpuser 
<your-email-address>
Linux - Send Patch
$ ./scripts/get_maintainer.pl 
<path to patch file>
$ sudo apt-get install git-email
$ git config sendemail.smtpserver 
smtp.gmail.com
$ git config sendemail.smtpserverport 587
$ git config sendemail.smtpencryption tls
$ git config sendemail.smtpuser 
<your-email-address>
$ git send-email --to 
<reviewer mail address> 
<path to patch file>
Linux - Get Review
Just E-Mail
Linux - Get Review
Just E-Mail
Be Gentle Citizen
Linux - Get Review
Just E-Mail
Be Gentle Citizen
Should Turn Off Rich-UX
Linux - Get Merged Notification Mail
This is a note to let you know that I've
just added the patch titled
staging: csr: Remove struct CsrEvent
to my staging git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
in the staging-next branch.
The patch will show up in the next release of the linux-next tree
(usually sometime within the next 24 hours during the week.)
The patch will also be merged in the next major kernel release
during the merge window.
If you have any questions about this process, please let me know.
Practice: AOSP
Android Open Source Project
Practice: AOSP
Android Open Source Project
World's most closed Open Source Software
Practice: AOSP
Android Open Source Project
World's most closed Open Source Software
Development Source Tree Is Not Open
AOSP: World's Most Closed OSS
From
community
Google internal
source treeAOSP
From
Googler
Release
AOSP is an OSS Stack
AOSP: Tools AOSP Uses
repo: Manages Multiple Project AOSP Use
AOSP: Tools AOSP Uses
repo: Manages Multiple Project AOSP Use
gerrit: Web Based UI AOSP Review System
AOSP: Contribution Process
Get Source Code
Agree Contributor
Agreement
Make Goal
Write Patch
Send Patch Merged / Abandoned
Commented
Get Review / Approval
AOSP: Agree Contributor Agreement
https://android-review.googlesource.com/#/
AOSP: Agree Contributor Agreement
AOSP: Agree Contributor Agreement
AOSP: Agree Contributor Agreement
AOSP: Agree Contributor Agreement
AOSP: Agree Contributor Agreement
AOSP: Get Source Code
$ repo init -u 
https://android.googlesource.com/platform/manifest
$ repo sync
AOSP: Make Goal
Bug Report Page
http://code.google.com/p/android/issues/list
Discussion Group
https://groups.google.com/forum/?fromgroups#!
forum/android-contrib
AOSP: Make Patch
Topic Branch
$ repo start <branch_name> <project path>
AOSP - Make Patch
Topic Branch
$ repo start <branch_name> <project path>
Coding Style Guideline
http://s.android.com/source/code-style.html
AOSP - Make Patch
Topic Branch
$ repo start <branch_name> <project path>
Coding Style Guideline
http://s.android.com/source/code-style.html
$ git add -A
$ git commit -s
AOSP - Send Patch
$ repo upload
AOSP - Get Review
AOSP - Get Review
Need Verification and Approval
AOSP - Get Review
See git log to select Appropriate Reviewer
AOSP - Upload New Patchset
Reviewer Want Modified Patch?
$ git commit --amend
$ repo upload
Summary
Summary
Get Source Code
Summary
Get Source Code
Make Goal
Summary
Get Source Code
Make Goal
Make Patch
Summary
Get Source Code
Make Goal
Make Patch
Send Patch
Summary
Get Source Code
Make Goal
Make Patch
Send Patch
Get Review
LET IT GO
The Code Never Bothered You Anyway
This work by SeongJae Park is licensed under the
Creative Commons Attribution-ShareAlike 3.0 Unported
License. To view a copy of this license, visit http:
//creativecommons.org/licenses/by-sa/3.0/.

More Related Content

What's hot

Golang and Domain Specific Languages - Lorenzo Fontana - Codemotion Rome 2017
Golang and Domain Specific Languages - Lorenzo Fontana - Codemotion Rome 2017Golang and Domain Specific Languages - Lorenzo Fontana - Codemotion Rome 2017
Golang and Domain Specific Languages - Lorenzo Fontana - Codemotion Rome 2017Codemotion
 
Introduction to Griffon
Introduction to GriffonIntroduction to Griffon
Introduction to GriffonJames Williams
 
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경Mintak Son
 
Golang start and tips
Golang start and tipsGolang start and tips
Golang start and tipsAaron King
 
Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017Codemotion
 
Pseudo-versions, moving to Go1.13 and later versions
Pseudo-versions, moving to Go1.13 and later versionsPseudo-versions, moving to Go1.13 and later versions
Pseudo-versions, moving to Go1.13 and later versionsMitali Bisht
 
Gorush: A push notification server written in Go
Gorush: A push notification server written in GoGorush: A push notification server written in Go
Gorush: A push notification server written in GoBo-Yi Wu
 
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...Shift Conference
 
Maven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patternsMaven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patternselliando dias
 
JPA 스터디 Week1 - 하이버네이트, 캐시
JPA 스터디 Week1 - 하이버네이트, 캐시JPA 스터디 Week1 - 하이버네이트, 캐시
JPA 스터디 Week1 - 하이버네이트, 캐시Covenant Ko
 
Debugging Your Plone Site
Debugging Your Plone SiteDebugging Your Plone Site
Debugging Your Plone Sitecdw9
 
Understanding pseudo-version and Go1.14+ with notes
Understanding pseudo-version and Go1.14+ with notesUnderstanding pseudo-version and Go1.14+ with notes
Understanding pseudo-version and Go1.14+ with notesMitali Bisht
 
Best practices-for-production-environments
Best practices-for-production-environmentsBest practices-for-production-environments
Best practices-for-production-environmentsArtem Kovardin
 
GitGot: The Swiss Army Chainsaw of Git Repo Management
GitGot: The Swiss Army Chainsaw of Git Repo ManagementGitGot: The Swiss Army Chainsaw of Git Repo Management
GitGot: The Swiss Army Chainsaw of Git Repo ManagementJohn Anderson
 
Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformTaylor Singletary
 
JPA Week3 Entity Mapping / Hexagonal Architecture
JPA Week3 Entity Mapping / Hexagonal ArchitectureJPA Week3 Entity Mapping / Hexagonal Architecture
JPA Week3 Entity Mapping / Hexagonal ArchitectureCovenant Ko
 
A painless self-hosted Git service: Gitea
A painless self-hosted Git service: GiteaA painless self-hosted Git service: Gitea
A painless self-hosted Git service: GiteaBo-Yi Wu
 
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line BotEvan Lin
 

What's hot (20)

Take a Stroll in the Bazaar
Take a Stroll in the BazaarTake a Stroll in the Bazaar
Take a Stroll in the Bazaar
 
Golang and Domain Specific Languages - Lorenzo Fontana - Codemotion Rome 2017
Golang and Domain Specific Languages - Lorenzo Fontana - Codemotion Rome 2017Golang and Domain Specific Languages - Lorenzo Fontana - Codemotion Rome 2017
Golang and Domain Specific Languages - Lorenzo Fontana - Codemotion Rome 2017
 
Introduction to Griffon
Introduction to GriffonIntroduction to Griffon
Introduction to Griffon
 
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
 
Golang start and tips
Golang start and tipsGolang start and tips
Golang start and tips
 
Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017
 
Pseudo-versions, moving to Go1.13 and later versions
Pseudo-versions, moving to Go1.13 and later versionsPseudo-versions, moving to Go1.13 and later versions
Pseudo-versions, moving to Go1.13 and later versions
 
Gorush: A push notification server written in Go
Gorush: A push notification server written in GoGorush: A push notification server written in Go
Gorush: A push notification server written in Go
 
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
 
Maven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patternsMaven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patterns
 
JPA 스터디 Week1 - 하이버네이트, 캐시
JPA 스터디 Week1 - 하이버네이트, 캐시JPA 스터디 Week1 - 하이버네이트, 캐시
JPA 스터디 Week1 - 하이버네이트, 캐시
 
Debugging Your Plone Site
Debugging Your Plone SiteDebugging Your Plone Site
Debugging Your Plone Site
 
Understanding pseudo-version and Go1.14+ with notes
Understanding pseudo-version and Go1.14+ with notesUnderstanding pseudo-version and Go1.14+ with notes
Understanding pseudo-version and Go1.14+ with notes
 
Geek git
Geek gitGeek git
Geek git
 
Best practices-for-production-environments
Best practices-for-production-environmentsBest practices-for-production-environments
Best practices-for-production-environments
 
GitGot: The Swiss Army Chainsaw of Git Repo Management
GitGot: The Swiss Army Chainsaw of Git Repo ManagementGitGot: The Swiss Army Chainsaw of Git Repo Management
GitGot: The Swiss Army Chainsaw of Git Repo Management
 
Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application Platform
 
JPA Week3 Entity Mapping / Hexagonal Architecture
JPA Week3 Entity Mapping / Hexagonal ArchitectureJPA Week3 Entity Mapping / Hexagonal Architecture
JPA Week3 Entity Mapping / Hexagonal Architecture
 
A painless self-hosted Git service: Gitea
A painless self-hosted Git service: GiteaA painless self-hosted Git service: Gitea
A painless self-hosted Git service: Gitea
 
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
 

Viewers also liked

AOSP에 컨트리뷰션 하기 dev festx korea 2012 presentation
AOSP에 컨트리뷰션 하기   dev festx korea 2012 presentationAOSP에 컨트리뷰션 하기   dev festx korea 2012 presentation
AOSP에 컨트리뷰션 하기 dev festx korea 2012 presentationSeongJae Park
 
Lessons from life_2
Lessons from life_2Lessons from life_2
Lessons from life_2Mir Majid
 
Use case diagrams
Use case diagramsUse case diagrams
Use case diagramsMir Majid
 
Unit 3 assembler and processor
Unit 3   assembler and processorUnit 3   assembler and processor
Unit 3 assembler and processorAbha Damani
 
Porting golang development environment developed with golang
Porting golang development environment developed with golangPorting golang development environment developed with golang
Porting golang development environment developed with golangSeongJae Park
 
Deep dark side of git - prologue
Deep dark side of git - prologueDeep dark side of git - prologue
Deep dark side of git - prologueSeongJae Park
 
gcma: guaranteed contiguous memory allocator
gcma:  guaranteed contiguous memory allocatorgcma:  guaranteed contiguous memory allocator
gcma: guaranteed contiguous memory allocatorSeongJae Park
 
(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.aviSeongJae Park
 
Class Outlier Mining
Class Outlier MiningClass Outlier Mining
Class Outlier MiningMotaz Saad
 
Experimental android hacking using reflection
Experimental android hacking using reflectionExperimental android hacking using reflection
Experimental android hacking using reflectionSeongJae Park
 
Browsing The Source Code of Linux Packages
Browsing The Source Code of Linux PackagesBrowsing The Source Code of Linux Packages
Browsing The Source Code of Linux PackagesMotaz Saad
 

Viewers also liked (18)

AOSP에 컨트리뷰션 하기 dev festx korea 2012 presentation
AOSP에 컨트리뷰션 하기   dev festx korea 2012 presentationAOSP에 컨트리뷰션 하기   dev festx korea 2012 presentation
AOSP에 컨트리뷰션 하기 dev festx korea 2012 presentation
 
Lessons from life_2
Lessons from life_2Lessons from life_2
Lessons from life_2
 
Patterns
PatternsPatterns
Patterns
 
Use case diagrams
Use case diagramsUse case diagrams
Use case diagrams
 
ash
ashash
ash
 
Nested micro
Nested microNested micro
Nested micro
 
Unit 3 assembler and processor
Unit 3   assembler and processorUnit 3   assembler and processor
Unit 3 assembler and processor
 
Porting golang development environment developed with golang
Porting golang development environment developed with golangPorting golang development environment developed with golang
Porting golang development environment developed with golang
 
Linker
LinkerLinker
Linker
 
sCode optimization
sCode optimizationsCode optimization
sCode optimization
 
Assembler
AssemblerAssembler
Assembler
 
Deep dark side of git - prologue
Deep dark side of git - prologueDeep dark side of git - prologue
Deep dark side of git - prologue
 
Keyword Presentation
Keyword PresentationKeyword Presentation
Keyword Presentation
 
gcma: guaranteed contiguous memory allocator
gcma:  guaranteed contiguous memory allocatorgcma:  guaranteed contiguous memory allocator
gcma: guaranteed contiguous memory allocator
 
(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi
 
Class Outlier Mining
Class Outlier MiningClass Outlier Mining
Class Outlier Mining
 
Experimental android hacking using reflection
Experimental android hacking using reflectionExperimental android hacking using reflection
Experimental android hacking using reflection
 
Browsing The Source Code of Linux Packages
Browsing The Source Code of Linux PackagesBrowsing The Source Code of Linux Packages
Browsing The Source Code of Linux Packages
 

Similar to Let the contribution begin

Getting Git Right
Getting Git RightGetting Git Right
Getting Git RightSven Peters
 
Composer the right way - NomadPHP
Composer the right way - NomadPHPComposer the right way - NomadPHP
Composer the right way - NomadPHPRafael Dohms
 
Composer the right way - SunshinePHP
Composer the right way - SunshinePHPComposer the right way - SunshinePHP
Composer the right way - SunshinePHPRafael Dohms
 
Composer the right way [SweetlakePHP]
Composer the right way [SweetlakePHP]Composer the right way [SweetlakePHP]
Composer the right way [SweetlakePHP]Rafael Dohms
 
Deep dark-side of git: How git works internally
Deep dark-side of git: How git works internallyDeep dark-side of git: How git works internally
Deep dark-side of git: How git works internallySeongJae Park
 
Composer The Right Way
Composer The Right WayComposer The Right Way
Composer The Right WayRafael Dohms
 
That's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICThat's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICLa FeWeb
 
Composer the right way - DPC15
Composer the right way - DPC15Composer the right way - DPC15
Composer the right way - DPC15Rafael Dohms
 
Composer The Right Way #PHPjhb15
Composer The Right Way #PHPjhb15Composer The Right Way #PHPjhb15
Composer The Right Way #PHPjhb15Rafael Dohms
 
Composer the right way
Composer the right wayComposer the right way
Composer the right wayRafael Dohms
 
Composer the Right Way - PHPBNL16
Composer the Right Way - PHPBNL16Composer the Right Way - PHPBNL16
Composer the Right Way - PHPBNL16Rafael Dohms
 
Rust & Python : Python WA October meetup
Rust & Python : Python WA October meetupRust & Python : Python WA October meetup
Rust & Python : Python WA October meetupJohn Vandenberg
 
Digital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meetingDigital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meetingHenry Schreiner
 
Git 101, or, how to sanely manage your Koha customizations
Git 101, or, how to sanely manage your Koha customizationsGit 101, or, how to sanely manage your Koha customizations
Git 101, or, how to sanely manage your Koha customizationsIan Walls
 
Composer the Right Way - PHPSRB16
Composer the Right Way - PHPSRB16Composer the Right Way - PHPSRB16
Composer the Right Way - PHPSRB16Rafael Dohms
 
Linux Kernel Participation HowTo
Linux Kernel Participation HowToLinux Kernel Participation HowTo
Linux Kernel Participation HowTobenavrhm
 
3DC Intro to Git Workshop
3DC Intro to Git Workshop3DC Intro to Git Workshop
3DC Intro to Git WorkshopBeckhamWee
 

Similar to Let the contribution begin (20)

Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
 
Composer the right way - NomadPHP
Composer the right way - NomadPHPComposer the right way - NomadPHP
Composer the right way - NomadPHP
 
Composer the right way - SunshinePHP
Composer the right way - SunshinePHPComposer the right way - SunshinePHP
Composer the right way - SunshinePHP
 
How to use git without rage
How to use git without rageHow to use git without rage
How to use git without rage
 
Linux System Troubleshooting
Linux System TroubleshootingLinux System Troubleshooting
Linux System Troubleshooting
 
Composer the right way [SweetlakePHP]
Composer the right way [SweetlakePHP]Composer the right way [SweetlakePHP]
Composer the right way [SweetlakePHP]
 
Deep dark-side of git: How git works internally
Deep dark-side of git: How git works internallyDeep dark-side of git: How git works internally
Deep dark-side of git: How git works internally
 
Composer The Right Way
Composer The Right WayComposer The Right Way
Composer The Right Way
 
That's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICThat's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETIC
 
Versions
VersionsVersions
Versions
 
Composer the right way - DPC15
Composer the right way - DPC15Composer the right way - DPC15
Composer the right way - DPC15
 
Composer The Right Way #PHPjhb15
Composer The Right Way #PHPjhb15Composer The Right Way #PHPjhb15
Composer The Right Way #PHPjhb15
 
Composer the right way
Composer the right wayComposer the right way
Composer the right way
 
Composer the Right Way - PHPBNL16
Composer the Right Way - PHPBNL16Composer the Right Way - PHPBNL16
Composer the Right Way - PHPBNL16
 
Rust & Python : Python WA October meetup
Rust & Python : Python WA October meetupRust & Python : Python WA October meetup
Rust & Python : Python WA October meetup
 
Digital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meetingDigital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meeting
 
Git 101, or, how to sanely manage your Koha customizations
Git 101, or, how to sanely manage your Koha customizationsGit 101, or, how to sanely manage your Koha customizations
Git 101, or, how to sanely manage your Koha customizations
 
Composer the Right Way - PHPSRB16
Composer the Right Way - PHPSRB16Composer the Right Way - PHPSRB16
Composer the Right Way - PHPSRB16
 
Linux Kernel Participation HowTo
Linux Kernel Participation HowToLinux Kernel Participation HowTo
Linux Kernel Participation HowTo
 
3DC Intro to Git Workshop
3DC Intro to Git Workshop3DC Intro to Git Workshop
3DC Intro to Git Workshop
 

More from SeongJae Park

Biscuit: an operating system written in go
Biscuit:  an operating system written in goBiscuit:  an operating system written in go
Biscuit: an operating system written in goSeongJae Park
 
GCMA: Guaranteed Contiguous Memory Allocator
GCMA: Guaranteed Contiguous Memory AllocatorGCMA: Guaranteed Contiguous Memory Allocator
GCMA: Guaranteed Contiguous Memory AllocatorSeongJae Park
 
Linux Kernel Memory Model
Linux Kernel Memory ModelLinux Kernel Memory Model
Linux Kernel Memory ModelSeongJae Park
 
An Introduction to the Formalised Memory Model for Linux Kernel
An Introduction to the Formalised Memory Model for Linux KernelAn Introduction to the Formalised Memory Model for Linux Kernel
An Introduction to the Formalised Memory Model for Linux KernelSeongJae Park
 
Design choices of golang for high scalability
Design choices of golang for high scalabilityDesign choices of golang for high scalability
Design choices of golang for high scalabilitySeongJae Park
 
Brief introduction to kselftest
Brief introduction to kselftestBrief introduction to kselftest
Brief introduction to kselftestSeongJae Park
 
Understanding of linux kernel memory model
Understanding of linux kernel memory modelUnderstanding of linux kernel memory model
Understanding of linux kernel memory modelSeongJae Park
 
Develop Android/iOS app using golang
Develop Android/iOS app using golangDevelop Android/iOS app using golang
Develop Android/iOS app using golangSeongJae Park
 
Sw install with_without_docker
Sw install with_without_dockerSw install with_without_docker
Sw install with_without_dockerSeongJae Park
 
Touch Android Without Touching
Touch Android Without TouchingTouch Android Without Touching
Touch Android Without TouchingSeongJae Park
 

More from SeongJae Park (11)

Biscuit: an operating system written in go
Biscuit:  an operating system written in goBiscuit:  an operating system written in go
Biscuit: an operating system written in go
 
GCMA: Guaranteed Contiguous Memory Allocator
GCMA: Guaranteed Contiguous Memory AllocatorGCMA: Guaranteed Contiguous Memory Allocator
GCMA: Guaranteed Contiguous Memory Allocator
 
Linux Kernel Memory Model
Linux Kernel Memory ModelLinux Kernel Memory Model
Linux Kernel Memory Model
 
An Introduction to the Formalised Memory Model for Linux Kernel
An Introduction to the Formalised Memory Model for Linux KernelAn Introduction to the Formalised Memory Model for Linux Kernel
An Introduction to the Formalised Memory Model for Linux Kernel
 
Design choices of golang for high scalability
Design choices of golang for high scalabilityDesign choices of golang for high scalability
Design choices of golang for high scalability
 
Brief introduction to kselftest
Brief introduction to kselftestBrief introduction to kselftest
Brief introduction to kselftest
 
Understanding of linux kernel memory model
Understanding of linux kernel memory modelUnderstanding of linux kernel memory model
Understanding of linux kernel memory model
 
Develop Android/iOS app using golang
Develop Android/iOS app using golangDevelop Android/iOS app using golang
Develop Android/iOS app using golang
 
Sw install with_without_docker
Sw install with_without_dockerSw install with_without_docker
Sw install with_without_docker
 
Hacktime for adk
Hacktime for adkHacktime for adk
Hacktime for adk
 
Touch Android Without Touching
Touch Android Without TouchingTouch Android Without Touching
Touch Android Without Touching
 

Recently uploaded

MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Tetracrom printing process for packaging with CMYK+
Tetracrom printing process for packaging with CMYK+Tetracrom printing process for packaging with CMYK+
Tetracrom printing process for packaging with CMYK+Antonio de Llamas
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
HCI Lesson 1 - Introduction to Human-Computer Interaction.pdf
HCI Lesson 1 - Introduction to Human-Computer Interaction.pdfHCI Lesson 1 - Introduction to Human-Computer Interaction.pdf
HCI Lesson 1 - Introduction to Human-Computer Interaction.pdfROWELL MARQUINA
 
full stack practical assignment msc cs.pdf
full stack practical assignment msc cs.pdffull stack practical assignment msc cs.pdf
full stack practical assignment msc cs.pdfHulkTheDevil
 
Introduction-to-Wazuh-and-its-integration.pptx
Introduction-to-Wazuh-and-its-integration.pptxIntroduction-to-Wazuh-and-its-integration.pptx
Introduction-to-Wazuh-and-its-integration.pptxmprakaash5
 
Transcript: Green paths: Learning from publishers’ sustainability journeys - ...
Transcript: Green paths: Learning from publishers’ sustainability journeys - ...Transcript: Green paths: Learning from publishers’ sustainability journeys - ...
Transcript: Green paths: Learning from publishers’ sustainability journeys - ...BookNet Canada
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfROWELL MARQUINA
 
Automation Ops Series: Session 3 - Solutions management
Automation Ops Series: Session 3 - Solutions managementAutomation Ops Series: Session 3 - Solutions management
Automation Ops Series: Session 3 - Solutions managementDianaGray10
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
The work to make the piecework work: An ethnographic study of food delivery w...
The work to make the piecework work: An ethnographic study of food delivery w...The work to make the piecework work: An ethnographic study of food delivery w...
The work to make the piecework work: An ethnographic study of food delivery w...stockholm university
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2DianaGray10
 
Bitdefender-CSG-Report-creat7534-interactive
Bitdefender-CSG-Report-creat7534-interactiveBitdefender-CSG-Report-creat7534-interactive
Bitdefender-CSG-Report-creat7534-interactivestartupro
 

Recently uploaded (20)

MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
BoSEU24 | Bill Thompson | Talk From Another Century
BoSEU24 | Bill Thompson | Talk From Another CenturyBoSEU24 | Bill Thompson | Talk From Another Century
BoSEU24 | Bill Thompson | Talk From Another Century
 
Tetracrom printing process for packaging with CMYK+
Tetracrom printing process for packaging with CMYK+Tetracrom printing process for packaging with CMYK+
Tetracrom printing process for packaging with CMYK+
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
HCI Lesson 1 - Introduction to Human-Computer Interaction.pdf
HCI Lesson 1 - Introduction to Human-Computer Interaction.pdfHCI Lesson 1 - Introduction to Human-Computer Interaction.pdf
HCI Lesson 1 - Introduction to Human-Computer Interaction.pdf
 
full stack practical assignment msc cs.pdf
full stack practical assignment msc cs.pdffull stack practical assignment msc cs.pdf
full stack practical assignment msc cs.pdf
 
Introduction-to-Wazuh-and-its-integration.pptx
Introduction-to-Wazuh-and-its-integration.pptxIntroduction-to-Wazuh-and-its-integration.pptx
Introduction-to-Wazuh-and-its-integration.pptx
 
Transcript: Green paths: Learning from publishers’ sustainability journeys - ...
Transcript: Green paths: Learning from publishers’ sustainability journeys - ...Transcript: Green paths: Learning from publishers’ sustainability journeys - ...
Transcript: Green paths: Learning from publishers’ sustainability journeys - ...
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdf
 
Automation Ops Series: Session 3 - Solutions management
Automation Ops Series: Session 3 - Solutions managementAutomation Ops Series: Session 3 - Solutions management
Automation Ops Series: Session 3 - Solutions management
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
The work to make the piecework work: An ethnographic study of food delivery w...
The work to make the piecework work: An ethnographic study of food delivery w...The work to make the piecework work: An ethnographic study of food delivery w...
The work to make the piecework work: An ethnographic study of food delivery w...
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
 
Bitdefender-CSG-Report-creat7534-interactive
Bitdefender-CSG-Report-creat7534-interactiveBitdefender-CSG-Report-creat7534-interactive
Bitdefender-CSG-Report-creat7534-interactive
 

Let the contribution begin

  • 1. Let The Contribution Begin SeongJae Park <sj38.park@gmail.com>
  • 2. Great To Meet You SeongJae Park <sj38.park@gmail.com>
  • 3. Great To Meet You SeongJae Park <sj38.park@gmail.com> Newbie hacker
  • 4. Great To Meet You SeongJae Park <sj38.park@gmail.com> Newbie hacker Contributing to some F/OSS for fun
  • 6. This Talk Is... For Newbie, By Newbie, Of Newbie image src: http://1.bp.blogspot.com/_i0kiD-6jeeI/TRq1fzwZh8I/AAAAAAAAAGw/2ggLbFod4II/s1600/newbie.png
  • 7. This Talk Is... For Newbie, By Newbie, Of Newbie About F/OSS & Contribution(What, Why, How) image src: http://www.mrmc-tool.org/images/contribute.jpg
  • 8. This Talk Is... For Newbie, By Newbie, Of Newbie About F/OSS & Contribution(What, Why, How) Practice: Linux & AOSP image src: http://www.bitdirect.nl/wp-content/uploads/2012/08/android_awesome.jpg, http://www.sitevip. net/wallpapers/Computers/Linux/Linux-2.jpg
  • 9. There Are Two Kinds Of S/W In This World
  • 11. Two Kinds Of Software Villains Made It Proprietary image src: http://upload.wikimedia.org/wikipedia/commons/a/a2/Steve_Jobs_and_Bill_Gates_(522695099).jpg
  • 12. Two Kinds Of Software Heroes Thought It Must Be Free / Open Source image src: http://foro.ubuntu-guia.com/file/n3879119/rms-linus.jpg
  • 13. There Are Two Kinds Of S/W In This World Free / Open Source Software Proprietary Software image src: http://upload.wikimedia.org/wikipedia/commons/a/a2/Steve_Jobs_and_Bill_Gates_(522695099).jpg
  • 20. Why Contribution Honor image src: http://www.mailandfemail.com/wp-content/uploads/2011/06/Medal-of-honor.jpg
  • 22. Why Contribution Honor Career Training image src: http://1.bp.blogspot.com/-yzBPR57Pg2M/T_VmgM976VI/AAAAAAAABz0/Rgj-co8__aU/s1600/Maggie-million-dollar-baby-18619084-720-480.jpg
  • 23. Why Contribution Honor Career Training Upstream Development image src: http://dustinkirkland.files.wordpress.com/2009/07/upstream.jpg
  • 24. Why Contribution Honor Career Training Upstream Development To Change The World image src: http://media.focusonthefamily.com/blogmedia/images/jim-daly/changetheworld.jpg
  • 25. Why Contribution Honor Career Training Upstream Development To Change The World Because We Can image src: http://www.blogtap.net/wp-content/uploads/2010/02/obama-yes-we-can.jpg
  • 26. Why Contribution Honor Career Training Upstream Development To Change The World Because We Can ...Need More?
  • 29. General Contribution Process Get Source Code Make a Goal
  • 30. General Contribution Process Get Source Code Modify Source Code (Make Patch) Make a Goal
  • 31. General Contribution Process Get Source Code Modify Source Code (Make Patch) Send Patch Make a Goal
  • 32. General Contribution Process Get Source Code Modify Source Code (Make Patch) Send Patch Get Review Make a Goal
  • 33. General Contribution Process Get Source Code Modify Source Code (Make Patch) Send Patch Get Review Approved? No Make a Goal
  • 34. General Contribution Process Get Source Code Modify Source Code (Make Patch) Send Patch Get Review Approved? Yes No Make a Goal
  • 36. Keep In Mind Coding Style image src: http://www.emacswiki.org/pics/static/TabsSpacesBoth.png
  • 37. Keep In Mind Coding Style You Are Just A Newbie Here
  • 38. Keep In Mind Coding Style You Are Just A Newbie Here Start From Jab image src: http://imalbum.aufeminin.com/album/D20070820/326879_GVBMZUNW3XLLR1G7O4RLQN6HXPCKKK_kick-boxing- cat_H171540_L.jpg
  • 39. Keep In Mind Coding Style You Are Just A Newbie Here Start From Jab Commit Log Style
  • 40. Keep In Mind - Commit Log Style Summarized title on First Line aio: v3: fix kioctx not being freed after cancellation at exit time v3 corrects a typo in v2 of this patch. The wrong version of the patch was copied over and misspelled ctx in the first hunk. A known good tree with this patch is at git://git.kvack.org/~bcrl/linux-next-20130213.git-v3 . Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>
  • 41. Keep In Mind - Commit Log Style Summarized title on First Line Just n on Second Line aio: v3: fix kioctx not being freed after cancellation at exit time v3 corrects a typo in v2 of this patch. The wrong version of the patch was copied over and misspelled ctx in the first hunk. A known good tree with this patch is at git://git.kvack.org/~bcrl/linux-next-20130213.git-v3 . Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>
  • 42. Keep In Mind - Commit Log Style Summarized title on First Line Just n on Second Line Detailed log after 3rd Line aio: v3: fix kioctx not being freed after cancellation at exit time v3 corrects a typo in v2 of this patch. The wrong version of the patch was copied over and misspelled ctx in the first hunk. A known good tree with this patch is at git://git.kvack.org/~bcrl/linux-next-20130213.git-v3 . Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>
  • 43. Keep In Mind Coding Style You Are Just A Newbie Here Start From Jab Commit Log Style
  • 44. Practice: Linux One Of Famous, Successful F/OSS Project
  • 45. Practice: Linux One Of Famous, Successful F/OSS Project Documentation/HOWTO Documentation/development-process
  • 46. Linux - Get Source Code So many Source Trees at git.kernel.org image src: https://twimg0-a.akamaihd.net/profile_images/1794549696/SourceTree_newlogo.png
  • 47. Linux - Get Source Code So many Source Trees at git.kernel.org Use The linux-next Source Tree Source Tree For Next Release
  • 48. Linux - Get Source Code So many Source Trees at git.kernel.org Use The linux-next Source Tree Source Tree For Next Release Stephen Rothwell Manages
  • 49. Linux - Get Source Code So many Source Trees at git.kernel.org Use The linux-next Source Tree Source Tree For Next Release Stephen Rothwell Manages $ git clone git://git.kernel. org/pub/scm/linux/kernel/git/next/linux- next.git
  • 50. Linux - Make a Goal Find Your Task
  • 51. Linux - Make a Goal Find Your Task Coding Style Can Be A Good Start Point
  • 52. Linux - Make a Goal Find Your Task Coding Style Can Be A Good Start Point $ ./scripts/checkpatch.pl --help
  • 53. Linux - Version Control Usual Life Of File FileA ver 0 FileB ver 0
  • 54. Linux - Version Control Usual Life Of File FileA ver 0 FileB ver 1
  • 55. Linux - Version Control Usual Life Of File FileB ver 1 FileA ver 1
  • 56. Linux - Version Control Usual Life Of File FileB ver 2FileA ver 1
  • 57. Linux - Version Control Usual Life Of File FileB ver 2FileA ver 1
  • 58. Linux - Version Control Usual Life Of File $ ls foo.c foo_20140111.c foo_final.c foo_realfinal.c foo_planb.c foo_finalfinal.c
  • 59. Linux - Version Control Usual Life Of File $ ls foo.c foo_20140111.c foo_final.c foo_realfinal.c foo_planb.c foo_finalfinal.c
  • 60. Linux - Version Control Life Of File Under git FileA ver 0 FileB ver 0
  • 61. Linux - Version Control Life Of File Under git FileA ver 0 FileB ver 0 commit 1
  • 62. Linux - Version Control Life Of File Under git FileA ver 0 FileB ver 0 commit 1 ./ ../ FileA FileB
  • 63. Linux - Version Control Life Of File Under git FileA ver 0 FileB ver 0 commit 1
  • 64. Linux - Version Control Life Of File Under git FileA ver 0 FileB ver 0 commit 1 master branch
  • 65. Linux - Version Control Life Of File Under git FileA ver 0 FileB ver 0 FileB ver 1 commit 1 master branch
  • 66. Linux - Version Control Life Of File Under git FileA ver 0 FileB ver 0 FileB ver 1 commit 1 commit 2 master branch
  • 67. Linux - Version Control Life Of File Under git FileA ver 0 FileB ver 0 FileB ver 1 commit 1 commit 2 master branch
  • 68. Linux - Version Control Life Of File Under git FileA ver 0 FileA ver 1FileB ver 0 FileB ver 1 FileB ver 2 commit 1 commit 2 commit 3 master branch
  • 69. Linux - Version Control Topic Branch FileA ver 0 FileA ver 1FileB ver 0 FileB ver 1 commit 1 commit 2 commit 3 master branch topic branch FileB ver 2
  • 70. Linux - Version Control Topic Branch FileA ver 0 FileA ver 1FileB ver 0 FileB ver 1 FileB ver 2 commit 1 commit 2 commit 3 master branch FileA ver 2 commit 4 topic branch
  • 71. Linux - Version Control Upstream Topic Branch: First time, Looks Needless
  • 72. Linux - Version Control Upstream Topic Branch: First time, Looks Needless
  • 73. Linux - Version Control Upstream Topic Branch: First time, Looks Needless
  • 74. Linux - Version Control Upstream Local Repository Topic Branch: First time, Looks Needless clone!
  • 75. Linux - Version Control Upstream Local Repository Topic Branch: First time, Looks Needless
  • 76. Linux - Version Control Upstream Local Repository Topic Branch: First time, Looks Needless Pull me!
  • 77. Linux - Version Control Upstream Local Repository Topic Branch: First time, Looks Needless Pull me! Thanks :)
  • 78. Linux - Version Control Topic Branch: What If Time Passes Upstream Local Repository
  • 79. Linux - Version Control Topic Branch: What If Time Passes Upstream Local Repository
  • 80. Linux - Version Control Upstream Local Repository Topic Branch: What If Time Passes Pull me!
  • 81. Linux - Version Control Topic Branch: What If Time Passes Upstream Local Repository Pull me! Conflict Occurred. Why should I merge your change manually? :p
  • 82. Linux - Version Control Topic Branch: What If Time Passes Upstream Local Repository Pull me! Also, merging you manually will make history looks ugly
  • 83. Linux - Version Control Topic Branch: What If Time Passes Upstream Local Repository Pull me! Also, merging you manually will make history looks ugly If Upstream merge the change manually
  • 84. Linux - Version Control Topic Branch: What If Time Passes Upstream Local Repository Pull me! Also, merging you manually will make history looks ugly If nobody use topic branch
  • 85. Linux - Version Control Topic Branch: Again. Upstream Local Repository
  • 86. Linux - Version Control Topic Branch: Get latest code while your change resides in topic branch safely Upstream Local Repository
  • 87. Linux - Version Control Topic Branch: Ensure The Branch Can Be Merged Cleanly Upstream Local Repository
  • 88. Linux - Version Control Topic Branch: Ensure The Branch Can Be Merged Cleanly Upstream Local Repository Pull me! Thanks! :)
  • 89. Linux - Version Control ● Golden Rule ○ Patch Should Be Made From Latest Source Code $ git remote update $ git merge upstream/master ○ Your Change Should Live Inside Topic Branch $ git checkout -b <fix_the_foo>
  • 90. Linux - Make a Patch Topic Branch Edit Code As You Prefer image src: http://secretgeek.net/image/real-programmers-code-in-binary.jpg
  • 91. Linux - Make a Patch Topic Branch Edit Code As You Prefer Commit using -s option
  • 92. Linux - Make a Patch Topic Branch Edit Code As You Prefer Commit using -s option commit 106edea2fe051df65a1a6231e9ffa2876cc391cc Author: Stephen Rothwell <sfr@canb.auug.org.au> Date: Fri Mar 1 15:52:01 2013 +1100 Add linux-next specific files for 20130301 Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
  • 93. Linux - Make a Patch Signed-Off-By Means: (a) I created this change; or (b) Based this on a previous work with a compatible license; or (c) Provided to me by (a), (b), or (c) and not modified (d) This contribution is public.
  • 94. Linux - Make a Patch Topic Branch Edit Code As You Prefer Commit using -s option $ git format-patch master..HEAD
  • 95. Linux - Send Patch $ ./scripts/get_maintainer.pl <path to patch file>
  • 96. Linux - Send Patch $ ./scripts/get_maintainer.pl <path to patch file> $ sudo apt-get install git-email
  • 97. Linux - Send Patch $ ./scripts/get_maintainer.pl <path to patch file> $ sudo apt-get install git-email $ git config sendemail.smtpserver smtp.gmail.com $ git config sendemail.smtpserverport 587 $ git config sendemail.smtpencryption tls $ git config sendemail.smtpuser <your-email-address>
  • 98. Linux - Send Patch $ ./scripts/get_maintainer.pl <path to patch file> $ sudo apt-get install git-email $ git config sendemail.smtpserver smtp.gmail.com $ git config sendemail.smtpserverport 587 $ git config sendemail.smtpencryption tls $ git config sendemail.smtpuser <your-email-address> $ git send-email --to <reviewer mail address> <path to patch file>
  • 99. Linux - Get Review Just E-Mail
  • 100. Linux - Get Review Just E-Mail Be Gentle Citizen
  • 101. Linux - Get Review Just E-Mail Be Gentle Citizen Should Turn Off Rich-UX
  • 102. Linux - Get Merged Notification Mail This is a note to let you know that I've just added the patch titled staging: csr: Remove struct CsrEvent to my staging git tree which can be found at git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git in the staging-next branch. The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.) The patch will also be merged in the next major kernel release during the merge window. If you have any questions about this process, please let me know.
  • 103. Practice: AOSP Android Open Source Project
  • 104. Practice: AOSP Android Open Source Project World's most closed Open Source Software
  • 105. Practice: AOSP Android Open Source Project World's most closed Open Source Software Development Source Tree Is Not Open
  • 106. AOSP: World's Most Closed OSS From community Google internal source treeAOSP From Googler Release
  • 107. AOSP is an OSS Stack
  • 108. AOSP: Tools AOSP Uses repo: Manages Multiple Project AOSP Use
  • 109. AOSP: Tools AOSP Uses repo: Manages Multiple Project AOSP Use gerrit: Web Based UI AOSP Review System
  • 110. AOSP: Contribution Process Get Source Code Agree Contributor Agreement Make Goal Write Patch Send Patch Merged / Abandoned Commented Get Review / Approval
  • 111. AOSP: Agree Contributor Agreement https://android-review.googlesource.com/#/
  • 117. AOSP: Get Source Code $ repo init -u https://android.googlesource.com/platform/manifest $ repo sync
  • 118. AOSP: Make Goal Bug Report Page http://code.google.com/p/android/issues/list Discussion Group https://groups.google.com/forum/?fromgroups#! forum/android-contrib
  • 119. AOSP: Make Patch Topic Branch $ repo start <branch_name> <project path>
  • 120. AOSP - Make Patch Topic Branch $ repo start <branch_name> <project path> Coding Style Guideline http://s.android.com/source/code-style.html
  • 121. AOSP - Make Patch Topic Branch $ repo start <branch_name> <project path> Coding Style Guideline http://s.android.com/source/code-style.html $ git add -A $ git commit -s
  • 122. AOSP - Send Patch $ repo upload
  • 123. AOSP - Get Review
  • 124. AOSP - Get Review Need Verification and Approval
  • 125. AOSP - Get Review See git log to select Appropriate Reviewer
  • 126. AOSP - Upload New Patchset Reviewer Want Modified Patch? $ git commit --amend $ repo upload
  • 130. Summary Get Source Code Make Goal Make Patch
  • 131. Summary Get Source Code Make Goal Make Patch Send Patch
  • 132. Summary Get Source Code Make Goal Make Patch Send Patch Get Review
  • 133. LET IT GO The Code Never Bothered You Anyway
  • 134. This work by SeongJae Park is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http: //creativecommons.org/licenses/by-sa/3.0/.