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) Mojang releases 1.7.11.  We now have to go back* and update   on all the 1.8 snapshot pages.
 * 2) * *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.
 * 3) 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', and in the lead where it says '.. sixth snapshot for 1.8'.

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
 * The idea with VersionByIndex 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 they literally maintain lists of which version should point to which  and , and I believe such a thing would be very easy to maintain.

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= { {VersionByIndex|1.8|0}} |serverdl= [h ttps://s3.amazonaws.com/Minecraft.Download/versions/14w31a/minecraft_server.14w31a.jar Server] |prevparent= { {VersionPrev| { {VersionByIndex|1.8|0}}}} |prev=14w30c |next= |nextparent= { {VersionNext| { {VersionByIndex|1.8|0}}}} }}

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

; From released versions before { {VersionByIndex|1.8|0}}

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)


 * 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)