@listochkin
This talk is not a legal
advice
Talk to your lawyer
Also:
In Ukraine I’m not required
to make this disclaimer
<3 Ruby
8 days total
No Ruby Today
JavaScript
Bash XML
Rust
RustFest 2017 Kyiv
Videos are up!
Software Licensing
OpenSource
Which License to Choose?
MIT
End of Story
GPL
MPL
Apache
Eclipse
ICS
BSD
EU-PL
CDDL
Facebook PATENTS file
Oracle-Google JDK lawsuit
Ubuntu ZFS inclusion
OpenSSL licence change
etc.
Hard stuff!
Walkthrough
US
EU
Ukraine
…
Trade Secret
Trademark
Patent
Copyright
Trade Secret
Between you and your
employer/partner
Trademark
Unregistered™
Registered®
Linux
Come up with the name
Check if it is in use
If not you’re good
® and ™ aren’t required
Patents
Software Patents
de jure illegal in Ukraine
de facto legal in the US
thus de facto legal in Ukraine, too!
WTO
Agreement on Trade-Related
Aspects of Intellectual Property
Rights (TRIPS)
162 WTO countries
Notable exception: Belarus
Software Patents are here
Copyright
Berne Convention
© is not required
Author’s rights
vs
Copyright
You work at X and write code
Ukraine: you are the (co-)author
US: X is an author
© 2010-2016
What’s the deal?
Publication date
defines
Expiry date
Changed file?
New edition
Date is not always current!
E.g. content hasn’t changed
You have no right
to change website copyright year
on January 1st if site content
didn’t change
Licensing
&
Public Domain
Old works transfer to public domain
automatically
Government code can be public
domain automatically
Dedicate to public domain
Can be illegal in many countries
Germany
Unlicense
CC0
Who owns copyright?
WFH
Work-for-hire
US
if no terms are defined in the
contract you give copyright to the
company
Licensing
OpenSource
Free Software Foundation
OpenSource Initiative
Debian, OpenBSD, Apache
Goal?
1. Just share the code
2. Fame and Recognition
3. Guarantee contributions
4. Allow double-licensing
5. Force OpenSource
1. Just Share the Code
WTFPL
Unlicense
CC0
WTFPL
No warranty clause
If your WTFPL code doesn’t
work
I can sue you and WIN
Unlicense
Public Domain dedication
Illegal in some countries
CC0
Falls back from PD to
super-permissive license
NOT OSI-approved
OMG WTF?!
Dual Licensing
CC0 + ISC + Apache2
CC0
ICS: permissive
Apache2: … + patents
What’s up with patents?
Apache
All contributors share patents
Only the ones that they have
Ones that are required
Common defence pool
Don’t own patents?
No risk for you
2. Fame and Recognition
ISC + Apache
ICS ≈ MIT ≈ 2-clause BSD
1. State my name
2. No warranty
Why not BSD?
Too many variants
Why not MIT?
1. Also many variants!
2. “Use” may imply patent
grant
ISC is the new MIT
default on npm
3. Guarantee contributions
LGPL
C/C++ semantics
No equivalence in many
languages
Best to avoid
File Copyleft
MPL2
EPL
CDDL
Big issue:
GPL compatibility
GPLv2
GPLv2 or later
GPLv3
AGPL
AGPL or later
AGPLv3
with Classpath Exception
with Linking Exception
…
MPL2 has it built-in!
CDDL and EPL
are incompatible
MPL2
EPL + LGPL2^ + AGPL3^
4. Dual-Licensing
OpenSource + Commercial
OpenCore
Crippleware
ExtJS
MongoDB
SugarCRM
…
Where is it Deployed?
Client: GPL
Server: AGPL
Client-Server: AGPL + Apache/ISC
Why not GPL for servers?
GPL provisions trigger
on Distribution
20000 engineers write server code
Billions of people use this code
1 company
No distribution
Contractor?
Distribution
Employee at a service
company?
Distribution
Contribution
License
Agreement
You assign copyright to a project
Project decides
on licensing terms
5. Force OpenSource
AGPLv3
GPLv3
GPLv2^
CLA
Do you need a CLA
on your project?
YES and NO
Project license doesn’t
define the license
of contributions!
Inbound != Outbound
GitHub ToS has a “CLA”
D.6.
Employees
US
An employee assignes
copyright to the employer by
default
You may want a CLA-like
Linux: Developer Certificate
of Origin
Berneout Pledge
AUTHORS Certificate
etc.
Other Concerns
License notice in each file
Licences in minified JS
Licenses for all deps
AUTHORS file
CLA/DSO/Pledge
BG // before GitHub
AG // after GitHub
We can do better to ease
the life of others and
reduce legal risks
CC0 + ISC + Apache2
“Yes, patents exist,
we’re all in this together”
“Yes, use it in your
closed-source project”
“Yes, I know you’ll forget to put my
name and license into a final build,
and that’s OK”
Take Actions!
1. StackOverflow MIT
Add CC0/ISC to your profile
2. Read Your Contracts!
3. Don’t be afraid to
dual-licence
1. CC0 + ISC + Apache2
2. ISC + Apache2
3. MPL2
4. …
5. …
Or just use MIT because
nobody cares anymore
Stories:
Facebook PATENTS file
Oracle vs Google
OpenSSL license change
Ubuntu ZFS

Software Licensing: A Minefield Guide - Andrey Listochkin