Contributing to the Project

Dec 27, 2020
Contributing to the Project
  • Contributing to the Project

    Information on contributing to the SpigotMC project.

    Whilst the scripts are nice and easy to use, as a developer you may want a better insight into how they operate so that you can make your own changes, or do it by hand in case they don’t work as intended. Roughly put, the following steps are performed by the install scripts:
    1. Clone the Bukkit, CraftBukkit and Spigot repositories from Atlassian Stash.
    2. Download the required build depends: Maven, SpecialSource, Fernflower, Jacobe, Minecraft Server Jar, etc.
    3. Apply the included deobfuscation mappings and access transformations to the Minecraft Server Jar.
    4. Decompile and format the decompiled code using fernflower and Jacobe.
    5. Apply the included patches to the CraftBukkit source.
    6. Compile the whole thing using Maven!
    7. If installing Spigot, run ./applyPatches and Maven as per usual.
    If you require help making changes to Spigot or CraftBukkit, please stop by our development IRC channel on, #spigot-dev. In particular to regenerate the NMS patches, you need to use the ./ script in the CraftBukkit source. The argument to this script should be the clean decompiled directory which BuildTools generated, ie: ../work/decompile-bb26c12b

    We are also very eager for enhancements and improvements to the build scripts, in particular there is not much support for custom forks, although once the deobfuscated jar has been installed the server can be compiled with Maven as per usual.

    Stash Access
    As a developer you are probably also interested in getting access to the Stash server so that you can make pull requests with all your awesome new features and enhancements.

    In order to get this access you will first need to create an account on JIRA (here), and then submit our CLA.
    Why a big scary CLA you might ask? Well first of all its not scary at all, it is substantially shorter and easier to read than many of the agreements you submit on a daily basis (think Apple, iTunes, and all those other terms and conditions). The reason for this document is to protect you, and to protect us. What the CLA does, is instead of licensing your code under [L]GPL, BSD, or whatever other licenses our projects may use, it licenses your code to us instead. This is a good thing, and in implementing it, we hope you will see the benefits behind our key reasons:
    • It is easy to understand: Previously when contributing to a LGPL license project you had to agree to both the GPL and LGPL licenses, which when combined represent nearly 6500 words of legal speak so complex that it requires in depth study by even experienced legal professionals. Our CLA on the other hand clocks in at around 1800 words, or four times less, and is written in language which we hope is easy to understand even for those whom English is not their first language.
    • It protects you as a developer: The CLA makes it completely clear, in writing, what rights you give us, and what rights you don’t. In particular, the right we are most concerned about is the right to use, and relicense your code. It also makes it abundantly clear that you give irrevocable consent to your contributions being used in Spigot / Bukkit.
    • It protects us as a project: By having a signed document stating that you give us the ability to license and use your code, it 1) prevents the idea that past contributions can be rescinded in any way, shape or form, and 2) enables us to relicense your code to better serve and preserve the long term goals of the project should that need arise in the future.
    • It eliminates ambiguities and hopefully encourages contributions from those who would not normally contribute. One of the biggest reasons (excuses) I have heard from developers not contributing to Spigot is “I don’t think I’m allowed to because of my NDA”. This document is hopefully the solution to all of those troubles, and by getting it cosigned by your employer there should be no issues and you can contribute to your heart's content! We can’t expect to advance further if the best developers don’t contribute as they are tied up elsewhere.
    We provide Spigot, and now CraftBukkit as free and open source software which is free of charge. Almost all of you make a profit off your servers, and some of you make hundreds of thousands a year; we don’t. That’s ok, because we’re not focused on that. What we feel isn’t ok however is not contributing changes you make to our software back to us, especially changes which fix exploits and other critical bugs. It may seem far fetched, but this is the exact situation our team has had to deal with more than once in the last year.

    So this is our plea to you larger server owners, if you have a developer, or a team of developers working on modified versions of our software, please do so in a public manner which we can work with. Doing so will only lead to a better software, with more API features and less bugs. We are able to provide any assistance you require in doing this, including providing dedicated organisations on our Stash instance. In particular I would like to draw upon the example of SportBukkit, which has been maintained as an open source project by the @@MonsieurApple and servers for many year(s) now - in fact several Spigot API features are based on their work, kudos to them!

    Finally with regards to the CLA, if you are interested in any of the included content you should note that it has largely been based on the well known Harmony CLA, with a few minor alterations made by our lawyers. If you have any specific concerns about any of the wording within, please don’t hesitate to contact us and we will do our best to help.

    Please note that the "real name" field on JIRA is public to all users. If you are not comfortable with this please set it to your username. All details in the CLA however must be correct.

    Sign up on JIRA here:!default.jspa
    Submit the CLA here:
  • Loading...
  • Loading...