1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
|
%include "default.mgp"
%default 1 bgrad
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
%nodefault
%back "blue"
%center
%size 7
How to interact with the
Free Software Community
%center
%size 4
by
Harald Welte <laforge@gnumonks.org>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
Contents
Introduction
What is Free Software?
What is the FOSS Community?
People / Groups involved
Development Process
Motivations
FOSS likes
FOSS disliks
Weak Points
Practical Rules
Thanks
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
Introduction
Who is speaking to you?
an independent Free Software developer, consultant and trainer
who is a member of the free software community for 10 years
who has a background in both the community and the corporate crowd
who will therefore not have fancy animated slides ;)
Why is he speaking to you?
because every working day he suffers the lack of understanding between the community and the business world
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
What is the FOSS Community?
Diverse
any individual can contribute
no formal membership required
every project has it's own culture, rules, ...
International
the internet boosted FOSS development
very common to have developers from all continents closely working together
Evolutionary
developers come and go, as their time permits
projects evolve over time, based on individual contributions
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
People / Groups involved
Really depends on size of projects
Small projects often a one-man show
Bigger project have groups / subgroups
Common Terms / Definitions
Maintainer
The person who formally maintains a project
Core Team / Steering Committee
A group of skilled developers who make important decisions
Subsystem Maintainer
Somebody who is responsible for a particular sub-project
Developer Community
All developers involved with a project
User Community
Users of the software who often share their experience with others
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
Development Process
"Rough concensus and running code"
Decisions made by technically most skilled people
Reputaion based hierarchy
Direct Communication between developers
Not driven by size of a target market
Release early, release often
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
Motivations
gaining reputation (like in the scientific community)
gaining development experience with real-world software
solving problems that the author encounters on his computer
fighting for free software as ideology
work in creative environment with skilled people and no managers ;)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
FOSS Community likes
generic solutions
portable code
vendor-independent architecture
clean code (coding style!)
open standards
good technical documentation
raw hardware, no bundle of hardware and software sold as solution
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
FOSS Community dislikes
monopolistic structures
e.g. intel-centrism
closed 'industry forums' with rediculous fees
e.g. Infiniband, SD Card Association
standard documents that cost rediculous fees
NDA's, if they prevent development of FOSS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
Weak Ponts of FOSS
often way behind schedule (if there is any)
already too late when projects start
started when there already is a real need
often a lack of (good) documentation
programmers write code, not enduser docs...
strong in infrastructure, weak in applications
traditionally developers interested in very technical stuff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
Practical Rules
1. Much more communication
It's not a consumer/producer model, but cooperative!
Before you start implementation, talk to project maintainers
It's likely that someone has tried a similar thing before
It's likely that project maintainers have already an idea how to proceed with implementation
Avoid later hazzles when you want your code merged upstream
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
Practical Rules
2. Interfaces
If there is a standard interface, use it
Don't invent new interfaces, try to extend existing ones
If there is an existing interface in a later (e.g. development) release upstream, backport that interface
Don't be afraid to touch API's if they're inefficient
Remember, you have the source and _can_ change them
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
Practical Rules
3. Merge your code upstream
Initially you basically create a fork
Development of upstream project continues sometimes at high speed
If you keep it out of tree for too long time, conflicts arise
Submissions might get rejected in the first round
Cleanups needed, in coordination with upstream project
Code will eventually get merged
No further maintainance needed for synchronization between your contribution and the ongoing upstream development
Don't be surprised if your code won't be accepted if you didn't discuss it with maintainers upfront and they don't like your implementation
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
Practical Rules
4. Write portable code
don't assume you're on 32bit cpu
don't assume you're on little endian
if you use assembly optimized code, put it in a plugin
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
Practical Rules
5. Write clean code
as opposed to closed-source software, people actually read it
it will be noticed if coding style is bad
lots of projects have official CodingStyle rules
if you comment, do it only in english!
don't clutter hardware/product specific hacks over common code
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
Practical Rules
6. Binary-only software will not be accepted
yes, there are corner cases like FTC regulation on softradios
but as a general rule of thumb, the community will not consider object code as a solution to any problem
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
Practical Rules
7. Avoid fancy business models
If you ship the same hardware with two different drivers (half featured and full-featured), any free software will likely make full features available on that hardware.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
How to interact with the Free Software Community
Practical Rules
8. Show your support for the Community
By visibly contributing to the project
discussions
code
equipment
By funding developer meetings
By making cheap hardware offers to developers
By contracting / sponsoring / hiring developers from the community
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
GNU GPL - Copyright helps Copyleft
Thanks
Thanks to
Alan Cox, Alexey Kuznetsov, David Miller, Andi Kleen
for implementing (one of?) the world's best TCP/IP stacks
Paul 'Rusty' Russell
for starting the netfilter/iptables project
for trusting me to maintain it today
Astaro AG
for sponsoring parts of my netfilter work
Free Software Foundation
for the GNU Project
for the GNU General Public License
%size 3
The slides of this presentation are available at http://www.gnumonks.org/
|