diff options
Diffstat (limited to '2006/gpl-compliance-tomtom2006')
-rw-r--r-- | 2006/gpl-compliance-tomtom2006/gpl-compliance.mgp | 304 | ||||
-rw-r--r-- | 2006/gpl-compliance-tomtom2006/interact-community.mgp | 287 |
2 files changed, 591 insertions, 0 deletions
diff --git a/2006/gpl-compliance-tomtom2006/gpl-compliance.mgp b/2006/gpl-compliance-tomtom2006/gpl-compliance.mgp new file mode 100644 index 0000000..1b29df9 --- /dev/null +++ b/2006/gpl-compliance-tomtom2006/gpl-compliance.mgp @@ -0,0 +1,304 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + + +GPL Workshop +How to (not?) use Free Software + + +%center +%size 4 +by + +Harald Welte <hwelte@hmw-consulting.de> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Contents + + About the speaker + Ideas / Goals of the GPL + How to (not) use GPL Software + Complete Source Code + Derivative Works + Collective Works + GPL and Embedded Systems + The biggest GPL Myths + Thanks + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Introduction + + +Who is speaking to you? + + an independent Free Software developer + who earns his living off Free Software since 1997 + who is one of the authors of the Linux kernel firewall system called netfilter/iptables + who has started gpl-violations.org to enforce license compliance + who IS NOT A LAWYER + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Disclaimer + +Legal Disclaimer + + All information presented here is provided on an as-is basis + There is no warranty for correctness of legal information + The author is not a lawyer + This does not comprise legal advise + The authors' experience is limited to German copyright law + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +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 +How to (not) use GPL Software +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 +How to (not) use GPL Software +Complete Source Code + +%size 3 +"... complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable." + + For standard C-language programs, this means: + Source Code + Makefiles + compile-time Configuration (such as kernel .config) + + General Rule: + Intent of License is to enable user to run modified versions of the program. They need to be enabled to do so. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + What is a derivative work? + Not dependent on any particular kind of technology (static/dynamic linking, dlopen, whatever) + Even while the modification can itself be a copyrightable work, the combination with GPL-licensed code is subject to GPL. + As soon as code is written for a specific non-standard API (such as the iptables plugin API), there is significant indication for a derivative work + This position has been successfully enforced out-of-court with two Vendors so far (iptables modules/plugins). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + Binary-only kernel modules + In-kernel proprietary code (binary kernel modules) are hard to claim GPL compliant + Case-by-case analysis required, as the level of integration into the GPL licensed kernel code depends on particular case + IBM is in the process of getting rid of all binary-only kernel modules. There are exceptions, but they are very clear ones (such as a filesystem port to linux, where the filesystem code already existed under another OS) + There is no general acceptance or tolerance to binary-only kernel modules in the Linux (development) community. Not even Linus himself has ever granted an exception for such modules! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + Glue Code + Acts as glue layer between GPL licensed code and proprietary code + Some Vendors think they can avoid the GPL by doing so + Is definitely not a bullet-proof legal solution, especially when it is clearly visible that the only purpose of this glue code is to "get rid" of the GPL. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + Moral Issues + Apart from what is legally possible, there are moral issues + Even if in a particular case there is no legal way to claim a binary-only kernel module is a derivative work, you might still be acting against the authors' wishes + By shipping binary-only kernel modules, you violate the "moral code of conduct" of the Free Software community + But it is the work of this very community that enables you to build your product based on Free Software + Such action might have long-term detrimental effects on the motivation of FOSS developers (dissatisfaction, demotivation, ...) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Collective Works + +%size 3 +"... it is not the intent .. to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works ..." + + GPL controls "collective works" + +%size 3 +"... mere aggregation of another work ... with the program on a volume of a storage or distribution medium does not bring the other work und the scope of this license" + + GPL allows "mere aggregation" + like a general-porpose GNU/Linux distribution (SuSE, Red Hat, ...) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +GPL And Embedded Systems + + Historical background: + The GPL was written for userspace programs running on existing operating systems + Covering a whole OS (and even userspace programs) is not an ideal match, but if you read it carefully it still makes sense + + Toolchain: +%size 3 +"... the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major components +(compiler, kernel, and so on) of the operating system on which the executable +runs, unless that component itself accompanies the executable." + Practical case: + You've modified gcc for a specific embedded platform + Therefore, this gcc is not "normally distributed with the operating system" and you have to distribute it together with the source code + gcc itself is covered under GPL, so you need to provide binaries and source code(!) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +GPL And Embedded Systems + + The "Scripts" + (scripts to control compilation and installation, see earlier slide) + In case of embedded hardware, the "scripts" include: + Tools for generating the firmware binary from the source (even if they are technically no 'scripts') + + + Embedded DRM + Intent of License is to enable user to run modified versions of the program. They need to be enabled to do so. + Result: Signing binaries and only accepting signed versions from the bootloader (without providing the signature key or a possibility to set a new key in the bootloader) is not acceptable! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Practical Source Code Offer + + Some Rules + The "complete corresponding source code" has to be made available + It has to be made available for each and every object-code version that was distributed + If you strip down the source code offer (e.g. remove proprietary source code), try to see whether the result actually compiles + If the product is mixed free / proprietary software, consider including the proprietary parts (as object code) in the "source code package", so the full firmware image can be rebuilt without having to tear apart an existing image and ripping out those proprietary programs from there. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +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 +How to (not) use GPL Software +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) + 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 +How to (not) use GPL Software +License Compatibility + + There's lots of Free Software available + Different Software uses different Licenses: + Linux: GPL + glibc: LGPL + apache: Apache Software License + Perl: Artistic + ucd-snmp: BSD + If you combine (i.e. link) differently-licensed software, + check license compatibility + in case of doubt, ask legal person and/or contact software authors + authors might give you an exception or consider making licenses compatible + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Dual Licensing + + The copyright holder (often the original author) can provide alternative licensing + Some projects do this as a business model (reiserfs, MySQL) + In some projects it's impossible due to the extremely distributed copyright (e.g. Linux kernel) + However, in smaller projects it never hurts to ask whether there would be interest in providing an alternative (non-copyleft) licensing + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +The End + + +%size 3 + Further reading: +%size 3 + The http://gpl-violations.org/ project +%size 3 + The Free Software Foundation http://www.fsf.org/, http://www.fsf-europe.org/ +%size 3 + The GNU Project http://www.gnu.org/ +%size 3 + The netfilter homepage http://www.netfilter.org/ +%% http://management.itmanagersjournal.com/management/04/05/31/1733229.shtml?tid=85&tid=4 + + diff --git a/2006/gpl-compliance-tomtom2006/interact-community.mgp b/2006/gpl-compliance-tomtom2006/interact-community.mgp new file mode 100644 index 0000000..446f393 --- /dev/null +++ b/2006/gpl-compliance-tomtom2006/interact-community.mgp @@ -0,0 +1,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/ + + |