Difference between revisions of "LifeWiki:Tiki bar"

From LifeWiki
Jump to navigation Jump to search
m
(85 intermediate revisions by 9 users not shown)
Line 9: Line 9:


==Archived discussions==
==Archived discussions==
:''Note: active discussions are not archived.''
:''Note: active discussions are never archived while still active.''


* See [[LifeWiki:Tiki bar/Archive/2016]] for Tiki bar discussions started in 2016.
* See [[LifeWiki:Tiki bar/Archive/2016]] for Tiki bar discussions started in 2016.
* See [[LifeWiki:Tiki bar/Archive/2017]] for Tiki bar discussions started in 2017.
* See [[LifeWiki:Tiki bar/Archive/2017]] for Tiki bar discussions started in 2017.
* See [[LifeWiki:Tiki bar/Archive/2018]] for Tiki bar discussions started in 2018.


== LifeViewer inline patterns versus JavaRLE ==
== Conduits and converters ==


As discussed [http://www.conwaylife.com/forums/viewtopic.php?f=&p=53183#p53183 in a questions thread on the forums] -- do we know enough about LifeViewer, and is it stable enough for all users on all browsers as far as we know, that we should adjust the [http://www.conwaylife.com/wiki/LifeWiki:Pattern_pages Pattern Pages] howto and checklist to explain how to do inline RLE for secondary images in an article, without the nuisance of getting pattern files uploaded as a separate admin-only step?
I'm gradually gathering the necessary courage to tackle the new Life Lexicon items that start with "P".  Looks like one of the big things I should do is to carefully figure out how to make proper use of [[Template:Reflector]], but in this modern LifeViewer age I don't think I agree with the part about "The image in this infobox should '''NOT''' include the glider that is to be reflected...".


More ambitious:  might there be some clever way for non-admin users to contribute the baseline pname.rle and pname_synth.rle files directly, using a similarly easy inline-RLE method?  This is already possible by creating a raw RLE page for the pname pattern, but it doesn't work for pname_synth, does it? Could those RLE chunks be hidden in the actual article text somewhere, in some standard location?
Seems to me these template recommendations should be updated to say something like "The image in this infobox '''should''' include the glider that is to be reflected -- optionally, two input gliders separated by the mechanism's minimum [[recovery time]], and an output glider if that allows a smoother animation. However, the bounding box and population count should be calculated with these gliders removed."


It still seems good to have copies of these patterns available in the downloadable ZIP file, thoughDoes that mean we also need a mechanism to assign a pname to each LifeViewer inline pattern?  And then some (semi-automated?) way do the upload, and note in the article that that has been done.
It would actually be pretty annoying to provide RLE of a reflector and not at least show where the input is supposed to goWhen copying and pasting one of these to use in a larger construction, it's usually pretty handy to have some kind of marker for where the the input goes and where the output comes from -- thus the [[ghost Herschels]] in recently added [[Herschel conduit]]s.


A vaguely related note:  the pattern-file admin maintenance page is getting a little unwieldy as the number of patterns goes up -- it lists every pattern in one page, which is so long now that the load time is really noticeable sometimes, at least on my system. [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 15:27, 26 November 2017 (UTC)
[Ideally the marks are state-4 LifeHistory so you don't have to edit them out after pasting -- but we should probably stick with simple 2-state Life patterns on the LifeWiki and not open the LifeHistory can of worms.]


:You're right, pname_synth isn't currently recognized. This could be changed; all we'd need to do is update the pattern templates accordingly.
... And we can probably get rid of [[Template:Reflector/Doc]] while we're at it, no?


:I'm not sure I'm a fan of putting the RLE into the article text proper. The most natural place for it would be an infobox parameter, but that might run into subtle parsing issues. For example, I'm not sure if this:
Before I start this I'll definitely undertake to review all the existing converters and reflectors and conduits -- there are a bunch with raw RLE and/or uploaded pattern files missing.  That's relatively easy to fix, once we have an official decision about whether and how to show inputs and outputs.  I'm currently puzzled by the mysterious [[Template:ConduitInput]] and [[Template:ConverterInputOutput]]. Not that that's surprising -- I'm easily confused by all this wiki template trickery. [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 15:26, 8 May 2018 (UTC)


::<tt><nowiki>{{Oscillator</nowiki></tt>
:I agree that reflector patterns should include the input glider. I'm the one who originally wrote that they shouldn't, and I'm not really sure why anymore. It can't have been very good reasoning, because I completely disagree with it now.<br/>~[[User:Sokwe|Sokwe]] 07:08, 9 May 2018 (UTC)
::<tt><nowiki>|name = Prancing Ponies</nowiki></tt>
::<tt><nowiki>|pname = prancingponies</nowiki></tt>
::<tt><nowiki>|p    = 49</nowiki></tt>
::<tt><nowiki>...</nowiki></tt>
::<tt><nowiki>|rle  =</nowiki></tt>
::<tt><nowiki>x = 20, y = 17, rule = B3/S23</nowiki></tt>
::<tt><nowiki>...</nowiki></tt>
::<tt><nowiki>|...  = ...</nowiki></tt>
::<tt><nowiki>}}</nowiki></tt>


:...would work, or whether it might break because there's equal signs in the value of the <tt>rle</tt> parameter. I ''think'' MediaWiki is smart enough to handle this these days, and a similar parameter to [[Template:EmbedViewer]] has not caused any trouble yet as far as I'm aware, but this sort of thing still makes me nervous. (The safe way of handling this would be to escape all equal signs in the value passed using an appropriate template, as <tt><nowiki>{{=}}</nowiki></tt>, but users ''will'' forget this, and if it then doesn't work they ''will'' not understand why.)
:[[Template:Reflector/Doc]] also asks users not to put animated images on pages, instead suggesting that one should "''consider using a static image of the reflector with a caption that links to the animation''". I think this does not match the general current LifeWiki practice regarding animated images, or generally animated content. Should we reconsider? [[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 05:25, 7 June 2018 (UTC)


:The above applies equally to the synthesis RLE, of course. On that note, having the synth RLE for <tt>pname</tt> live in <tt>RLE:pname_synth</tt> or <tt>Synth:pname</tt> or so would be saner. But it would make the RLE less accessible (though of course the pattern templates could also be rigged to check whether the RLE exists, and show a big red "click here to add the missing RLE" link if not.)
:: It does seem to me that we have a developing consensus that LifeViewer-based illustrations are a good way to go.  There are quite a few Help documents and templates that were written long before the advent of LifeViewer. I'd love to have the Help actually explain to a new user how exactly to add RLE to the RLE namespace, how to get that RLE to show up in an infobox or an embedded viewer, how to adjust the LifeViewer config so that animations (if any) look good, etc. It will take a while to get all the docs updated, no doubt.  My edit yesterday was just a first attempt to start chipping away at the problem. [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 14:48, 7 June 2018 (UTC)


:As always, TIMTOWTDI (There Is More Than One Way To Do It)...
:::Definitely agree! Unfortunately writing documentation is one of things I'm hopelessly.. well, hopeless at. ;) [[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 10:33, 9 June 2018 (UTC)


:For secondary patterns currently using [[Template:JavaRLE]] I think migrating to an on-wiki solution is definitely sensible though. [[Template:EmbedViewer]] already exists and can be used (and [[Special:WhatLinksHere/Template:EmbedViewer|several pages are already using it]]), even if that template's still got room for improvement.
== Lexicon tags ==


:I do agree that the ZIP file containing all uploaded patterns is valuable and should be kept if at all possible. (Do we have statistics on how often that's downloaded, BTW?) As I said on the forums, generating it from on-wiki RLEs would just be a matter of adjusting the generator script, but someone's got to do it, and unless someone else has shell access to conwaylife.com's hosting, it'd probably have to be Nathaniel (who I understand is busy these days with rather more important matters).
Many of our articles (glossary, in particular) are based on, or at least synced with, Life Lexicon content. This creates a need to update these articles when the Lexicon changes.


:(Might be a good time to bring up (again?) an old idea of mine, namely that of a Conway Life Foundation that could take some of the responsibility and workload off of Nathaniel's shoulders. Hey, it's worked for N. J. A. Sloane and the OEIS, and Larry Wall and Perl, and Jimbo Wales and Wikipedia...) [[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 21:29, 28 November 2017 (UTC)
Some of that has been handled in an ad-hoc manner [[User:Apple Bottom/TODO/Life Lexicon|on my userpage]], but the process is fairly involved: look at the project page, find an article to work on, make sure it needs to be worked on, make the necessary edits, make the necessary changes to the project page to reflect the fact you edited the article.


:: Just a note on the technical side of things -- an equals sign within a template parameter indeed won't cause any problems (as long as the parameters are named, as is the case in the pattern infobox templates). The only problem that might arise is if the RLE has vertical bars | in them, but I don't think there's any reason that should ever happen.
It's also not easily found by newcomers who may want to help out. (OK, I'll admit, there likely aren't droves of eager newcomers to begin with, but that nonwithstanding, if you don't know said page exists you're not going to find it easily.)


:: I agree that RLE data should be separated from the main page data in some way, since it is somehow more important and/or should be more "static". We could keep using pattern files, but that has the not-admin-friendly downside. We could use the RLE namespace, which in my opinion isn't bad (maybe slightly clunky). Perhaps a more elegant alternative would be to use the new [https://www.mediawiki.org/wiki/Extension:Cargo Cargo extension] that has recently been made available for MediaWiki. I've tested it out on another wiki that I run, and it works pretty fantastically (though I'd have to update MediaWiki here to a more recent version before it'd work). It introduces a bit of server overhead, but not *too* much based on my testing with it. What it does is makes data entered into templates query-able across the wiki, so on any page of the wiki we could write code that looks something like <nowiki>{{GetRLE|Glider}}</nowiki>, and it would grab the RLE from the pattern template on the "Glider" page. [[User:Nathaniel|Nathaniel]] ([[User talk:Nathaniel|talk]]) 17:42, 1 December 2017 (UTC)
So I was thinking, can't we improve on this? And I just had the idea of tagging articles themselves instead, indicating which version of the Lexicon they correspond to.


::: The Cargo extension looks interesting, but it's a couple of steps removed from what we can do today. Maybe what we should do is to keep implementing Infobox patterns using uploaded pattern files or the RLE: namespace, whichever one we have -- but also document how to set up subsidiary patterns in an article using LifeViewer and inline RLE, since that's the only way that non-admin users can add such patterns without admin help.
The Nethack wiki does something similar; for instance, take a look at their [https://nethackwiki.com/wiki/Foodless Foodless] article, and you'll find that it has an indicator at the top right saying that the page reflects Nethack 3.4.3 (rather than the current 3.6.1), generated by [https://nethackwiki.com/wiki/Template:Nethack-343 this template].
::: The inline LifeViewer method doesn't require the additional patterns to have their own unique pnames, but the docs should ask for one and give a standard way of recording the pname.
::: Whenever we come up with a better method, and hopefully while there's still only a manageable number of LifeViewer-with-inline-RLE patterns, we'd probably want to commit to an admin-led effort to convert all trial-format pages to the new long-term format.
::: That seems like one possible way to keep moving forward in smallish steps, while also avoiding the current problem of confused and mystified potential contributors. Thoughts? [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 18:39, 1 December 2017 (UTC)


:::: Sorry for the late reply... I agree with Dvgrn, Cargo looks neat, but I'm not convinced it'll help us here. For making it easier for non-admins to contribute/edit RLE files I still think the best current way to do this is to either:
We could use something similar. There wouldn't necessarily have to be a visible indicator (though there could be); at the very least, though, pages could be tracked in appropriate categories, and we'd know at a glance what needs to be updated (or at least reviewed) and what's current.  


::::* keep RLE in wiki pages, in the existing RLE namespace or a new one (say "RLE synth"); or
This way, all edits would be in one place: review an article and make edits as necessary, and also update the tag to indicate it now reflects a newer Lexicon version. And placing those tracking categories into an appropriate supercategory and placing that in the existing category tree in turn would allow editors interested in helping out find articles in need of review.
::::* use regular on-wiki file uploads for RLE files. I've never tried this, but the File: namespace isn't just for images, so I'm sure it could be made to work.


:::: [[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 22:02, 9 December 2017 (UTC)
There would be two downsides. a) most of the Lexicon doesn't change in each Lexicon release, so we'd have a lot of articles tagged as (say) reflecting v28 when in fact they're also current, by virtue of not having changed since v28. And b) we wouldn't easily be able to see which articles are missing from the wiki entirely.
:::::Is it time to make an executive decision about supporting <tt>RLE:pname_synth</tt> or <tt>Synth:pname</tt>, with the infobox template rigged to add a raw-RLE link if that page exists?  Either option seems fine to me.
:::::This evening I'm feeling brave enough to start editing the Help: files to tell J. Random User step-by-step how to add patterns for use with LifeViewer.  That means deciding what to say about including/not including RLE header lines, comments, etc. The possibility of adding _synth files this way seems like a minor remaining question mark.
:::::Eventually I think all these added patterns in the RLE: namespace should be automatically vacuumed up somehow and added to the pattern collection -- presumably with some kind of comparison tool to make sure that patterns already in the collection are the same as the versions in the RLE: namespace.  (Will work on building that tool later.) [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 22:04, 21 February 2018 (UTC)


::::::Yes, let's [http://i.pinimg.com/originals/86/76/ad/8676ad94c53937330a085a7d0a9bc13a.jpg Make It So]! And automatically copying on-wiki RLE into the pattern collection? Yes, ''please''.
I still feel that this would be an improvement though, and there's no reason we couldn't combine these tags with a manually-curated project page to get the best of both worlds.


::::::Still not sure whether <tt>RLE:pname_synth</tt> or <tt>Synth:pname</tt> would be the better choice; I'm actually leaning toward the former right now. It'll make the script that little bit less complicated; it fits our existing naming scheme for pattern files, images, etc.; and it won't require a new namespace to be configured. (Of course you can create prefixed pages without a namespace as well, with the prefix just being part of the regular title, but that interacts badly with things like [[Special:RandomPage]]; and moving pages over ''after'' a new namespace has been created... well, there's still at least ghost <tt>RLE:</tt> page lingering in the Main namespace right now that is being shadowed by an <tt>RLE:</tt> namespace counterpart.) So yeah, leaning towards <tt>RLE:pname_synth</tt> right now.
Also, re: downside a) specifically, I think this could be dealt with by also having an indicator on the wiki saying which Lexicon release is current; pages that haven't been tagged as reflecting the current version would then display a gentle, unobtrusive note, and anyone viewing such a page could quickly check that it does indeed match the current Lexicon release, and update the tag if so.


::::::As for what should be included in RLE snippets, I think ideally it should be this, at least:
Thoughts? [[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 07:49, 18 July 2018 (UTC)


  #N Pattern name
: This seems like a fine idea to me. As far as downside a) goes, I think that the last year of Life Lexicon updates is highly unusual, since it involved catching up after over a decade of no maintenance at all.
#O Discoverer
#C One-line description
#C Wiki-page link
(actual pattern)


::::::We probably can't reasonably expect random users to adhere to that, always --- but guidelines are good having, and if it's on-wiki it's easy to edit.
: The standard editing methodology for new Lexicon releases is to maintain a Changes section at the top of the raw Lexicon text file, carefully listing every "added" or "edited" entry since the last release, by name.  Nobody is supposed to edit a Lexicon definition without updating the change log.  This should make it trivial to find missing articles, and hopefully should also allow an easy update to the tags.  Every Lexicon entry that's not listed in the change log can be automatically bumped to the latest lexicon release.


::::::The only issue I can see right now is conflicts. Suppose you have an RLE file, and an on-wiki RLE snippet, and they're not the same. How do you tell whether a) the RLE file was uploaded by an admin (and should thus presumably ''not'' be overwritten), and b) the RLE file was generated from an earlier revision of wiki page, and thus ''should'' be overwritten?
: That's a lot of small changes to a lot of articles with every Lexicon release, though. Does it make sense to have the default Lexicon tag be just {{LexiconLatest}} or some such, with a template to display on the page whatever the latest Lexicon release number actually is?


::::::One way around this would be to put a suffix on the files generated from on-wiki RLE snippets, so that e.g. <tt>RLE:ponyexpress</tt> would become <tt>ponyexpress_wiki.rle</tt>, or some such thing. Conflicts could then be handled by simply ''assuming'' that any file whose name is suffixed <tt>_wiki</tt> was imported from the wiki and is fair game for being overwritten (and if it was not, then the uploading admin only has themselves to blame). But is this ideal?
: Then, for the next Lexicon release (30), we can just update the (relatively small) list of changed definitions to say "Release 29" -- and then after each definition is reviewed and patched, the tag is updated at the same time, back to {{LexiconLatest}}? [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 22:15, 18 July 2018 (UTC)


::::::Flagging files externally would also be possible, but the flags should be visible on the mod panel in some way, and they should reset if a file is manually uploaded there.
::I suppose that would work, but it's pretty much the opposite of what I was trying to accomplish. ;) I was thinking of this as a status checkbox of sorts where editors would check off that yes, this article has been reviewed for Life Lexicon release 30 or 50 or whatever, and any articles that lacked that virtual checkmark would automatically be herded and available for review and/or updating, as necessary.


::::::Alternatively we could declare this to be a non-issue and say "the wiki takes precedence, period". This would be the way to go if we want to deprecate the mod panel in the long term. If we did this, of course, we (and by "we" I mean you, heh) should audit the uploaded RLE snippets we've got to make sure we'd not be overwriting any existing RLE files with inferior content. (Comparing conflicting files to see which ones are actually different could also be done programmatically, of course.)
::Having a "LexiconLatest" tag instead would mean checkmarks that check themselves, by default, and that we'd then have to go and un-check. That's not so different from the current approach, with my TODO page.


::::::But that's enough rambling from me! [[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 09:08, 22 February 2018 (UTC)
::But you raise a good point. We have a log of Life Lexicon changes, and once we're actually caught up with the Lexicon in general all we'd have to do is keep an eye on those. Hmmm.
:::::::Sounds good -- RLE:pname_synth it is, then.  I'll see if I can dig up a sample or two to add on-wiki, with a suitably modified header:


#N pname_synth
::Here's a thought, admittedly a rather complicated one. How about we do both? That is to say, how about a tag template that has ''both'' an explicit parameter ''and'' uses a default "low watermark", displaying the higher of both?
#O Discoverer, optional date (?)
#C Description -- can be one or multiple lines
#C Wiki-page link
#C http://www.conwaylife.com/patterns/{pname_synth}.rle
{actual pattern}
#C LifeViewer config


:::::::I like having the date, if it can be collected, but there's never been a really good place to put it.  It sort of ought to have its own tag, like #D {date}, but #D traditionally meant something else in old Life32 files, and it's a little awkward having it take up its own line anyway, so I usually just put it in the description.
::The explicit parameter would be used by editors to indicate that a page has been reviewed/updated to reflect a certain Lexicon release; the "low watermark" (kept in a template of its own) would be updated by us whenever we're sure that ''every'' Lexicon-related entry reflects a certain Lexicon version.
:::::::It's also nice to have the direct link to the actual pattern file, when that exists.  That might cause headaches because it '''won't''' exist until the hypothetical periodic upload happens, and then it will exist.  So probably both the wiki-page link line and the pattern link line really ought to be added programmatically, to signal that the upload has happened.  I think I have the tools to do that, but it's a bit ugly -- will experiment and (eventually) report back.
:::::::Another awkwardness is the question of whether or not to include a LifeViewer config line, when ''that'' exists, in the uploaded RLE pattern.  This is looking forward a little, but I'd like to programmatically grab that and throw it in also.  Mostly this is because lifeviewer.lua is a thing, and it may eventually allow LifeViewer-like displays in Golly if the config line has been carried over.  Just tried it on-wiki and it's a bad idea to have it in the RLE: namespace due to conflict error messages.
:::::::Next question:  we have [http://conwaylife.com/wiki/Category:Pages_with_raw_RLE_code_but_no_uploaded_pattern_files Category:Pages_with_raw_RLE_code_but_no_uploaded_pattern_files] and [http://conwaylife.com/wiki/Category:Patterns_with_RLE_snippets_but_no_LifeViewer_configuration Category:Patterns_with_RLE_snippets_but_no_LifeViewer_configuration], but that only applies to articles with an associated primary pattern, not articles with one or more subsidiary LifeViewer illustrations.  What's the best way to get a link list for everything in the RLE: namespace? [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 11:46, 22 February 2018 (UTC)


::::::::Looks good! I just realized that due to MediaWiki's underscore conversion, <tt>RLE:${pname}_synth</tt> will become (i.e. look like <tt>RLE:${pname} synth</tt>). I don't know what title MediaWiki saves the page under internally, so it may be a good idea to code conservatively and convert spaces to underscores.
::For instance, assume that all our articles conform to Lexicon release 30. Suppose that release 31 comes out now. We then go through the changelog, edit all articles that need updating, and after that's done, we conclude that no further changes are necessary, and bump the "low watermark" to 31, thus causing ''all'' articles (that reference the Lexicon) to declare that they match release 31.


::::::::Re: dates: what does <tt>#D</tt> traditionally mean, then? BTW, we might be able to use <tt>#T</tt> (for "timestamp") or so instead.
::One advantage of this would be that we'd still see when an article was last ''explicitly'' reviewed. For instance, an article might say it reflects Lexicon release 31, but the "version=" parameter might still say it was last reviewed for 28. If nothing else, this would make it easier to spot articles that haven't been reviewed for a long time and where discrepancies might've crept in.


::::::::LifeViewer-config embedded in the RLE file itself, that's certainly doable; if this is done we may eventually want to remove the relevant infobox parameter, it shouldn't be needed anymore then. (The "default configs" could then also go, in a second step.)
::Another idea: we've already got [[Template:LinkLexicon]] to link to Lexicon entries. We could repurpose this to also additionally display a tag, which would save us the need to edit 831 articles just to add a tagging template.


::::::::Re: pattern file links not being "live" until files are uploaded: as you say, this should be fine if those links are added (and the files uploaded) programmatically. Perhaps the script could also update the on-wiki pattern file?
::[[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 07:50, 19 July 2018 (UTC)


::::::::Getting a list of all <tt>RLE:</tt> pages -- you can do that on-wiki using [[Special:AllPages]], specifically [[Special:AllPages/RLE:]] ([http://conwaylife.com/w/index.php?title=Special%3AAllPages&from=&to=&namespace=3792 here's a better link]). From a script, you're probably better off using the [https://www.mediawiki.org/wiki/API:Main_page MediaWiki API]. I've no experience with this, but the [https://www.mediawiki.org/wiki/API:Allpages <tt>allpages</tt> query] looks promising (you can pass a parameter indicating which namespace you're interested in).
::: This all seems reasonable to me -- especially sneaking a displayed tag into [[Template:LinkLexicon]]. Now that Golly 3.2 and Release 29 are safely out the door, I'm sorta kinda planning to get back to work on the LifeWiki ToDo list for Lexicon updates, with the intention of getting everything up to date eventually -- hopefully well before Release 30 comes along to confuse things any moreWe already have some kind of a tracking system set up for Release 28 and 29, so maybe it makes sense to keep using that, and design the new template/tag system to really come into use once everything has been updated to Release 29.
... What does #D mean?  You'll be sorry you asked.  Summary [http://cranemtn.com/life/blog/RLEFormat.htm here].
Xlife tag -- #D x,y:  coordinate differences from
the previous point, separated by newlines
Life 1.05 format -- comment, instead of "#C".
  "D" stands for "description".
Life32 format -- initial tag in every saved pattern,
containing an ugly hexadecimal checksum.


Hmm, we start with putting standardized comments in the RLE, and now maybe just move the LifeViewer config line there tooI almost wouldn't mind thatIhe viewerconfig is generally a lot bigger and uglier than any of the other infobox parameters.
::: So in early 2019, if we end up with a list of say fifty articles that have changes for Lexicon Release 30, my thought would be to update just those fifty articles to specifically say "Release 29" (however we decide to do that exactly -- maybe with a template saying "this article is out of date, please help out by updating it"?). Then bump up the "low watermark" to 30 right awayAs articles get updated, the "please help" template can get removed again with the same edit. Does that work? [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 18:49, 19 July 2018 (UTC)


My first thought was that it was a bad idea, because if we wanted to use the same pattern in a different article with a different LifeViewer animation (highlighting a different reaction, or whatever) then we'd have to duplicate the RLE, name it something different, and add a different config line.
::::OK, cool. :) Good to hear you'll have some time to devote to the Lexicon-to-LifeWiki TODO list. I'm not able to put in much effort there myself --- too much studying, too many exams. Ah well.


But considering how often pattern re-use has actually happened so far -- approximately never (?) -- I don't think a tiny amount of duplication would be a problem if the case did eventually arise.  Should I be brave and start moving config lines into RLE, or is this a good time to hunt for third opinions?
::::Re: marking e.g. fifty articles as needing updates and everything as conforming to e.g. release 30 by default --- that would be a lot easier if we had Lua scripting available! MediaWiki's templates only go so far and aren't really meant for pushing lots of structured data around.


On the #T timestamp idea -- I wouldn't mind that too much, but unless the discovery date is going to be filled out really reliably with a #T tag, I don't entirely see why we need a new #T convention.  We could equally well say that the new #O convention is #O {discoverername}[, {discoverydate}].  I'm happier when there are fewer half-empty mandated comment lines; the date fits perfectly well on the same line with the discoverer.
::::Our options there would include at least the following:


-- Yeah, there are some possible parsing problems with commas if there are multiple discoverers, which could probably only be solved by standardizing the date format. But again, is anyone really ever going to be expecting to find a discovery date reliably with a comment-line parsing script?
::::# Manually edit each of those 50 articles (e.g. by setting an extra template parameter) to override the "low watermark". Not ideal --- we might as well just edit those 50 articles to update them if we're already editing them anyway.
::::# Provide a global "kill switch" for the low watermark that, when set, causes the low watermark to be ignored. Pages explicitely listing a conforming Lexicon release would then display that instead, so those 50 "release 29" articles would show up in the right category, etc. Also not ideal --- there might be many other articles that would also have the explicit "reviewed for release 29" tag, or older tags at that, which would NOT need to be updated.
::::# Keep a list of those 50 articles, and rig the template to display a notice if the title of the transcluding page happens to be on that list. '''Also''' not ideal --- we'd have to curate that list, and as I said, MediaWiki templates aren't really meant for this sort of thing.


Thanks for the pointer to "All pages".  The amount of wikistuff I don't know still greatly outnumbers the amount I do know.  I see the redirects are helpfully italicized. Um... "RLE:Merzenichsp644blockshassling2beehivesand2rpentominos"?  What exactly is that doing in there? [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 18:09, 23 February 2018 (UTC)
::::Maybe there's another solution I'm not seeing, though.


:Ah, so the answer re: <tt>#D</tt> is "it's complicated". Gotcha. ;) And OK, let's just extend what <tt>#O</tt> covers, that's probably the most sensible approach.
::::That said I also have a feeling we're trying to overengineer the solution, though, or perhaps attacking the problem from the wrong angle. After all, what do we want to do? Keep the LifeWiki current as far as Lexicon content goes. How do we achieve that? By importing Lexicon as necessary, and (once done) keeping an eye on changes made to the Lexicon and mirroring them on the wiki (again, as necessary). And how do we do ''that''? By rolling up our sleeves and working on it. Fancy templates and tagging nonwithstanding we won't get anywhere if we don't just jump in and do it.


:Re: LifeViewer config -- yes, it seems we're not actually reusing patterns in different places, so moving the viewerconfig into the pattern seems sensible.
::::<small>(And by "we", I mean whoever's willing to do that job.)</small>


:FWIW, what we're currently lacking is a mechanism for "prioritizing" LifeViewer config parameters. Having a mechanism to assign different priorities to different <tt>#C [<nowiki />[ ... ]]</tt> lines would open up a variety of use cases. Imagine the pattern looks like this:
::::[[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 18:16, 20 July 2018 (UTC)


  #N Amazingpattern
:::::Re: overengineering... yeah, offhand I don't see a better solution than the first one: manually edit 50 articles, copying and pasting the same "stub"-like template marker in as a header. This is a bit tedious, but that's what multiple browser tabs are for, and it can be done pretty easily in half an hour or so. The idea is that we can make a little bit of effort to spread the update work around(Here "we" means the small group of people who have done the work so far -- a small group because it's kind of tricky to do everything right, so not many people have figured out all the fiddly details.)
  #O Cathy Sue Lifeenthusiast, November 2017
  #C https://conwaylife.com/wiki/Amazingpattern
  #C [<nowiki />[ TRACKLOOP 30 -1/10 -1/10 GPS 15 ]]
x = 48, y = 52, rule = B3/S23
...


:Now imagine that we want to use this pattern somewhere, with a different viewerconfig, and that we could simply say:
:::::I can add "needs Lexicon update" headers to 50 articles in half an hour, but I sure can't do a careful comparison and repair on 50 articles, especially if it will require adding new illustrations or modifying existing ones.  But it seems to me that there's a larger (and growing) population of LifeWiki users who can perfectly well review a particular Lexicon definition when they trip over a "needs Lexicon update" template header begging for help.  Often it isn't too hard to find what needs changing, make the required edits, and remove the "needs Lexicon update" tag at the same time.


{<nowiki />{EmbedViewer
:::::Every one of these articles that someone picks up and fixes, is one that I don't have to do myself... and in the meantime, a half hour of work has already brought the LifeWiki more up to date, by specifically flagging the fact that there's newer information somewhere else that needs to be integrated into the article.  Seems like this might be a good habit to get into, for as long as the Life Lexicon is kept more or less in synch with current reality.
|pname        = amazingpattern
|viewerconfig = #C [<nowiki />[ PRIORITY 1 GPS 1 ]]
|caption      = Cathy Sue's Amazing Pattern in slow-motion
}<nowiki />}


:And the explicit viewerconfig would (partially) override the embedded one, by virtue of having a higher <tt>PRIORITY</tt> (the default if none was specified would be 0).
:::::Sound reasonable?  And could you have a look at [[Template:NeedsLexiconUpdate]] and see if it has everything in it that this plan might need? [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 21:02, 20 July 2018 (UTC)


:Further imagine that there was a default viewerconfig that said e.g.
::::::Redirect pages don't need any markers saying they're from a Lexicon entry -- do they?  I've been trying to rebuild some momentum by getting the remaining redirects done...  [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 21:57, 26 July 2018 (UTC)


#C [<nowiki />[ PRIORITY -1 THUMBLAUNCH THUMBSIZE 2 GRID GRIDMAJOR 0 THEME 6 ]]
:::::::Cool, good to see this is already progressing. Good job! :) I'm a little less swamped now, so I'll take a look at the Template'n all over the weekend.


:...thus setting a number of sensible defaults at a lower priority, allowing any viewerconfig embedded in the pattern file or passed explicitely to a template to override it.
:::::::No, I don't think redirect pages need markers. I don't consider these "content" in the strictest sense, in either the Lexicon or the LifeWiki --- they're just tools that help people ''find'' content.


:Wouldn't that be neat? Perhaps Chris Rowett could be persuaded to add something along these lines. (Right now, IIRC, LifeViewer throws the towel in the face of conflicting configuration commands.)
:::::::[[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 08:31, 28 July 2018 (UTC)


:Finally, re: [[RLE:Merzenichsp644blockshassling2beehivesand2rpentominos]] -- that's apparently a redirect left over from when I moved a page from a previous improper name. I'll delete that, we don't need the redirect.
== Object frequency classes ==


:'''EDIT''': I've also deleted all other redirects in the <tt>RLE:</tt> namespace; none was necessary, and none had any pages linking to it (except for [[RLE:Lightweight spaceship]], which was linked to as an example of ''not'' to name RLE: namespace pages). [[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 10:45, 24 February 2018 (UTC)
I do apologize for my somewhat extended absence. That said, I had an idea (long ago actually) about adding information on the commonness of objects to pattern infoboxes, using data from Catagolue (specifically, B3/S23/C1).


:: After looking at the ugliness of competing viewerconfig lines, I was thinking somewhat along the same lines. Another option that would allow many of the same use cases would be a simple command to allow later configs to override earlier ones:
I don't think saying "this still life is the 1,691th most common object on Catagolue" is useful, of course. What I'm proposing instead is the frequency class, defined as follows: a pattern is in frequency class X if the most commonly-occurring object (the [[block]], in this case) is 2<sup>X</sup> times more common. X need not be an integer; to strike a balance I'd suggest using one decimal digit.


::viewerconfig = #C [<nowiki />[ OVERRIDE GPS 1 THEME 3 ]]
Let me give an example. The [[twin hat]] has appeared 240,372,408 times on Catagolue (as of this morning), whereas the block has appeared 71,146,901,659,666 times. So the block is approximately 295,986 &asymp; 2<sup>18.17517</sup> times more common, and the twin hat's frequency class is 18.2, rounded to one decimal digit.


:: However, at the moment all such use cases require quite a bit of imagination -- we don't need to do any such thing with any current patterns, and there's a perfectly good workaround that involves adding RLE:cathysueamazingpatterninslowmotion.  And since I'd much rather Chris worked on some waypoint and point-of-interest stuff, and/or support for Larger than Life which is also in the works, maybe I'll just leave this note here and see if he notices it --!  [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 13:06, 24 February 2018 (UTC)
I think this is a fairly intuitive way of capturing commonness. An additional nice property is that if an object has occurred sufficiently often, its frequency class is unlikely to change much, if at all; this is true even for objects whose commonness is very similar and who might switch ranks regularly, with one or the other having occurred more often at any given moment. So once this information's added, we wouldn't need to edit it much, if at all ever.


:::That works, too -- though an explicit <tt>OVERRIDE</tt> tag would have the disadvantage that you'd explicitely have to spell it out. Say we've got a default viewerconfig for oscillators that should be overridden by more specific viewerconfigs in individual RLE files; then all these files would have to use the <tt>OVERRIDE</tt> tag. And if you then wanted to use the same pattern in several places, and tweak its viewerconfig further, as in the "slow-motion" example above, you'd have to <tt>OVERRIDE</tt> the embedded viewerconfig as well.
Like I said, only sufficiently common objects should have this information added; there's too much uncertainty about the frequency class of an object that has only appeared once, say. I unfortunately lack the statistical background to suggest a good cut-off value ("objects should only have this information in their infoboxes if they have occurred at least ''n'' times"), but unless there are objections I'll add this, or at least do the necessary template work.


:::Worse, it's not immediately obvious to me what the result would be in the face of conflicting <tt>OVERRIDE</tt>s. Say, the three viewerconfigs (default, embedded-in-RLE, and explicitely-passed) amount to something like the following:
...heck, I'll just go ahead and do it, it's been a while since I've edited anything here. If anyone thinks that this is a load of bull, please just speak up and say so. :) [[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 17:56, 1 September 2018 (UTC)


#C [<nowiki />[ GPS 4 ]]
(P.S. --- although the block is the most common in B3/S23/C1, it isn't necessarily for other B3/S23 censuses; in some symmetries, the [[blinker]] is more common.)
#C [<nowiki />[ OVERRIDE GPS 30 ]]
#C [<nowiki />[ OVERRIDE GPS 1 ]]


:::would the final <tt>GPS</tt> be 30 or 1? I'm tempted to say "1" -- but one ''could'' disagree. And besides, if it is 1, we'd be back to square one; the final result would depend on the order of the lines again, and all we'd have done is a "please don't ignore this line" tag. (<tt>PLEASE ABSTAIN FROM IGNORING</tt>... the INTERCAL version of LifeViewer?) At that point we might as well do away with the tag again and say "later values overwrite earlier ones, so the last value takes precedence".
:Replying to myself, I've started doing this; there is a new template parameter, <tt>fc=</tt>, currently only for [[Template:Stilllife]], [[Template:Oscillator]], [[Template:Spaceship]] and [[Template:Puffer]] (no other types of object have appeared on Catagolue anyway). I've also added a short glossary entry at [[Frequency class]], and added frequency calss data to a couple of object infoboxes, including all with FC &le; 10.0. The script used to generate the necessary data from Catagolue's [https://catagolue.appspot.com/textcensus/b3s23/C1/ textcensus] is this:


:::But yes, let's leave it for Chris. As you say, we can just upload different version of the same pattern ''if'' this ever becomes an issue in practice. [[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 09:21, 25 February 2018 (UTC)
<pre>
#!/usr/bin/perl
 
# usage eg.:
# perl ../frequencyclasses.pl b3s23.C1.txt >frequencyclasses.txt
 
use Modern::Perl '2016';
 
# only patterns with more than $cutoff occurrences should be considered.
# mark all other patterns with an asterisk.
our $cutoff = 10;
 
# throw away header line
<>;
 
my %objects = ();
my $mostcommon = -1;
my $mostcommoncode = "";
while(<>) {
    chomp;
    next unless m/^"([^"]*)","(\d+)"$/;
 
    my ($apgcode, $count) = ($1, $2);
    $objects{$apgcode} = $count;
 
    if($count > $mostcommon) {
        $mostcommon = $count;
        $mostcommoncode = $apgcode;
    }
}
 
my %frequencies = ();
foreach my $apgcode (keys %objects) {
    my $frequencyclass = sprintf("%.1f", (log($mostcommon / $objects{$apgcode})) / log(2));
    $frequencies{$frequencyclass}->{$apgcode} = $objects{$apgcode};
}
 
foreach my $frequency (sort { $a <=> $b } keys %frequencies) {
    foreach my $apgcode (sort { $frequencies{$frequency}->{$a} <=> $frequencies{$frequency}->{$b} } keys %{ $frequencies{$frequency} }) {
        print "*" if($frequencies{$frequency}->{$apgcode} <= $cutoff);
        say "$frequency\t $apgcode\t $frequencies{$frequency}->{$apgcode}";
    }
}
</pre>
 
:(I'm sure there's better ways of doing this, but this worked for me.) [[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 18:52, 1 September 2018 (UTC)
 
::Another reply to myself --- [[User:Goldtiger997|Goldtiger997]] [http://conwaylife.com/w/index.php?title=Tumbler&curid=703&diff=46374&oldid=41650 suggested] a cut-off value of 10 (non-inclusive). This strikes me as sensible. So unless there's objections, how about we run with this, and only add frequency class information to objects having appeared more than 10 times?
 
::Also --- right now the information is [[Catagolue]]-specific, which is sensible but still somewhat arbitrary; if we want to include more information later (e.g. from Achim's, Andrzej's and Nathaniel's censuses, or from whatever future censuses people may come up with), we can easily adjust the infoboxes to include a new "Commonness" section, and re-interpret <tt>fc=</tt> as "'''f'''requency in '''[c]'''atagolue". [[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 09:08, 2 September 2018 (UTC)
 
:::Sounds good. However, I already broke my "suggestion" of the 10 occurence cut-off twice; for the [[Coe ship]] and [[Achim's p8]]. Is it worth removing the <tt>fc</tt> parameter for those two articles, or should they just be left as they are? [[User:Goldtiger997|Goldtiger997]] ([[User talk:Goldtiger997|talk]]) 09:26, 2 September 2018 (UTC)
 
::::I think we can grandfather those in --- would be good if you could keep an eye on them in case the information changes, of course, but it's just two articles, so that should be fine. I've also added the cutoff of &gt;10 to the script above; patterns not reaching that cutoff are marked with an asterisk. [[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 09:35, 2 September 2018 (UTC)
 
==Infobox vs. EmbedViewer==
All this interminable Life Lexicon import work has been leading me to believe that there are two classes of articles that can use LifeViewer animations.  There are the named patterns, where if you say "Pattern X" there's really only one likely Pattern X that you could be referring to.  These get put into an infobox category, with appropriate statistics collected and so forth.  The most recent example of this kind of imported Lexicon article is [[line crosser]].
 
The other class of article is for a term that might refer to a variety of different patterns, so that there are various examples but no specific example should really be considered to be the one canonical one.  In these cases I've been using an embedded viewer but haven't been bothering with an infobox.  The most recent examples along these lines are [[line-cutting reaction]] and [[line-mending reaction]].  I like the way these are turning out, but am curious to hear if anyone thinks that these should also be infoboxed somehow, or if anything else should be added as standard practice.  [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 09:45, 12 September 2018 (UTC)
 
:I think this is eminently sensible. Off the top of my head, aren't there a few articles that have infoboxes despite being about a family of patterns rather than a specific individual one? (Or patterns with variants, anyway --- the bee shuttles come to mind there.) I've never been quite sure how to handle those, though that's not limited to LifeViewer and embedded patterns: the same goes for other infobox'ed information, such as bounding box, population etc. [[User:Apple Bottom|Apple Bottom]] ([[User talk:Apple Bottom|talk]]) 07:54, 13 September 2018 (UTC)
 
::Yup, those are the ones where I find the infoboxes to be not-helpful.  Would suggest in those cases maybe just using an embedded viewer to show one of the family, or maybe a small stamp collection would be better.  The most recent example I dealt with was [[HFx58B]] from the Life Lexicon.  Rather than pick a variant, and/or leave out perfectly good information that the Lexicon had, I just threw caution to the winds and put both patterns in the same infobox, but picked the older variant to do the infobox stats about.  Probably this will puzzle somebody sometime, but sometimes Life can be confusing... [[User:Dvgrn|Dvgrn]] ([[User talk:Dvgrn|talk]]) 11:20, 13 September 2018 (UTC)

Revision as of 11:20, 13 September 2018

Taka Tiki Break

Welcome, one and all, to the Tiki bar! This page is used to discuss the technical issues, policies, and operations of the LifeWiki. Or just sit down, relax, and enjoy a cocktail.

Welcome to the Tiki bar

Wikipedia has the Village pump, Wiktionary has the Beer parlour, but the LifeWiki's lacked a central page for discussion so far other than User talk:Nathaniel. So I took the liberty to create the Tiki bar to facilitate discussion in a friendly and relaxed atmosphere. Welcome! Apple Bottom (talk) 11:09, 13 June 2016 (UTC)

Archived discussions

Note: active discussions are never archived while still active.

Conduits and converters

I'm gradually gathering the necessary courage to tackle the new Life Lexicon items that start with "P". Looks like one of the big things I should do is to carefully figure out how to make proper use of Template:Reflector, but in this modern LifeViewer age I don't think I agree with the part about "The image in this infobox should NOT include the glider that is to be reflected...".

Seems to me these template recommendations should be updated to say something like "The image in this infobox should include the glider that is to be reflected -- optionally, two input gliders separated by the mechanism's minimum recovery time, and an output glider if that allows a smoother animation. However, the bounding box and population count should be calculated with these gliders removed."

It would actually be pretty annoying to provide RLE of a reflector and not at least show where the input is supposed to go. When copying and pasting one of these to use in a larger construction, it's usually pretty handy to have some kind of marker for where the the input goes and where the output comes from -- thus the ghost Herschels in recently added Herschel conduits.

[Ideally the marks are state-4 LifeHistory so you don't have to edit them out after pasting -- but we should probably stick with simple 2-state Life patterns on the LifeWiki and not open the LifeHistory can of worms.]

... And we can probably get rid of Template:Reflector/Doc while we're at it, no?

Before I start this I'll definitely undertake to review all the existing converters and reflectors and conduits -- there are a bunch with raw RLE and/or uploaded pattern files missing. That's relatively easy to fix, once we have an official decision about whether and how to show inputs and outputs. I'm currently puzzled by the mysterious Template:ConduitInput and Template:ConverterInputOutput. Not that that's surprising -- I'm easily confused by all this wiki template trickery. Dvgrn (talk) 15:26, 8 May 2018 (UTC)

I agree that reflector patterns should include the input glider. I'm the one who originally wrote that they shouldn't, and I'm not really sure why anymore. It can't have been very good reasoning, because I completely disagree with it now.
~Sokwe 07:08, 9 May 2018 (UTC)
Template:Reflector/Doc also asks users not to put animated images on pages, instead suggesting that one should "consider using a static image of the reflector with a caption that links to the animation". I think this does not match the general current LifeWiki practice regarding animated images, or generally animated content. Should we reconsider? Apple Bottom (talk) 05:25, 7 June 2018 (UTC)
It does seem to me that we have a developing consensus that LifeViewer-based illustrations are a good way to go. There are quite a few Help documents and templates that were written long before the advent of LifeViewer. I'd love to have the Help actually explain to a new user how exactly to add RLE to the RLE namespace, how to get that RLE to show up in an infobox or an embedded viewer, how to adjust the LifeViewer config so that animations (if any) look good, etc. It will take a while to get all the docs updated, no doubt. My edit yesterday was just a first attempt to start chipping away at the problem. Dvgrn (talk) 14:48, 7 June 2018 (UTC)
Definitely agree! Unfortunately writing documentation is one of things I'm hopelessly.. well, hopeless at. ;) Apple Bottom (talk) 10:33, 9 June 2018 (UTC)

Lexicon tags

Many of our articles (glossary, in particular) are based on, or at least synced with, Life Lexicon content. This creates a need to update these articles when the Lexicon changes.

Some of that has been handled in an ad-hoc manner on my userpage, but the process is fairly involved: look at the project page, find an article to work on, make sure it needs to be worked on, make the necessary edits, make the necessary changes to the project page to reflect the fact you edited the article.

It's also not easily found by newcomers who may want to help out. (OK, I'll admit, there likely aren't droves of eager newcomers to begin with, but that nonwithstanding, if you don't know said page exists you're not going to find it easily.)

So I was thinking, can't we improve on this? And I just had the idea of tagging articles themselves instead, indicating which version of the Lexicon they correspond to.

The Nethack wiki does something similar; for instance, take a look at their Foodless article, and you'll find that it has an indicator at the top right saying that the page reflects Nethack 3.4.3 (rather than the current 3.6.1), generated by this template.

We could use something similar. There wouldn't necessarily have to be a visible indicator (though there could be); at the very least, though, pages could be tracked in appropriate categories, and we'd know at a glance what needs to be updated (or at least reviewed) and what's current.

This way, all edits would be in one place: review an article and make edits as necessary, and also update the tag to indicate it now reflects a newer Lexicon version. And placing those tracking categories into an appropriate supercategory and placing that in the existing category tree in turn would allow editors interested in helping out find articles in need of review.

There would be two downsides. a) most of the Lexicon doesn't change in each Lexicon release, so we'd have a lot of articles tagged as (say) reflecting v28 when in fact they're also current, by virtue of not having changed since v28. And b) we wouldn't easily be able to see which articles are missing from the wiki entirely.

I still feel that this would be an improvement though, and there's no reason we couldn't combine these tags with a manually-curated project page to get the best of both worlds.

Also, re: downside a) specifically, I think this could be dealt with by also having an indicator on the wiki saying which Lexicon release is current; pages that haven't been tagged as reflecting the current version would then display a gentle, unobtrusive note, and anyone viewing such a page could quickly check that it does indeed match the current Lexicon release, and update the tag if so.

Thoughts? Apple Bottom (talk) 07:49, 18 July 2018 (UTC)

This seems like a fine idea to me. As far as downside a) goes, I think that the last year of Life Lexicon updates is highly unusual, since it involved catching up after over a decade of no maintenance at all.
The standard editing methodology for new Lexicon releases is to maintain a Changes section at the top of the raw Lexicon text file, carefully listing every "added" or "edited" entry since the last release, by name. Nobody is supposed to edit a Lexicon definition without updating the change log. This should make it trivial to find missing articles, and hopefully should also allow an easy update to the tags. Every Lexicon entry that's not listed in the change log can be automatically bumped to the latest lexicon release.
That's a lot of small changes to a lot of articles with every Lexicon release, though. Does it make sense to have the default Lexicon tag be just Template:LexiconLatest or some such, with a template to display on the page whatever the latest Lexicon release number actually is?
Then, for the next Lexicon release (30), we can just update the (relatively small) list of changed definitions to say "Release 29" -- and then after each definition is reviewed and patched, the tag is updated at the same time, back to Template:LexiconLatest? Dvgrn (talk) 22:15, 18 July 2018 (UTC)
I suppose that would work, but it's pretty much the opposite of what I was trying to accomplish. ;) I was thinking of this as a status checkbox of sorts where editors would check off that yes, this article has been reviewed for Life Lexicon release 30 or 50 or whatever, and any articles that lacked that virtual checkmark would automatically be herded and available for review and/or updating, as necessary.
Having a "LexiconLatest" tag instead would mean checkmarks that check themselves, by default, and that we'd then have to go and un-check. That's not so different from the current approach, with my TODO page.
But you raise a good point. We have a log of Life Lexicon changes, and once we're actually caught up with the Lexicon in general all we'd have to do is keep an eye on those. Hmmm.
Here's a thought, admittedly a rather complicated one. How about we do both? That is to say, how about a tag template that has both an explicit parameter and uses a default "low watermark", displaying the higher of both?
The explicit parameter would be used by editors to indicate that a page has been reviewed/updated to reflect a certain Lexicon release; the "low watermark" (kept in a template of its own) would be updated by us whenever we're sure that every Lexicon-related entry reflects a certain Lexicon version.
For instance, assume that all our articles conform to Lexicon release 30. Suppose that release 31 comes out now. We then go through the changelog, edit all articles that need updating, and after that's done, we conclude that no further changes are necessary, and bump the "low watermark" to 31, thus causing all articles (that reference the Lexicon) to declare that they match release 31.
One advantage of this would be that we'd still see when an article was last explicitly reviewed. For instance, an article might say it reflects Lexicon release 31, but the "version=" parameter might still say it was last reviewed for 28. If nothing else, this would make it easier to spot articles that haven't been reviewed for a long time and where discrepancies might've crept in.
Another idea: we've already got Template:LinkLexicon to link to Lexicon entries. We could repurpose this to also additionally display a tag, which would save us the need to edit 831 articles just to add a tagging template.
Apple Bottom (talk) 07:50, 19 July 2018 (UTC)
This all seems reasonable to me -- especially sneaking a displayed tag into Template:LinkLexicon. Now that Golly 3.2 and Release 29 are safely out the door, I'm sorta kinda planning to get back to work on the LifeWiki ToDo list for Lexicon updates, with the intention of getting everything up to date eventually -- hopefully well before Release 30 comes along to confuse things any more. We already have some kind of a tracking system set up for Release 28 and 29, so maybe it makes sense to keep using that, and design the new template/tag system to really come into use once everything has been updated to Release 29.
So in early 2019, if we end up with a list of say fifty articles that have changes for Lexicon Release 30, my thought would be to update just those fifty articles to specifically say "Release 29" (however we decide to do that exactly -- maybe with a template saying "this article is out of date, please help out by updating it"?). Then bump up the "low watermark" to 30 right away. As articles get updated, the "please help" template can get removed again with the same edit. Does that work? Dvgrn (talk) 18:49, 19 July 2018 (UTC)
OK, cool. :) Good to hear you'll have some time to devote to the Lexicon-to-LifeWiki TODO list. I'm not able to put in much effort there myself --- too much studying, too many exams. Ah well.
Re: marking e.g. fifty articles as needing updates and everything as conforming to e.g. release 30 by default --- that would be a lot easier if we had Lua scripting available! MediaWiki's templates only go so far and aren't really meant for pushing lots of structured data around.
Our options there would include at least the following:
  1. Manually edit each of those 50 articles (e.g. by setting an extra template parameter) to override the "low watermark". Not ideal --- we might as well just edit those 50 articles to update them if we're already editing them anyway.
  2. Provide a global "kill switch" for the low watermark that, when set, causes the low watermark to be ignored. Pages explicitely listing a conforming Lexicon release would then display that instead, so those 50 "release 29" articles would show up in the right category, etc. Also not ideal --- there might be many other articles that would also have the explicit "reviewed for release 29" tag, or older tags at that, which would NOT need to be updated.
  3. Keep a list of those 50 articles, and rig the template to display a notice if the title of the transcluding page happens to be on that list. Also not ideal --- we'd have to curate that list, and as I said, MediaWiki templates aren't really meant for this sort of thing.
Maybe there's another solution I'm not seeing, though.
That said I also have a feeling we're trying to overengineer the solution, though, or perhaps attacking the problem from the wrong angle. After all, what do we want to do? Keep the LifeWiki current as far as Lexicon content goes. How do we achieve that? By importing Lexicon as necessary, and (once done) keeping an eye on changes made to the Lexicon and mirroring them on the wiki (again, as necessary). And how do we do that? By rolling up our sleeves and working on it. Fancy templates and tagging nonwithstanding we won't get anywhere if we don't just jump in and do it.
(And by "we", I mean whoever's willing to do that job.)
Apple Bottom (talk) 18:16, 20 July 2018 (UTC)
Re: overengineering... yeah, offhand I don't see a better solution than the first one: manually edit 50 articles, copying and pasting the same "stub"-like template marker in as a header. This is a bit tedious, but that's what multiple browser tabs are for, and it can be done pretty easily in half an hour or so. The idea is that we can make a little bit of effort to spread the update work around. (Here "we" means the small group of people who have done the work so far -- a small group because it's kind of tricky to do everything right, so not many people have figured out all the fiddly details.)
I can add "needs Lexicon update" headers to 50 articles in half an hour, but I sure can't do a careful comparison and repair on 50 articles, especially if it will require adding new illustrations or modifying existing ones. But it seems to me that there's a larger (and growing) population of LifeWiki users who can perfectly well review a particular Lexicon definition when they trip over a "needs Lexicon update" template header begging for help. Often it isn't too hard to find what needs changing, make the required edits, and remove the "needs Lexicon update" tag at the same time.
Every one of these articles that someone picks up and fixes, is one that I don't have to do myself... and in the meantime, a half hour of work has already brought the LifeWiki more up to date, by specifically flagging the fact that there's newer information somewhere else that needs to be integrated into the article. Seems like this might be a good habit to get into, for as long as the Life Lexicon is kept more or less in synch with current reality.
Sound reasonable? And could you have a look at Template:NeedsLexiconUpdate and see if it has everything in it that this plan might need? Dvgrn (talk) 21:02, 20 July 2018 (UTC)
Redirect pages don't need any markers saying they're from a Lexicon entry -- do they? I've been trying to rebuild some momentum by getting the remaining redirects done... Dvgrn (talk) 21:57, 26 July 2018 (UTC)
Cool, good to see this is already progressing. Good job! :) I'm a little less swamped now, so I'll take a look at the Template'n all over the weekend.
No, I don't think redirect pages need markers. I don't consider these "content" in the strictest sense, in either the Lexicon or the LifeWiki --- they're just tools that help people find content.
Apple Bottom (talk) 08:31, 28 July 2018 (UTC)

Object frequency classes

I do apologize for my somewhat extended absence. That said, I had an idea (long ago actually) about adding information on the commonness of objects to pattern infoboxes, using data from Catagolue (specifically, B3/S23/C1).

I don't think saying "this still life is the 1,691th most common object on Catagolue" is useful, of course. What I'm proposing instead is the frequency class, defined as follows: a pattern is in frequency class X if the most commonly-occurring object (the block, in this case) is 2X times more common. X need not be an integer; to strike a balance I'd suggest using one decimal digit.

Let me give an example. The twin hat has appeared 240,372,408 times on Catagolue (as of this morning), whereas the block has appeared 71,146,901,659,666 times. So the block is approximately 295,986 ≈ 218.17517 times more common, and the twin hat's frequency class is 18.2, rounded to one decimal digit.

I think this is a fairly intuitive way of capturing commonness. An additional nice property is that if an object has occurred sufficiently often, its frequency class is unlikely to change much, if at all; this is true even for objects whose commonness is very similar and who might switch ranks regularly, with one or the other having occurred more often at any given moment. So once this information's added, we wouldn't need to edit it much, if at all ever.

Like I said, only sufficiently common objects should have this information added; there's too much uncertainty about the frequency class of an object that has only appeared once, say. I unfortunately lack the statistical background to suggest a good cut-off value ("objects should only have this information in their infoboxes if they have occurred at least n times"), but unless there are objections I'll add this, or at least do the necessary template work.

...heck, I'll just go ahead and do it, it's been a while since I've edited anything here. If anyone thinks that this is a load of bull, please just speak up and say so. :) Apple Bottom (talk) 17:56, 1 September 2018 (UTC)

(P.S. --- although the block is the most common in B3/S23/C1, it isn't necessarily for other B3/S23 censuses; in some symmetries, the blinker is more common.)

Replying to myself, I've started doing this; there is a new template parameter, fc=, currently only for Template:Stilllife, Template:Oscillator, Template:Spaceship and Template:Puffer (no other types of object have appeared on Catagolue anyway). I've also added a short glossary entry at Frequency class, and added frequency calss data to a couple of object infoboxes, including all with FC ≤ 10.0. The script used to generate the necessary data from Catagolue's textcensus is this:
#!/usr/bin/perl

# usage eg.:
# perl ../frequencyclasses.pl b3s23.C1.txt >frequencyclasses.txt

use Modern::Perl '2016';

# only patterns with more than $cutoff occurrences should be considered.
# mark all other patterns with an asterisk.
our $cutoff = 10;

# throw away header line
<>;

my %objects = ();
my $mostcommon = -1;
my $mostcommoncode = "";
while(<>) {
    chomp;
    next unless m/^"([^"]*)","(\d+)"$/;

    my ($apgcode, $count) = ($1, $2);
    $objects{$apgcode} = $count;

    if($count > $mostcommon) {
        $mostcommon = $count;
        $mostcommoncode = $apgcode;
    }
}

my %frequencies = ();
foreach my $apgcode (keys %objects) {
    my $frequencyclass = sprintf("%.1f", (log($mostcommon / $objects{$apgcode})) / log(2));
    $frequencies{$frequencyclass}->{$apgcode} = $objects{$apgcode};
}

foreach my $frequency (sort { $a <=> $b } keys %frequencies) {
    foreach my $apgcode (sort { $frequencies{$frequency}->{$a} <=> $frequencies{$frequency}->{$b} } keys %{ $frequencies{$frequency} }) {
        print "*" if($frequencies{$frequency}->{$apgcode} <= $cutoff);
        say "$frequency\t $apgcode\t $frequencies{$frequency}->{$apgcode}";
    }
}
(I'm sure there's better ways of doing this, but this worked for me.) Apple Bottom (talk) 18:52, 1 September 2018 (UTC)
Another reply to myself --- Goldtiger997 suggested a cut-off value of 10 (non-inclusive). This strikes me as sensible. So unless there's objections, how about we run with this, and only add frequency class information to objects having appeared more than 10 times?
Also --- right now the information is Catagolue-specific, which is sensible but still somewhat arbitrary; if we want to include more information later (e.g. from Achim's, Andrzej's and Nathaniel's censuses, or from whatever future censuses people may come up with), we can easily adjust the infoboxes to include a new "Commonness" section, and re-interpret fc= as "frequency in [c]atagolue". Apple Bottom (talk) 09:08, 2 September 2018 (UTC)
Sounds good. However, I already broke my "suggestion" of the 10 occurence cut-off twice; for the Coe ship and Achim's p8. Is it worth removing the fc parameter for those two articles, or should they just be left as they are? Goldtiger997 (talk) 09:26, 2 September 2018 (UTC)
I think we can grandfather those in --- would be good if you could keep an eye on them in case the information changes, of course, but it's just two articles, so that should be fine. I've also added the cutoff of >10 to the script above; patterns not reaching that cutoff are marked with an asterisk. Apple Bottom (talk) 09:35, 2 September 2018 (UTC)

Infobox vs. EmbedViewer

All this interminable Life Lexicon import work has been leading me to believe that there are two classes of articles that can use LifeViewer animations. There are the named patterns, where if you say "Pattern X" there's really only one likely Pattern X that you could be referring to. These get put into an infobox category, with appropriate statistics collected and so forth. The most recent example of this kind of imported Lexicon article is line crosser.

The other class of article is for a term that might refer to a variety of different patterns, so that there are various examples but no specific example should really be considered to be the one canonical one. In these cases I've been using an embedded viewer but haven't been bothering with an infobox. The most recent examples along these lines are line-cutting reaction and line-mending reaction. I like the way these are turning out, but am curious to hear if anyone thinks that these should also be infoboxed somehow, or if anything else should be added as standard practice. Dvgrn (talk) 09:45, 12 September 2018 (UTC)

I think this is eminently sensible. Off the top of my head, aren't there a few articles that have infoboxes despite being about a family of patterns rather than a specific individual one? (Or patterns with variants, anyway --- the bee shuttles come to mind there.) I've never been quite sure how to handle those, though that's not limited to LifeViewer and embedded patterns: the same goes for other infobox'ed information, such as bounding box, population etc. Apple Bottom (talk) 07:54, 13 September 2018 (UTC)
Yup, those are the ones where I find the infoboxes to be not-helpful. Would suggest in those cases maybe just using an embedded viewer to show one of the family, or maybe a small stamp collection would be better. The most recent example I dealt with was HFx58B from the Life Lexicon. Rather than pick a variant, and/or leave out perfectly good information that the Lexicon had, I just threw caution to the winds and put both patterns in the same infobox, but picked the older variant to do the infobox stats about. Probably this will puzzle somebody sometime, but sometimes Life can be confusing... Dvgrn (talk) 11:20, 13 September 2018 (UTC)