Posts: 4,628
Threads: 115
Joined: Dec 2011
Thanks: 693
Given 494 thank(s) in 423 post(s)
01-28-2016, 11:43 PM
(This post was last modified: 01-29-2016, 12:50 AM by NiLSPACE.)
I still don't think it's the server's job to update plugins. What could make sense though is implementing it in a different plugin or in Core.
Though I don't really know what you want to do with that plugins.txt file. What would it be used for?
Also, I could understand people wanting to use "beta" or "alpha" in their plugin version. Are we going to rob developers from being able to do that?
Another thing we might want to consider is that some developers might want to use a fast lane or slow lane like with the Windows preview builds. The fast lane gets new features rather quickly, but it's possible that there are still bugs in there while the slow lane gets less features but is more stable.
Posts: 681
Threads: 26
Joined: May 2014
Thanks: 112
Given 48 thank(s) in 37 post(s)
You really didn't read the specification, did you?
Posts: 4,628
Threads: 115
Joined: Dec 2011
Thanks: 693
Given 494 thank(s) in 423 post(s)
I probably should reword it a little (though I did miss the beta/alpha in the specifications, sorry), but it all comes down to this: What if people don't want to use semantic versioning. I mean, we can't really force them, only encourage it.
I also still don't really understand the plugins.txt file.
Posts: 681
Threads: 26
Joined: May 2014
Thanks: 112
Given 48 thank(s) in 37 post(s)
No, we can't force them. We just say, that if they won't use it, their plugins aren't gonna be updated. The library I mentioned to you, is able to detect this. The plugins.txt file would contain the whole plugin configuration and it functions as a lightweight plugin backup. Whenever you move or update a server you can just move the file with you and the server automatically downloads the plugins
Posts: 721
Threads: 77
Joined: Apr 2014
Thanks: 113
Given 130 thank(s) in 91 post(s)
01-29-2016, 01:49 AM
(This post was last modified: 01-29-2016, 01:53 AM by LogicParrot.)
Important: Regardless of what is done, I think this should be planned very carefully and sestimatically. We don't want each plugin reinventing the wheel with its own update system, and we don't want to end up with fragmentation all over the place. It should be planned in such a way that even an inexperienced plugin developer can tap into the system.
Again, I think we should thoroughly discuss this and plan it very carefully before writing code. I would really like to help out here, both in code and planning.
I believe the new plugin website was done hastily. Firstly it did not implement categories, and secondly, it was created without plugin updaters in mind.
Perhaps an ideal system would have a website with a rest api, and a cuberite-sided plugin (or cpp code) which uses the API for update checking, and allows admins to browse for plugins right through the webadmin and install them with one click.
Posts: 721
Threads: 77
Joined: Apr 2014
Thanks: 113
Given 130 thank(s) in 91 post(s)
Among other things, api versioning should be considered; A plugin updater shouldn't update a plugin to a version which the server does not support.
Posts: 6,485
Threads: 176
Joined: Jan 2012
Thanks: 131
Given 1075 thank(s) in 852 post(s)
I think the plugin updater should be implemented in a separate plugin, and it should be tied to the plugin repository. The plugin repository should really keep track of the versions and whether they are "beta" or "release" grade; the updater will have a per-plugin setting which grade to use.
As for version numbers, I still think a single number is the best solution, like in Android; the plugin repository would have the database of which version numbers are considered "release grade". It makes comparisons simple, no library is needed. It could even be made so that the actual plugin has no knowledge of the version number, only the updater and the repository keep track of those.
Posts: 204
Threads: 6
Joined: Oct 2015
Thanks: 23
Given 17 thank(s) in 16 post(s)
I would prefer a plugin install (maybe via webadmin) which clones a git repo. The autoupdater can then simply check for new commits. Additionally the auto updater can ignore directories not available as git repo.