Safeguard Versioning Policy

Discussion in 'Bukkit News' started by EvilSeph, Jan 16, 2013.

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

    EvilSeph Retired Staff

    To protect servers against incompatible plugins that have been developed using the unpredictable and volatile Minecraft code (which we’ll be referring to as “non-Bukkit API plugins” from this point onward), we made the difficult decision of implementing a controversial safeguard into Bukkit. This safeguard forcefully disables non-Bukkit API plugins from running on your server if they have not been verified by their developer to work with the Minecraft version on which your Bukkit server is running. As Bukkit has no control over what changes are made to Minecraft itself, developers should not be relying on its code in any way, shape or form.

    Without this Safeguard in place, running non-Bukkit API plugins on your server had been putting it at risk of instability due to unpredictable behaviour. With the Safeguard in place, developers of non-Bukkit API plugins now have to responsibly check that their plugin works with each Minecraft update, then upload a tested version before the plugin will be able to run on your server.

    When we first implemented the Safeguard, the intention was to forcefully disable incompatible non-Bukkit API plugins with every new Minecraft version, no matter how small the changes. However, since we have the freedom of a flexible release schedule (which Mojang does not), we're usually able to fix bugs faster than Mojang can release Minecraft updates, often removing the need for us to update Bukkit and trigger the Safeguard needlessly (as was the case with Minecraft 1.4.7).

    As such, we're making changes to when we trigger the Safeguard (implementing a versioning policy): instead of triggering the safeguard with every Minecraft update, we will only be triggering it when necessary. This means that non-Bukkit API plugins will only break if a Minecraft update or a rename update has altered the code, instead of with every Minecraft update. As a result, with a Minecraft update like 1.4.7, non-Bukkit API plugins would not break unless we've had to alter the code with a rename update (which we've done for 1.4.7).

    The technical meaning behind this change is: instead of classes being named "name.of.class.v1_4_6", we will now be following a versioning policy of "name.of.class.v1_4_R1" where "R1" is the internal counter for either Minecraft or a rename altering CraftBukkit or Minecraft code.

    This new Safeguard Versioning Policy will allow us to keep up with Minecraft updates without needlessly triggering the safeguard and breaking non-Bukkit API plugins when we've already fixed all the issues the Minecraft update addresses, while still protecting your servers from running unchecked and untested plugins.
     
  2. Offline

    Jombi

    Its really no more work for developers. If you do your stuff right, its no biggie. Nothing to really complain over.
     
  3. Offline

    Kainzo

    @Empty22
    I will say that statistics mean nothing to individual, it's all about what makes you happy as a person. I haven't heard much about Forge, but thats cool.
     
  4. Offline

    deltahat

    I understand the need for these safeguards. Since writing Giant Caves, I've seen two breaking changes to the NMS code that required a rewrite of some of my code. While I would love to switch Giant Caves over to using the Bukkit API, Bukkit does not presently provide a way to efficiently make bulk changes to a chunk without killing the server's performance.

    Why can't we use the method call analysis done earlier to determine which new Bukkit API would get the most plugins off of NMS?
     
  5. Offline

    TnT Retired Staff

    Seems like a great thing for Bleeding to take on. ;)
     
  6. Offline

    dgmindcraft

    im sorry but this has just made me hate bukkit. Disabling all my plugins. I do not support this at all.
     
  7. Offline

    TnT Retired Staff

    It doesn't disable all your plugins, unless you solely rely on plugins that tie into CraftBukkit internals, at which point you'll have a struggle every update regardless.
     
  8. Offline

    ShootToMaim

    Do you code plugins?
     
  9. Offline

    mbaxter ʇıʞʞnq ɐ sɐɥ ı Retired Staff

    I do.
     
  10. Offline

    ShootToMaim

    Not you, of course you do :p.

    I meant the other dude who said it was no biggie for developers to update code to be compatible with the Safeguard thing.
    If he's not a developer, than I have no idea why he would say that...
     
  11. Offline

    Jombi

    Yes, I do. Just because I don't submit them to BukkitDev, doesn't mean I don't code. The people here that help me know I'm not a noob, I just don't go seeking attention like you.
     
  12. Offline

    ThePlayingNoob

    Did i understand right? when a new version of craftbukkit And Minecraft come, all my plugins will break because of a safety thing which i dont understand why its needed and i need wait like 2 weeks to get plugins updated because it take for almost all developer/developers of plugins like 1-2 weeks to update.

    Sorry for my bad english but please explain me on the ''easy'' way how safety guard work and why its needed.
     
  13. Offline

    TnT Retired Staff

    ThePlayingNoob
    Not correct. Some plugins may break, but as a an example based on my own experience, I had 3 plugins break when 1.4.7 was released. It took less than a day to get my server updated.

    The more plugins you use that tie directly into CraftBukkit internals, the more likely you'll find a plugin dev that takes longer to update their plugins than others.
     
  14. Offline

    ThePlayingNoob

    i have 37 plugins but i updated all today and only like 5 break because of 1.4.7 so i use 1.4.6-R1 for now and what is the safeguard used for?
     
  15. Offline

    TnT Retired Staff

    The safeguard is there to ensure those 5 plugins that broke on you do not do anything nasty to your server. When plugins tie into volatile code (aka, code that may change between Minecraft versions), your server may be affected in unexpected and completely impossible to predict ways. This safeguard ensures that only plugins meant for the server version you are running are allowed to run.

    If a plugin uses only the Bukkit API (non volatile code), there is no concern.
     
  16. Offline

    ThePlayingNoob

    Ok good then and is there any easy to understand tutorial: Video or post on bukkit.org that explain how to make plugins with bukkit 1.4.7? i cant find any good
     
  17. Offline

    mindcat

    Server owner could force disable safeguard?
     
  18. Offline

    drtshock Retired Staff

    No. It's part of craftbukkit's code.
     
  19. Offline

    asofold

    That is an abusive statement.
     
    drtshock likes this.
  20. Offline

    MarkCashion

    I think I told you what I need to say on the last post about Advertisements on Bukkit. If you use SproutCraft(AN OUTDATED Server mod), then why are you here? You must love Bukkit if you're here. But whatever, like I said before at least Bukkit can update to a new version of Minecraft UNLIKE SproutCraft which can't. Just saying
     
  21. Offline

    Jombi

    You're overly sensitive.
     
  22. Offline

    desht

    I've been playing around with efficient mass block updates too, and the fundamental problem here is relighting, which I'm not sure any API in Bukkit can completely solve. There's some discussion about improving block update efficiency here: https://bukkit.atlassian.net/browse/BUKKIT-3113. I think the only way to do this without a lot of server lag is some kind of deferred block update/relighting, where the load is spread out over multiple server ticks. Not trivial to do, though.
     
  23. Offline

    asofold

    "no big deal", "seeking attention", "overly sensitive" <- claiming the unknown!
     
  24. Offline

    TnT Retired Staff

    Keep this thread on topic please.
     
    KeybordPiano459 likes this.
  25. Offline

    FreeMC

    The safeguard is a great idea. Forum admins, hosts, and many more will thank you for this.
     
  26. Offline

    phillipkdick

    Today, after six hours of mantenience in my server, finnaly make an "stable build"... but, thanks bukkit, thanks for your fucking SafeGuard...

    because your loving SafeGuard, my mysql db of towny has been corrupted... nice
    iZone has been crashed forever... deleting all protections... for lucky dont have more... but i dont believe others server with use iZone for players, your bastard safeguard has destroy this servers
    Towny works, but dont have more support in bukkit, nice prespecive for 1.5...

    are you crazies? or take soo much drugs this week? i dont understand your obsession for fuck the work of many plugin dev's and server admins who has this plugins in her servers...

    nice work
     
  27. Offline

    TnT Retired Staff

    phillipkdick
    This safeguard would have no effect whatsoever on databases. The concern you have with Towny moving off the BukkitDev platform is unrelated as well.
     
  28. Offline

    phillipkdick

    no, yep, safeguard dont have acces on db, but...

    iZone crashes the srv because you precius safeguard, db dont save fine because the server stay frezze, db towny has been corrupted... so lucky i have backups...

    another time

    nice work
     
  29. Offline

    TnT Retired Staff

    phillipkdick
    This safeguard won't freeze servers either. I am afraid you have hit a bug with your plugins. Contact the developers and have them fix the problems for you.
     
    jkcclemens likes this.
  30. Offline

    asofold

    This is where numbers get interesting, concerning the word "ensure".
     
  31. Offline

    xXSniperzzXx_SD

    I honestly don't see why everyone's complaining, people wouldn't update their server b4 there plugins updated on older mc versions, so now a few plugins need to update each version. Not a big deal, tell your players to wait a week. If the dev doesn't release one by then ask him to. And it's not that big of a thing for devs either, all you have to do is change a few imports, test, then upload. Same thing you did before this...
     
    np98765 and mbaxter like this.
Thread Status:
Not open for further replies.

Share This Page