Compatibility: refers to the ability for client of the latest mincraft server version to be able to connect to the server (pumpkin) unmodified with all mechanics working.
Drop-in replacement: refer to the ability of a server operator to simply exchange the current installation/executable of the server (be vanilla, paper, cuberite, etc...) for pumpkin while maintaining data, configuration, scripts and mods installed.
Tell you the truth, that doesn't help clarify to me much.
If it is compatible, then can't I 'drop it in'.
They sound like they are saying the same thing.
It is compatible so clients can connect to the server and be fully operational, and thus, I should be able to drop in this server, and use it as a server?
How can it be compatible if it doesn't maintain data, configuration, etc..
Edit:
or is this about Pumpkin files. Pumpkin will maintain it's own files, data, configuration. So it can't just use existing Minecraft data files.
So if it was a new world, Pumpkin would generate new pumpkin formatted files. But couldn't just 'drop it in' on an existing world and use the existing Minecraft data files.
Not sure of long term viability as far as effort, but if it is files, couldn't a converter from MineCraft to Pumpkin file structure, make the server 'drop in'?
"But from a client perspective, both implement HTTP/1.1."
This seems too low level example to apply for Minecraft.
Minecraft has a lot going on, back and forth. For something to be 'compatible' it would need to be so detailed an implementation of the server, that it could potentially also be a 'drop in'.
When it comes to game servers, especially for highly modified games like minecraft, there's the client facing side, including how the game behaves, and then there's the server administration side.
If I were to interpret the statement made here I would assume that not-a-drop-in while being vanilla compliant means things like:
* It won't support server side mods without you re-writing them in rust
* It won't support bukkit plugins without you re-writing them in rust
* It doesn't support the configuration file format that the java server uses
* Maybe it doesn't support the world file format (which would be server side only)
* Maybe it doesn't support the same administrative commands (which you would only see as an administrator)
etc.
So it can definitely be compatible from the client perspective while being woefully incompatible with any prior experience anyone running a minecraft server might have.
Drop-in means replacing an existing thing with a new one without changing anything.
This is not compatible with other servers plugins/data/configurations, so just replacing the binary and expecting to continue where you left off is not possible.
"Drop-in" is what enterprise software calls "bug-for-bug compatible" - e.g., replacing RedHat with CentOS (RIP) should work exactly the same, even if the CentOS team found bugs - they report them upstream and do NOT fix them themselves, because code may be relying on the bugs.
This is especially true with complicated vanilla Minecraft setups and red stone machines (Java Minecraft red stone has "bugs" that "shouldn't be there" but cannot be removed now since so much depends on it).
I would say that Minecraft servers by some qualities are really hard to implement (for example generate world as Java would - using Java's random number generator to generate exactly the same world in Rust) or even impossible. But other usages, like walking through existing world with 1000 of your colleagues might be worth of writing a very fast but not a "drop in replacement" server. Or a massive minigame maybe?
Hey, There were already efforts made to rewriting the same random generators from Java, And they work. Same seed as in vanilla, Same Result as in vanilla
It's only deterministic if you feed the seeds into the exact same pseudorandom number generator and fetch random values from it in the exact same order. If you take a single extra random value out of order, then everything ends up different.
Hey, With Compatibility i mean be compatible with existing Minecraft vanilla client's and also use vanilla logic.
With "Be a drop-in replacement for vanilla or other servers" i mean that if you just replace the existing server file with pumpkin, pumpkin will not load configs/plugins from vanilla/other servers
Am confused by these two lines. Maybe it is just difference between the 'goal' and the 'current state'.
Goal:
"Compatibility: Supports the latest Minecraft server version and adheres to vanilla game mechanics. "
But NOT:
"Be a drop-in replacement for vanilla or other servers "
Will it be a replacement for Vanilla or not?