SlideShare a Scribd company logo
1 of 55
Download to read offline
Kicking the Bukkit 
Anatomy of an open source meltdown
A little about me 
● Ryan Michela (@ryanmichela) 
● Plugin author 
● Contributor to the Bukkit project
Overview 
● A brief history of Minecraft 
● The rise and fall of Bukkit 
● How you can protect your project
Brief history of Minecraft 
● Minecraft is a sandbox style video game 
started by Markus “Notch” Presson in 2009 
for Mojang Software 
● 3rd best selling video game of all time 
● >54 million copies 
http://www.eurogamer.net/articles/2014-06-26-minecrafts-console-versions-have-now-outsold-minecraft-on-pc-mac
Brief history of Minecraft 
● Beloved by children 
● The defining video game of the middle-school 
generation 
● The Super Mario Brothers of the 21st 
century
The genesis of the Bukkit project 
● Bukkit - an open-source Minecraft server 
platform 
● Plugin platform for Minecraft 
● Started in December 2010 by Dinnerbone, 
Evilseph, Grum, and Tahg 
https://github.com/Bukkit/Bukkit/commit/4e8311a6551e8d7794cff73c57a481251b47459c
Licensing questions plague infant project 
● By January, 2011, the core team started 
worrying about licensing issues 
● Bukkit licensed LGPL, but built on 
decompiled Minecraft source 
● Decompiled Mojang code blended into 
Bukkit repository 
http://forums.bukkit.org/threads/where-is-my-bukkit-preview.543/
Mixed signals from Mojang 
Nov 2010: “First of all, most “mods” that add new 
features to the game are in a very gray area legally, and 
I frown upon them. Most of them add really cool new 
features, though. It’s highly likely that something like the 
bridge mod will make it into the game.” - Notch 
http://notch.tumblr.com/post/1525944516/an-update-is-coming-tomorrow
Mixed signals from Mojang 
August 2012: “Personally, I used to feel threatened by it as 
I felt it challenged my “vision,” but on the other hand, I also 
know how wonderful mods are for games. We decided to 
just let it happen, and I’m very happy we did. Mods are a 
huge reason of what Minecraft is.” - Notch 
http://www.vg247.com/2012/08/01/notch-minecraft-mod-used-to-threaten-my-vision-minecraft-creator-speaks/
Mojang hires Bukkit team 
● Feb 28, 2012 - Mojang hires core Bukkit team to work 
on official modding API 
● Mojang offers to help with Bukkit 
○ “We will, however, help bukkit to be compatible with 
1.2, to avoid having a long gap while you wait for the 
official Minecraft server to catch up.” 
● Licensing fears mostly alleviated 
http://mojang.com/2012/02/minecraft-team-strengthened/
But darkness was brewing in the 
community 
● Opportunistic server owners started charging for in-game 
perks, calling them “donations” 
● Angry parents complain to Mojang 
● "I don’t even know how many emails we’ve gotten from 
parents, asking for their hundred dollars back their 
kid spent on an item pack on a server we have no 
control over." - Notch 
http://notch.net/2014/06/literally-worse-than-ea/
Pay-to-win becomes commonplace 
● Big servers start 
selling off in-game 
functionality 
● $10k for “rank” in a 
game targeted at 
children
Mojang updates its EULA (and fails 
at public relations) 
● June, 2014 - Mojang awkwardly chastises for-profit server 
owners on IRC 
○ “doesn't matter at all, based on plugins or not, you 
cannot make money with Minecraft without our 
permission :)” 
○ “running servers is *NOT* A BUSINESS*” 
○ “We'll ask nicely and then send really mean lawyers :)” 
http://blog.tian.io/mojang-threatens-lawyers-against-pay-to-win-minecraft-server-operators
https://twitter.com/notch/status/474869769301409792
EULA changes drop bombshell on Bukkit 
● “The one major rule is that you must not distribute 
anything we‘ve made.” 
● “so that we are crystal clear, what we have made 
includes, but is not limited to, the client or the server 
software for our Game. It also includes modified 
versions of a Game, part of it or anything else we‘ve 
made.” 
https://account.mojang.com/documents/minecraft_eula
Evilseph shutters Bukkit project 
● August 21, 2014 
● Development team burnt out 
● No support from Mojang 
● EULA re-raises specter of infringement
“At this point in time, I think it's safe to say that it's no 
longer worth it for us to put up a fight when it comes to 
keeping Bukkit and modding alive. With large and 
significant changes coming in Minecraft 1.8 that we'll be 
hard pressed to provide support for and the lack of support 
from Mojang with updates since acquiring our original core 
team (Mojang used to provide us with mappings to speed 
up the update process), there is little motivation for us to 
continue limping on across various aspects of the 
project.” 
- Evilseph 
http://forums.bukkit.org/threads/bukkit-its-time-to-say.305106/
Mojang owns bukkit?! 
● Mojang secretly bought Bukkit when they 
hired the core development team 
https://storify.com/lukegb/the-tale-of-bukkit-for-minecraft-1-8
Mojang will finish Bukkit
Then the DMCA gets involved 
September 3, 2014 - Wolvereness, a long-time Bukkit 
developer, files a DMCA takedown notice against all 
versions of Bukkit hosted on the main Bukkit download 
servers at Multiplay
Wolvereness’ Claim 
The provided license requires the use of included or linking code to 
provide the original source under the GNU GPL license version 3, or any 
later version. An official notice has been sent to Mojang AB, whereas the 
Chief Operating Officer, Vu Bui, responded with the clear text: 
Mojang has not authorized the inclusion of any of its proprietary 
Minecraft software (including its Minecraft Server software) within the 
Bukkit project to be included in or made subject to any GPL or LGPL 
license, or indeed any other open source license 
As the Minecraft Server software is included in CraftBukkit, and the 
original code has not been provided or its use authorized, this is a 
violation of my copyright. I have a good faith belief the distribution of 
CraftBukkit includes content of which the distribution is not authorized by 
the copyright owner, it's agent, or the law. 
http://dl.bukkit.org/dmca/notification.txt
Gone from the internet 
● September 5, 2014 - Wolvereness shuts 
down Bukkit repo on GitHub 
● September 6, 2014 - Wolvereness shuts 
down SpigotMC and Cauldron, forks of 
Bukkt 
https://github.com/github/dmca/blob/master/2014-09-05-CraftBukkit.md 
http://www.spigotmc.org/threads/our-dmca-response.28772/
Great new things in the future 
● Sponge Project steps up 
● Microsoft buys Mojang - $2.5B 
http://abc13.com/news/software-writer-in-la-marque-latest-swatting-victim/305170/ 
https://mojang.com/2014/09/yes-were-being-bought-by-microsoft
Five Reasons
Reason 1: Questionable inclusion of 
decompiled code in an open source 
project 
● Bukkit built on top of partially decompiled 
Mojang code 
● Mojang code blended with Bukkit code in 
Github
Reason 2: Questionable application 
of (L)GPL3 
● GPL3 chosen without proper consideration 
of consequences 
● Unmodified Mojang .class files distributed as 
part of Bukkit .jar using Maven shade 
● LGPL3 explicitly bans linking and distributing 
non-free code
Reason 3: Questionable relationship 
with Mojang Software 
● What exactly did Mojang buy? Bukkit code? 
Logos? Domains? - Nobody knows 
● Mojang success was built on the backs of 
volunteers 
○ Reverse engineering is torturous work 
○ Some developers feel they were taken advantage of
Reason 4: No contributor license 
agreement 
● 125+ developers each own their own piece 
of Bukkit 
● Project couldn’t re-license with more 
permissive license
Reason 5: Unhappy developer 
community 
● EULA changes 
● Terrible Mojang PR 
● Secretly selling the project
It only takes one unhappy developer 
to kill an unprotected project
Thoroughly consider your license 
before your first commit 
● Which license do you choose? 
○ MIT? 
○ Apache? 
○ GPL? 
○ Other? 
● Changing your license after accepting 
contributions is not trivial
www.choosealicense.com
● Node 
● Bootstrap 
● JQuery 
● Rails 
● Apache.* 
● Docker 
● NuGet 
● Android 
● Linux 
● Git 
● Mongo (AGPL) 
● Discourse
MIT vs. Apache 
Permissive licensing 
● MIT - Do whatever you want 
● Apache - Patent protection
GPL vs. LGPL vs. AGPL 
Restrictive licensing 
● GPL - products 
● LGPL - libraries 
● AGPL - network services
http://oss-watch.ac.uk/apps/licdiff/
Thoroughly vet the licenses of all 
components you modify or link 
against 
● If your dependencies licenses are 
incompatible with your license, your license 
may be invalid 
● http://www.gnu.org/licenses/license-list.html 
● Unlicensed code is a landmine
Common license compatibility 
David A. Wheeler, The Free-Libre / Open Source Software (FLOSS) License Slide 
http://www.dwheeler.com/essays/floss-license-slide.html
Avoid uncommon or “off brand” 
licenses 
● Legal ramifications less understood 
● License compatibility less understood 
● Don’t “roll your own”
Consider a Contributor License 
Agreement 
● Typically grants or transfers copyright to the 
project 
● http://www.clahub.com - for Github projects
Avoid pinning the survival of 
your open-source project on 
the good graces of a for-profit 
company
Avoid directly linking to 
closed source code in an 
open source project
Avoid alienating your entire 
developer community 
simultaneously
Avoid operating your project 
in another company’s legal 
gray area
And especially: 
Don’t secretly sell your open 
source project to a for-profit 
company while continuing to 
accept contributions
Kicking the Bukkit: Anatomy of an open source meltdown

More Related Content

What's hot

Disk Performance Comparison Xen v.s. KVM
Disk Performance Comparison Xen v.s. KVMDisk Performance Comparison Xen v.s. KVM
Disk Performance Comparison Xen v.s. KVMnknytk
 
Fun with Network Interfaces
Fun with Network InterfacesFun with Network Interfaces
Fun with Network InterfacesKernel TLV
 
Creating_scheduled_reports_with_Zabbix.pdf
Creating_scheduled_reports_with_Zabbix.pdfCreating_scheduled_reports_with_Zabbix.pdf
Creating_scheduled_reports_with_Zabbix.pdfITDispendik
 
Kvm and libvirt
Kvm and libvirtKvm and libvirt
Kvm and libvirtplarsen67
 
Layer 7 Firewall on Mikrotik
Layer 7 Firewall on MikrotikLayer 7 Firewall on Mikrotik
Layer 7 Firewall on MikrotikGLC Networks
 
GPU Virtualization in SUSE
GPU Virtualization in SUSEGPU Virtualization in SUSE
GPU Virtualization in SUSELiang Yan
 
Part 3 Maximizing the utilization of GPU resources on-premise and in the cloud
Part 3 Maximizing the utilization of GPU resources on-premise and in the cloudPart 3 Maximizing the utilization of GPU resources on-premise and in the cloud
Part 3 Maximizing the utilization of GPU resources on-premise and in the cloudUniva, an Altair Company
 
webpack 101 slides
webpack 101 slideswebpack 101 slides
webpack 101 slidesmattysmith
 
Game Design Document
Game Design DocumentGame Design Document
Game Design DocumentKika Syafii
 
VIDEOGAMES AROUND THE WORLD-Capitulo publicado (castellano)argentina
VIDEOGAMES AROUND THE WORLD-Capitulo publicado (castellano)argentinaVIDEOGAMES AROUND THE WORLD-Capitulo publicado (castellano)argentina
VIDEOGAMES AROUND THE WORLD-Capitulo publicado (castellano)argentinaGraciela Esnaola
 
Kubernetes Story - Day 2: Quay.io Container Registry for Publishing, Building...
Kubernetes Story - Day 2: Quay.io Container Registry for Publishing, Building...Kubernetes Story - Day 2: Quay.io Container Registry for Publishing, Building...
Kubernetes Story - Day 2: Quay.io Container Registry for Publishing, Building...Mihai Criveti
 
BKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack UpdateBKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack UpdateLinaro
 
Supermicro X12 Performance Update
Supermicro X12 Performance UpdateSupermicro X12 Performance Update
Supermicro X12 Performance UpdateRebekah Rodriguez
 
What CloudStackers Need To Know About LINSTOR/DRBD
What CloudStackers Need To Know About LINSTOR/DRBDWhat CloudStackers Need To Know About LINSTOR/DRBD
What CloudStackers Need To Know About LINSTOR/DRBDShapeBlue
 
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...Adrian Huang
 
Hacking Lab con ProxMox e Metasploitable
Hacking Lab con ProxMox e MetasploitableHacking Lab con ProxMox e Metasploitable
Hacking Lab con ProxMox e MetasploitableAndrea Draghetti
 
Velocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPFVelocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPFBrendan Gregg
 

What's hot (20)

Disk Performance Comparison Xen v.s. KVM
Disk Performance Comparison Xen v.s. KVMDisk Performance Comparison Xen v.s. KVM
Disk Performance Comparison Xen v.s. KVM
 
Fun with Network Interfaces
Fun with Network InterfacesFun with Network Interfaces
Fun with Network Interfaces
 
Creating_scheduled_reports_with_Zabbix.pdf
Creating_scheduled_reports_with_Zabbix.pdfCreating_scheduled_reports_with_Zabbix.pdf
Creating_scheduled_reports_with_Zabbix.pdf
 
Game balancing
Game balancingGame balancing
Game balancing
 
Kvm and libvirt
Kvm and libvirtKvm and libvirt
Kvm and libvirt
 
Layer 7 Firewall on Mikrotik
Layer 7 Firewall on MikrotikLayer 7 Firewall on Mikrotik
Layer 7 Firewall on Mikrotik
 
GPU Virtualization in SUSE
GPU Virtualization in SUSEGPU Virtualization in SUSE
GPU Virtualization in SUSE
 
Part 3 Maximizing the utilization of GPU resources on-premise and in the cloud
Part 3 Maximizing the utilization of GPU resources on-premise and in the cloudPart 3 Maximizing the utilization of GPU resources on-premise and in the cloud
Part 3 Maximizing the utilization of GPU resources on-premise and in the cloud
 
webpack 101 slides
webpack 101 slideswebpack 101 slides
webpack 101 slides
 
Game Design Document
Game Design DocumentGame Design Document
Game Design Document
 
CloudStack Architecture
CloudStack ArchitectureCloudStack Architecture
CloudStack Architecture
 
VIDEOGAMES AROUND THE WORLD-Capitulo publicado (castellano)argentina
VIDEOGAMES AROUND THE WORLD-Capitulo publicado (castellano)argentinaVIDEOGAMES AROUND THE WORLD-Capitulo publicado (castellano)argentina
VIDEOGAMES AROUND THE WORLD-Capitulo publicado (castellano)argentina
 
Kubernetes Story - Day 2: Quay.io Container Registry for Publishing, Building...
Kubernetes Story - Day 2: Quay.io Container Registry for Publishing, Building...Kubernetes Story - Day 2: Quay.io Container Registry for Publishing, Building...
Kubernetes Story - Day 2: Quay.io Container Registry for Publishing, Building...
 
BKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack UpdateBKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack Update
 
Supermicro X12 Performance Update
Supermicro X12 Performance UpdateSupermicro X12 Performance Update
Supermicro X12 Performance Update
 
What CloudStackers Need To Know About LINSTOR/DRBD
What CloudStackers Need To Know About LINSTOR/DRBDWhat CloudStackers Need To Know About LINSTOR/DRBD
What CloudStackers Need To Know About LINSTOR/DRBD
 
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
 
Openstack proposition
Openstack propositionOpenstack proposition
Openstack proposition
 
Hacking Lab con ProxMox e Metasploitable
Hacking Lab con ProxMox e MetasploitableHacking Lab con ProxMox e Metasploitable
Hacking Lab con ProxMox e Metasploitable
 
Velocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPFVelocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPF
 

Viewers also liked

We Built It, And They Didn't Come!
We Built It, And They Didn't Come!We Built It, And They Didn't Come!
We Built It, And They Didn't Come!Lukas Fittl
 
Your code sucks, let's fix it
Your code sucks, let's fix itYour code sucks, let's fix it
Your code sucks, let's fix itRafael Dohms
 
Composer The Right Way - 010PHP
Composer The Right Way - 010PHPComposer The Right Way - 010PHP
Composer The Right Way - 010PHPRafael Dohms
 
Programming objects with android
Programming objects with androidProgramming objects with android
Programming objects with androidfirenze-gtug
 
10 commandments for better android development
10 commandments for better android development10 commandments for better android development
10 commandments for better android developmentTrey Robinson
 
Rethinking Best Practices
Rethinking Best PracticesRethinking Best Practices
Rethinking Best Practicesfloydophone
 
Object Calisthenics Applied to PHP
Object Calisthenics Applied to PHPObject Calisthenics Applied to PHP
Object Calisthenics Applied to PHPGuilherme Blanco
 
Visual guide to selling software as a service by @prezly
Visual guide to selling software as a service by @prezlyVisual guide to selling software as a service by @prezly
Visual guide to selling software as a service by @prezlyPrezly
 
Understanding PHP objects
Understanding PHP objectsUnderstanding PHP objects
Understanding PHP objectsjulien pauli
 
Integrating React.js with PHP projects
Integrating React.js with PHP projectsIntegrating React.js with PHP projects
Integrating React.js with PHP projectsIgnacio Martín
 
Enterprise PHP: mappers, models and services
Enterprise PHP: mappers, models and servicesEnterprise PHP: mappers, models and services
Enterprise PHP: mappers, models and servicesAaron Saray
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...Jérôme Petazzoni
 
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...Aaron Saray
 
Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Scott Wlaschin
 
From Idea to Execution: Spotify's Discover Weekly
From Idea to Execution: Spotify's Discover WeeklyFrom Idea to Execution: Spotify's Discover Weekly
From Idea to Execution: Spotify's Discover WeeklyChris Johnson
 
Linux Profiling at Netflix
Linux Profiling at NetflixLinux Profiling at Netflix
Linux Profiling at NetflixBrendan Gregg
 

Viewers also liked (18)

We Built It, And They Didn't Come!
We Built It, And They Didn't Come!We Built It, And They Didn't Come!
We Built It, And They Didn't Come!
 
Your code sucks, let's fix it
Your code sucks, let's fix itYour code sucks, let's fix it
Your code sucks, let's fix it
 
Composer The Right Way - 010PHP
Composer The Right Way - 010PHPComposer The Right Way - 010PHP
Composer The Right Way - 010PHP
 
Programming objects with android
Programming objects with androidProgramming objects with android
Programming objects with android
 
10 commandments for better android development
10 commandments for better android development10 commandments for better android development
10 commandments for better android development
 
Rethinking Best Practices
Rethinking Best PracticesRethinking Best Practices
Rethinking Best Practices
 
Object Calisthenics Applied to PHP
Object Calisthenics Applied to PHPObject Calisthenics Applied to PHP
Object Calisthenics Applied to PHP
 
Visual guide to selling software as a service by @prezly
Visual guide to selling software as a service by @prezlyVisual guide to selling software as a service by @prezly
Visual guide to selling software as a service by @prezly
 
Understanding PHP objects
Understanding PHP objectsUnderstanding PHP objects
Understanding PHP objects
 
Clean code
Clean codeClean code
Clean code
 
Integrating React.js with PHP projects
Integrating React.js with PHP projectsIntegrating React.js with PHP projects
Integrating React.js with PHP projects
 
How to Design Indexes, Really
How to Design Indexes, ReallyHow to Design Indexes, Really
How to Design Indexes, Really
 
Enterprise PHP: mappers, models and services
Enterprise PHP: mappers, models and servicesEnterprise PHP: mappers, models and services
Enterprise PHP: mappers, models and services
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
 
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
 
Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)
 
From Idea to Execution: Spotify's Discover Weekly
From Idea to Execution: Spotify's Discover WeeklyFrom Idea to Execution: Spotify's Discover Weekly
From Idea to Execution: Spotify's Discover Weekly
 
Linux Profiling at Netflix
Linux Profiling at NetflixLinux Profiling at Netflix
Linux Profiling at Netflix
 

Similar to Kicking the Bukkit: Anatomy of an open source meltdown

CampJS - Making gaming more fun and efficient
CampJS - Making gaming more fun and efficientCampJS - Making gaming more fun and efficient
CampJS - Making gaming more fun and efficientCong Nguyen
 
Boot to Gecko Introduction
Boot to Gecko IntroductionBoot to Gecko Introduction
Boot to Gecko Introduction陳 鵬宇
 
Hackersuli Minecraft hackeles kezdoknek
Hackersuli Minecraft hackeles kezdoknekHackersuli Minecraft hackeles kezdoknek
Hackersuli Minecraft hackeles kezdoknekhackersuli
 
Is Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IVIs Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IVOpersys inc.
 
Multiplayer game with unity3 d and meteor
Multiplayer game with unity3 d and meteorMultiplayer game with unity3 d and meteor
Multiplayer game with unity3 d and meteorDesignveloper
 
Learning to Mod Minecraft: A Father/Daughter Retrospective
Learning to Mod Minecraft: A Father/Daughter RetrospectiveLearning to Mod Minecraft: A Father/Daughter Retrospective
Learning to Mod Minecraft: A Father/Daughter RetrospectiveKevin Hakanson
 
IoT: Contrasting Yocto/Buildroot to binary OSes
IoT: Contrasting Yocto/Buildroot to binary OSesIoT: Contrasting Yocto/Buildroot to binary OSes
IoT: Contrasting Yocto/Buildroot to binary OSesMender.io
 
Intro to Mobile Game Development
Intro to Mobile Game DevelopmentIntro to Mobile Game Development
Intro to Mobile Game DevelopmentShahed Chowdhuri
 
Cloud Foundry Networking: Enabling Direct Communicatitions for Microservices
Cloud Foundry Networking: Enabling Direct Communicatitions for Microservices Cloud Foundry Networking: Enabling Direct Communicatitions for Microservices
Cloud Foundry Networking: Enabling Direct Communicatitions for Microservices VMware Tanzu
 
Cloud gaming infrastructure in cloudretro.io
Cloud gaming infrastructure in cloudretro.ioCloud gaming infrastructure in cloudretro.io
Cloud gaming infrastructure in cloudretro.ioTh Nguy?n H?u
 
Headless Android at AnDevCon3
Headless Android at AnDevCon3Headless Android at AnDevCon3
Headless Android at AnDevCon3Opersys inc.
 
Google I_O extended GDSC ICTU.pptx
Google I_O extended GDSC ICTU.pptxGoogle I_O extended GDSC ICTU.pptx
Google I_O extended GDSC ICTU.pptxDiffouoFopaEsdras
 
Mconf - BigBlueButton Summit
Mconf - BigBlueButton SummitMconf - BigBlueButton Summit
Mconf - BigBlueButton Summitmconf
 
Improving Chromium's code health: Onion Soup and beyond (BlinkOn 11)
Improving Chromium's code health: Onion Soup and beyond (BlinkOn 11)Improving Chromium's code health: Onion Soup and beyond (BlinkOn 11)
Improving Chromium's code health: Onion Soup and beyond (BlinkOn 11)Igalia
 
IoT Development from Prototype to Production
IoT Development from Prototype to ProductionIoT Development from Prototype to Production
IoT Development from Prototype to ProductionMender.io
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesBethmi Gunasekara
 
Cross Platform HTML5 Mobile Development
Cross Platform HTML5 Mobile DevelopmentCross Platform HTML5 Mobile Development
Cross Platform HTML5 Mobile DevelopmentRobert 'Bob' Reyes
 
IoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianIoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianMender.io
 

Similar to Kicking the Bukkit: Anatomy of an open source meltdown (20)

CampJS - Making gaming more fun and efficient
CampJS - Making gaming more fun and efficientCampJS - Making gaming more fun and efficient
CampJS - Making gaming more fun and efficient
 
Boot to Gecko Introduction
Boot to Gecko IntroductionBoot to Gecko Introduction
Boot to Gecko Introduction
 
Hackersuli Minecraft hackeles kezdoknek
Hackersuli Minecraft hackeles kezdoknekHackersuli Minecraft hackeles kezdoknek
Hackersuli Minecraft hackeles kezdoknek
 
Is Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IVIs Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IV
 
Multiplayer game with unity3 d and meteor
Multiplayer game with unity3 d and meteorMultiplayer game with unity3 d and meteor
Multiplayer game with unity3 d and meteor
 
Learning to Mod Minecraft: A Father/Daughter Retrospective
Learning to Mod Minecraft: A Father/Daughter RetrospectiveLearning to Mod Minecraft: A Father/Daughter Retrospective
Learning to Mod Minecraft: A Father/Daughter Retrospective
 
IoT: Contrasting Yocto/Buildroot to binary OSes
IoT: Contrasting Yocto/Buildroot to binary OSesIoT: Contrasting Yocto/Buildroot to binary OSes
IoT: Contrasting Yocto/Buildroot to binary OSes
 
Intro to Mobile Game Development
Intro to Mobile Game DevelopmentIntro to Mobile Game Development
Intro to Mobile Game Development
 
Headless Android
Headless AndroidHeadless Android
Headless Android
 
Cloud Foundry Networking: Enabling Direct Communicatitions for Microservices
Cloud Foundry Networking: Enabling Direct Communicatitions for Microservices Cloud Foundry Networking: Enabling Direct Communicatitions for Microservices
Cloud Foundry Networking: Enabling Direct Communicatitions for Microservices
 
Cloud gaming infrastructure in cloudretro.io
Cloud gaming infrastructure in cloudretro.ioCloud gaming infrastructure in cloudretro.io
Cloud gaming infrastructure in cloudretro.io
 
Mozilla's Boot to Gecko (B2G)
Mozilla's Boot to Gecko (B2G)Mozilla's Boot to Gecko (B2G)
Mozilla's Boot to Gecko (B2G)
 
Headless Android at AnDevCon3
Headless Android at AnDevCon3Headless Android at AnDevCon3
Headless Android at AnDevCon3
 
Google I_O extended GDSC ICTU.pptx
Google I_O extended GDSC ICTU.pptxGoogle I_O extended GDSC ICTU.pptx
Google I_O extended GDSC ICTU.pptx
 
Mconf - BigBlueButton Summit
Mconf - BigBlueButton SummitMconf - BigBlueButton Summit
Mconf - BigBlueButton Summit
 
Improving Chromium's code health: Onion Soup and beyond (BlinkOn 11)
Improving Chromium's code health: Onion Soup and beyond (BlinkOn 11)Improving Chromium's code health: Onion Soup and beyond (BlinkOn 11)
Improving Chromium's code health: Onion Soup and beyond (BlinkOn 11)
 
IoT Development from Prototype to Production
IoT Development from Prototype to ProductionIoT Development from Prototype to Production
IoT Development from Prototype to Production
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologies
 
Cross Platform HTML5 Mobile Development
Cross Platform HTML5 Mobile DevelopmentCross Platform HTML5 Mobile Development
Cross Platform HTML5 Mobile Development
 
IoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianIoT Prototyping using BBB and Debian
IoT Prototyping using BBB and Debian
 

Recently uploaded

JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Anthony Dahanne
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 

Recently uploaded (20)

JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 

Kicking the Bukkit: Anatomy of an open source meltdown

  • 1. Kicking the Bukkit Anatomy of an open source meltdown
  • 2. A little about me ● Ryan Michela (@ryanmichela) ● Plugin author ● Contributor to the Bukkit project
  • 3. Overview ● A brief history of Minecraft ● The rise and fall of Bukkit ● How you can protect your project
  • 4. Brief history of Minecraft ● Minecraft is a sandbox style video game started by Markus “Notch” Presson in 2009 for Mojang Software ● 3rd best selling video game of all time ● >54 million copies http://www.eurogamer.net/articles/2014-06-26-minecrafts-console-versions-have-now-outsold-minecraft-on-pc-mac
  • 5.
  • 6.
  • 7. Brief history of Minecraft ● Beloved by children ● The defining video game of the middle-school generation ● The Super Mario Brothers of the 21st century
  • 8.
  • 9. The genesis of the Bukkit project ● Bukkit - an open-source Minecraft server platform ● Plugin platform for Minecraft ● Started in December 2010 by Dinnerbone, Evilseph, Grum, and Tahg https://github.com/Bukkit/Bukkit/commit/4e8311a6551e8d7794cff73c57a481251b47459c
  • 10. Licensing questions plague infant project ● By January, 2011, the core team started worrying about licensing issues ● Bukkit licensed LGPL, but built on decompiled Minecraft source ● Decompiled Mojang code blended into Bukkit repository http://forums.bukkit.org/threads/where-is-my-bukkit-preview.543/
  • 11. Mixed signals from Mojang Nov 2010: “First of all, most “mods” that add new features to the game are in a very gray area legally, and I frown upon them. Most of them add really cool new features, though. It’s highly likely that something like the bridge mod will make it into the game.” - Notch http://notch.tumblr.com/post/1525944516/an-update-is-coming-tomorrow
  • 12. Mixed signals from Mojang August 2012: “Personally, I used to feel threatened by it as I felt it challenged my “vision,” but on the other hand, I also know how wonderful mods are for games. We decided to just let it happen, and I’m very happy we did. Mods are a huge reason of what Minecraft is.” - Notch http://www.vg247.com/2012/08/01/notch-minecraft-mod-used-to-threaten-my-vision-minecraft-creator-speaks/
  • 13. Mojang hires Bukkit team ● Feb 28, 2012 - Mojang hires core Bukkit team to work on official modding API ● Mojang offers to help with Bukkit ○ “We will, however, help bukkit to be compatible with 1.2, to avoid having a long gap while you wait for the official Minecraft server to catch up.” ● Licensing fears mostly alleviated http://mojang.com/2012/02/minecraft-team-strengthened/
  • 14.
  • 15. But darkness was brewing in the community ● Opportunistic server owners started charging for in-game perks, calling them “donations” ● Angry parents complain to Mojang ● "I don’t even know how many emails we’ve gotten from parents, asking for their hundred dollars back their kid spent on an item pack on a server we have no control over." - Notch http://notch.net/2014/06/literally-worse-than-ea/
  • 16. Pay-to-win becomes commonplace ● Big servers start selling off in-game functionality ● $10k for “rank” in a game targeted at children
  • 17. Mojang updates its EULA (and fails at public relations) ● June, 2014 - Mojang awkwardly chastises for-profit server owners on IRC ○ “doesn't matter at all, based on plugins or not, you cannot make money with Minecraft without our permission :)” ○ “running servers is *NOT* A BUSINESS*” ○ “We'll ask nicely and then send really mean lawyers :)” http://blog.tian.io/mojang-threatens-lawyers-against-pay-to-win-minecraft-server-operators
  • 19. EULA changes drop bombshell on Bukkit ● “The one major rule is that you must not distribute anything we‘ve made.” ● “so that we are crystal clear, what we have made includes, but is not limited to, the client or the server software for our Game. It also includes modified versions of a Game, part of it or anything else we‘ve made.” https://account.mojang.com/documents/minecraft_eula
  • 20. Evilseph shutters Bukkit project ● August 21, 2014 ● Development team burnt out ● No support from Mojang ● EULA re-raises specter of infringement
  • 21. “At this point in time, I think it's safe to say that it's no longer worth it for us to put up a fight when it comes to keeping Bukkit and modding alive. With large and significant changes coming in Minecraft 1.8 that we'll be hard pressed to provide support for and the lack of support from Mojang with updates since acquiring our original core team (Mojang used to provide us with mappings to speed up the update process), there is little motivation for us to continue limping on across various aspects of the project.” - Evilseph http://forums.bukkit.org/threads/bukkit-its-time-to-say.305106/
  • 22. Mojang owns bukkit?! ● Mojang secretly bought Bukkit when they hired the core development team https://storify.com/lukegb/the-tale-of-bukkit-for-minecraft-1-8
  • 24.
  • 25. Then the DMCA gets involved September 3, 2014 - Wolvereness, a long-time Bukkit developer, files a DMCA takedown notice against all versions of Bukkit hosted on the main Bukkit download servers at Multiplay
  • 26. Wolvereness’ Claim The provided license requires the use of included or linking code to provide the original source under the GNU GPL license version 3, or any later version. An official notice has been sent to Mojang AB, whereas the Chief Operating Officer, Vu Bui, responded with the clear text: Mojang has not authorized the inclusion of any of its proprietary Minecraft software (including its Minecraft Server software) within the Bukkit project to be included in or made subject to any GPL or LGPL license, or indeed any other open source license As the Minecraft Server software is included in CraftBukkit, and the original code has not been provided or its use authorized, this is a violation of my copyright. I have a good faith belief the distribution of CraftBukkit includes content of which the distribution is not authorized by the copyright owner, it's agent, or the law. http://dl.bukkit.org/dmca/notification.txt
  • 27. Gone from the internet ● September 5, 2014 - Wolvereness shuts down Bukkit repo on GitHub ● September 6, 2014 - Wolvereness shuts down SpigotMC and Cauldron, forks of Bukkt https://github.com/github/dmca/blob/master/2014-09-05-CraftBukkit.md http://www.spigotmc.org/threads/our-dmca-response.28772/
  • 28.
  • 29. Great new things in the future ● Sponge Project steps up ● Microsoft buys Mojang - $2.5B http://abc13.com/news/software-writer-in-la-marque-latest-swatting-victim/305170/ https://mojang.com/2014/09/yes-were-being-bought-by-microsoft
  • 30.
  • 32. Reason 1: Questionable inclusion of decompiled code in an open source project ● Bukkit built on top of partially decompiled Mojang code ● Mojang code blended with Bukkit code in Github
  • 33. Reason 2: Questionable application of (L)GPL3 ● GPL3 chosen without proper consideration of consequences ● Unmodified Mojang .class files distributed as part of Bukkit .jar using Maven shade ● LGPL3 explicitly bans linking and distributing non-free code
  • 34. Reason 3: Questionable relationship with Mojang Software ● What exactly did Mojang buy? Bukkit code? Logos? Domains? - Nobody knows ● Mojang success was built on the backs of volunteers ○ Reverse engineering is torturous work ○ Some developers feel they were taken advantage of
  • 35. Reason 4: No contributor license agreement ● 125+ developers each own their own piece of Bukkit ● Project couldn’t re-license with more permissive license
  • 36. Reason 5: Unhappy developer community ● EULA changes ● Terrible Mojang PR ● Secretly selling the project
  • 37. It only takes one unhappy developer to kill an unprotected project
  • 38.
  • 39. Thoroughly consider your license before your first commit ● Which license do you choose? ○ MIT? ○ Apache? ○ GPL? ○ Other? ● Changing your license after accepting contributions is not trivial
  • 41. ● Node ● Bootstrap ● JQuery ● Rails ● Apache.* ● Docker ● NuGet ● Android ● Linux ● Git ● Mongo (AGPL) ● Discourse
  • 42. MIT vs. Apache Permissive licensing ● MIT - Do whatever you want ● Apache - Patent protection
  • 43. GPL vs. LGPL vs. AGPL Restrictive licensing ● GPL - products ● LGPL - libraries ● AGPL - network services
  • 45. Thoroughly vet the licenses of all components you modify or link against ● If your dependencies licenses are incompatible with your license, your license may be invalid ● http://www.gnu.org/licenses/license-list.html ● Unlicensed code is a landmine
  • 46. Common license compatibility David A. Wheeler, The Free-Libre / Open Source Software (FLOSS) License Slide http://www.dwheeler.com/essays/floss-license-slide.html
  • 47. Avoid uncommon or “off brand” licenses ● Legal ramifications less understood ● License compatibility less understood ● Don’t “roll your own”
  • 48. Consider a Contributor License Agreement ● Typically grants or transfers copyright to the project ● http://www.clahub.com - for Github projects
  • 49.
  • 50. Avoid pinning the survival of your open-source project on the good graces of a for-profit company
  • 51. Avoid directly linking to closed source code in an open source project
  • 52. Avoid alienating your entire developer community simultaneously
  • 53. Avoid operating your project in another company’s legal gray area
  • 54. And especially: Don’t secretly sell your open source project to a for-profit company while continuing to accept contributions