CINXE.COM

Dolphin Emulator - Relicensing Dolphin: The long road to GPLv2+

<!DOCTYPE html> <html lang="en-us" dir="ltr"> <head> <meta charset="utf-8"> <title>Dolphin Emulator - Relicensing Dolphin: The long road to GPLv2+</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Since its resurfacing as an open source project in 2008, Dolphin has been licensed under the GNU General Public License version 2 (GPLv2). This license, created in 1991, is still a fairly common license used in the open source world. But as with anything that deals with technology, times are changing at a rapid rate."> <meta property="twitter:title" content="Relicensing Dolphin: The long road to GPLv2+"> <meta property="og:title" content="Relicensing Dolphin: The long road to GPLv2+"> <meta property="og:description" content="Since its resurfacing as an open source project in 2008, Dolphin has been licensed under the GNU General Public License version 2 (GPLv2). This license, created in 1991, is still a fairly common license used in the open source world. But as with anything that deals with technology, times are changing at a rapid rate."> <meta property="og:type" content="article"> <meta property="og:article:published_time" content="2015-05-25T13:54:30+02:00"> <meta property="og:site_name" content="Dolphin Emulator" /> <meta property="fb:admins" content="1064682820" /> <link rel="shortcut icon" href="https://dolphin-emu.org/m/static/img/favicon.0885422b72c1.ico" /> <link rel="alternate" type="application/atom+xml" title="Latest blog articles" href="/blog/feeds/" /> <link rel="alternate" hreflang="ast" href="//ast.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="ms-MY" href="//ms.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="ca" href="//ca.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="cs" href="//cs.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="cy" href="//cy.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="da" href="//da.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="de" href="//de.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="es" href="//es.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="el" href="//el.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="fr" href="//fr.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="gl" href="//gl.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="it" href="//it.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="hu" href="//hu.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="nl" href="//nl.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="nb" href="//nb.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="pl" href="//pl.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="pt" href="//pt.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="pt-BR" href="//br.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="ru" href="//ru.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="sv" href="//sv.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="tr" href="//tr.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="zh-CN" href="//cn.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="ja" href="//ja.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link rel="alternate" hreflang="ko" href="//ko.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/" /> <link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css" rel="stylesheet"> <link href="https://dolphin-emu.org/m/static/css/bootstrap.min.9e0acbc8a914.css" rel="stylesheet"> <link href="https://dolphin-emu.org/m/static/css/bootstrap-theme.min.c1c924a4f6b3.css" rel="stylesheet"> <link href="https://dolphin-emu.org/m/static/css/dolphin.95e230e3d5d6.css" rel="stylesheet"> <link href="https://dolphin-emu.org/m/static/sprites/nav.49b60948af59.css" rel="stylesheet"> <script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/9.3.2/highcharts.js" integrity="sha512-dm3Cn0X6XyRMz52WqL1wag+e2WCNAnggh2+4mv/9Ngd+IhBIH9NEQYUZ4g3A6GJUbhKrGw5hErqcFIyk73lUgA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/9.3.2/modules/data.min.js" integrity="sha512-8b+GXbLsl2QWPgMMRF/q2/fBYSHd/xl0IezPaedR+yNdRtfjhEWPxJ4jaBSMfWmpIm04KJwC2RROO7auA1yxXg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script> var CHART_ID = 0; function addChart(options) { var this_id = CHART_ID++; document.write('<div id="chart' + CHART_ID + '"></div>'); options['credits'] = false; options['chart'] = options['chart'] || {}; options['chart']['style'] = options['chart']['style'] || {}; options['chart']['style']['fontFamily'] = 'Helvetica Neue,Helvetica,Arial,sans-serif'; Highcharts.chart("chart" + CHART_ID, options); } </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8646203626363069" crossorigin="anonymous"></script> </head> <body> <div id="navbar-dolphin" class="navbar navbar-inverse"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-logo" href="/"><img src="https://dolphin-emu.org/m/static/img/logo.72ba8e6312af.png" height="32" alt="Dolphin Emulator"></a> </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav pull-left"> <li><a href="/download/">Download</a></li> <li><a href="/blog/">Blog</a></li> <li><a href="/media/">Screenshots</a></li> <li><a href="/docs/faq/">FAQ</a></li> <li><a href="/docs/guides/">Guides</a></li> <li><a href="/compat/">Compatibility</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Community <b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="https://discord.dolphin-emu.org/">Discord</a></li> <li><a href="https://forums.dolphin-emu.org/">Forum</a></li> <li><a href="https://wiki.dolphin-emu.org/">Wiki</a></li> <li><a href="https://github.com/dolphin-emu/dolphin">GitHub</a></li> </ul> </li> </ul> <ul class="nav navbar-nav pull-right"> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"><div class="flag curr-flag sprite-nav-en"></div> <span>English</span> <b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="//ast.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-ast"></div><span dir="ltr">Asturianu</span></a></li> <li><a href="//ms.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-ms"></div><span dir="ltr">Bahasa Melayu</span></a></li> <li><a href="//ca.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-ca"></div><span dir="ltr">Català</span></a></li> <li><a href="//cs.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-cs"></div><span dir="ltr">Česky</span></a></li> <li><a href="//cy.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-cy"></div><span dir="ltr">Cymraeg</span></a></li> <li><a href="//da.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-da"></div><span dir="ltr">Dansk</span></a></li> <li><a href="//de.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-de"></div><span dir="ltr">Deutsch</span></a></li> <li><a href="//es.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-es"></div><span dir="ltr">Español</span></a></li> <li><a href="//el.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-el"></div><span dir="ltr">Ελληνικά</span></a></li> <li><a href="//fr.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-fr"></div><span dir="ltr">Français</span></a></li> <li><a href="//gl.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-gl"></div><span dir="ltr">Galego</span></a></li> <li><a href="//it.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-it"></div><span dir="ltr">Italiano</span></a></li> <li><a href="//hu.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-hu"></div><span dir="ltr">Magyar</span></a></li> <li><a href="//nl.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-nl"></div><span dir="ltr">Nederlands</span></a></li> <li><a href="//nb.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-nb"></div><span dir="ltr">Norsk (Bokmål)</span></a></li> <li><a href="//pl.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-pl"></div><span dir="ltr">Polski</span></a></li> <li><a href="//pt.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-pt"></div><span dir="ltr">Português</span></a></li> <li><a href="//br.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-br"></div><span dir="ltr">Português (Brasil)</span></a></li> <li><a href="//ru.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-ru"></div><span dir="ltr">Русский</span></a></li> <li><a href="//sv.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-sv"></div><span dir="ltr">Svenska</span></a></li> <li><a href="//tr.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-tr"></div><span dir="ltr">Türkçe</span></a></li> <li><a href="//cn.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-cn"></div><span dir="ltr">中文(中国)</span></a></li> <li><a href="//ja.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-ja"></div><span dir="ltr">日本語</span></a></li> <li><a href="//ko.dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/?nocr=true"><div class="flag sprite-nav-ko"></div><span dir="ltr">한국어</span></a></li> </ul> </li> </ul> </div> </div> </div> <div class="container"> <div role="alert" class="alert alert-info"> <div class="skg-alert"> Our mission is to preserve video games. If you are an EU citizen you can help us in our mission by signing the <a href="https://www.stopkillinggames.com">Stop Killing Games</a> EU initiative! <div class="skg-btn"> <a href="https://eci.ec.europa.eu/045/public/" role="button" class="btn btn-info">Sign Now</a> </div> </div> </div> <div class="row"> <div class="col-md-9 col-md-push-3" style="margin-top: 1em"> <ol class="breadcrumb"> <li> <a href="/blog/" title="Blog">Blog</a> </li> <li> <a href="/blog/2015/" title="2015">2015</a> </li> <li> <a href="/blog/2015/05/" title="May">May</a> </li> <li> <a href="/blog/2015/05/25/" title="25">25</a> </li> <li> Relicensing Dolphin: The long road to GPLv2+ </li> </ol> <a href="/blog/feeds/" class="rss-tag pull-right" title="RSS feed of the latest articles"><i class="icon-rss"></i></a> <div id="entry-79" class="hentry"> <div class="entry-header"> <h2 class="entry-title"> <a href="/blog/2015/05/25/relicensing-dolphin/" title="Relicensing Dolphin: The long road to GPLv2+" rel="bookmark"> Relicensing Dolphin: The long road to GPLv2+ </a> </h2> <div class="entry-meta-line"> <p class="entry-info"> Written by <span class="vcard author"> <a href="/blog/authors/JMC47/" class="fn url nickname" rel="author" title="Show all JMC47's entries">JMC47</a></span>, <span class="vcard author"> <a href="/blog/authors/MayImilae/" class="fn url nickname" rel="author" title="Show all MayImilae's entries">MayImilae</a></span> on <abbr class="published" title="2015-05-25T13:54:30+02:00">May 25, 2015</abbr> </p> <p class="entry-last-update"> / Last update on <abbr class="updated" title="2015-05-27T05:57:49.002082+02:00">May 27, 2015</abbr> / <a href="https://dolphin-emu.org/blog/27/" title="Short URL to Relicensing Dolphin: The long road to GPLv2+" rel="shortlink">Short link</a> / <i class="icon-comments"></i> <a href="https://forums.dolphin-emu.org/showthread.php?tid=40298" title="Visit forum thread for this article">Forum thread</a> </p> </div> </div> <div class="entry-body"> <div class="entry-content"> <div style="max-width: 100%; margin: auto; margin-bottom: 1em;"> <img style="width: 100%" src="https://dolphin-emu.org/m/user/blog/relicensing/relicensingheader.jpg"> </div> <p><br/></p> <p>Since its resurfacing as an open source project in 2008, Dolphin has been licensed under the GNU <a href="http://www.gnu.org/licenses/gpl-2.0.html">General Public License version 2 (GPLv2)</a>. This license, created in 1991, is still a fairly common license used in the open source world. But as with anything that deals with technology, times are changing at a rapid rate. More recent projects are using <a href="http://www.gnu.org/licenses/gpl.html">GNU Public License version 3</a> and <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>, for their additional freedoms, protections from outside liability, and improved inter-license compatibility. Unfortunately these newer licenses are not compatible with GPLv2, and any project using these licenses cannot link to Dolphin and thus, Dolphin cannot link to them.</p> <p>Back in 2008, GPLv3 had just come out and most projects were GPLv2, so licensing the project GPLv2 seemed like the smartest decision at the time. Since then, one of Dolphin's original founders, <a href="https://github.com/hrydgard">ector</a>, has repeatedly mentioned how he regrets licensing Dolphin under GPLv2 instead of GPLv2+. GPLv2+ allows a later version of the GPL license to be substituted in place of GPLv2. This includes new licenses as they are released, so while GPLv2+ only means GPLv2 and GPLv3 right now, it will include GPLv4 onward once they're released. This gives a project a lot of leeway when linking with other software that a static license does not. Case in point, ector recently relicensed another extremely successful emulator he founded, <a href="http://ppsspp.org/">PPSSPP</a>, under GPLv2+.</p> <p>Though many knew that licensing issues were inevitable, relicensing was repeatedly shelved so everyone could remain focused on improving the emulator. And for many many years, GPLv2 was perfectly fine for Dolphin with licensing issues staying out of the way of development.</p> <p><br/></p> <h3 id="licensing-conflicts"><strong>Licensing Conflicts</strong><a class="headerlink" href="#licensing-conflicts" title="Permanent link">&para;</a></h3> <p>Licensing problems jumped to the forefront of development early last year when it was brought to our attention that Dolphin's Android builds were linking to Apache 2.0 licensed APIs. As noted, <a href="https://www.apache.org/licenses/GPL-compatibility.html">Apache 2.0 is not compatible with GPLv2</a>. The Free Software Foundation cited that "the patent termination and indemnification provisions as restrictions not present in the older GPL license." This meant that we were technically in violation of our license even though we weren't aware of it until that point.</p> <p>A minor maintenance pull request was <a href="https://github.com/dolphin-emu/dolphin/pull/1019">cancelled</a> in order to prevent more licensing issues while bigger decisions needed more time. This left a dark cloud hovering over Dolphin's Android release with only two options; either relicense the whole project or the Android version had to be scrapped. It took years of development to get it this far after fighting <a href="https://dolphin-emu.org/blog/2013/09/26/dolphin-emulator-and-opengl-drivers-hall-fameshame/">immature drivers</a>, weak hardware and other limitations in order to bring GameCube/Wii emulation to Android devices. To see a roadblock such as this come up just as chipsets are getting to the point where they can run games at full speed was a brutal wakeup call.</p> <p>Similar incompatibilities were discovered within Dolphin making the situation much more urgent. The Qt5 frontend would be limited, as <a href="http://doc.qt.io/qt-5/licensing.html#licenses-used-in-qt">newer modules</a> are not compatible GPLv2. Other new features, including Virtual Reality support, would be nearly impossible to implement without relying on libraries that could not be used under the current licensing situation. The situation had finally reached a tipping point.</p> <p><br/></p> <p><center><strong>Super Mario Sunshine on Android</strong></center> <div class="text-center"><iframe width="480" height="260" src="//www.youtube.com/embed/2ZUPiyM5jfw" frameborder="0" allowfullscreen></iframe></div> <center>Without relicensing, some exciting new features would be nothing but lost potential.</center> <br/> <center>Dolphin Virtual Reality Technical Preview: Exploring Outset Island</center> <div class="text-center"><iframe width="480" height="260" src="//www.youtube.com/embed/-v6GAqkaoAg" frameborder="0" allowfullscreen></iframe></div> <center>It was quickly becoming clear that this would be the trend, rather than exceptions.</center> <br/></p> <p>The team quickly came to the conclusion that in order to keep Dolphin relevant in an ever-changing environment, it would need to be relicensed under GPLv2+. This would give Dolphin some much needed freedom to breathe within the open source landscape. As such, relicensing formally began in September of 2014.</p> <p><br/></p> <h3 id="the-challenge-of-relicensing"><strong>The Challenge of Relicensing</strong><a class="headerlink" href="#the-challenge-of-relicensing" title="Permanent link">&para;</a></h3> <p>One of the chief problems with relicensing a GPL project is that there is very little precedence on how to go about it. The first step taken was researching what other projects did during their relicensing proceedings in order to give an idea of what was necessary. Relicensing a GPLv2 licensed program is difficult because the license pretty much assumes you won't be relicensing, leaving us with very little to fall back on except copyright laws. In order to relicense under that notion, it required that we find everyone who submitted copyrightable code to the emulator and get their permission for relicensing.</p> <p><br/></p> <h4 id="collecting-up-12-years-of-dolphin-contributors"><strong>Collecting up 12 years of Dolphin Contributors</strong><a class="headerlink" href="#collecting-up-12-years-of-dolphin-contributors" title="Permanent link">&para;</a></h4> <div style="margin-top: .5em; margin-left:2em; margin-bottom:1.5em; width:220px; float:right; text-align:center;"> <img style="max-width: 100%; margin-bottom:.5em;" src="https://dolphin-emu.org/m/user/blog/relicensing/relicensepie.svg" title="Breakdown of how developers were contacted and their responses: Email - 116/202 Agreed to GPLv2+ in the new Contributor's Agreement - 43/202 IRC - 19/202 Various Contact - 3/202 Non-Copyrightable Code (no need for permission) - 10/202 Refused and Code Rewritten - 1/202 Unable to Contact - 10/202"> <p/>Mouseover for details </div> <p>The easiest part of relicensing is the active developers. Everyone more or less is around fairly often, and asking a quick question about relicensing is easy enough. If one active developer refuses, it pretty much kills the motion before it starts. Thankfully, among our active developers, there was a unanimous vote toward relicensing, moving the plan forward.</p> <p>The second step taken was emailing all of the developers that have ever submitted code to Dolphin. This was to try and get responses from those who had since left the project. Quickly, over 70% of the developers agreed to the relicensing plan from a simple mass email. This kicked off relicensing to a very, very strong start.</p> <p>On the other side of things, our contribution agreement was modified on <a href="https://github.com/dolphin-emu/dolphin/pull/1575">December 1st 2014</a>, mandating that all coders who submitted code from that point forward were agreeing to license their contributions under GPLv2+. That was added to protect us from a case where a new contributor would show up, submit code, and disappear before signing off on the GPLv2+ relicensing plan.</p> <p>Locating all but one of Dolphin's top 25 active developers and getting their approval was little issue at all. Finding a lot of the important contributors that left Dolphin long ago proved to be much more difficult. Over the course of 8 months, countless emails, some blind guesses, and those who agreed under the new contribution agreement; the team has managed to get confirmation or process the contributions from <strong>95.05%</strong> of contributors.</p> <p>The issue with relicensing is never getting the majority of people; it's getting permission from everyone. With just a single digit of contributors left to find, things got significantly more difficult. Developers behind features such as the DSP-LLE JIT, Software Renderer, Fifoplayer, Savestates and more remained impossible to contact. Our remaining developers were left with an unpleasant situation, where none of the typical solutions to relicensing seemed to fit.</p> <p>There is little precedent, so together we decided to take action and figure out what would be best for the project while fulfilling our legal obligations.</p> <p><br/></p> <h3 id="a-legal-gray-area"><strong>A Legal Gray Area</strong><a class="headerlink" href="#a-legal-gray-area" title="Permanent link">&para;</a></h3> <p>Despite our best efforts, contacting every single member of Dolphin was something that simply isn't possible. Over the past 8 years of open source development, Dolphin has accumulated over 200 contributors often registering with only a username and an email with nothing else. Out of all those, we managed to contact all or take care of the code of all but 10 of those developers. Considering that many of those accounts are now dead and the people seemingly vanished from the Internet, finding the rest is akin to squeezing blood out of a stone.</p> <p>That's when research provided us some much needed relief when it seemed as though relicensing was an impossibility. In 2003, Free Software lawyers consulted for <a href="http://blogs.fsfe.org/ciaran/?p=58">Mozilla's relicensing project</a> and stated that relicensing with the permission of just 95% of contributors was fine, as long as there were no objections in the remaining 5%.</p> <p>The precedent for emulators is even less strenuous, <a href="https://github.com/hrydgard/ppsspp/commit/64cc57370386d28bdeab2854682498f1553266f0">PPSSPP relicensed</a> under the precedent that everyone they asked was for relicensing. Considering that PPSSPP is an emulator made up of a similar group of people, their mentality is very similar to Dolphin's. Open source emulators are sort of like a big family; we collaborate, we argue, we sometimes fight, but in the end we share a singular common goal.</p> <p>PPSSPP is a much younger project with fewer contributors than Dolphin, so the comparison isn't perfect. Instead of simply asking all of our active developers and relicensing, we made a very strong effort to get a hold of every single developer. Despite this, it simply wasn't feasible to make contact with every single person who worked on Dolphin.</p> <p><a href="https://dolphin-emu.org/download/dev/5e58d178e08ddf7115c991a6462ff73159d9e453/">As of 4.0-6349</a>, Dolphin is GPLv2+ with every single person we were able to contact who still owns copyright in Dolphin agreeing to relicense. We definitely would love to hear support from those that we were unable to contact, and if there are any concerns we will gladly address them in a prompt fashion.</p> <p><br/></p> <h3 id="what-happens-with-the-new-license"><strong>What Happens with the New License?</strong><a class="headerlink" href="#what-happens-with-the-new-license" title="Permanent link">&para;</a></h3> <p>For those unsure of what relicensing means for our open source status, here's a quick rundown of what Dolphin's licensing change actually affects.</p> <p><br/></p> <h4 id="what-this-does-not-change">What This DOES NOT Change:<a class="headerlink" href="#what-this-does-not-change" title="Permanent link">&para;</a></h4> <ul> <li>Dolphin is still open source, and all the source code will remain available for anyone to view and download.</li> <li>Copyleft: Any project that links to Dolphin must share source code of any derivative of the Dolphin source code under any GPLv2+ license.</li> <li>Compatibility with GPLv2 projects reusing Dolphin's source code: people can consider GPLv2+ as being GPLv2, as long as they accept that they won't be able to link with our (L)GPLv3 or Apache dependencies. This is unlikely to be a significant factor.</li> <li>Ownership: any contributor still owns copyright on his contributions, we are not introducing any kind of CLA scheme.</li> </ul> <p><br/></p> <h4 id="what-this-does-change">What This DOES Change:<a class="headerlink" href="#what-this-does-change" title="Permanent link">&para;</a></h4> <ul> <li>People will be free to interpret Dolphin's code as being GPLv3 licensed. In practice, GPLv3 only adds more restrictions to the license, and since the code is still GPLv2 licensed people can ignore these additional restrictions if they wish so.</li> <li>This opens the possibility of a GPLv4 license being released that lifts some restrictions that were in GPLv2 or GPLv3, and the Dolphin codebase would automatically be licensed as GPLv4 (as well as v2 and v3). Given the views of the Free Software Foundation, which edits the GPL licenses, this should not be a big concern for a project of Dolphin's size.</li> </ul> <p><br/></p> </div> <p><i class="icon-comments"></i> You can continue the discussion in the <a href="https://forums.dolphin-emu.org/showthread.php?tid=40298" title="Visit forum thread for this article">forum thread</a> of this article.</p> </div> <div class="entry-footer row"> <div class="col-md-6"> </div> <div class="entry-tags col-md-3"> <h4>Tags</h4> <ul class="tag-cloud"> <li><a href="/blog/tags/Legal/" title="Show all entries tagged by Legal" rel="tag">Legal</a></li> <li><a href="/blog/tags/Licensing/" title="Show all entries tagged by Licensing" rel="tag">Licensing</a></li> </ul> </div> <div class="entry-categories col-md-3"> <h4>Categories</h4> <span class="empty">No categories</span> </div> </div> </div> <div class="entry-widgets"> <div class="entry-next"> <h3>Next entry</h3> <p> <a href="/blog/2015/06/01/dolphin-progress-report-may-2015/" title="Dolphin Progress Report: May 2015" rel="next"> Dolphin Progress Report: May 2015 </a> </p> </div> <div class="entry-previous"> <h3>Previous entry</h3> <p> <a href="/blog/2015/05/13/a-second-perspective/" title="A Second Perspective: An In-Depth History of Stereoscopy in Dolphin" rel="prev"> A Second Perspective: An In-Depth History of Stereoscopy in Dolphin </a> </p> </div> <div class="entry-similar"> <h3>Similar entries</h3> <ul class="entries-similar"> <li> <a href="/blog/2018/05/02/legend-dolphin-lens-between-worlds/" title="The Legend of Dolphin: A Lens Between Worlds" rel="bookmark">The Legend of Dolphin: A Lens Between Worlds</a> </li> <li> <a href="/blog/2023/05/27/dolphin-steam-indefinitely-postponed/" title="Dolphin on Steam Indefinitely Postponed" rel="bookmark">Dolphin on Steam Indefinitely Postponed</a> </li> <li> <a href="/blog/2023/01/07/announcing-official-dolphin-discord/" title="Announcing the Official Dolphin Discord" rel="bookmark">Announcing the Official Dolphin Discord</a> </li> <li> <a href="/blog/2024/07/02/dolphin-releases-announcement/" title="Dolphin Releases Announcement" rel="bookmark">Dolphin Releases Announcement</a> </li> <li> <a href="/blog/2016/06/19/optional-usage-statistics-reporting/" title="Making Dolphin More Productive - Optional Usage Statistics Reporting" rel="bookmark">Making Dolphin More Productive - Optional Usage Statistics Reporting</a> </li> </ul> </div> </div> </div> <div class="col-md-3 col-md-pull-9" style="margin-top: 1em"> <div style="margin-bottom: 1em"> <form method="get" action="/blog/search/" role="search"> <div class="input-group"> <input type="text" placeholder="Search articles" name="pattern" class="form-control" /> <span class="input-group-btn"> <button type="submit" class="btn"> <i class="icon-search"></i> </button> </span> </div> </form> </div> <div class="well text-center"> <ins class="adsbygoogle" style="display:inline-block;width:200px;height:200px" data-ad-client="ca-pub-8646203626363069" data-ad-slot="9795528512"></ins> </div> <div class="well"> <h4>Blog tags</h4> <ul class="tag-cloud"> <li> <a href="/blog/tags/3d/" title="2 entries tagged by 3d" class="tag-1">3d</a> </li> <li> <a href="/blog/tags/4.0/" title="4 entries tagged by 4.0" class="tag-2">4.0</a> </li> <li> <a href="/blog/tags/5.0/" title="8 entries tagged by 5.0" class="tag-3">5.0</a> </li> <li> <a href="/blog/tags/60FPS/" title="1 entry tagged by 60FPS" class="tag-1">60FPS</a> </li> <li> <a href="/blog/tags/Accessory/" title="4 entries tagged by Accessory" class="tag-2">Accessory</a> </li> <li> <a href="/blog/tags/achievements/" title="1 entry tagged by achievements" class="tag-1">achievements</a> </li> <li> <a href="/blog/tags/adreno/" title="6 entries tagged by adreno" class="tag-3">adreno</a> </li> <li> <a href="/blog/tags/amd/" title="1 entry tagged by amd" class="tag-1">amd</a> </li> <li> <a href="/blog/tags/Analysis/" title="2 entries tagged by Analysis" class="tag-1">Analysis</a> </li> <li> <a href="/blog/tags/android/" title="34 entries tagged by android" class="tag-5">android</a> </li> <li> <a href="/blog/tags/announcement/" title="8 entries tagged by announcement" class="tag-3">announcement</a> </li> <li> <a href="/blog/tags/arm/" title="4 entries tagged by arm" class="tag-2">arm</a> </li> <li> <a href="/blog/tags/ARM/" title="1 entry tagged by ARM" class="tag-1">ARM</a> </li> <li> <a href="/blog/tags/audio/" title="12 entries tagged by audio" class="tag-4">audio</a> </li> <li> <a href="/blog/tags/ax-hle/" title="1 entry tagged by ax-hle" class="tag-1">ax-hle</a> </li> <li> <a href="/blog/tags/BBA/" title="3 entries tagged by BBA" class="tag-2">BBA</a> </li> <li> <a href="/blog/tags/bigfix/" title="1 entry tagged by bigfix" class="tag-1">bigfix</a> </li> <li> <a href="/blog/tags/bounding%20box/" title="4 entries tagged by bounding box" class="tag-2">bounding box</a> </li> <li> <a href="/blog/tags/bug/" title="1 entry tagged by bug" class="tag-1">bug</a> </li> <li> <a href="/blog/tags/bugfix/" title="90 entries tagged by bugfix" class="tag-6">bugfix</a> </li> <li> <a href="/blog/tags/cheats/" title="1 entry tagged by cheats" class="tag-1">cheats</a> </li> <li> <a href="/blog/tags/Cheats/" title="3 entries tagged by Cheats" class="tag-2">Cheats</a> </li> <li> <a href="/blog/tags/CI/" title="1 entry tagged by CI" class="tag-1">CI</a> </li> <li> <a href="/blog/tags/Commemoration/" title="1 entry tagged by Commemoration" class="tag-1">Commemoration</a> </li> <li> <a href="/blog/tags/community/" title="1 entry tagged by community" class="tag-1">community</a> </li> <li> <a href="/blog/tags/controller/" title="17 entries tagged by controller" class="tag-4">controller</a> </li> <li> <a href="/blog/tags/D3D/" title="3 entries tagged by D3D" class="tag-2">D3D</a> </li> <li> <a href="/blog/tags/D3D9/" title="1 entry tagged by D3D9" class="tag-1">D3D9</a> </li> <li> <a href="/blog/tags/Datel/" title="3 entries tagged by Datel" class="tag-2">Datel</a> </li> <li> <a href="/blog/tags/Devdiary/" title="3 entries tagged by Devdiary" class="tag-2">Devdiary</a> </li> <li> <a href="/blog/tags/DevDiary/" title="2 entries tagged by DevDiary" class="tag-1">DevDiary</a> </li> <li> <a href="/blog/tags/discord/" title="2 entries tagged by discord" class="tag-1">discord</a> </li> <li> <a href="/blog/tags/Disney%20Trio%20of%20Destruction/" title="1 entry tagged by Disney Trio of Destruction" class="tag-1">Disney Trio of Destruction</a> </li> <li> <a href="/blog/tags/driver/" title="8 entries tagged by driver" class="tag-3">driver</a> </li> <li> <a href="/blog/tags/DS/" title="1 entry tagged by DS" class="tag-1">DS</a> </li> <li> <a href="/blog/tags/dsp-hle/" title="3 entries tagged by dsp-hle" class="tag-2">dsp-hle</a> </li> <li> <a href="/blog/tags/dvd%20timings/" title="1 entry tagged by dvd timings" class="tag-1">dvd timings</a> </li> <li> <a href="/blog/tags/Factor5/" title="14 entries tagged by Factor5" class="tag-4">Factor5</a> </li> <li> <a href="/blog/tags/Feature%20Removal/" title="12 entries tagged by Feature Removal" class="tag-4">Feature Removal</a> </li> <li> <a href="/blog/tags/Foundation/" title="1 entry tagged by Foundation" class="tag-1">Foundation</a> </li> <li> <a href="/blog/tags/gamebug/" title="1 entry tagged by gamebug" class="tag-1">gamebug</a> </li> <li> <a href="/blog/tags/GameCube/" title="1 entry tagged by GameCube" class="tag-1">GameCube</a> </li> <li> <a href="/blog/tags/Gamehacks/" title="1 entry tagged by Gamehacks" class="tag-1">Gamehacks</a> </li> <li> <a href="/blog/tags/GBA/" title="5 entries tagged by GBA" class="tag-3">GBA</a> </li> <li> <a href="/blog/tags/gpu/" title="2 entries tagged by gpu" class="tag-1">gpu</a> </li> <li> <a href="/blog/tags/Graphics/" title="14 entries tagged by Graphics" class="tag-4">Graphics</a> </li> <li> <a href="/blog/tags/Hardware/" title="4 entries tagged by Hardware" class="tag-2">Hardware</a> </li> <li> <a href="/blog/tags/HD/" title="3 entries tagged by HD" class="tag-2">HD</a> </li> <li> <a href="/blog/tags/HDR/" title="1 entry tagged by HDR" class="tag-1">HDR</a> </li> <li> <a href="/blog/tags/hle/" title="1 entry tagged by hle" class="tag-1">hle</a> </li> <li> <a href="/blog/tags/homebrew/" title="4 entries tagged by homebrew" class="tag-2">homebrew</a> </li> <li> <a href="/blog/tags/intel/" title="1 entry tagged by intel" class="tag-1">intel</a> </li> <li> <a href="/blog/tags/iPhone/" title="1 entry tagged by iPhone" class="tag-1">iPhone</a> </li> <li> <a href="/blog/tags/JIT/" title="6 entries tagged by JIT" class="tag-3">JIT</a> </li> <li> <a href="/blog/tags/Legal/" title="3 entries tagged by Legal" class="tag-2">Legal</a> </li> <li> <a href="/blog/tags/Licensing/" title="1 entry tagged by Licensing" class="tag-1">Licensing</a> </li> <li> <a href="/blog/tags/linking/" title="1 entry tagged by linking" class="tag-1">linking</a> </li> <li> <a href="/blog/tags/mac/" title="9 entries tagged by mac" class="tag-3">mac</a> </li> <li> <a href="/blog/tags/macOS/" title="1 entry tagged by macOS" class="tag-1">macOS</a> </li> <li> <a href="/blog/tags/mali/" title="4 entries tagged by mali" class="tag-2">mali</a> </li> <li> <a href="/blog/tags/memory%20card/" title="1 entry tagged by memory card" class="tag-1">memory card</a> </li> <li> <a href="/blog/tags/mesa/" title="2 entries tagged by mesa" class="tag-1">mesa</a> </li> <li> <a href="/blog/tags/Metal/" title="1 entry tagged by Metal" class="tag-1">Metal</a> </li> <li> <a href="/blog/tags/miniupdate/" title="1 entry tagged by miniupdate" class="tag-1">miniupdate</a> </li> <li> <a href="/blog/tags/mod/" title="1 entry tagged by mod" class="tag-1">mod</a> </li> <li> <a href="/blog/tags/multiplayer/" title="1 entry tagged by multiplayer" class="tag-1">multiplayer</a> </li> <li> <a href="/blog/tags/netplay/" title="3 entries tagged by netplay" class="tag-2">netplay</a> </li> <li> <a href="/blog/tags/Netplay/" title="14 entries tagged by Netplay" class="tag-4">Netplay</a> </li> <li> <a href="/blog/tags/new%20feature/" title="60 entries tagged by new feature" class="tag-6">new feature</a> </li> <li> <a href="/blog/tags/nvidia/" title="3 entries tagged by nvidia" class="tag-2">nvidia</a> </li> <li> <a href="/blog/tags/OGL/" title="3 entries tagged by OGL" class="tag-2">OGL</a> </li> <li> <a href="/blog/tags/Online-play/" title="2 entries tagged by Online-play" class="tag-1">Online-play</a> </li> <li> <a href="/blog/tags/passthrough/" title="1 entry tagged by passthrough" class="tag-1">passthrough</a> </li> <li> <a href="/blog/tags/Patches/" title="1 entry tagged by Patches" class="tag-1">Patches</a> </li> <li> <a href="/blog/tags/performance/" title="32 entries tagged by performance" class="tag-5">performance</a> </li> <li> <a href="/blog/tags/progress%20report/" title="75 entries tagged by progress report" class="tag-6">progress report</a> </li> <li> <a href="/blog/tags/Qt/" title="11 entries tagged by Qt" class="tag-4">Qt</a> </li> <li> <a href="/blog/tags/qualcomm/" title="4 entries tagged by qualcomm" class="tag-2">qualcomm</a> </li> <li> <a href="/blog/tags/release/" title="7 entries tagged by release" class="tag-3">release</a> </li> <li> <a href="/blog/tags/releasecandidate/" title="2 entries tagged by releasecandidate" class="tag-1">releasecandidate</a> </li> <li> <a href="/blog/tags/rendering/" title="1 entry tagged by rendering" class="tag-1">rendering</a> </li> <li> <a href="/blog/tags/Review/" title="1 entry tagged by Review" class="tag-1">Review</a> </li> <li> <a href="/blog/tags/shieldtv/" title="1 entry tagged by shieldtv" class="tag-1">shieldtv</a> </li> <li> <a href="/blog/tags/Software%20Renderer/" title="1 entry tagged by Software Renderer" class="tag-1">Software Renderer</a> </li> <li> <a href="/blog/tags/sonic/" title="1 entry tagged by sonic" class="tag-1">sonic</a> </li> <li> <a href="/blog/tags/speedrun/" title="1 entry tagged by speedrun" class="tag-1">speedrun</a> </li> <li> <a href="/blog/tags/Steam/" title="2 entries tagged by Steam" class="tag-1">Steam</a> </li> <li> <a href="/blog/tags/Steam%20Deck/" title="5 entries tagged by Steam Deck" class="tag-3">Steam Deck</a> </li> <li> <a href="/blog/tags/stereo/" title="1 entry tagged by stereo" class="tag-1">stereo</a> </li> <li> <a href="/blog/tags/stereoscopy/" title="2 entries tagged by stereoscopy" class="tag-1">stereoscopy</a> </li> <li> <a href="/blog/tags/tas/" title="1 entry tagged by tas" class="tag-1">tas</a> </li> <li> <a href="/blog/tags/technical/" title="21 entries tagged by technical" class="tag-5">technical</a> </li> <li> <a href="/blog/tags/ubershaders/" title="4 entries tagged by ubershaders" class="tag-2">ubershaders</a> </li> <li> <a href="/blog/tags/Ubisoft/" title="4 entries tagged by Ubisoft" class="tag-2">Ubisoft</a> </li> <li> <a href="/blog/tags/ui/" title="17 entries tagged by ui" class="tag-4">ui</a> </li> <li> <a href="/blog/tags/Unlicensed/" title="1 entry tagged by Unlicensed" class="tag-1">Unlicensed</a> </li> <li> <a href="/blog/tags/updater/" title="1 entry tagged by updater" class="tag-1">updater</a> </li> <li> <a href="/blog/tags/video/" title="33 entries tagged by video" class="tag-5">video</a> </li> <li> <a href="/blog/tags/vulkan/" title="6 entries tagged by vulkan" class="tag-3">vulkan</a> </li> <li> <a href="/blog/tags/Wii/" title="7 entries tagged by Wii" class="tag-3">Wii</a> </li> <li> <a href="/blog/tags/WiiConnect24/" title="3 entries tagged by WiiConnect24" class="tag-2">WiiConnect24</a> </li> <li> <a href="/blog/tags/wiimote/" title="1 entry tagged by wiimote" class="tag-1">wiimote</a> </li> <li> <a href="/blog/tags/Wiimote/" title="13 entries tagged by Wiimote" class="tag-4">Wiimote</a> </li> <li> <a href="/blog/tags/Wind%20Waker/" title="2 entries tagged by Wind Waker" class="tag-1">Wind Waker</a> </li> <li> <a href="/blog/tags/wx/" title="1 entry tagged by wx" class="tag-1">wx</a> </li> <li> <a href="/blog/tags/XFB/" title="1 entry tagged by XFB" class="tag-1">XFB</a> </li> <li> <a href="/blog/tags/zelda/" title="1 entry tagged by zelda" class="tag-1">zelda</a> </li> </ul> </div> <div class="well"> <h4>Blog series</h4> <ul class="blog-series"> <li><a href="/blog/series%23series-1">Dolphin Progress Report</a></li> <li><a href="/blog/series%23series-2">HLE Audio</a></li> </ul> <p class="seemore"><a href="/blog/series">See all »</a></p> </div> </div> </div> </div> <footer> <p class="footer-text"> &copy; Dolphin Emulator Project - <a href="https://github.com/dolphin-emu/www">Website Source Code</a> - <a href="/docs/privacy/">Privacy Policy</a> <a href="https://social.dolphin-emu.org/@dolphin" rel="me" style="display: none;">Mastodon verification</a> </p> </footer> <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> <script src="https://dolphin-emu.org/m/static/js/bootstrap.min.cfe18215d149.js"></script> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10