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