Describe how to contribute to open source projects.
Provide example process using two hot open source project, linux and AOSP(Android Open Source Project)
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
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
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
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
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
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.
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/.