summaryrefslogtreecommitdiff
path: root/2006/gpl-compliance-tomtom2006/interact-community.mgp
blob: 446f393027aefbf1ecae477d0d39dd43702fb6f8 (plain)
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
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
%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@hmw-consulting.de>


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%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 Free Software?

	Software that is 
		available in source code
		is licensed in a way to allow unlimited distribution
		allows modifications, and distribution of modifications
		is not freeware, but copyrighted work
		subject to license conditions, like any proprietary software
		READ THE LICENSE

What is Open Source?
		Practically speaking, not much difference
		Remainder of this presentation will use the term FOSS (Free and Open Source Software)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%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/


personal git repositories of Harald Welte. Your mileage may vary