Download - Let the contribution begin (EST futures)
Let The Contribution BeginSeongJae Park <[email protected]>
Great To Meet You
SeongJae Park <[email protected]>
Researcher @ DCSLAB, SNU
Programmer @ KOSSLAB
Yet Another Newbie
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
The History Of F/OSS
1961, MIT purchased PDP-1
https://cdn.idntimes.com/content-images/post/20160809/b9gurqb5fdiankgdoy7o-0a647978f58cc1b5a265f0a4453b05a5.jpg
The History Of F/OSS
1961, MIT purchased PDP-1
1969, Unix, C, and ARPAnet were invented
https://cdn.idntimes.com/content-images/post/20160809/b9gurqb5fdiankgdoy7o-0a647978f58cc1b5a265f0a4453b05a5.jpg
The History Of F/OSS1961, MIT purchased PDP-1
1969, Unix, C, and ARPAnet were invented
1975, Microsoft created1977, Apple Computer created
image src: http://upload.wikimedia.org/wikipedia/commons/a/a2/Steve_Jobs_and_Bill_Gates_(522695099).jpg
The History Of F/OSS1961, MIT purchased PDP-1
1969, Unix, C, and ARPAnet were invented
1975, Microsoft created
1977, Apple Computer created
1982, RMS started GNU project1991, Linus Torvalds introduced Linux
image src: http://foro.ubuntu-guia.com/file/n3879119/rms-linus.jpg
The History Of F/OSS1961, MIT purchased PDP-1
1969, Unix, C, and ARPAnet were invented
1975, Microsoft created
1977, Apple Computer created
1982, RMS started GNU project
1991, Linus Torvalds introduced Linux
1998, Open Source Initiative was organized
http://www.open-electronics.org/wp-content/uploads/2015/12/OpenSource2.png
The History Of F/OSS
1961, MIT purchased PDP-11969, Unix, C, and ARPAnet were invented1975, Microsoft created1977, Apple Computer created1982, RMS started GNU project1991, Linus Torvalds introduced Linux1998, Open Source Initiative was organized
image src: http://upload.wikimedia.org/wikipedia/commons/a/a2/Steve_Jobs_and_Bill_Gates_(522695099).jpg
Open Source Definition
● Determine whether a software license can be labeled with the open-source certification mark.
● “Open Source doesn’t just mean access to the source code.”
● 10 Criterias include: Free Redistribution, Source Code, Derived Works, Integrity of The Author’s Source Code, No Discrimination, …
● https://opensource.org/osd-annotated
Why Contribution
Honor
image src: http://www.mailandfemail.com/wp-content/uploads/2011/06/Medal-of-honor.jpg
Why Contribution
HonorCareerTraining
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
HonorCareerTrainingUpstream Development
image src: http://dustinkirkland.files.wordpress.com/2009/07/upstream.jpg
Why Contribution
HonorCareerTrainingUpstream DevelopmentTo Change The World
image src: http://media.focusonthefamily.com/blogmedia/images/jim-daly/changetheworld.jpg
Why Contribution
HonorCareerTrainingUpstream DevelopmentTo Change The WorldBecause We Can
image src: http://www.blogtap.net/wp-content/uploads/2010/02/obama-yes-we-can.jpg
Why Contribution
HonorCareerTrainingUpstream DevelopmentTo Change The WorldBecause We Can...Need More?
General Contribution ProcessGet Source Code
Modify Source Code(Make Patch)
Send Patch
Get Review
Make a Goal
General Contribution ProcessGet Source Code
Modify Source Code(Make Patch)
Send Patch
Get Review
Approved?No
Make a Goal
General Contribution ProcessGet Source Code
Modify Source Code(Make Patch)
Send Patch
Get Review
Approved?
Yes
No
Make a Goal
Keep In Mind
Coding style
image src: http://www.emacswiki.org/pics/static/TabsSpacesBoth.png
Keep In MindCoding 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 - 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 <[email protected]>
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 <[email protected]>
Keep In Mind - Commit Log Style
Summarized title on first line
Just \n on second line
Detailed log from third 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 <[email protected]>
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 TreeSource Tree For Next Release
Linux - Get Source Code
So many Source Trees at git.kernel.org
Use The linux-next Source TreeSource Tree For Next ReleaseStephen Rothwell Manages
Linux - Get Source Code
So many Source Trees at git.kernel.org
Use The linux-next Source TreeSource Tree For Next ReleaseStephen Rothwell Manages
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
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
$ 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 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
Local Repository
clone!
Topic Branch: First time, looks unnecessary
Linux - Version Control
Upstream
Local Repository
Pull me!
Topic Branch: First time, looks unnecessary
Linux - Version Control
Upstream
Local Repository
Pull me!
Thanks :)
Topic Branch: First time, looks unnecessary
Linux - Version Control
Upstream
Local Repository
Pull me!
Conflict Occurred. Why should I merge
your change manually? :p
Topic Branch: What if time goes by...
Linux - Version Control
Upstream
Local Repository
Pull me!
Also, merging you manually will make history looks ugly
Topic Branch: What if time goes by...
Linux - Version Control
Upstream
Local Repository
Pull me!
Also, merging you manually will make history looks ugly
If Upstream merge the change manually
Topic Branch: What if time goes by...
Linux - Version Control
Upstream
Local Repository
Pull me!
Also, merging you manually will make history looks ugly
If nobody use topic branch
Topic Branch: What if time goes by...
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
Topic Branch: Ensure the branch can be merged cleanly
Linux - Version Control
Upstream
Local Repository
Pull me!
Topic Branch: Ensure the branch can be merged cleanly
Linux - Version Control
Upstream
Local Repository
Pull me!
Applied, thanks! :)
Linux - Version Control
● Golden rule○ Patch should be made from latest source code
$ git remote update
$ git merge upstream/master
○ Your change(s) 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 PatchTopic Branch
Edit Code As You Prefer
Commit using -s optioncommit 106edea2fe051df65a1a6231e9ffa2876cc391cc
Author: Stephen Rothwell <[email protected]>
Date: Fri Mar 1 15:52:01 2013 +1100
Add linux-next specific files for 20130301
Signed-off-by: Stephen Rothwell <[email protected]>
Linux - Make a Patch
Signed-Off-By Means:(a) I created this change; or(b) Based this on a previous work with acompatible license; or(c) Provided to me by (a), (b), or (c) and notmodified(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>
$ 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 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
World's most closed Open Source Software
Development Source Tree Is Not Open
AOSP is an OSS Stack
https://android-review.googlesource.com/#/admin/projects/
AOSP: Tools AOSP Uses
repo: Manages multiple projects of AOSP$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
AOSP: Tools AOSP Uses
repo: Manages multiple projects of AOSP$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
gerrit: Web UI based code review system
AOSP: Contribution Process
Get Source CodeAgree Contributor Agreement
Make Goal
Write Patch
Send Patch Merged / AbandonedCommented
Get Review / Approval
AOSP: Agree Contributor Agreement
https://android-review.googlesource.com/#/
AOSP: Get Source Code
$ repo init -u \https://android.googlesource.com/platform/manifest
$ repo sync
AOSP: Make Goal
Bug Report Pagehttp://code.google.com/p/android/issues/list
Discussion Grouphttps://groups.google.com/forum/?fromgroups#!forum/android-contrib
AOSP - Make Patch
Topic Branch$ repo start <branch_name> <project path>
Coding Style Guidelinehttp://s.android.com/source/code-style.html
AOSP - Make Patch
Topic Branch$ repo start <branch_name> <project path>
Coding Style Guidelinehttp://s.android.com/source/code-style.html
$ git add -A$ git commit -s
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/.