I run a company that provides Minecraft server hosting for businesses (i.e. after school programs, summer camps, Code Ninjas, E-Sports leagues etc) and produces fun and educational events using Minecraft (i.e. 10-15 elementary school kids in an event space at a library learning physics by building roller coasters in the game).
We've switched entirely over to Paper for everything because it works so much better than vanilla, and it also enables us to put it behind a Velocity proxy (Minecraft Java Application layer proxy also developed by the same group that develops Paper) for better scalability, more secure infrastructure, and some cool features like enabling any version of Java edition to join the same server (mad props to the ViaVersion & ViaBackwards plugin teams that make this possible!). This is impossible to do with Vanilla. We do all of our own content development creating the activities the kids do during the events, and the plugin ecosystem that someone else mentioned is hugely helpful for this. I especially want to call out how awesome the Geyser and Floodgate plugins are — they make it possible for Java and Bedrock clients to play together in the same world, which makes our customers lives so much easier.
We're hiring part time / contract developers, event hosts, and technical support personnel. If this sounds interesting, please reach out. My contact info is in my profile.
I have Minecraft on iOS, as well as two Java licenses. You can have both mixed on the same server if you are using Paper with Floodgate and Geyser. It's great; my younger child can use iOS, while my elder kids can use the java licenses on their computers.
Interesting, does that mean the different editions have feature parity now?
I remember it used to be that the Java Edition was ahead of Bedrock with some game features and the phone version had way less content – is that no longer the case or are these server plugins disabling some game features?
I think they have some drift in between versions (java lands first), but aside from that, they're extremely similar and only differ in what essentially amounts to quirks rather than actual gameplay differences. So no, you're not typically going to really notice the differences.
Constantly updating geyser to keep it up to date with the most recent bedrock versions is quite a pain. Maybe paper has tools to automate these updates (I use fabric) but it seems unlikely.
Geyser/any third-party plugin isn't by the paper team, so they wouldn't have tools to auto update. (they also generally discourage auto-updating any software/plugins). There are plugins available to update geyser automatically though, here's one: https://www.spigotmc.org/resources/geyserupdater.88555/
There are several primary ways to run a Java Edition server:
1. Pure vanilla server.jar. Has horrible performance, little flexibility, but in the end, it Just Works. This is the server that Realms (Mojang's paid hosting service) uses. In recent versions, some modding is possible via datapacks.
2. Fabric Loader and some vanilla-compatible mods like Carpet etc. Here, "vanilla-compatible" means that a vanilla client can still connect. This is the preferred way of playing for the TMC (Technical Minecraft) community since the underlying server stays mostly vanilla, down to the smallest details and bugs, and no behaviors are changed. The TMC community becomes very agitated when someone tries to "fix" some bugs - they rely on those bugs.
3. Forge/Fabric with mods that change the gameplay, and require the mods to be present on both client and server. This is the traditional "modded" experience, as seen on TV.
4. Bukkit/Spigot/Paper/Purpur, various generations of server software that heavily patches the vanilla server, fixing bugs, adding new functionalities, and presenting a very comprehensive Plugin API, while still allowing vanilla clients to connect. This is the software used by servers that implement custom gamemodes, public servers that need griefing/duping/exploit protection. Many high tech farms don't work on Paper because of how many things it "fixes".
5. Folia - a fork of Paper that has multithreading support. It comes with its own can of worms.
Performance-wise, Fabric+Lithium is probably the most performant in the default configuration, though if you're willing to remove functionality, you can probably get better performance out of Paper (at the cost of losing gameplay features).
As for Bugrock Edition: well... there is Geyser that lets you connect to a Java Edition server with a Bedrock client. ;)
Adding on to yours, since right now you have the most complete background answer.
There's some history in the "Bukkit" family that might make their chaos make more sense.
In the beginning, there was Bukkit, which was a plugin API. And there was its reference implementation, CraftBukkit. It was very popular, Bukkit was the de facto API for server-side modding, and I made 50 bucks off of advertising revenue share for downloads of my plugin, which was a lot for me as a high schooler with one (1) year of java experience. Times were good. Where was I? Oh yeah.
So, for a long good while, times were swell. Then iirc Microsoft announced they were acquiring Mojang (I think this was the precipitating event? Someone correct me if not). And the main Craft/Bukkit guy threw in the towel and pulled a very clever poison pill: he DMCA'd his own repos. You see, Mojang essentially didn't care about server.jar distribution because they were a cool indie company. So CraftBukkit just included it. Which meant it was always in violation of Bukkit's GPL license since that code wasn't open source.
So anyway, CraftBukkit explodes in a supernova and the resulting stellar nursery produces Spigot which pioneered the distribution strategy that all successors would then use - they distribute a decompilation map and their source, then you run a jar that downloads server.jar and performs the unholy mixing of licenses on your machine.
This is where I left the scene so I only have a summary from here on out. Spigot is the main go-to for a while, but the stellar nursery is still hot, and so various creative differences produce Paper, which seems to have mostly caught on to replace spigot though it seems like spigot is still a nontrivial player as well. And these all still implement the same ole GPL licensed Bukkit API.
So Bukkit wasn’t the first. It was hMod in 2010. Everyone came over from hMod because hey0 disappeared for a hot minute in late 2010. Everyone from Bukkit came from hMod, although there were also holdbacks who didn’t like someone stealing the hMod community, but a gathering of major plugin developers and devs from hMod forced everyone’s hand (but also, hey0 disappeared for a relatively long time with no explanation).
hMod also had a problem: it didn’t attempt to reverse any of the code obfuscation from Mojang, so working with it was extremely difficult. When hMod came about, it predated the MCP project as well by like 3 months, which started as a major community effort to deobfuscate the codebase. Bukkit came after MCP and could take from it inspiration.
We are still in year 2010.
Fast forward many years later… Microsoft had nothing to do with what happened actually. Bukkit was secretly owned by Curse, and much later Mojang secretly bought Bukkit.
This secret sale pissed off a lot of the community and one of the core but non-OG contributors (Wolverness — he joined Bukkit much later) issued a DMCA against the codebase as a form of protest. This was obviously controversial but he also had a lot of support.
Mojang actually never substantially interfered with the wholesale illegal distribution of its source code.
Anyway, because Mojang was officially hiring the Bukkit team, but only limited to some members from the OG 2010 team, and with the other core contributors not being included at all, and with the DMCA taking down the repos, Bukkit became dirty and there wasn’t a future for Bukkit anymore. Spigot, which was then a performance fork of Bukkit, became the de facto successor (not to say that there weren’t many other options and competing choices in play too).
Spigot didn’t create their distribution strategy though. MCP did things this way.
I switched from Paper to Fabric +/- 3 years ago. It allows me to create better server-side mods than what I was able to make with the Bukkit/Spigot/Paper API.
Not that that API isn't impressive. I was also surprised to learn MCC uses it.
Minecraft server software marketshare is tracked with bstats. Paper (58.3%) is a fork of Spigot (21.3%) and is more open to contributions and has a lot more performance enhancements. Spigot continues CraftBukkit which implements the Bukkit API. Spigot only really exists to update to the latest game version and no longer receives performance enhancements. Purpur (10.1%) also exists and forks paper, and add gameplay features that couldn't be forked into Paper.
The largest non-bukkit competitor is Fabric, which is nice because by default it changes no gameplay behavior. Spigot and all forks change gameplay behavior to improve performance and make implementing the API easier in subtle ways. Paper is more suitable for a public server as it patches exploits by default while Fabric is better for a more technical or private server as it doesn't break vanilla behavior .
Bukkit-based servers can be made compatible with Bedrock edition with the Geyser plugin
Note that bstats only tracks Bukkit-compatible servers. It doesn't track Vanilla/Fabric/Forge/etc. installations, so take these numbers with a grain of salt.
The major competitors include Fabric and Forge, with each being distinguished primarily by the type /amount of extensibility they offer. Paper is focused on "backend only" modding (plugins), as opposed to the "full spectrum" modding supported by Fabric and Forge that often (but not always) require users to download the mods on their computer as well.
From that perspective, Paper is much more commonly used by commercial server owners (since they're catering to the very large audience of casual users who don't want to install mods) and casual users paying for a server host for their friends who just want a couple of small tweaks, while Fabric and Forge are generally used more by smaller groups of dedicated power users who want a lot of extra mods
Paper and Forge both focus primarily on providing a large extension API through modifying the decompiled Minecraft source code, while Fabric takes a different route by providing primarily an extensive dynamic Java bytecode modification library that allows developers to effectively "build their own API" by modifying the vanilla Minecraft classes at runtime. This means Fabric is generally much faster and easier to update to newer versions, and most smaller mod developers have adopted it as their preferred platform of choice due to the more powerful tools, and use open source libraries to make up for the lack of a built in API. (These are generalizations, of course, and Forge and Fabric have experienced a fair amount of convergent evolution at this point as well.)
On the performance side, there's a new experimental Paper-like server called Folia from some of the core developers aimed at providing radical parallelism. Normally, all Minecraft servers run their main gameloop on a single thread, and the largest of server operators deal with the issue by providing front end proxies that shard users to different servers, which limits interactivity. From a technical complexity level, you could almost compare it to a GIL-less server reimplementation. All, again, built as patches onto the decompiled Minecraft source code. It's gaining more stability and has been used in some very exciting public tests
As for competitors...well it is not really a competition -- it just depends on what you are focused on for your player-base. Paper is a performance-focused fork of Spigot which is an, to very loosely describe, "interface" for Bukkit. Bukkit itself is an API for Minecraft that interfaces with plugins/mods. If someone is running "modded" Java Minecraft, they are likely touching one of these, or even a fork of Paper.
Paper adds some features/tweaks on-top of Spigot and if your server is having some performance issues or you want a specific feature that Paper offers then you would utilize Paper. If you are fine on Spigot, you use Spigot.
Personally I have always used Paper when hosting servers, as performance (less "rubber-banding" with higher player-counts) was my focus in that time. As well Paper offered the configurable option of "per-player" mob spawning, so we did not have a single player that stood above a cave hogging all of the mob spawns.
Folia is probably the most interesting on this list - it's a mod by the makers of PaperMC to parallelize Java Edition while still maintaining a working survival experience. It's best known for powering 2b2t, a anarchy server with a current player count of 633 on a single survival world, with the world being roughly as old as Minecraft multiplayer itself (servers that are effectively multiple servers chained together have hit CCUs of 216k).
Bukkit is the name of the API for the server software Craftbukkit. Bukkit itself is not server software. Plugins targeting the Bukkit API can run on Craftbukkit, Spigot, Paper, etc. Plugins targeting Spigot API only run on forks of Spigot (if they use the parts of Spigot API that are not in Bukkit), but not Craftbukkit.
Are there any recommended open source projects for handling the management of a Minecraft server? So maybe some kind of control panel, automated backups, etc.?
I specifically mean some kind of all-in-one solution rather than a hodgepodge of tools and bash scripts.
Something that gets one close to the Minecraft Java Realms experience + mods, which one can just provision on their EC2 instance or wherever they may run the Minecraft server.
Pterodactyl is a commonly used one as the other comments say, but just to give some background, Pterodactyl itself, rather than being a minecraft server hosting software, is actually a generic server hosting software that can be used pretty effectively with a lot of games or even webservers. The base configuration of a pterodactyl managed instance is an egg, which is basically a docker image wrapped in a bunch of configurations[1]. This means you can run any docker container in pterodactyl and manage it all through a fairly slick web panel[2] which allows you to easily tweak things like memory allocation, send commands directly to the console, and share access with other accounts. There's lots of eggs already configured for minecraft and other games like Rust (not the programming language), so a lot of the complexity of setting up a docker container is abstracted away and for a non-advanced user its a pretty nice balance between the ease of use for a realm and the extensibility of a full server.
Paper can't provide binaries as it would infringe Mojang's copyright. Users must "build" the server by downloading the official binary and applying local patches. This is well-automated for users.
Licensing wasn't so much a problem in the early days of Minecraft. The first really popular server mod (CraftBukkit) not only provided binaries, but deopfuscated server code on a GitHub repo (since DMCA'd): http://github.com/bukkit/craftbukkit. That repository was ostensibly licensed as LGPL, but no one really believed that, given it was derived from Mojang's proprietary binaries.
Mojang eventually acquired CraftBukkit and hired their devs. And there's an interesting footnote: for several months, Mojang didn't tell anyone they'd acquired CraftBukkit, and they kept making releases to the public GitHub repository. Given it was Mojang making these pushes, I believe (IANAL) that they are officially-licensed LGPL versions of the Minecraft server, albeit ~10 years out-of-date now.
Interestingly enough, CB wasn't DMCAed by Mojang, but actually from one of its contributors, who was angry that he had been contributing free labor to a project that was secretly owned by Mojang (there was no CLA so he was legally able to take down the project by not authorizing his contributions to be used). There was a whole lot of drama and conflicting viewpoints around about this, but here's a post about it that I think stays pretty close to just the facts. https://blog.jwf.io/2020/04/open-source-minecraft-bukkit-gpl... (not associated with the author)
Actually, it's a lot more interesting than that. My understanding was that said contributor realized that since Bukkit is GPL, it can't be legally distributed combined with proprietary Mojang code. His takedown notices were based on GPL violation, not just revoking authorization (which he probably can't do with the GPL?)
hMod was made and developed by hey0, who dropped the project after a while and a new group took over, mostly comprised of hMod plugin developers. That group gave up on hMod pretty quickly and went on to make Bukkit/CraftBukkit instead as it didn’t fit the needs of the community
Only java edition, there is a plugin called Geyser https://geysermc.org/ that adds protocol compatibility between the two, allowing bedrock clients to connect.
Paper itself is a series of patches over the official vanilla server implementation. You can convert a vanilla server to a paper server just by replacing the vanilla server.jar file with a paper server.jar one, and converting back to a vanilla server can be done fairly easily (but a bit more difficult than dropping in)
It's much, much more performant, and able to handle a lot more players/chunks loaded/etc on the same setup compared to a vanilla server. Along with significant performance improvements out of the box, it also adds more configurations (vanilla has server.properties, but papermc adds paper.yml) which allow you to hand tune optimizations[1], from things like disabling player collisions, disabling block updates for certain laggy blocks, etc. These changes are configurable because they trade off expected vanilla behavior for better performance.
The real strength of paper though is that they do all this while also implementing the spigot API, which enables paper server owners to use a wide variety of server mods[2] that can allow you to add things like minigames, anticheat, etc while still being compatible with unmodified clients.
Most would consider it to be vanilla, when "vanilla" is used as a descriptor of the gameplay (i.e., as opposed to "modded"). There are some very minor differences, but almost anyone advertising a vanilla Minecraft multiplayer server is going to be using Paper or one of its predecessors/competitors. The released server.jar just really isn't optimized for more than one player.
Some things that you can tweak for performance reasons also affect gameplay. For example, you can tweak the radius at which items group together into stacks of entities. Enabling this can make certain farm builds not work, e.g. a piglin bartering farm might have the gold bar destined for one piglin merge with the bar destined for a neighbouring piglin, when in pure Vanilla settings that might not happen. Similarly, you can have XP orbs merge into single orbs with higher XP values. But this drastically changes how long it takes to use an efficient XP farm, where normally you would be waiting for minutes for your player to receive the XP one orb at time.
I much prefer Fabric server to Paper. Paper has a couple game-breaking differences in advanced redstone, and Fabric in general has more mod compatibility. There are options to disable the redstone differences, but it's a bit annoying.
Basically just enable the unsupported settings. My players were happy with the end result of each one I flipped on so presumably the behavior was as expected.
We've switched entirely over to Paper for everything because it works so much better than vanilla, and it also enables us to put it behind a Velocity proxy (Minecraft Java Application layer proxy also developed by the same group that develops Paper) for better scalability, more secure infrastructure, and some cool features like enabling any version of Java edition to join the same server (mad props to the ViaVersion & ViaBackwards plugin teams that make this possible!). This is impossible to do with Vanilla. We do all of our own content development creating the activities the kids do during the events, and the plugin ecosystem that someone else mentioned is hugely helpful for this. I especially want to call out how awesome the Geyser and Floodgate plugins are — they make it possible for Java and Bedrock clients to play together in the same world, which makes our customers lives so much easier.
We're hiring part time / contract developers, event hosts, and technical support personnel. If this sounds interesting, please reach out. My contact info is in my profile.