Linux history, development model and tools.
[cascardo/kernel/slides/.git] / 01intro / intro
1 %Introduction
2 %Thadeu Cascardo
3
4 # Linux History
5
6 # What is Linux?
7
8 Linux is a POSIX-compatible modern operating system developed since
9 1991, released under the GPLv2, with contributions by thousands of
10 people. It is mostly written in C, with some assembly code.
11
12 It has grown from a non-portable Intel 386 code with thousands lines to
13 a portable code with support for dozens of architectures and hundreds
14 machines and millions of code.
15
16 # When there was no Linux
17
18 * The GNU system
19 * Minix
20 * The Usenet
21 * Intel 386
22 * Finnish student Linus Torvalds
23
24 # The beginning
25
26 * Licensing
27 * Torvalds and Tanenbaum flamewar
28 * People's contributions
29
30 # Evolution
31
32 Since version 1.2, it has supported more than only Intel x86
33 architectures, including now SPARC, PowerPC, ARM, Alpha, M68K, MIPS,
34 S/390, and many others.
35
36 Since version 2.0, it has supported SMP systems, now running in systems
37 with hundreds of processors, multi-core processors, etc. Since then, its
38 SMP support has put to scale, with most bottlenecks removed.
39
40 # Version control
41
42 * CVS
43 * Bitkeeper
44         - controversy
45         - Andrew Tridgell starts reverse-engineering the storage and
46           saves the day
47 * Linus creates git
48
49 # GregKH presentations
50
51 * Linux's growth in the 2.6 cycle
52
53 # Development model
54
55 # The old development model
56
57 * X.Y.Z
58 * Major and minor versions and releases
59 * Even minor versions are stable
60 * Odd minor versions are for development
61
62 # There is no Linux 2.7
63
64 * Development cycles were getting long
65 * Sometimes, people talk about 3.0 and breaking stuff
66 * A new development model
67
68 # The new versioning model
69
70 * After a given release, there are stable point releases: 2.6.33.X
71 * Release candidates are published by Linus: 2.6.34-rcX
72 * There is a linux-next tree that will help development for the next
73   version: 2.6.35
74
75 # The development model (or how Linus gets all those changes)
76
77 * There are subsystems and there are maintainers for those
78 * People Linus trusts who asks for pulls or send patches
79 * People send patches to maintainers and to LKML for review
80 * Andrew Morton does the "missing patches" collection
81
82 # The documentation
83
84 * Documentation/SubmittingPatches
85 * Documentation/CodingStyle
86 * Documentation/SubmitChecklist
87 * MAINTAINERS
88
89 # The tools people use
90
91 * git
92 * quilt
93 * scripts/checkpatch.pl
94 * scripts/get\\_maintainer.pl
95
96 # Tools
97
98 # ketchup
99
100 * kernel.org distributes tarballs, patches and "subpatches"
101 * ketchup makes it easier to get the right files
102 * Reduces download time
103 * Do not forget to import GPG keys or disable signature verification
104
105 # diff
106
107 * Compare two files or two trees
108 * Recursive: -r
109 * Include new files: -N
110 * Unified diff: -u
111 * Show C function: -p
112
113 # patch
114
115 * Apply changes in a patch file using standard input
116 * patch file is generated using diff
117 * Strip directory prefix: -p N
118 * Reverse patch: -R
119
120 # quilt
121
122 * Organize patch series into a directory
123 * QUILT\\_PATCHES environment variable
124 * quilt new name.patch
125 * quilt add src/file
126 * quilt refresh
127 * quile edit src/file
128 * quilt top
129 * quilt pop [-a]
130 * quilt push [-a]
131 * Never forget to do 'quilt add' before editing a file