summaryrefslogtreecommitdiff
path: root/2006/intf_kommerz_community-oscon2006/intf_kommerz_community.mgp
blob: 17c99a12a74bec686774bb121ef81be894d73c17 (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
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
%include "default.mgp"
%default 1 bgrad
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
%nodefault
%back "blue"

%center
%size 7

The Interface between
Free Software Community
and
Corporate World

%center
%size 4
by

Harald Welte <laforge@hmw-consulting.de>


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page 
Interface: FOSS community / corporate world
Introduction

Who is speaking to you?

		an independent Free Software developer, consultant and trainer
		who is a member of the Free Software community for 11 years
		who has a background in both the community and experience with the corporate crowd
		woh still is a die-hard technical guy
		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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
Ideas and Goals of the GNU GPL

	Free Software
		Software that has fundamental freedoms:
			to use it for any purpose
			to "help your neighbour" (i.e. make copies)
			to study it's functionality (reading source code)
			to fix it myself (make modifications and run them)

	Copyleft
		Is the legal idea to 
			exercising copyright to grant the above freedoms
			assure that nobody can take away the freedom

	The GNU General Public License
		Is a legal instrument to apply they copyleft idea on software

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Interface: FOSS community / corporate world
The GNU GPL revisited

Revisiting the GNU General Public License

	Regulates distribution of copyrighted code, not usage
	Allows distribution of source code and modified source code
		The license itself is mentioned
		A copy of the license accompanies every copy
	Allows distribution of binaries or modified binaries, if
		The license itself is mentioned
		A copy of the license accompanies every copy
		The complete source code is either included with the copy (alternatively a written offer to send the source code on request to any 3rd party)


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
Why good relations?

	Let's presume you're using FOSS in your products.
	Why would I want to have good relations with the FOSS community?
		You're using their code in your products.
		You're interested in their new developments.
		You probably want to continue product delvelopment on their code
		Thus, You're interested in cooperative development
		You want their codebase to better fit for your application
		Esp. in Security areas, you need to trust the community. Would you trust somebody that you're upsetting deliberately, or which you're fighting battles with?

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Interface: FOSS community / corporate world
Practical Rules

	In the end, it's just like environmental protection:
		FOSS community is like an ecosystem
		If you behave friendly to the environment, there is sustainable development
		If you just consume and abuse the FOSS ecosystem, you damage it



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
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
Interface: FOSS community / corporate world
Licensing under GPL

	The GPL is a legal instrument to approximate the goals of Free Software and the 'moral code of conduct' of many FOSS projects by using copyright law
	Always remember: The goal is to give the user (incl. your customer) fundamental freedoms
	GPL is just a tool to force distributors to give those freedoms to users
	It is a legally binding license agreement, since nothing else grants you permission for modification and redistribution

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Interface: FOSS community / corporate world
Enforcing the GNU GPL

	Enforcing the GNU GPL
		has always been done quietly by the FSF in the USA
		used to only happen out of court
		results were never published
		As number of cases started to increase in 2003, Harald Welte couldn't stand it any longer and started his own enforcement.  Some time later, gpl-violtions.org was born.
		Difference: Publicize enforcement, create awareness within corporate crowd
		gpl-violations.org has 
			enforced close to 100 cases so far
			most of them out of court
			obtained five preliminary injunctions
			sustained one appeals case against an injunction
			is currently filing the first regular lawsuit
		some examples: D-Link, Sitecom, Linksys/Cisco, Sun, Siemens, Fujitsu-Siemens, Telekom, Samsung, Hitachi, Motorola, Kenwood, Maxtor, Western Digital, ...

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Interface: FOSS community / corporate world
The biggest myths about the GPL

The biggest myths about the GPL
	The GPL is not enforcible
	Software licensed under GPL has no copyright
	Unmodified distribution does not require source code availability
	The vendor can wait for a source code request (without offering it)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Interface: FOSS community / corporate world
The most common mistakes

The most common mistakes
	not including the "scripts to control installation"
	only providing off-site hyperlinks to license and/ore source code
	not responding to support requests for source code
	charging rediculously high fees for physical shipping of source code

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Interface: FOSS community / corporate world
The most common mistakes

The most common mistakes
	not even once reading the GPL text and/or the FAQ from the FSF
	not including the GPL license text with the product
	not including a written offer with the product
	not considering that the GPL also applies to software updates
	only providing original source code (e.g. vanilla kernel.org kernel)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Interface: FOSS community / corporate world
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
		LinBit
			for inviting me to speak at OSCON

%size 3
	The slides of this presentation are available at http://svn.gnumonks.org/


personal git repositories of Harald Welte. Your mileage may vary