“Open Source”, etc...

Brad Fitzpatrick

2005-10-13

Vocab

free, Free

Source, Binary

Open Souce, Free Software, FOSS

Copyright, Trademarks, Patents

Freeware, Shareware

Public Domain

“Shared Source”, “Source Available”

Free(dom)

Land of the Free,

Free Speech, etc

free beer,

free download, etc

libre, freiheit

gratis, kostenlos

Source vs. Binary

dork

compiler

source code

10011001 00100000 11101000 01100101 00011100 10010011 01111010 11101000 01100011 01110001 01000100 00001011 01110101 00111110 11111101 11111111 01111100 01011100 10000111 01001011 11101101 00010100 00011111 11101110 10000110 01010110 11011011 00010010 01000010 01000001 10111000 10000000 01001101 10110101 11001000 01010101 01011000 00100101 10100000 10001111 01010101 01111101 10100111 10101101 10001010 01011110 10001001 10101001 11100110 00100101 10100010 10110011 00100000 00001111 01100101 11111010 00010101 10100011 11111100 10001101 01111110 01000111 10110101 11001001 11001110 10111010 11001100 01111110 10001110 11111000 01100001 11100101 10000011 01111101 00100101 11101101 10101110 00111000 00110011 11111010 11111111 10100011 11011101 01110010 01011010 11001001 00001001 10110010 10001000 11010010 00111110 10100010 00011001 11100111 01011100 01010110 10000111 11000100 01011011 10110110 00110010 10110110 10010011 11100010 10101111 11111010 11011000 01001011 11010010 10001000 10100110 00011100 10001000 11100100 01101011 01110101 00110000 10101001 01011100 00011010 01011001 10100111 01100110 01100001 01000101 00101010 01100011 11000010 01001010 00011000 11110101 11101000 11011100 01010100 00000111 10011000 11001011 01110001 11000001 11001111 10111111 11001111 01100011 00101110 11011000 11010001 11001010 00110001 11011010 01010111 01010111 00100001 11011001 10010010 00011010 10111010 10011011 10000010 11000000 01111111 10010000 10001001 01000101 10000100 01100101 01111000 10100111 00011100 11000010 00011101 11111001 00101000 01001000 10011011 10101110 00111011 11100101 10000011 01100001 01010111 00011111 10000101 01110111 01100100 00000111 01010011 11111001 01110110 11101010 00101010 00010110 00111011

binary

computer

Buying Software

typically you buy a license (the right) to use some binary code. you did not buy ownership of those ones and zeros.

10011001 00100000 11101000 01100101 00011100 10010011 01111010 11101000 01100011 01110001 01000100 00001011 01110101 00111110 11111101 11111111 01111100 01011100 10000111 01001011 11101101 00010100 00011111 11101110 10000110 01010110 11011011 00010010 01000010 01000001 10111000 10000000 01001101 10110101 11001000 01010101 01011000 00100101 10100000 10001111 01010101 01111101 10100111 10101101 10001010 01011110 10001001 10101001 11100110 00100101 10100010 10110011 00100000 00001111 01100101 11111010 00010101 10100011 11111100 10001101 01111110 01000111 10110101 11001001 11001110 10111010 11001100 01111110 10001110 11111000 01100001 11100101 10000011 01111101 00100101 11101101 10101110 00111000 00110011 11111010 11111111 10100011 11011101 01110010 01011010 11001001 00001001 10110010 10001000 11010010 00111110 10100010 00011001 11100111 01011100 01010110 10000111 11000100 01011011 10110110 00110010 10110110 10010011 11100010 10101111 11111010 11011000 01001011 11010010 10001000 10100110 00011100 10001000 11100100 01101011 01110101 00110000 10101001 01011100 00011010 01011001 10100111 01100110 01100001 01000101 00101010 01100011 11000010 01001010 00011000 11110101 11101000 11011100 01010100 00000111 10011000 11001011 01110001 11000001 11001111 10111111 11001111 01100011 00101110 11011000 11010001 11001010 00110001 11011010 01010111 01010111 00100001 11011001 10010010 00011010 10111010 10011011 10000010 11000000 01111111 10010000 10001001 01000101 10000100 01100101 01111000 10100111 00011100 11000010 00011101 11111001 00101000 01001000 10011011 10101110 00111011 11100101 10000011 01100001 01010111 00011111 10000101 01110111 01100100 00000111 01010011 11111001 01110110 11101010 00101010 00010110 00111011

Buying Software, Restrictions:

no access to the source code

want to add a feature? can't.

want to fix a bug? can't.

want to do a security audit? can't.

want to give copies to your friends? can't, legally.

for fixes/improvements, wait for the “upgrade”

new bugs, more money, runs slower (needs new computer)

The Alternative?

Free Software!
(That's Freedom, yo.)

What is Free Software?

Free access to the source code

want to add a feature? No prob.

want to fix a bug? No prob.

want to do a security audit? No prob.

want to give copies to your friends? You may, legally!

for fixes/improvements. Choice:

follow stable series (bug fixes only)

follow bleeding edge series (new fun features)

But I can't program! Why do I want the source code?

sure, you can't. but that dork down the hall in IT/dev can.

“With enough eyeballs, all bugs are shallow....”

million monkeys, million typewriters.....

somebody will find that obscure bug or security hole

no security through obscurity

Windows: source code not available, but security holes keep being discovered (“Critical Updates are required! Please reboot!!!”). found by dorks who read binary.

Linux: source code public, so more people can audit.

I thought this was about Open Source.

Free Software

original term, still popular

ambiguous. run by hippies (Ricard Stallman, FSF). influencial hippies. too zealotrous.

Open Source

newer term, less ambiguous

backed by OSF, more like a biz coalition to promote open source. too business-y? *shrug*

Richard Stallman.

started the Free Software Foundation & movement;

wrote manifesto,

wrote a shitload of code,

very religious about Freedom, doesn't shower.

I thought this was about Open Source.

FOSS (Free and Open Source Software)

people who don't care about naming politics

Why does FOSS work?

Virtually nil incremental distribution costs

cars: metal, fabric, workers, shipping, ....

software:

used to have distribution costs, and cost of floppies

Internet: uh, not so much.

So if it's free (of cost) to share, why not?

we all need browsers (Firefox)

and databases (MySQL)

and operating systems (Linux, etc)

all benefits of open source for no cost

Benefits of Open Source

peer review

bugs, security holes found by others

programmers write better code/docs, knowing it'll be scrutinized, their respect on the line

features from others that you didn't get around to writing yet, but somebody else had time

I get this all the time! Most my inbox is filled with people sending contributions to LiveJournal, Danga::Socket, Perlbal, memcached, MogileFS, etc...

(Annectote: byte ranges for Perlbal)

How does Open Source work, legally?

based on copyright

ah, hell, you need to know about copyright...

Copyright vs. Trademarks vs. Patents

Copyright

specific expression of an idea.

others can write book/poem on same topic

automatic. no need to register.

write a poem on a napkin, you own the copyright

write some code, you own the copyright

caveat: work for hire. Six Apart owns your code.

term: your life + 80 years or something.

Disney keeps lobbying government to extend..

otherwise Mickey Mouse would fall into the public domain!

Public Domain

the absense of copyright

either explicitly released into the public domain by the author,

(not all countries allow you do legally do this)

or the copyright expired.

but Disney.

Project Gutenburg:

awesome. tons of copyright-expired books

Mark Twain, etc...

Trademark

have to register

have to actively defend its use

if it falls into common use, trademark is lost

“Dude, if you google 'Trademark image', you get an image on a page about Google possibly losing their trademark on the term Google because it's turning into a verb!”

Google, Kleenex, Q-Tips, Legos (legos.com)

both happy and angry that people use their terms generically

Patents

registering an idea

Cotton Gin, Flowbee, etc

term is 17 or 20 years

don't have to actively enforce

some aren't enforced

companies build patent arsenals for defensive reasons, bartering with other companies,

cross-patent licensing, etc...

How does Open Source work, legally?

based on copyright:

“I own this frickin' code! You have no rights to use it or reproduce it or share it unless I explicitly grant you a license to do so.”

Hence, common Open Source licenses:

GPL,

BSD, MIT, X,

Artistic,

(many dozen, only few are common...)

Example License (BSD)

Copyright (c) 2005, Six Apart, Ltd.

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

In Summary

You still own the copyright, but you're just granting a blanket license to anybody that wants one, the license of which permits them certain rights to the code, under certain conditions.

Why so many licenses?

Every organization's legal department feels like they have to bill some hours and write a new license.

Recently: opposition to license proliferation, recognition/acceptance of the few good licenses.

Only two main types:

BSD-ish

GPL (copyleft)

BSD-ish

you may use this code and do whatever with it, except sue us if it doesn't work (no warranty)

you may ship it in commercial products

make changes, sell the binaries, and never give back the changed source code

used by researchers / academics / companies

most permissive.

GPL (copyleft)

The license of the Free Software Foundation and Free Software hippies worldwide.

Very popular, most restrictive.

Restriction:

if you distributed a changed version, you must shared your changes

(if you only change it for personal/internal use, don't need to)

License compatibility

BSD code can't include GPL code

GPL code can include BSD code

etc, etc

gets ugly quick with dozens and dozens of license

boring. let's move on...

What do all licenses have in common?

Open Source Initiative rubber stamps licenses if:

free (gratis) redistribution, no royalties

source code must be available, and restributable

derived works allowed

no discrimination against persons or groups

no discrimination against fields of endeavor

not allowed: “can only use this for personal non-profit use”

OSI definition, continued.

Distribution of License

“The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.”

License Must Not Be Specific to a Product

License Must Not Restrict Other Software

The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.

License Must Be Technology-Neutral

Copyright: Who owns what?

“I own all this code, so you can't use it....”

What if multiple contributors?

common in open source projects, where sharing/helping is the key to success.

who owns the copyright?

Multiple people!

“I own this line/file/section...”

“Bob owns that line/file/section...”

“Six Apart owns that line/file/section...”

....

Copyright Assignment

some companies/organizations aren't happy with contributors owning the copyright on their sections

require “copyright assignment” from authors to transfer copyright to primary maintainer

Free Software Foundation: requires copyright assignment to FSF out of paranoia

MySQL: Junior and I have both sent patches, and been asked to do copyright assignments

they make money off of dual licensing, (to be discussed)

Trolltech, etc....

Dual Licensing

you can only grant licenses to others for your code. not others'.

if you own all the code, you can license it in a dozen different ways:

GPL

BSD

proprietary

Many companies are based on dual licensing. MySQL: “GPL is our business model.” (you can buy your way out of the GPL's restrictions...)

Projects not owning all their code

Linux: hundreds of copyright holders

Debian/Redhat: thousands

LiveJournal: dozens

Implication:

can't dual license it unless you get consent from all copyright holders to change it

hard

sometimes possible: Cairo library dual-licensing for inclusion in Mozilla 1.5's <canvas>. My friend Evan was contacted to grant permission. He agreed.

But you can still ship.

not owning all your code doesn't mean you can't use it in a proprietary product.

just have to obey license terms

BSD-ish: no brainer

GPL: little more care, but fine if you give back the necessary changes (not your entire project)

Linksys/Cisco wireless access points

Why do people use Open Source?

Freedom

(the principle,

freedom to modify)

Cost

(Money,

time to acquire)

Quality

No consistent answer... everybody has their own set of reasons....

Open Source Business Models

Dual Licensing (already discussed)

MySQL, Trolltech, etc

GPL license for free. Pay money for more permissive license.

Support Contracts

somebody to call if questions

SLAs

sell a warranty

fix it if it breaks

Wrap-up: the Continuum

Public domain (no copyright, gutenburg.org)

Copyright:

Open Source

BSD-ish (some of Comet's javascript, Ben and my CPAN perl code, FreeBSD)

GPL (Linux, LiveJournal, Wordpress)

Proprietary

Source Available (Movable Type)

Source not available & gratis

“freeware”, “shareware” (Doom*, Commander Keen)

Source not available & must pay

Windows, Photoshop, Macromedia Breeze

Restrictive

2005-10-13T12:05:48