User talk:Sealbudsman

Proposal for templates so we don't have to touch the (newer) snapshot pages quite so much, moving forward
Good afternoon KnightMiner, Goandgoo, Majr, Dinoguy1000, BDJP007301, BoxFigs (Feel free to flag anybody else in),

I want to talk nav boxes, snapshot pages, and more broadly some problems I see and templates I propose.

The snapshot pages create a lot of busy-work, I don't have to tell you. Here are some situations I was thinking of which definitely put us to work that I think we shouldn't have to do:


 * 1) ''Disregard this first example; KnightMiner points out below, correctly I think, that LatestMinorVersion and static values suffice for.
 * Mojang releases 1.7.11. We now have to go back* and update   on all the 1.8 snapshot pages.
 * *When I made the LatestMinorVersion template, I hadn't thought ahead to see that it wouldn't be generally applicable in the place I had put it.. For instance if after they release 1.8, they start putting out snapshots for 1.8.1, LatestMinorVersion wouldn't be the proper thing to put in .  What needs to go in   is literally the previously released version, not the latest minor version of the previous major release.


 * 1) Mojang hypothetically releases 1.8 as 1.8.2.  We now have to go to all snapshot pages, and change 1.8 to 1.8.2 not only three places in each nav box, but in the Fixes section where it says '.. before 1.8', in the lead where it says '.. sixth snapshot for 1.8', and in the history entries throughout the wiki.

I know a lot of you are willing to do that level of work, as you have clearly been doing what it takes to make the "older snapshot pages" project come to fruition, and I applaud that -- But I just wonder if there was interest in doing it a different way going forward, to eliminate some steps.

I've made some simple templates to address all that, so that things are more "set it and forget it":

User:Sealbudsman/Template:VersionByIndex User:Sealbudsman/Template:ReleaseName
 * Per Majr's comments below about the need to keep things clean and using a bot to subst old usage of this template, I've now called it  and changed the usage somewhat to reflect this.
 * The idea with VersionByIndex ReleaseName is that it allows the page to read '1.8' until you find out it's actually 1.8.2, then you only need to change it in one place. And, if after that, you are expecting it to be 1.8.3 but they give you 1.8.4, again you just change it in that one place.  Same if you are expecting 1.8.5, and they reveal it was 1.9 all along: Change it in one place.

User:Sealbudsman/Template:VersionPrev User:Sealbudsman/Template:VersionNext
 * The idea behind VersionPrev and VersionNext is that it literally maintains a list, so that given a version, it says what should be its.

They would be applied like so, in a snapshot page (example nav box shown):

{ {version nav |edition=computer |image= |type=Snapshot |date=July 30, 2014 |snapshotfor= { {ReleaseName|1.8}} |serverdl= [h ttps://s3.amazonaws.com/Minecraft.Download/versions/14w31a/minecraft_server.14w31a.jar Server] |prevparent= { {LatestMinorVersion|1.8}} |prev=14w30c |next= |nextparent= { {VersionNext| { {ReleaseName|1.8}}}} }}

14w31a is the forty-first snapshot released for { {ReleaseName|1.8}}.

; From released versions before { {ReleaseName|1.8}}

I'd appreciate your thoughts, whether this is a welcome suggestion, one that needs refining, whether a more talented template-er could improve this, etc.
 * For instance can you use variables within a page, so you don't have to replicate  so many times?
 * Would this make the long pages like 1.8/Development versions burdensome to the server by way of having too many templates? I heard that template overload is a thing.
 * Is there another way to do this?

– Sealbudsman (Aaron) (talk) – 17:50, 4 August 2014 (UTC)


 * This definitely seems like a good idea to me, and I like that you've already done the legwork to come up with a functional system. And I should be able to answer your questions:
 * Yes you can, because variables are amazing. =D You can, for example, set a variable in one template and then use it in another template, as long as both templates are transcluded onto the same page and the template that sets the variable is transcluded first. This would allow the,  , and   parameters to be reduced to two (and potentially just one) parameters - and I think, with a bit more careful design, we could also throw the   and   parameters in there, too (though for that I'd suggest instead investigating a Lua module, for which I'd point to Majr, since he's been the one doing all the Lua work around here =D ). It shouldn't even be necessary to make the editor directly transclude VersionByIndex; the infobox could do it automatically. And it would mean you wouldn't have to include the parameters in the VersionByIndex transclusions in the page's prose, just a "naked"   call would be sufficient. I can update the template to allow this if you'd like to see how it works from the code side of things.
 * You're talking about the template limits here. This isn't actually a concern, since the infoboxes don't get transcluded onto the version history pages, but it does mean we can't use the parameterless transclusion method, at least not without some care: we have to include the parameters on at least one VersionByIndex transclusion that will get transcluded onto the version history pages.
 * There may be, but I'm not nearly as good at coming up with new methods for doing things as I am in figuring out how to implement them. =D
 * 「 ディノ 奴 千？！ 」? · ☎ Dinoguy1000 21:35, 4 August 2014 (UTC)


 * Doing all 3 in one step would be awesome; you hit the nail on the head identifying the main barrier to that. I hunted around, and wasn't sure if it was possible to make something like:   -- using wiki markup.
 * I'm not sure what you mean, that if you transclude VersionByIndex in the infobox, you can make a naked call to ?  Why would that be the case, or can I see a working example?
 * Even without the infoboxes, there are the lines like 'Fixed in 1.8' to think about, and those would be all over the 1.8/Development versions page. Would those kind of transclusions contribute to the limit, or are you saying there's a way around that by doing things carefully at the top?
 * – Sealbudsman (Aaron) SealbudsmanFace.png (talk) – 22:00, 4 August 2014 (UTC)


 * My opinions (I'll try to answer the latest questions next, trying to avoid another edit conflict)
 * For , version nav could call it up, rather than the editor calling it.
 * Parent versions: Previous is either going to be an unchanging value (1.8 is released, now 1.8.1 is getting snapshots, 1.8 is not going to change to another version) or the latestMinorVersion
 * Next is either going to be an indexed version (1.8 or 1.8.1 may come after 1.7.10) or unknown (1.8 may have next of 1.8.1 or 1.9). It may be useful to add a template here, maybe loading from the parameter snapshotfor (1.8 would start as blank, then we hear of 1.9 and set it to that, then we hear of 1.8.2 and change it again).
 * As for your last three questions, answered to the best I can:
 * You can add page variables, but you would still end up repeating the variable's name a bunch (called using  ).
 * I don't think a few small templates like these would increase the page memory too much, since each one is only used four or five times per version, and templates like BlockLink get used a lot more on a single page. Also, most of the templates would be in the infobox, and the 1.8/Development Versions]] only loads the content. The majority of what template overload is causes by is either Lua or Extension:Loops (neither of which you are using).
 * None that I can think of, other than updating it manually. After 1.8 is released, there will be little need to change 1.7, and ect.
 * To summarize/clarify: It may be most useful to do this by merging LatestMinorVersion and , then calling it up in Version nav. You could make VersionByIndex to default to the latest, or take an indexed value. And VersionNext may also be useful, although only until we the next parent is released.
 * Edit from slightly later:
 * You could easily call all the needed templates from version nav at the same time, thereby removing a few arguments, and storing the information elsewhere.
 * And yes, such a call is made in version to version link, so it displays the latest version using version link, or compares them and links to version link. And as for the "Fixed from versions before x version" on the 1.8/Development versions, we are still unlikely to reach any sort of limit.
 * --KnightMiner  (t 22:17, 4 August 2014 (UTC)


 * As for prevparent.. That's true, it's one or the other.. but do you know at the point you write the snapshot page, which one it is? Are you suggesting you do know which it is, and so don't need a template in that case?
 * – Sealbudsman (Aaron) SealbudsmanFace.png (talk) – 22:19, 4 August 2014 (UTC)


 * Yes, I'll give an example.
 * 1.8 is getting snapshots, and the latest version is 1.7.10, use LatestMinorVersion, since 1.7.11 or higher may become released.
 * 1.8 was just released, and 1.8.1 is getting snapshots. Since minor version snapshots are not as extreme as major version updates, it is unlikely for a version to get released between 1.8 and 1.8.1, so you use static and/or indexed. Minor versions tend to be performance related and rarely have major rewrites or features needing a version in-between. The also come out quick enough to prevent that
 * --KnightMiner  (t 22:30, 4 August 2014 (UTC)


 * I think you're right, I've modified the proposal to reflect this.
 * – Sealbudsman (Aaron) SealbudsmanFace.png (talk) – 15:14, 5 August 2014 (UTC)


 * It might be possible using some convoluted #switch monstrosity, but as I said, I'd recommend Lua instead - it'd be far simpler to just have an array where each version is listed alongside its parent version, plus whatever's necessary to allow for finding the previous/next parent or minor version.
 * That's because there's not really any good terminology. =C I meant that, if variables are used correctly, a template could be transcluded once with parameters, to allow it to set the proper values for the variables, and then it could be used again without any parameters, instead loading the needed values directly from the variables. I'll adjust VersionByIndex in a minute to show this.
 * All template transclusions (and ParserFunctions and, I think, a few other types of wiki markup) contribute to the template limits. I haven't checked the 1.8 version history page yet, but I'd be surprised if it was anywhere near the template limits currently, aside perhaps from just raw size. If the functionality is implemented in a module, though, it'll be more lightweight than a pure-wikimarkup/ParserFunctions solution. 「 ディノ 奴 千？！ 」? · ☎ Dinoguy1000 22:12, 4 August 2014 (UTC)


 * Here are the template limits for the current version of 1.8/Development versions (which you can check by viewing the page's source and searching for "NewPP"):

NewPP limit report Preprocessor visited node count: 46829/1000000 Preprocessor generated node count: 23050/1000000 Post‐expand include size: 791293/2097152 bytes Template argument size: 18379/2097152 bytes Highest expansion depth: 11/40 Expensive parser function count: 41/100 Lua time usage: 0.780s Lua virtual size: 31.42 MB / 50 MB Lua estimated memory usage: 0 B ExtLoops count: 0/100
 * 「 ディノ 奴 千？！ 」? · ☎ Dinoguy1000 22:19, 4 August 2014 (UTC)


 * I want to avoid having large switches/lua tables of versions building up. This is only necessary for versions that are actually changing (LatestMinorVersion, for instance should not contain any versions before 1.7, as those will never change). The same goes for the usage of Dev version list in the navbox. It is only currently necessary for 1.7 and 1.8. The rest of them will never change and should just be a static list, although it is fine to use it temporarily while the version pages are being created. Unfortunately, it isn't easy to get DPL to subst nicely, so the list would need to be written out manually.
 * The release name changing from the development name is a more widespread issue than just the version pages, basically every page with a history entry for that version has to be updated. So we probably need a template such as which would be used for versions that are currently being developed (then a bot can subst it once the version is released) and templates for the prevparent/nextparent links (can probably just throw some switches in version nav if that's the only place it'll be used), which can then be subst once the version will no longer change. –Majr ᐸ Talk Contribs ⎜ 06:49, 5 August 2014 (UTC)


 * That's a good point about the version pages. I suppose you had been using a bot to change for instance 1.7 to 1.7.2, across all those history cases?  If so, was that a satisfactory way of going about it?  Would having a  thing make it any easier, or improve usability in any way -- or would it be another source of headache, just another thing to keep track of?
 * – Sealbudsman (Aaron) SealbudsmanFace.png (talk) – 15:14, 5 August 2014 (UTC)


 * Nah, it was just all done manually. I wouldn't be surprised if you could still find references to 1.7 on the wiki. It's not really that important as long as it redirects to the right place.
 * A template certainly makes updating easier, as you just modify one or two templates instead of hundreds of pages, and it can be cleaned up by a bot later once the version number is certain. I'd also like to make shortcut templates such as . Having these makes it more convenient for people to use in articles, because they just have to put braces around the version number, rather than having to type an extra template name, and it's easier to keep track of when all the references to a particular version have been cleaned up, when there are multiple uncertain version numbers. –Majr ᐸ Talk Contribs ⎜ 04:52, 7 August 2014 (UTC)

You didn't need to edit the history or infobox of any pages, everything that uses version link already goes through release version... –Majr ᐸ <small style=display:inline-block;line-height:9px;vertical-align:-3px>Talk Contribs ⎜ 03:04, 8 August 2014 (UTC)


 * Sigh.. ah well. I misread you when you indicated that it was a more 'wide spread issue'. Always ask, that's the lesson here. – Sealbudsman (Aaron) SealbudsmanFace.png (talk) – 03:15, 8 August 2014 (UTC)

nextparent
So, KnightMiner, Goandgoo, Majr, Dinoguy1000, BDJP007301, BoxFigs (same crowd as last time),

What about changing  in specific cases such that:

substitutes  for  ?

So, when for example, 1.8 is released as 1.8.1, a bot changes all  to , resulting in:

and  would then be substituting   for  .

And when for example, the next one is released as 1.8.3, the bot changes all  to , and somebody is free to remove the   substitution from.

Thoughts?

– Sealbudsman (Aaron) (talk) – 15:50, 7 August 2014 (UTC)


 * What about using  to achieve that effect. On previous it uses the latest, and on next it can use an unknown next version (starting with nothing, and later becoming 1.9, or 1.8.1). --<font color=#840>KnightMiner  (t 22:04, 7 August 2014 (UTC)


 * That is good, except for one thing: between when a 1.8 version is released and a snapshot for the next 1.8 is released, we would absolutely need to run the 1.8.x-removing bot and reassign it in the navbox, freeing up '1.8.x' for the next version. That'll be fine though, right? – Sealbudsman (Aaron) SealbudsmanFace.png (talk) – 22:37, 7 August 2014 (UTC)


 * Hmm, that is a problem, unless  or   is added for that purpose. I think the goal with this is to never make a bot be needed immediately, and rather when the bot owner can run it. --<font color=#840>KnightMiner  (t 22:47, 7 August 2014 (UTC)


 * Yes, the bot shouldn't ever be relied on, it's just going to be to cleanup afterwards so we don't build up big switches. I think  or   would make sense. I mean, it can really be anything, you just need something to differ it from wanting to exactly specify a version.
 * (Also you can use ping for pinging people.) –Majr ᐸ <small style=display:inline-block;line-height:9px;vertical-align:-3px>Talk Contribs ⎜ 03:19, 8 August 2014 (UTC)