+ Reply to Thread
Results 1 to 14 of 14
Like Tree1Likes
  • 1 Post By DoomSprout

Thread: [Interest Check] LibVersionCheck

  1. #1
    Sword of Telara DoomSprout's Avatar
    Join Date
    Apr 2011
    Posts
    876

    Default [Interest Check] LibVersionCheck

    I had a play around last night with an idea for version checking.

    The basic idea is:

    The library scans your current addons, and finds all of your root level addons (things that aren't embedded).

    From this list of addons, it parses the version number information, and creates a string in a common format that can be used for checking versions with a simple > operator.

    All of the versions are stuck together into a single message body, and yelled as a broadcast message every few minutes (I was thinking every 10 mins).

    When the library receives one of these messages, it compares the received versions to it's own addon list, and quietly lets the user know if it has seen a higher level addon out in the world (maybe with a threshold to say it needs to have seen it several times from different players).

    I have a little snippet of scruffy code from playing with this idea: http://pastebin.com/BbFxHamQ

    This seems to do a half decent job of extracting version number information and broadcasting it, though I'm sure the patterns could be improved by someone who knows this stuff better than me.

    The advantage of this approach to version checking is that it keeps an eye on every addon out there, even if they are not aware of the library's existence.

    The reason I'm posting this idea before going any further is that for this to work, we would all (addon authors that is) need to agree to the implementation and the mechanism for alerting users. It needs to be embedded in some of the bigger addons out there so that it reaches enough users to be useful.

    So I'm thinking about setting up a project where a number of us can collaborate to come up with a working solution that we are all happy with.

    Any thoughts?

    - Wild

    Gadgets: Unit Frames and Other Stuff for RIFT

  2. #2
    Sword of Telara Semele's Avatar
    Join Date
    Mar 2011
    Posts
    872

    Default

    You may want to do what KBM does with regards to how it decides how to broadcast.

    KBM only broadcasts a message when you log in (to Guild) or join a raid (to Raid or Party). Each KBM client then logs the details and maintains the highest version seen that day. If you have a lower version than one seen (separated via alpha versions with some conditions here) it will post a message asking you to update, it'll only reprint this message again if another condition is met 5 minutes (I think it's 5) later.

    Each client also records each player seen with KBM and what version they are running to ensure it can send them certain other messages in the future without breaking older versions of KBM.

    There is also another reason why KBM is currently storing player version details, and this will actually be coming soon. KBM: Raid Ready - isn't far away. I thought I'd do this as the current Boss Ready seems to have some major performance issues.

    Feel free to look at KBM's messenger, it's an after thought, and made to fit in to KBM but the system works. Bit like most of my code actually. If you need any help figuring out what to use from it let me know. It'll certainly work for any addon including being a stand-alone Lib. I was actually thinking of separating it entirely, I just don't have enough hours in the day and stress is starting to show.

    You could easily have a register feature in the Lib, then tree from each Addon ID and that'll be good to go. You'll also need a setting to make it silent if so required.
    Rank 76 Guardian Mage

  3. #3
    Sword of Telara DoomSprout's Avatar
    Join Date
    Apr 2011
    Posts
    876

    Default

    Quote Originally Posted by Semele View Post
    You may want to...
    Thanks Semele, I will have a look.

    The reason I went for a timed broadcast is to catch people who don't raid and aren't in big guilds. With KBM, you can be fairly certain users are regularly joining raids with lots of other people also running KBM, but most addons don't have that luxury.

    Gadgets: Unit Frames and Other Stuff for RIFT

  4. #4
    Sword of Telara Semele's Avatar
    Join Date
    Mar 2011
    Posts
    872

    Default

    Quote Originally Posted by DoomSprout View Post
    Thanks Semele, I will have a look.

    The reason I went for a timed broadcast is to catch people who don't raid and aren't in big guilds. With KBM, you can be fairly certain users are regularly joining raids with lots of other people also running KBM, but most addons don't have that luxury.
    Except in Rift you can almost be certain they will be in a public group at some point during the day. Or even PvP/Dungeons etc. Although I doubt there will be any issue with a timed broadcast, could even do it via <insert level> chat I guess.
    Rank 76 Guardian Mage

  5. #5
    Rift Disciple Thorarin's Avatar
    Join Date
    Oct 2011
    Posts
    136

    Default

    While I had already started to add some version checking code to KaruulAlert, it may be interesting to do this in a more generic manner.

    There may be issues depending on the version numbering system an addon uses however. For example, KBM has a concept of alpha versions and you won't get nagged to update to it. It's reasonable to assume other addons may have similar (but not identical) systems. You can build in support for some different versioning schemes, but it will be hard to guarantee it'll work properly.

  6. #6
    Sword of Telara DoomSprout's Avatar
    Join Date
    Apr 2011
    Posts
    876

    Default

    Aye, I had a good chat with Baanano on this, and he came up with some really good points and suggestions.

    The biggest stumbling blocks I can see are people that don't want to opt in; either addon authors that don't want their addon monitoring, or users that don't want to be notified unexpectedly out of the blue.

    I'm coming to the conclusion that a totally generic catch-all system, while technically possible to a degree, may not be desirable. If it needs users to opt in (e.g. by installing a version check addon), the value is hugely diminished because it's not the sort of thing most users would bother installing.

    So, for now, I'm going to continue to implement this in the way I roughly intended, and release it as a library that others can embed into their addon to get free version checking, but only version check addons that explicitly register with the library.

    It'll certainly form part of Gadgets; whether anyone else uses it is then up to the individual authors (and we all know how much we love embedding other people's libraries ;)).

    - Wild

    Gadgets: Unit Frames and Other Stuff for RIFT

  7. #7
    Rift Chaser NerfedWar's Avatar
    Join Date
    Dec 2010
    Posts
    377

    Default

    I like the idea, but consider making the check/poll once per session, maybe on login.
    Last edited by NerfedWar; 07-15-2012 at 09:36 PM.
    ...the internet treats censorship as damage, and routes around it...
    NerfedWar Addons and Tutorials
    * Note: tutorials are currently being ported to the new site.

  8. #8
    Sword of Telara DoomSprout's Avatar
    Join Date
    Apr 2011
    Posts
    876

    Default

    Quote Originally Posted by NerfedWar View Post
    I like the idea, but consider making the check/poll once per session, maybe on login.
    Yep, I'm keen to avoid spamming checks, but I don't think once per session would catch enough data to work.

    I would only inform the user once per session though, so collect data while running, and on the next login, inform them, probably with a simple chat console message so as to be non-invasive.

    Gadgets: Unit Frames and Other Stuff for RIFT

  9. #9
    Plane Walker Imhothar's Avatar
    Join Date
    Feb 2012
    Posts
    439

    Default

    Regarding the alpha/notification stuff: why not make the system based on callbacks, i.e. ask the registered addon whether a version string is newer the another one and whether it's alpha/beta/release. The addon author knows best how his version strings work.

    Addons which haven't registered with the library are either ignored or determined with simple "major(.minor)?" patterns which should catch many addons.
    Author of the Imhothar's Bags addon.

  10. #10
    Sword of Telara DoomSprout's Avatar
    Join Date
    Apr 2011
    Posts
    876

    Default

    Quote Originally Posted by Imhothar View Post
    Regarding the alpha/notification stuff: why not make the system based on callbacks, i.e. ask the registered addon whether a version string is newer the another one and whether it's alpha/beta/release. The addon author knows best how his version strings work.

    Addons which haven't registered with the library are either ignored or determined with simple "major(.minor)?" patterns which should catch many addons.
    That makes a lot of sense. As I'm now planning on making it a library that authors can use if they want, I have a lot more options around doing things for a specific addon.

    I must get around to doing something with this. Every time I get my error report with errors from a version that was replaced 6 months ago, it depresses me.

    Gadgets: Unit Frames and Other Stuff for RIFT

  11. #11
    Rift Chaser NerfedWar's Avatar
    Join Date
    Dec 2010
    Posts
    377

    Default

    Quote Originally Posted by DoomSprout View Post
    Yep, I'm keen to avoid spamming checks, but I don't think once per session would catch enough data to work.

    I would only inform the user once per session though, so collect data while running, and on the next login, inform them, probably with a simple chat console message so as to be non-invasive.
    My worry was not about the user prompts but more regarding spamming the network with uneeded requests. Please reconsider at least making it once an hour (if lots of people use the addon then that's still a lot of broadcasts going out...).
    ...the internet treats censorship as damage, and routes around it...
    NerfedWar Addons and Tutorials
    * Note: tutorials are currently being ported to the new site.

  12. #12
    Sword of Telara DoomSprout's Avatar
    Join Date
    Apr 2011
    Posts
    876

    Default

    Quote Originally Posted by NerfedWar View Post
    My worry was not about the user prompts but more regarding spamming the network with uneeded requests. Please reconsider at least making it once an hour (if lots of people use the addon then that's still a lot of broadcasts going out...).
    I share your concern. I made it a single 'fire & forget' broadcast rather than a query/response mechanism so that there wouldn't be a flood of network messages when someone sends a message.

    My thinking was a single broadcast every 10 minutes would have less network impact than a player typing /yell every 10 mins, as only players who are accepting VERCHK messages will be sent it. Combined with the fact the messaging system is already throttled to prevent it causing network lag, I figured this was probably OK.

    However, the system could certainly be more clever about when it sends messages. I was trying to keep it simple and ensure it would work for people who don't join raids and aren't in a guild, but if people are worried that the network impact will be non-negligible, I guess more thought is needed.

    On this general topic, it would be interesting to know how the network impact of sending a message like this compares to the general flow of data for keeping your client updated. How does it compare to, for example, a character taking a step forward, jumping, running round in circles, or casting a spell? Or a character stepping into range (which must result in a whole flood of data).
    Last edited by DoomSprout; 07-16-2012 at 01:36 AM.

    Gadgets: Unit Frames and Other Stuff for RIFT

  13. #13
    Rift Chaser NerfedWar's Avatar
    Join Date
    Dec 2010
    Posts
    377

    Default

    Quote Originally Posted by DoomSprout View Post
    I share your concern. I made it a single 'fire & forget' broadcast rather than a query/response mechanism so that there wouldn't be a flood of network messages when someone sends a message.

    My thinking was a single broadcast every 10 minutes would have less network impact than a player typing /yell every 10 mins, as only players who are accepting VERCHK messages will be sent it. Combined with the fact the messaging system is already throttled to prevent it causing network lag, I figured this was probably OK.

    However, the system could certainly be more clever about when it sends messages. I was trying to keep it simple and ensure it would work for people who don't join raids and aren't in a guild, but if people are worried that the network impact will be non-negligible, I guess more thought is needed.

    On this general topic, it would be interesting to know how the network impact of sending a message like this compares to the general flow of data for keeping your client updated. How does it compare to, for example, a character taking a step forward, jumping, running round in circles, or casting a spell? Or a character stepping into range (which must result in a whole flood of data).
    Good questions. Maybe just make it as you originally intended, it can always be tweaked in future. Like you I really want users who are running bugy/broken addon versions from back in 2011 to upgrade...
    ...the internet treats censorship as damage, and routes around it...
    NerfedWar Addons and Tutorials
    * Note: tutorials are currently being ported to the new site.

  14. #14
    Shield of Telara Adelea's Avatar
    Join Date
    Mar 2011
    Posts
    734

    Default

    Quote Originally Posted by DoomSprout View Post
    I share your concern. I made it a single 'fire & forget' broadcast rather than a query/response mechanism so that there wouldn't be a flood of network messages when someone sends a message.

    My thinking was a single broadcast every 10 minutes would have less network impact than a player typing /yell every 10 mins, as only players who are accepting VERCHK messages will be sent it.
    Against Scerrion last night, with what looked like several hundred ppl, Rift was throwing 148KB/sec at me (a good 75% of which was useless I suspect), so I dont think a broadcast version check of a few bytes every so often will be a big problem!
    http://forums.riftgame.com/image.php?type=sigpic&userid=125779&dateline=13553  38065

+ Reply to Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts