SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
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
Kicking the Bukkit: Anatomy of an open source meltdown
Kicking the Bukkit: Anatomy of an open source meltdown
Brief history of Minecraft 
● Beloved by children 
● The defining video game of the middle-school 
generation 
● The Super Mario Brothers of the 21st 
century
Kicking the Bukkit: Anatomy of an open source meltdown
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/
Kicking the Bukkit: Anatomy of an open source meltdown
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
Kicking the Bukkit: Anatomy of an open source meltdown
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/
Kicking the Bukkit: Anatomy of an open source meltdown
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
Kicking the Bukkit: Anatomy of an open source meltdown
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
Kicking the Bukkit: Anatomy of an open source meltdown
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
Kicking the Bukkit: Anatomy of an open source meltdown
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

Más contenido relacionado

La actualidad más candente

왜 내 게임은완성되지않을까 / 소규모 & 아마추어 팀 편
왜 내 게임은완성되지않을까 / 소규모 & 아마추어 팀 편왜 내 게임은완성되지않을까 / 소규모 & 아마추어 팀 편
왜 내 게임은완성되지않을까 / 소규모 & 아마추어 팀 편Daehoon Han
 
Game Design Document
Game Design DocumentGame Design Document
Game Design DocumentKika Syafii
 
LAFS PREPRO Session 2 - Game Documentation
LAFS PREPRO Session 2 - Game DocumentationLAFS PREPRO Session 2 - Game Documentation
LAFS PREPRO Session 2 - Game DocumentationDavid Mullich
 
Cerny method
Cerny methodCerny method
Cerny methodTim Holt
 
레벨 디자인 튜토리얼: 전장
레벨 디자인 튜토리얼: 전장레벨 디자인 튜토리얼: 전장
레벨 디자인 튜토리얼: 전장용태 이
 
Shader model 5 0 and compute shader
Shader model 5 0 and compute shaderShader model 5 0 and compute shader
Shader model 5 0 and compute shaderzaywalker
 
Game design dan game designer
Game design dan game designerGame design dan game designer
Game design dan game designerToto Haryadi
 
自力でゲームのSEを生成する方法 by 「ADX2 LE」
自力でゲームのSEを生成する方法 by 「ADX2 LE」自力でゲームのSEを生成する方法 by 「ADX2 LE」
自力でゲームのSEを生成する方法 by 「ADX2 LE」Takaaki Ichijo
 
Video Games Industry Overview
Video Games Industry OverviewVideo Games Industry Overview
Video Games Industry OverviewMedia Studies
 
The History Of Video Games
The History Of Video GamesThe History Of Video Games
The History Of Video Gameschris dejong
 
Presentacion de diapositivas historia de los video juegos
Presentacion de diapositivas  historia de los video juegosPresentacion de diapositivas  historia de los video juegos
Presentacion de diapositivas historia de los video juegosFercho UC
 
KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기용태 이
 
목적으로써의 게임, 도구로써의 게임
목적으로써의 게임, 도구로써의 게임목적으로써의 게임, 도구로써의 게임
목적으로써의 게임, 도구로써의 게임KwangSam Kim
 
Game development
Game developmentGame development
Game developmentRareCoders
 
FPS 레벨 디자인_포트폴리오_폭파미션 Nuclear Power Plant
FPS 레벨 디자인_포트폴리오_폭파미션 Nuclear Power PlantFPS 레벨 디자인_포트폴리오_폭파미션 Nuclear Power Plant
FPS 레벨 디자인_포트폴리오_폭파미션 Nuclear Power Plantdongjidong
 

La actualidad más candente (20)

왜 내 게임은완성되지않을까 / 소규모 & 아마추어 팀 편
왜 내 게임은완성되지않을까 / 소규모 & 아마추어 팀 편왜 내 게임은완성되지않을까 / 소규모 & 아마추어 팀 편
왜 내 게임은완성되지않을까 / 소규모 & 아마추어 팀 편
 
Game Design Document
Game Design DocumentGame Design Document
Game Design Document
 
LAFS PREPRO Session 2 - Game Documentation
LAFS PREPRO Session 2 - Game DocumentationLAFS PREPRO Session 2 - Game Documentation
LAFS PREPRO Session 2 - Game Documentation
 
Phases of game development
Phases of game developmentPhases of game development
Phases of game development
 
History of games
History of gamesHistory of games
History of games
 
Cerny method
Cerny methodCerny method
Cerny method
 
레벨 디자인 튜토리얼: 전장
레벨 디자인 튜토리얼: 전장레벨 디자인 튜토리얼: 전장
레벨 디자인 튜토리얼: 전장
 
Shader model 5 0 and compute shader
Shader model 5 0 and compute shaderShader model 5 0 and compute shader
Shader model 5 0 and compute shader
 
ELECTRONIC ARTS
ELECTRONIC ARTSELECTRONIC ARTS
ELECTRONIC ARTS
 
Game design dan game designer
Game design dan game designerGame design dan game designer
Game design dan game designer
 
自力でゲームのSEを生成する方法 by 「ADX2 LE」
自力でゲームのSEを生成する方法 by 「ADX2 LE」自力でゲームのSEを生成する方法 by 「ADX2 LE」
自力でゲームのSEを生成する方法 by 「ADX2 LE」
 
Video Games Industry Overview
Video Games Industry OverviewVideo Games Industry Overview
Video Games Industry Overview
 
The History Of Video Games
The History Of Video GamesThe History Of Video Games
The History Of Video Games
 
Presentacion de diapositivas historia de los video juegos
Presentacion de diapositivas  historia de los video juegosPresentacion de diapositivas  historia de los video juegos
Presentacion de diapositivas historia de los video juegos
 
KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기
 
日本ゲーム産業史(関西大学講演)Up用
日本ゲーム産業史(関西大学講演)Up用日本ゲーム産業史(関西大学講演)Up用
日本ゲーム産業史(関西大学講演)Up用
 
목적으로써의 게임, 도구로써의 게임
목적으로써의 게임, 도구로써의 게임목적으로써의 게임, 도구로써의 게임
목적으로써의 게임, 도구로써의 게임
 
Game development
Game developmentGame development
Game development
 
Game Design
Game DesignGame Design
Game Design
 
FPS 레벨 디자인_포트폴리오_폭파미션 Nuclear Power Plant
FPS 레벨 디자인_포트폴리오_폭파미션 Nuclear Power PlantFPS 레벨 디자인_포트폴리오_폭파미션 Nuclear Power Plant
FPS 레벨 디자인_포트폴리오_폭파미션 Nuclear Power Plant
 

Destacado

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
 

Destacado (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 a 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陳 鵬宇
 
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
 
Microservices Development Process at Predix.io
Microservices Development Process at Predix.ioMicroservices Development Process at Predix.io
Microservices Development Process at Predix.ioConstantine Grigel
 

Similar a 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
 
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
 
Microservices Development Process at Predix.io
Microservices Development Process at Predix.ioMicroservices Development Process at Predix.io
Microservices Development Process at Predix.io
 

Último

VuNet software organisation powerpoint deck
VuNet software organisation powerpoint deckVuNet software organisation powerpoint deck
VuNet software organisation powerpoint deckNaval Singh
 
BusinessGPT - SECURITY AND GOVERNANCE FOR GENERATIVE AI.pptx
BusinessGPT  - SECURITY AND GOVERNANCE  FOR GENERATIVE AI.pptxBusinessGPT  - SECURITY AND GOVERNANCE  FOR GENERATIVE AI.pptx
BusinessGPT - SECURITY AND GOVERNANCE FOR GENERATIVE AI.pptxAGATSoftware
 
User Experience Designer | Kaylee Miller Resume
User Experience Designer | Kaylee Miller ResumeUser Experience Designer | Kaylee Miller Resume
User Experience Designer | Kaylee Miller ResumeKaylee Miller
 
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdfFlutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdfMind IT Systems
 
Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...
Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...
Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...Splashtop Inc
 
Building Generative AI-infused apps: what's possible and how to start
Building Generative AI-infused apps: what's possible and how to startBuilding Generative AI-infused apps: what's possible and how to start
Building Generative AI-infused apps: what's possible and how to startMaxim Salnikov
 
Enterprise Content Managements Solutions
Enterprise Content Managements SolutionsEnterprise Content Managements Solutions
Enterprise Content Managements SolutionsIQBG inc
 
Einstein Copilot Conversational AI for your CRM.pdf
Einstein Copilot Conversational AI for your CRM.pdfEinstein Copilot Conversational AI for your CRM.pdf
Einstein Copilot Conversational AI for your CRM.pdfCloudMetic
 
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...telebusocialmarketin
 
Mobile App Development process | Expert Tips
Mobile App Development process | Expert TipsMobile App Development process | Expert Tips
Mobile App Development process | Expert Tipsmichealwillson701
 
Unlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsUnlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsconfluent
 
openEuler Community Overview - a presentation showing the current scale
openEuler Community Overview - a presentation showing the current scaleopenEuler Community Overview - a presentation showing the current scale
openEuler Community Overview - a presentation showing the current scaleShane Coughlan
 
renewable energy renewable energy renewable energy renewable energy
renewable energy renewable energy renewable energy  renewable energyrenewable energy renewable energy renewable energy  renewable energy
renewable energy renewable energy renewable energy renewable energyjeyasrig
 
8 key point on optimizing web hosting services in your business.pdf
8 key point on optimizing web hosting services in your business.pdf8 key point on optimizing web hosting services in your business.pdf
8 key point on optimizing web hosting services in your business.pdfOffsiteNOC
 
Steps to Successfully Hire Ionic Developers
Steps to Successfully Hire Ionic DevelopersSteps to Successfully Hire Ionic Developers
Steps to Successfully Hire Ionic Developersmichealwillson701
 
CYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptx
CYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptxCYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptx
CYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptxBarakaMuyengi
 
8 Steps to Build a LangChain RAG Chatbot.
8 Steps to Build a LangChain RAG Chatbot.8 Steps to Build a LangChain RAG Chatbot.
8 Steps to Build a LangChain RAG Chatbot.Ritesh Kanjee
 
Revolutionize Your Field Service Management with FSM Grid
Revolutionize Your Field Service Management with FSM GridRevolutionize Your Field Service Management with FSM Grid
Revolutionize Your Field Service Management with FSM GridMathew Thomas
 
MUT4SLX: Extensions for Mutation Testing of Stateflow Models
MUT4SLX: Extensions for Mutation Testing of Stateflow ModelsMUT4SLX: Extensions for Mutation Testing of Stateflow Models
MUT4SLX: Extensions for Mutation Testing of Stateflow ModelsUniversity of Antwerp
 
If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...
If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...
If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...Maxim Salnikov
 

Último (20)

VuNet software organisation powerpoint deck
VuNet software organisation powerpoint deckVuNet software organisation powerpoint deck
VuNet software organisation powerpoint deck
 
BusinessGPT - SECURITY AND GOVERNANCE FOR GENERATIVE AI.pptx
BusinessGPT  - SECURITY AND GOVERNANCE  FOR GENERATIVE AI.pptxBusinessGPT  - SECURITY AND GOVERNANCE  FOR GENERATIVE AI.pptx
BusinessGPT - SECURITY AND GOVERNANCE FOR GENERATIVE AI.pptx
 
User Experience Designer | Kaylee Miller Resume
User Experience Designer | Kaylee Miller ResumeUser Experience Designer | Kaylee Miller Resume
User Experience Designer | Kaylee Miller Resume
 
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdfFlutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
 
Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...
Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...
Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...
 
Building Generative AI-infused apps: what's possible and how to start
Building Generative AI-infused apps: what's possible and how to startBuilding Generative AI-infused apps: what's possible and how to start
Building Generative AI-infused apps: what's possible and how to start
 
Enterprise Content Managements Solutions
Enterprise Content Managements SolutionsEnterprise Content Managements Solutions
Enterprise Content Managements Solutions
 
Einstein Copilot Conversational AI for your CRM.pdf
Einstein Copilot Conversational AI for your CRM.pdfEinstein Copilot Conversational AI for your CRM.pdf
Einstein Copilot Conversational AI for your CRM.pdf
 
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
 
Mobile App Development process | Expert Tips
Mobile App Development process | Expert TipsMobile App Development process | Expert Tips
Mobile App Development process | Expert Tips
 
Unlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsUnlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insights
 
openEuler Community Overview - a presentation showing the current scale
openEuler Community Overview - a presentation showing the current scaleopenEuler Community Overview - a presentation showing the current scale
openEuler Community Overview - a presentation showing the current scale
 
renewable energy renewable energy renewable energy renewable energy
renewable energy renewable energy renewable energy  renewable energyrenewable energy renewable energy renewable energy  renewable energy
renewable energy renewable energy renewable energy renewable energy
 
8 key point on optimizing web hosting services in your business.pdf
8 key point on optimizing web hosting services in your business.pdf8 key point on optimizing web hosting services in your business.pdf
8 key point on optimizing web hosting services in your business.pdf
 
Steps to Successfully Hire Ionic Developers
Steps to Successfully Hire Ionic DevelopersSteps to Successfully Hire Ionic Developers
Steps to Successfully Hire Ionic Developers
 
CYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptx
CYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptxCYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptx
CYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptx
 
8 Steps to Build a LangChain RAG Chatbot.
8 Steps to Build a LangChain RAG Chatbot.8 Steps to Build a LangChain RAG Chatbot.
8 Steps to Build a LangChain RAG Chatbot.
 
Revolutionize Your Field Service Management with FSM Grid
Revolutionize Your Field Service Management with FSM GridRevolutionize Your Field Service Management with FSM Grid
Revolutionize Your Field Service Management with FSM Grid
 
MUT4SLX: Extensions for Mutation Testing of Stateflow Models
MUT4SLX: Extensions for Mutation Testing of Stateflow ModelsMUT4SLX: Extensions for Mutation Testing of Stateflow Models
MUT4SLX: Extensions for Mutation Testing of Stateflow Models
 
If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...
If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...
If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...
 

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