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

REST API Design & Development
REST API Design & DevelopmentREST API Design & Development
REST API Design & DevelopmentAshok Pundit
 
Swagger - make your API accessible
Swagger - make your API accessibleSwagger - make your API accessible
Swagger - make your API accessibleVictor Trakhtenberg
 
Pune Flutter Presents - Flutter 101
Pune Flutter Presents - Flutter 101Pune Flutter Presents - Flutter 101
Pune Flutter Presents - Flutter 101Arif Amirani
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android DevelopmentAly Abdelkareem
 
Flutter presentation.pptx
Flutter presentation.pptxFlutter presentation.pptx
Flutter presentation.pptxFalgunSorathiya
 
API Best Practices
API Best PracticesAPI Best Practices
API Best PracticesSai Koppala
 
OAuth2 - Introduction
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - IntroductionKnoldus Inc.
 
Django Introduction & Tutorial
Django Introduction & TutorialDjango Introduction & Tutorial
Django Introduction & Tutorial之宇 趙
 
API Business Models
API Business ModelsAPI Business Models
API Business ModelsJohn Musser
 
Curso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está ComeçandoCurso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está ComeçandoLoiane Groner
 
Introduction to Swagger
Introduction to SwaggerIntroduction to Swagger
Introduction to SwaggerKnoldus Inc.
 
REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUDPrem Sanil
 
Introduction to flutter's basic concepts
Introduction to flutter's basic conceptsIntroduction to flutter's basic concepts
Introduction to flutter's basic conceptsKumaresh Chandra Baruri
 

What's hot (20)

REST API Design & Development
REST API Design & DevelopmentREST API Design & Development
REST API Design & Development
 
Swagger - make your API accessible
Swagger - make your API accessibleSwagger - make your API accessible
Swagger - make your API accessible
 
Pune Flutter Presents - Flutter 101
Pune Flutter Presents - Flutter 101Pune Flutter Presents - Flutter 101
Pune Flutter Presents - Flutter 101
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android Development
 
Flutter presentation.pptx
Flutter presentation.pptxFlutter presentation.pptx
Flutter presentation.pptx
 
API Best Practices
API Best PracticesAPI Best Practices
API Best Practices
 
Flutter introduction
Flutter introductionFlutter introduction
Flutter introduction
 
OAuth2 - Introduction
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - Introduction
 
Django Introduction & Tutorial
Django Introduction & TutorialDjango Introduction & Tutorial
Django Introduction & Tutorial
 
API Business Models
API Business ModelsAPI Business Models
API Business Models
 
Curso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está ComeçandoCurso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está Começando
 
Introduction to Swagger
Introduction to SwaggerIntroduction to Swagger
Introduction to Swagger
 
Flutter
FlutterFlutter
Flutter
 
Flutter
FlutterFlutter
Flutter
 
REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUD
 
How to use shodan more powerful
How to use shodan more powerful How to use shodan more powerful
How to use shodan more powerful
 
Appium
AppiumAppium
Appium
 
Introduction to flutter's basic concepts
Introduction to flutter's basic conceptsIntroduction to flutter's basic concepts
Introduction to flutter's basic concepts
 
API for Beginners
API for BeginnersAPI for Beginners
API for Beginners
 
Kong API
Kong APIKong API
Kong API
 

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

Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
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
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
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
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
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
 
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
 
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
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
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
 
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
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
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
 
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
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
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
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdfAndrey Devyatkin
 

Recently uploaded (20)

Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
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
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
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
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
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
 
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 ?
 
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
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
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
 
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
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
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
 
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...
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
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
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
 

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