Questions About the Current Brouhaha

Discussion in 'Bukkit Discussion' started by rcade, Sep 16, 2014.

Thread Status:
Not open for further replies.
  1. Offline


    I have a lot of time invested in a not-yet-released project to teach beginners Java programming so they can create Minecraft mods. I chose the Bukkit class library and CraftBukkit server for mod development because it was accessible to beginners, well-documented and supported often by new releases. I also liked that it doesn't require hacking a Minecraft game client.

    So I've been researching the DMCA dispute and EULA controversy to determine whether people who learn to create mods with Bukkit will have a place to use those skills.

    To that end I have a few questions.

    1. Is there anyone left running the Bukkit project here at I'm assuming the answer is yes, since the site and forums are still here, but the lack of a post on the home page letting people know the current status makes me wonder.

    2. Has a counter-notice been filed by Bukkit against the DMCA takedown, or a decision been made on whether to file one? If one is filed, Wesley Wolfe (Wolvereness) will have 14 business days to file suit asserting copyright violation. If he didn't, all project files and source code would be available again.

    3. The code at issue in the DMCA dispute is Minecraft server code whose presence in CraftBukkit has never been challenged by Mojang. In fact, Mojang developers provided early advice to the Bukkit programmers on making that code work, and Mojang COO Vu Bui continues to support the Bukkit project. Given that, wouldn't it be possible to move the contested server code to a new open source project and distribute it separately in its own JAR file for users to download in order to run CraftBukkit?

    Apologies if I am misunderstanding something fundamental here -- I can't review the Github project to examine the source code -- but it seems on the outside like this dispute is solvable.

    Thanks for any cluesticks you could provide me in this time of need.
  2. Offline


    I can address number 3.

    Bukkit is licensed under the GPL. It is a a rather strict Free/Liber Open Source software license. It forbids linking GPL code with code that is not licensed under the GPL or a GPL-compatible license.

    CraftBukkit was licensed under the LGPL, a more lenient F/LOSS license. However, it includes code directly derived from the official server code. This derived code has always been distributed in violation of Mojang's copyrights, but they have elected not to enforce them. However, it does not mean a third party can relicense it. This code is technically being distributed without any license, thus it defaults to standard copyright terms.

    The issue is when building CraftBukkit you include code from Bukkit (which is under the terms of the GPL), CraftBukkit code (which is mostly under the terms of the LGPL, excepting the derived code). The linking of the the GPL and unlicensed code is in violation of the terms Bukkit is distributed under. Now this isn't a flaw on the part of the GPL, it was actually designed specifically to prevent linking GPL-proprietary code.

    "move the contested server code to a new open source project" Would require Mojang to explicitly license the derived code under an open source license, no other party can do so. Just moving it to another project doesn't solve that eventually you got to link Bukkit to some collection of intermediary code-bases to the MC server. The entire collection must be under something GPL-compatible.

    * Get EVERY contributer to Bukkit to agree to a change in license, adding the needed exceptions to permit linking it with Minecraft server code.
    * Mojang (re)licenses the code derived from theirs in CraftBukkit to be GPL-compatible.
    * Someone writes a new MC server implementation under a GPL-compatible license and all Mojang-derived code is removed from CraftBukkit and CraftBukkit links against that new project. (Project Glowstone is similar to this solution, but is an attempt to create a open source MC server that supports the Bukkit API, it doesn't include CraftBukkit).
  3. Offline


    Thanks for the response.

    Is the Java source code of the derived server code in the CraftBukkit project, or is it just executable .class files? I can't tell because the DMCA killed the entire GitHub.

    If the source code is there, and Mojang has never said "this is our proprietary code and you have no right to use it," I don't see how the DMCA complaint could be valid. The Mojang COO said that it has not contributed any code to Bukkit or CraftBukkit. One way to look at that statement is that it means the company has no IP concerns about the current code base.

    Glowstone looks interesting, but I've heard it is a long way off from an implementation of the current Bukkit API. Anyone here know if that is true?
  4. Offline


    I think you'd have to differentiate between static and dynamic linking though. I'm no expert what-so-ever but as I understand it in Linux for example they do dynamic linking between closed source stuff (I.e. hardware drivers) and gpl stuff without violating the GPL license.

    I'd wage on distributing two or more separate jar's would be defined as dynamic linking whilst distributing it all in one jar would be defined as static linking.

    There's a few problems to deal with though:

    - The mojang parts included in the craftbukkit package is not only deobfuscated but also altered by the (craft)bukkit authors which means that you can't just rip it out in a separate jar and have craftbukkit (LGPL) dynamically link to it.

    - The bukkit and craftbukkit development license did not include a copyright transfer clause which means that anyone that has contributed code to it still retains the copyright to any code they have submitted so any contributor can shut down the project when they feel like it.

    - API's can apparently be copyrighted (well, according to a pending final verdict on an ongoing case in the US anyway) which means that the Bukkit api that most craftbukkit plugins are using is copyrighted. And without a copyright transfer clause that makes bukkit tainted as well and it cannot be reimplemented by someone else in a new bukkit API compatible server without it still being possible to be closed down due to the copyright issue.

    I suppose that, if you could get around or through the missing copyright transfer clause, which you can't and is a major fuckup by those who started the bukkit project, you could separate it all into three separate jars. One with a shady mojang (microsoft) semi-by-general-silence-approved modified and deobfuscated version of the mojang server. One with the bukkit stuff (GPL), and one with the craftbukkit stuff (LGPL). It would probably be quite an effort to separate craftbukkit from the mojang stuff though.
  5. Offline


    To answer your first question the only ones left are Mojang and Curse staff. Everyone else left.

    Exception being two moderators, but that is it as far as I can tell.
  6. Offline


    Kigen Actually, JaguarJo left too, and I'm not sure about c0mp. :p
  7. Offline


    I don't think it's quite that bad. The GPL license states, "All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met." A contributor to a GPL project would have to prove the conditions were not met to revoke the license. Lacking that, the code could continue to be used under the terms of the license.

    I managed to figure out the answer to this question. The contested code is 281 Java classes in the net.minecraft.server package, all of which are available as Java source code. The code implements a Minecraft server and some of the classes have short sections added to make it work with CraftBukkit.

    These sections are noted by comments either before and after a section or at the end of a single statement.

    For instance, in the file, this appears at the beginning:

    // CraftBukkit start
    import org.bukkit.craftbukkit.event.CraftEventFactory;
    import org.bukkit.event.block.BlockBurnEvent;
    import org.bukkit.event.block.BlockSpreadEvent;
    // CraftBukkit end

    There are several short CraftBukkit sections in the class, including this new method:

    // CraftBukkit start
    private void fireExtinguished(World world, int x, int y, int z) {
    if (!CraftEventFactory.callBlockFadeEvent(world.getWorld().getBlockAt(x, y, z), Blocks.AIR).isCancelled()) {
    // CraftBukkit end

    Wolvereness made 144 commits to the CraftBukkit project from Feb. 20, 2012, to Aug. 17, 2014. By my count, 63 of those commits involved files in the net.minecraft.server package. Some of his contributions are pretty extensive. He did a lot of work for two years on code and then used that code as the basis for filing a DMCA.

    I'm having trouble understanding the logic of that, and I hope at some point he'll explain it. Surely he knew the origins of the net.minecraft.server package two years ago when he began submitting improvements to it. If he had concerns about licensing, why would he then do so much work on that code?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: Jun 14, 2016
  8. rcade I didn't read a lot of your post or the subsequent replies, but I have a question: Who would your tutorials be aimed at? People who haven't learned Java, or people who have?
  9. Offline


    All of this is absurd. In a court of law, wolverness would not have the right to cease and desist the entirety of the project. IT IS AN OPEN SOURCE FILE WITH ALMOST A HUNDRED CONTRIBUTORS. I don't know how to explain this more clearly. If he is seriously able to do this because of his code, then someone can replace his code and get this boat floating again. Why on Earth does he think he has the right (or morality) to shut down a community run open source file? What is he gaining by doing this?
  10. Offline


    Unless he's being incredibly sadistic, nothing. But I do agree that the code could be replaced with a different method (if available).
    But we'll have to wait and see. There's no-one to update Bukkit to 1.8 apart from Mojang,
  11. Offline


    Would there be some way to get the source code back up on GitHub to replace his code? I'm sure with some assistance from the community we could fix the majority of it within a month.
    It's a shame that there are people like this.
  12. Offline


    Regardless of the way you do it, it's still *technically* against the DMCA as you're editing code that has been taken down. You'd have to get a copy of CraftBukkit before Wolverness even contributed. That's a long way back.
    The only way I can see doing it is asking Wolverness himself for permission to edit the base code to remove his contributions but that would take hours if not days and would most likely be denied.
  13. Offline


    So in other words, we're ******, and Microsoft is our last hope. Microsoft.... it's a shame I have to say that.
  14. Offline


    I wouldn't say that yet. Let's wait for Microsoft.
  15. Offline


    XD 3VIL M0NKEY, if it was Google I would have rejoiced. They are the creators of Minecraft quantum physics mod btw, and are HUGE advocates of open source coding. They'd probably replace all of the code for us.
Thread Status:
Not open for further replies.

Share This Page