→Protected: comment (edit conflict :() |
David Gerard (talk | contribs) |
||
Line 318: | Line 318: | ||
*Speaking of [[Wikipedia:Protection policy|policies]]: "Admins '''must not''' protect pages they are engaged in editing, except in the case of [[Wikipedia:Vandalism#How to spot vandalism|simple vandalism]]." —[[User:Lifeisunfair|Lifeisunfair]] 22:07, 18 December 2005 (UTC) |
*Speaking of [[Wikipedia:Protection policy|policies]]: "Admins '''must not''' protect pages they are engaged in editing, except in the case of [[Wikipedia:Vandalism#How to spot vandalism|simple vandalism]]." —[[User:Lifeisunfair|Lifeisunfair]] 22:07, 18 December 2005 (UTC) |
||
**Removing a policy tag counts, thank you for playing! - [[User:David Gerard|David Gerard]] 22:16, 18 December 2005 (UTC) |
|||
==Potential alternative to meta-templates== |
==Potential alternative to meta-templates== |
Revision as of 22:16, 18 December 2005
- Archives
- /Archive - Feb 2005—Nov 2005
Logic templates
I intend to author a new section for this page dealing with the specific problems related to the so-called "logical" templates being created and used (see Category:If Templates and Category:Boolean Templates). A few "clever" individuals have found a way to hack the template mechanism into doing things it was not intended for. Rather than petition the MediaWiki developers (or write code themselves), they've put this kludge into effect and it is unfortunately growing rapidly. The problems I see with this are:
- As described on WP:AUM, templates within templates have a direct effect on the performance of the wiki, just like templates used for meta-formatting.
- The developers may make future changes to the template mechanism which would make these logical templates fail. The amount of rework if we need to fix the related templates and pages could be incredibly extensive.
- New and old users alike have a hard time understanding how these all work. This discourages participation in the entire authoring process.
- Templates in general should be used sparingly. Certain tasks, like inserting book references, are not being better served by using a template.
I'm going to ask some key people for comments on this topic. -- Netoholic @ 14:47, 9 December 2005 (UTC)
- Please also have a look at the discussion that emerged on User talk:AzaToth#Wikipedia:Avoid_using_meta-templates. – Adrian | Talk 15:22, 9 December 2005 (UTC)
- Maybe that discussion should be moved here? — Omegatron 15:25, 9 December 2005 (UTC)
- Agreed. I already put a pointer to here on User talk:AzaToth#Wikipedia:Avoid_using_meta-templates. – Adrian | Talk 15:29, 9 December 2005 (UTC)
- Maybe that discussion should be moved here? — Omegatron 15:25, 9 December 2005 (UTC)
- Re: "Rather than petition the MediaWiki developers (or write code themselves)" we can still do that. "and it is unfortunately growing rapidly" :-) If this is true, this means that it gained some popularity as it seems to be grounded on some editors real needs. If this is enough evident, there will be enough drive to do "petition the MediaWiki developers (or write code themselves)". Which might be a good thing (if that should prove needed). – Adrian | Talk 15:38, 9 December 2005 (UTC)
- See also m:Template:If and Category:Citation templates. – Adrian | Talk 16:02, 9 December 2005 (UTC)
There is one template that is almost impossible to use without logical templates, that is {{language}} →AzaToth 17:31, 9 December 2005 (UTC)
- When I look at the code in that template, I want to throw up. I'll post on that talk page further. -- Netoholic @ 17:55, 9 December 2005 (UTC)
- I wouldn't say it's "almost impossible to use". I would rather say it's almost impossible to implement. Usage is not affected by how it is implemented (as long as it can be implemented, of course). – Adrian | Talk 18:58, 9 December 2005 (UTC)
On the contrary: I find that inserting book references is better served by using a template. Uncle G 18:26, 9 December 2005 (UTC)
- I agree, I personally dont know how to type a reference by my self, a template gives me defined fields to use (like author goes here) →AzaToth 18:30, 9 December 2005 (UTC)
- I agree. Book templates help keep our articles referenced in a standard way. Keeping our material referenced properly is very important if we hope to create a useful encyclopedia. — Omegatron 19:29, 9 December 2005 (UTC)
Re: "New and old users alike have a hard time understanding how these all work. This discourages participation in the entire authoring process". Not every user of book reference needs to understand how it was implemented. Those who do not take part in the development of book reference and the like never need to have a look at if & co. at all. The logic templates are mostly needed in more complicated templates like book reference, but there, they are essential. There is generally no need to use the logic templates on article pages. – Adrian | Talk 18:50, 9 December 2005 (UTC)
Re "Templates in general should be used sparingly". No. To the contrary. If we have an abstraction mechanism, then we should use it. This increases dependency but this is a good thing. Complicated things should be built up by using less complicated and tested building blocks. This is a well known engineering principle. – Adrian | Talk 19:07, 9 December 2005 (UTC)
Re "A few "clever" individuals have found a way to hack the template mechanism into doing things it was not intended for". This is something very normal. If you have some powerful successfull tools, they sooner or later get used in ways you never dreamt of. I understand that this can be seen as threat. But it isn't. Just start thinking how to anticipate that new usage, if it's really needed and helps to solve real problems. – Adrian | Talk 19:12, 9 December 2005 (UTC)
Comment, I checked the use of class="hiddenTemplate", it works optimal only if the specified parameter value does not include "
→AzaToth 19:36, 9 December 2005 (UTC)
See User talk:Adrian Buehlmann#Spamming. No further comment needed from my side. – Adrian | Talk 19:44, 9 December 2005 (UTC)
- This sounds like functionality to do this kind of thing should be implemented within the template syntax, where it would be cleaner, less taxing on the server, not use meta-templates, etc etc. Some of the functionality being implemented in this way is proving to be very useful for the average template user - such as making Template:Book reference not need a dozen different variations to handle different sets of provided information.
- I know, {{sofixit}}, so I plan to spend some time pretty soon on learning PHP so I can start working on stuff like this ... —Matthew Brown (T:C) 23:52, 9 December 2005 (UTC)
What on earth?
This page (in the version I restored and will happily lock) is a guideline not because of a consensus vote on a talk page, but because of sound technical reasons to avoid using the damn things. Just because you really want to do 'l33t Mediawiki hacks doesn't mean you can build consensus to make it not technically the case, any more than 2+2 equalling 4 is up for a vote. The only reason templates in templates aren't switched off entirely is because they're needed for a few specific purposes. That's why you're supposed to AVOID USING METATEMPLATES, not because some m33nz0r wants to keep you from the k3wl stuff - David Gerard 23:07, 9 December 2005 (UTC)
- I did remove it becaus the box specified it's a guideline, and guideline says is by consensus, but after reading this talk page there was none, I didn't meen to WP:POINT →AzaToth 23:17, 9 December 2005 (UTC)
- m33nz0r? whatdoes that meen? →AzaToth 23:34, 9 December 2005 (UTC)
- I do not understand what you want to say. Can you tell us what to do with {{book reference}} and {{web reference}}? You are also invited to write on the respective talk pages of those templates. That would fit much better than writing to people on their user talk pages. Please note that AUM is guideline, not a policy. As the box states "This page is considered a guideline on Wikipedia. It illustrates standards of conduct, which many editors agree with in principle. However, it is not a policy". "which many editors agree with in principle" seem to be just Netoholic so far in this specific matter. As this is not a policy, there may be others who don't follow this guideline, for good reasons. – Adrian | Talk 00:25, 10 December 2005 (UTC)
- You may also write on the discussion page of Category:Citation_templates, as this covers a whole bunch of if or qif using templates. Thanks. – Adrian | Talk 00:34, 10 December 2005 (UTC)
Any of this still valid?
Wikimedia's server capacity has gone up a few orders of magnitude this year. I'm not convinced that templates represent anything like the proportion of the total load they used to, and are therefore no longer a problem ("with enough power, a brick can fly"). Dan100 (Talk) 12:13, 10 December 2005 (UTC)
- Please take a look at the source for Template:Language. I don't care how fast the servers are, that template has been coded into complete obscurity. -- Netoholic @ 15:14, 10 December 2005 (UTC)
- That's your POV, I belive User:Garzo knows what he do, he is a linguist specialist →AzaToth 15:21, 10 December 2005 (UTC)
- Is it really a good thing that only one editor knows what's going on with that template? -- Netoholic @ 15:32, 10 December 2005 (UTC)
- There are plenty more peoples that knows what's going on in the template. But are you blaming User:Garzo for not creating a template in your way? →AzaToth 15:37, 10 December 2005 (UTC)
- I can confim that there are several others which are able to understand this form of template. It's not that complicated as it might look at first sight. It takes a moment to accustom oneself with that if stuff. And you don't have to understand at the first step how if is implemented. But even that is not as complicated as it might look. qif is the easier to start with. Yes it is a trick, but a straightforward one, not even a dirty one. And yes, we are interested to keep a close eye on server load, that's why qif as a replacement for if was created (by using qif, one call level is eliminated compared to if). And if developers and server maintainers flock in to report that we blow off the servers, believe me, we will kill if/qif immediately. But not due to a guideline that should be carfully reviewed for this special case. And please note that I do not intend to put up a fight. You and we, all of us care about the future of wikipedia. Nobody is interested to "press in" tricky stuff just for it's own sake. We care about building new solutions to existing problems. The way how to solve them (and the cognition of their existence at all) is what we differ in opinions. In good faith, – Adrian | Talk 18:08, 10 December 2005 (UTC)
- Is it really a good thing that only one editor knows what's going on with that template? -- Netoholic @ 15:32, 10 December 2005 (UTC)
- That's your POV, I belive User:Garzo knows what he do, he is a linguist specialist →AzaToth 15:21, 10 December 2005 (UTC)
- Well, seeing as I have been mentioned above, I'll let you know the history of {{language}}. The flexibility that the use of {{if}} allows was discussed long before that template was available. We had tried a number of ways of creating a modular template that could fit the great diversity of all language articles, but these hadn't worked. The other users of the template have appreciated the new flexibility that these templates have provided. I have tried to explain what I am doing as I go along, and, as I know nothing about computer programming, I am not being obscure for the sake of it. We weigh up the options of whether we want the template to do all we want it to do, or whether we want it to be easy to edit. I would love it, if there were a possibility of incorporating both options, but there isn't, and we have chosen flexibility above ease of editing. In the meantime, there are a few editors around who have acquainted themselves with the template, and feel able to make changes whan they are needed. In summary, the present state of {{language}} is the work of a linguist rather than a computer programmer, cobbling together the scraps of possibilities of template construction to make an infobox as good as possible. I'm writing an encycolpaedia... --Gareth Hughes 18:56, 12 December 2005 (UTC)
Another view
I did some check in the source code to see how mediawiki uses templates. When a page is using a template, that particular template is cached for actual page, so multiple uses of an template on a particular page uses only one fetch for this template. For an example, a book reference, is would then better to use an generic reference that have separate templates for different styles. (If the generic reference template only use for example {{qif}} then there will only be one fetch for actual page) →AzaToth 21:53, 10 December 2005 (UTC)
Can try to explain it a bit further:
- We have the template Generic that utilize the "logic" template logic multiple times, and it replaces the usage of template Specific-1 to Specific-n, which does not use any aditional templates.
- If Article only uses Specific-1 it's faster than using Generic.
- If Article uses both Specific-1 and Specific-2 there is no difference.
- If Article uses more than two Specific templates, it's faster to use the Generic version.
- If another template used by Article utilizes template logic, then the cost of Generic is reduced one step etc...
→AzaToth 22:21, 10 December 2005 (UTC)
- Yeah that sounds damned interesting! Thanks for looking at that. You're really smart (no pun intended). I have to ruminate that further. I just wonder what the other template geeks (like SEWilco) are doing. The tangent I'm on gets bigger and bigger. Interesting. It all started with wondering me how to reference a book on an article....:-) Oh my! – Adrian | Talk 23:20, 10 December 2005 (UTC)
- Interesting. This would suggest, for a start, that all of the various infobox templates should be moved away from using the logic templates if possible (since those are, by definition, used only once in an article). —Kirill Lokshin 01:46, 11 December 2005 (UTC)
- That might be correct, but personally I think it's cheaper to do one extra meta-call (to the template logic in this case), than to hide a lot of text using class hiddenContent, also, if there are other templates on the page using the template logic (for example a reference template), then there would be no saving going from logical templates. →AzaToth 02:00, 11 December 2005 (UTC)
- I think it's exactly the opposite. Because the call to if (et al.) is cached per article, it does not matter whether we have 500 if calls rooted directly (does not apply now) or indirectly on the page. We can have 100 instances of let's say book reference on a page. Even if qif appears several times in book reference (22 times to be exact, at the moment), as per the findings of Carl (=AzaToth) it is loaded exactly *once* per page (not 100 x 22 - ok would possibly not be 22 because not all branches are evaluated, it depends on the parameters fed into each specific template call). I hope I got that right (please correct me if I'm wrong). That's very cool! – Adrian | Talk 09:57, 11 December 2005 (UTC)
- Don't worry too much about there being several types of citation templates, they are being consolidated. It probably is more important for this discussion that citations have to deal with the fact that including or omitting information requires various formatting details be included or omitted. The logic templates are at present the only tool for doing that formatting, and infoboxes have similar formatting needs If wiki adds some builtin logic it will be trivial to change the few templates. However, that is not the only possibility, as another possible solution is some sort of tool similar to a "report generator" which would allow specification of the format of data display. For citations there have been various proposals for information handling, and it is possible someone will come up with tools with other solutions (whether specific to citations such as a publication-name-selector or a more general tool such as Jimbo's data retriever ("name of capitol city of country X"). (SEWilco 06:10, 11 December 2005 (UTC))
- Don't worry too much about there being several types of citation templates, they are being consolidated - can you point to where that's happening (out of curiousity)? Dan100 (Talk) 08:40, 11 December 2005 (UTC)
- I hope SEWilco allows me to step in: see Template:Citation (talk). But please do not use that in articles yet. As per SEWilco (who thankfully started that) who intends it do be for testing and development for now. But I think we can have a look at it, as it is not under user-space. Citation has just got more attraction as per the findings of AzaToth (in this thread). – Adrian | Talk 10:07, 11 December 2005 (UTC)
- There are ongoing changes to the various citation templates which will affect the consolidated template. A number of the changes involve logic incantations. (SEWilco 15:27, 11 December 2005 (UTC))
- The consolidation of citation templates is also visible in the History of WP:CITET. The availability of optional parameters has allowed reduction in the number of citation templates to perhaps 20-30% of the number which used to exist. Unfortunately, this also has increased use of if/qif so as to display text and punctuation needed by various optional fields. Consolidation has been slowed by the need to standardize parameter names, conversion of existing calls, and non-technical demands such as consensus finding and devoting time to Arbitration threats. (SEWilco 09:26, 13 December 2005 (UTC))
Proposal for "lazy templates"
As we have noticed, there is some concern that meta-templates which are defined as templates that include calls to other templates have some drawbacks which are described in the associated article.
Recent development around the templates template:book reference or template:web reference which include calls to so-called "logic templates" like template:qif have triggered some partly hefty reactions among some wikifolks. These logic templates haven been deemed by some as beeing a "kludge" or just "ridiculous" and for beeing a violation of this guideline here.
Some wikifolks insist that templates like template:book reference do add real value to wikipedia and its development, as they increase the quality of articles and do help non-wiki experts to write correct citations. What's also clear is that calls of template:book reference can easily be converted to anything else by a fairly simple bot. This includes possible future extensions. It is also relatively simple to convert those calls back to the old style low-level kind of citations that have been done by using wiki syntax only (without the use of templates). But the other direction is far less easy to do. So articles that today contain calls to template:book reference are - from an entropy standpoint - more valueable than those who do citations the old-style way (if we look at the wiki source).
Today, there are about 3000+ articles that already use template:book reference. If we come to the conclusion, that this guideline here rules, we can see that template:book reference has qualities of a "meta-template" as it uses template:qif. Some wikifolks have come to the conclusion that template:book reference cannot be implemented without using template:qif. So if this guideline here rules, this would mean the shutdown of template:qif and in turn the shutdown of template:book reference. The consequense of this would be that all calls to book reference would need to be downgraded to pure old-style wiki source.
One of the mentioned problem areas of the so called "meta-templates" is that - as it seems to be implemented now in the Wiki-software - if a template T is changed, all article pages that contain calls to T get their cache invalidated. As Jamesday describes in the article here, this can be a resource consuming task. This can also result in operations enduring in the order of several tenths of seconds.
A well known mechanism to circumvent this is "subst", where a template is instantiated at the moment the editor clicks on save. The problem with subst is, that it cannot be applied to book reference, as the result is just a bunch of qif expressions that nobody can manage by hand.
It must be noted that reckless editing of template:book reference is not desired anyway. So it is expected that book reference stabilizes more and more and there should be the longer the more less reasons to change it. This is even more true for template:qif, which is even more stable. So rippling changes originating from template:qif today already are a rare case. So beeing dependent on stable stuff is not that bad.
What remains are changes in template:book reference.
I would like to present the following idea: Why not ignore changes in template:book reference at first for some time and leave that cache invalidating step away completely. It does not hurt if articles referencing template:book reference use an old version of it. This can wait until somebody edits an article or until a slow bot comes by and invalidates that article's cache (within 24 hours or so). That bot could run at off-peak hours. I would call this feature a "lazy template". Maybe template:book reference (and template:web reference) could be marked in some way as "lazy templates". This could also be seen as a more luxory form of "subst" that preserves the entropy of the wiki-source of an article. – Adrian | Talk 17:03, 11 December 2005 (UTC)
- See also the thread on the mailing list wikitech-l. – Adrian | Talk 18:53, 11 December 2005 (UTC)
- Server caches of pages can be manually purged. See template:purge, Wikipedia:Purge. – Adrian | Talk 23:00, 11 December 2005 (UTC)
Removing guideline status
There is no evidence that Wikipedia:Avoid using meta-templates ever had community consensus. No polls or discussions were held on the issue that I am aware of. In fact, with the exception of User:Netoholic (its author) and about three or four other users, virtually all of the comments regarding it have been negative. Furthermore, it was written as a very specific response to a technical issue with MediaWiki server capacity circa early 2005. No evidence has been adduced that this is still the case. The guideline status seems to be primarily an excuse for Netoholic to engage in revert warring and to carry out a jihad (or crusade, if you prefer) against templates he doesn't like for whatever reason. Until I see evidence of consensus, I'm removing the guideline status. Firebug 20:35, 12 December 2005 (UTC)
- It's still the case. Using resources unnecesssarily is not helpful. Jamesday 20:35, 17 December 2005 (UTC)
- This is patently obvious.
- On the other hand, writing an encyclopedia requires us to use resources. The scuffle here isn't about whether we should heedlessly waste server resources or not; everyone agrees that we shouldn't. The contention is about which tasks are "unnecessary".
- We could conserve resources even more by turning off search, images, visual styles, red link checking, and editing, but we're not doing that because we'd have nothing of value left. On the other hand, we could streamline the process by using templates and shortcuts for anything (that the developers don't have time to code into a real feature) that makes it easier for newcomers and non-hackers to contribute content, but we're not doing that because of the server load. The problem still needs to be clarified (in detail) by the developers: Where do we draw the line?
- No one's trying to vote away technical problems. We're trying to decide how much crippling of the encyclopedia-building process is necessary to avoid crippling the encyclopedia-hosting process. — Omegatron 02:16, 18 December 2005 (UTC)
- There is just a problem with consensus: as David Gerard correctly points out, we cannot vote whether the servers can manage meta-templates or not. So we need statements from experts (those that run the servers, for example) and specific examples of meta-templates. I do not have a problem with this being a guideline. A guideline, not a policy. Disclaimer: I'm an aficionado of template:qif and template:book reference (a meta-template). – Adrian | Talk 23:54, 12 December 2005 (UTC)
- One mitigating factor for the logic templates is that once they are stable, they can be protected and not changed, thus removing most of the odds of them cache-invalidating lots of pages if changed. —Matthew Brown (T:C) 00:54, 13 December 2005 (UTC)
- MediaWiki server capacity improvements are a continual race against increasing usage. Profligate waste of server resources is never a good idea. IMO, this guideline should really be reworked into a "don't waste server resources" guideline. Templates invoking templates invoking templates invoking templates for no particular point is a bad idea. Simple is better. I've asked Jamesday to comment. -- Rick Block (talk) 01:21, 13 December 2005 (UTC)
- Why does everyone say we need developer input... we have! I'm not here to say that you can't get more input from them, but it seems this Talk page wants to make it a requirement that the developers check in every couple months just to keep this a guideline. The correct approach would be to respect their previous input UNTIL you hear differently. Meta-templates should be avoided - I doubt there will ever be a time where that guideline will change. What seems to be the point of contention is how they should be avoided (subst:ing, multiple similar templates, CSS tricks). Don't confuse the two issues, and you'll be far better off. -- Netoholic @ 03:17, 13 December 2005 (UTC)
- That's because this proposed guideline makes the job of Wikipedia template editors significantly harder, and therefore it should be subject to severe scrutiny to ensure that it is absolutely necessary. Simply saying that something might increase the server load isn't enough to mean it shouldn't be done. After all, we could dramatically reduce the server load by turning off images completely, but I don't recall anyone making a page called Wikipedia:Avoid using images. Being able to nest code is a elementary programming feature, and if the MediaWiki software can't handle it without a performance hit, that should be treated as a serious bug that needs to be addressed, not something that users should have to continually work around. I am not at all convinced that the server situation remains unchanged in the past 10 months. Firebug 03:48, 13 December 2005 (UTC)
- It's a guideline, not a policy. So if you have very good reason not to follow it, don't follow it. But it's ok to think four times before violating it. If the developers would have been that shure as they are claimed, then they would have made it a policy. – Adrian | Talk 10:59, 13 December 2005 (UTC)
- No. All of this violates basic programming principles. Every programmer knows that hard coding is a ugly, godawful thing to do, but you're urging that it be made Wikipedia policy. (And subst is a form of hard coding - since changes from the template don't automatically propagate.) What we should be talking about is how to add new features like inheritance and polymorphism to the MediaWiki engine - not getting rid of the most basic functionality that was taken for granted in the 1980s. Firebug 03:48, 13 December 2005 (UTC)
- Quite true. I'll remind you, though, that what we're writing here is markup, not code—and while we need a few semi-clever tricks to get the markup right, I can't for the life of me imagine why we would ever want to use polymorphism, for instance. (On another note, this would likely make templates utterly unreadable to anyone without a CS degree). —Kirill Lokshin 04:07, 13 December 2005 (UTC)
- I will admit I was being a bit deliberately provocative with my comment about polymorphism. But that's not the point. In many cases, nesting templates can make template code easier, not harder, to read. We should not have a policy that encourages editors to write unmaintainable spaghetti templates and hard-coded shit. And using subst: is a hack because it makes further editing more difficult and prevents template changes from propagating, as with transclusions. Even a markup language should be able to handle basic nesting of calls. This ain't rocket science. Firebug 04:25, 13 December 2005 (UTC)
- Have you ever actually read all of Jamesday's comments on this very talk page, or are you just deliberately dismissing them? -- Netoholic @ 04:49, 13 December 2005 (UTC)
- Well, it does handle them; obviously, this has associated costs (just as nested function calls in code do). In this case, at least at the time this page was written, the resource cost wasn't worth the benefits of using nested calls; it remains to be seen, based on developer input, whether this is still the case.
- As an aside, most templates are merely blocks of markup: tables, frames, etc. Only a few templates—the citation ones, for instance—truly benefit from nested calls as opposed to some other method of hiding undesired markup; and some of them would likely be better off as MediaWiki features rather than templates. The citation templates, for instance, are basically a wizard to produce a proper citation based on some parameters; once the citation is inserted into the page, we generally don't want it to change appearance. —Kirill Lokshin 04:33, 13 December 2005 (UTC)
- It's still the case. As for your programming arguments, you might want to consider the relative efficiency of loop unrolling and inlining instead of loops and function calls. Those optimisations are what subst is equivalent to. Very little text needs to be instantly updatable on the whole site. Where it is not necessary, subst is a more efficient way of doing the job. Jamesday 20:35, 17 December 2005 (UTC)
- To Netoholic's point about asking for developer input - I'm reasonably certain the basics for how pages are constructed has not changed in the last year. My understanding is that if the page is not cached, some Apache server makes a database fetch for its contents and database fetches for each template that must be interpreted in order to build the page contents. I think doing any less work than this is likely to be very difficult. There's ultimately a single database behind all wikipedia pages, and for pages that aren't cached, the database is almost certainly the true bottleneck (since we can add a relatively arbitrary number of Apache servers). A page that references no templates requires one DB fetch. A page that references a template that references a template requires three. We can buy all the Apache servers we want, but if they all have to connect to the same database the limiting factor is going to be the database. It was a year ago. I'm actually a bit surprised we're doing as well as we are. In any event, the point of all of this is that I'm not a MediaWiki developer and I suspect Netoholic isn't either. Certainly some things have changed in the past year. I think it's distinctly unlikely, but it's possible things have changed so that database fetches are not even close to the current bottleneck. The folks wanting to use templates in programmatic ways seem to want to optimistically believe this isn't an issue anymore. Developers know for sure. Asserting it isn't an issue without developer input seems ludicrous. Asserting nothing's changed in the last year that might help this issue without developer input also seems ludicrous. -- Rick Block (talk) 05:15, 13 December 2005 (UTC)
- My point is simply that a feature this useful and powerful should not be discouraged without a very good reason. Someone's suspicions aren't enough. See my analogy above - this is like asking people not to use images. The burden of proof should be on the anti-template crowd (who have no community consensus that I can see) to prove - not once, but continually - that so-called "meta-templates" make the server utterly impossible to maintain. Firebug 06:14, 13 December 2005 (UTC)
- About the Guideline discussion: For this subject, it seems the community of Developers (particularly of DB) are the ones who should decide on the Guideline status. I view many of the meta-templates as tools to achieve needed results using the current technology. If an application such as infoboxes with optional fields become popular, it is likely that an efficient Wiki tool will be created to replace it. However, limits have to be drawn someplace; AUM should prevent extremes such as a fad of everyone creating complex signature templates and then those also being accepted on article pages. We all want to avoid dealing with the ultimate authority on where the limits are: reaching the maximum capacity of the hardware. (SEWilco 09:14, 13 December 2005 (UTC))
- The hiddenStructure CSS trick can handle optional infobox fields (for now). It's not particularly elegant, but it's probably a good way of keeping meta-template usage limited to where it's really necessary. —Kirill Lokshin 14:09, 13 December 2005 (UTC)
- As far as I know, hiddenStructure only works with the monobook skin. People who use different skins have said they see the fields (as, for example Cinematography:{{{cinematography}}} in a page where that field doesn't exist for {{Infobox Film}}). - Bobet 20:32, 13 December 2005 (UTC)
- As of yesterday, that should no longer be the case :-) —Kirill Lokshin 20:34, 13 December 2005 (UTC)
- It also wont work if the parameter start with '" ' or contains the string " class="hiddenStructure"" etc... →AzaToth 20:36, 13 December 2005 (UTC)
- Thanks, I just went to test it out and thought I was crazy since it looked fine :). - Bobet 20:39, 13 December 2005 (UTC)
- As of yesterday, that should no longer be the case :-) —Kirill Lokshin 20:34, 13 December 2005 (UTC)
- As far as I know, hiddenStructure only works with the monobook skin. People who use different skins have said they see the fields (as, for example Cinematography:{{{cinematography}}} in a page where that field doesn't exist for {{Infobox Film}}). - Bobet 20:32, 13 December 2005 (UTC)
- The hiddenStructure CSS trick can handle optional infobox fields (for now). It's not particularly elegant, but it's probably a good way of keeping meta-template usage limited to where it's really necessary. —Kirill Lokshin 14:09, 13 December 2005 (UTC)
Community consensus is beside the point
The developers flat-out said "Avoid using meta-templates." The developers are given free reign to say "Please do not make our database collapse weeping." And then we, as editors, have to listen. And it doesn't actually matter how many editors don't want to listen - the developers remain empowered to implement guidelines like this. Phil Sandifer 06:46, 13 December 2005 (UTC)
- No, Wikipedia has substantial editorial problems (Siegenthaler, vandalism on George W. Bush) and anything that makes it harder to maintain is a dangerous distraction that imperils the whole project. Susvolans ⇔ 08:07, 13 December 2005 (UTC)
- Wikipedia is very hard to maintain when the database stops working. Though this is beside the point - just as you cannot vote or complain away the developer's right to say "Don't do this," you also cannot vote or complain away the fact that you are unable to do the former. Phil Sandifer 20:40, 13 December 2005 (UTC)
Perhaps the page title "Avoid" is where people are getting confused. Maybe we need to rename it something stronger like "Don't use meta-templates"? Or better yet, how about "Wikipedia:Template policy"? Let's nail down some of the rules related to template usage. -- Netoholic @ 06:16, 14 December 2005 (UTC) (revised)
- Wasn't it called "Meta-templates are considered harmful" once? Phil Sandifer 06:19, 14 December 2005 (UTC)
- Yeah, but that also confused some users and was a little softer than "Avoid". -- Netoholic @ 06:21, 14 December 2005 (UTC)
Something to read: m:Help:Parameter default
Hi folks! Let's have a break and learn something. For those who watch this talk page and enjoy reading new stuff: There is a nice new page at m:Help:Parameter default about all that new stuff which is at the heart of these new template tricks. Kudos to Patrick and AzaToth. (Sorry for the advertising here). Have fun reading (no pun intended)! – Adrian | Talk 21:30, 13 December 2005 (UTC)
- Boy oh boy... now if either one of them would learn how to write real code in PHP and become real developers, we might have a solution that we could use. -- Netoholic @ 21:38, 13 December 2005 (UTC)
- And in the interim we use what we have. Deal or no deal? :-) (please don't hit me! And have a look at Carl's box profile). – Adrian | Talk 22:22, 13 December 2005 (UTC)
- No, in the interim we work very hard to ensure these meta-templates are eliminated per this guideline. Does that mean some functions will require multiple templates? Sure. Does this mean some template will lose function? No problem. Will this bruise some egos? Doesn't matter. -- Netoholic @ 23:49, 13 December 2005 (UTC)
- First of all, as stated previously, let's see some evidence of developer consensus. I've heard about ONE developer (Jamesday) who has complained about meta-templates. And that was ten months ago. Are there any others? How serious (if at all) do they think the problem is at this time? What (if anything) are they doing about it? Until we know the answer to this, we can't proceed. Furthermore, doing away with nested templates altogether is utterly unacceptable. It's like proposing we do away with images. IF the developers need template use reduced as a TEMPORARY hack to reduce server usage, then we can start with templates that can easily be rewritten to avoid metafication. Breaking existing functionality should be an absolute last resort, yet you go about it with an unseemly glee. You should be banned from ever having anything to do with templates on Wikipedia ever again. Firebug 04:36, 14 December 2005 (UTC)
- BTW, on Aug 6 of this year, Jamesday wrote (from the main article): "There are changes in 1.5 which will help. How much is currently not known." Are we running that now? Did it fix the issue? If the issue is resolved, then all of this bullshit should stop and people should use any kind of templates that make things easier. Firebug 04:40, 14 December 2005 (UTC)
- So basically unless the developers personally continue to notify you that it is a problem, you're going to assume it goes away on its own? Phil Sandifer 05:04, 14 December 2005 (UTC)
- Well, no. When the developers said a couple months ago that the new software update would fix the problem, and when the only person who is openly complaining about the use of these templates isn't even a developer at all, I'd like to get some sort of statement from the developers regarding the issues raised above. I don't need personal notification, but I think the Wikicommunity as a whole should get updates on this. When was the last time the developers were asked about the impact of nested templates? Has MediaWiki 1.5 been rolled out yet? I AGREE that the technical issues are important - and they are being overlooked due to Netoholic's insistence on shoving things down people's throats. Firebug 05:14, 14 December 2005 (UTC)
- I generally assume that the developers are too busy to let us know when they have not fixed a problem, and thus to assume that no news is bad news. In the absence of any evidence whatsoever that the problem has fixed, perhaps you might undertake bothering the developers, as I, at least, am rather too polite to do so with questions that they have already answered. Phil Sandifer 05:18, 14 December 2005 (UTC)
- Where can I obtain Jamesday's email address? I would like to (politely of course) ask him if MediaWiki 1.5 is in use and if this has fixed the "meta template" issues and to what extent. If devs agree the issue is fixed with the newer software, can we get rid of this nonsense? Firebug 05:25, 14 December 2005 (UTC)
- I have faith that you can figure out how to contact User:Jamesday. Phil Sandifer 05:26, 14 December 2005 (UTC)
- Where can I obtain Jamesday's email address? I would like to (politely of course) ask him if MediaWiki 1.5 is in use and if this has fixed the "meta template" issues and to what extent. If devs agree the issue is fixed with the newer software, can we get rid of this nonsense? Firebug 05:25, 14 December 2005 (UTC)
- I generally assume that the developers are too busy to let us know when they have not fixed a problem, and thus to assume that no news is bad news. In the absence of any evidence whatsoever that the problem has fixed, perhaps you might undertake bothering the developers, as I, at least, am rather too polite to do so with questions that they have already answered. Phil Sandifer 05:18, 14 December 2005 (UTC)
- Can we please relax about this? Jamesday has been asked to comment. I don't think anyone is arguing real problems should be ignored. My suspicion is that this is not a black or white issue, and that the truth is that every little bit hurts and no one (not even the developers) exactly know how much is too much. Yes, we use images. Yes, we'll use some meta-templates. If we can avoid both of these, we'll need to buy fewer servers. The guideline says "avoid". It doesn't say "seek out and destroy all". Don't do things that consume resources unless there's a good reason to do so. Repeat after me - "duh". -- Rick Block (talk) 05:32, 14 December 2005 (UTC)
- I was responding specifically to Netoholic's "salt the earth" comment above, where he said that even if it breaks things we should get rid of all "meta templates". You may be right that the truth lies somewhere in between. It would be helpful to know the extent of the issue as things currently stand, so we can decide just how much effort should be put into this. Firebug 05:40, 14 December 2005 (UTC)
- A very wise statement. Thanks for that. And I do apologize for having added fuel to the fire. At least it was worth a try. In the mean time I might see whether I can ameliorate things a bit by replacing calls to if with the server friendlier qif (one less meta-level, thanks to AzaToth). We might then even be able to delete if. At least this would not hurt the servers. I know that this might be in vain if qif should get abolished. Just a try. – Adrian | Talk 08:47, 14 December 2005 (UTC)
Why Templates in templates not switched off?
David Gerard wrote "The only reason templates in templates aren't switched off entirely is because they're needed for a few specific purposes."' Can somebody please list these? Which meta-templates qualify for these "few specific purposes"? What are the requirements to qualify for "few specific purposes"?
I'm just asking this because I wonder why we got into all this trouble if meta-templates are that bad? Why haven't they been switched off? Why is this article here not a policy with a list of exceptions?
Sorry for asking, I'm relatively new to Wikipedia. I came to all this because I wondered how to add a book reference to an article. After some search I found template:book reference and just used that. Then I wondered why it's not used in more articles and just started slowly to use it on a few articles. After receiving no objections, I just continued a bit. Then some smaller problems around book reference occured and I suddenly was in the middle of template wonderland.
What I cannot understand, as a newbie, is that how is it possible that a technique which seems to be that dangerous can "slip" into thousands of articles without noticing by any of the proponents of the "don't use meta-templates group"? Why did Wikipedia not make this a policy at first hand and list the allowed exceptions or even shut down templates in templates completely? I simply do not understand.
Why do you attract people and do not take more care that they cannot do that harmful things to the servers. Why does wikipedia attract people by saying be bold and beat them afterwards. I think there must be something wrong. I just do not understand that. What I also not understand is, that I haven't seen any of the "don't use meta-templates group" appearing on the talk page of book reference. It's been there quite some time already.
Sorry for my silly questions. Sorry for the long post. I'm just a newbie trying to understand the wonders of wiki-land. Please note that it is not my intention to put a fight. And my ego does not care whether Wikipedia uses meta-templates or not. I'm just puzzeling. And I just stayed here because I found some really great articles and some bright people. – Adrian | Talk 12:09, 14 December 2005 (UTC)
- Wikipedia and the MediaWiki software and the hardware complex that runs it grow organically, based on strictly volunteer contributions (cash in the case of the hardware). The template mechanism was introduced in the software to address the need for a way to include similar (identical) content in multiple places without reentering it. The way it was implemented allowed template references to be nested. Contributors, being clever, have figured this out and have defined lots of templates that use other templates. Meanwhile, Wikipedia's popularity has been increasing exponentially. It is now one of the most highly viewed sites in the world (Alexa says more than 1000M page views per day [1]). The software and hardware architecture have evolved in response to increasing load (see m:Wikimedia servers) to the point that I would assert wikipedia.org is one of the most sophisticated web sites in the world (note the basic problem - anyone, anywhere, can edit any page and their changes are immediately visible, combined with tremendous "view only" traffic - is much more difficult than high traffic "view only" sites like microsoft.com). The developers don't get paid. The server admins don't get paid. I believe there's one person who is paid who is in charge of the IT infrastructure. To keep the site running reasonably responsively there's an ongoing effort (again volunteer) to add more servers and analyze and improve the software efficiency. user:Jamesday is one of a handful of people (volunteers) who do this. He noticed templates including templates can cause bad performance effects, which resulted in this guideline. In general, the things done to improve performance are done without affecting user operation (turning search off being a notable exception). Turning off template inclusion of templates at this point would break lots of articles, so is clearly not a desirable solution. Is template inclusion of templates a significant performance issue at this point? I don't know. I do know that general performance is, and almost certainly always will be, a BIG issue. -- Rick Block (talk) 16:45, 14 December 2005 (UTC)
- That's really impressive. And shocking too. I feel the point of no return in re if has already passed. And to handle that by consensus does not work. Maybe it would be best to face the situation and put all efforts in implementing that in code instead of argumenting about how to throw it out. But I don't know how long that would take. However, this discussion here is just academic. By yelling at newbies Netoholic just pisses them off. Maybe he also hits that one who could implemement it. They just do not understand him. And the rate he does this is clearly insuffient to solve the problem. Being bold does not solve this. – Adrian | Talk 18:18, 14 December 2005 (UTC)
- I don't think that means anything, really. Perhaps it's too late to remove {{if}} outright—but that certainly doesn't mean its spread cannot be controlled.
- In other words, we may need to keep {{if}} in order to maintain the various reference templates; but that's no reason to thoughtlessly insert it into every template we can find. In particular, the various userbox templates seem to have been infused with logic extensions—and why? They're not really part of the encyclopedia proper; to stress the servers for the sake of a little extra eye candy on userpages seems shortsighted. —Kirill Lokshin 18:36, 14 December 2005 (UTC)
- Template:if should be aggressively removed from every userbox template that it is in immediately. Phil Sandifer 19:57, 16 December 2005 (UTC)
- According to WP:UBX so is no userbox there using {{if}}, one ({{Userbox/Vandalized}}) is using {{qif}} →AzaToth 20:51, 16 December 2005 (UTC)
- Are you trying to be funny? a great example of what needs to go far away. {(if}}, {(switch}}... it's all the same. -- Netoholic @ 20:57, 16 December 2005 (UTC)
- I'm not trying to be funny, Phil said if. Also, it's more server friendlier to use switch in a generic userbox than to use several different userboxes per meta call perspective (called templates are cached so only one database lookup per template is issued per session) →AzaToth 21:04, 16 December 2005 (UTC)
- "Templates" are not cached in any way. Pages are gathered from their various components, parsed, and then cached as HTML. Read Wikipedia:Avoid using meta-templates#How a page is built and cached. Each time a user page is edited, all templates and sub-templates it contains are pulled from the database. A template with 10 {(switch}} calls creates ten identical database calls and gets ten identical results. It then mashes those results into the userbox template result, and then incorporates that in the final page. The completed HTML page is then written to cache. -- Netoholic @ 21:19, 16 December 2005 (UTC)
- You have wrong, perhaps it's a so new change in the software that you are unaware of it, but template are catched. on line 108 on includes/Parser.php, it states:
- "Templates" are not cached in any way. Pages are gathered from their various components, parsed, and then cached as HTML. Read Wikipedia:Avoid using meta-templates#How a page is built and cached. Each time a user page is edited, all templates and sub-templates it contains are pulled from the database. A template with 10 {(switch}} calls creates ten identical database calls and gets ten identical results. It then mashes those results into the userbox template result, and then incorporates that in the final page. The completed HTML page is then written to cache. -- Netoholic @ 21:19, 16 December 2005 (UTC)
- I'm not trying to be funny, Phil said if. Also, it's more server friendlier to use switch in a generic userbox than to use several different userboxes per meta call perspective (called templates are cached so only one database lookup per template is issued per session) →AzaToth 21:04, 16 December 2005 (UTC)
- Are you trying to be funny? a great example of what needs to go far away. {(if}}, {(switch}}... it's all the same. -- Netoholic @ 20:57, 16 December 2005 (UTC)
- According to WP:UBX so is no userbox there using {{if}}, one ({{Userbox/Vandalized}}) is using {{qif}} →AzaToth 20:51, 16 December 2005 (UTC)
- Template:if should be aggressively removed from every userbox template that it is in immediately. Phil Sandifer 19:57, 16 December 2005 (UTC)
$mTemplates, // cache of already loaded templates, avoids // multiple SQL queries for the same string
- →AzaToth 21:23, 16 December 2005 (UTC)
- You said it right... "multiple SQL queries for the same string" - multiple occurances of {(stub}} are held in the parser... but parameterized templates are not all the same string. Take . {(userbox|...}} is called 19 times because the string changes each time. -- Netoholic @ 21:32, 16 December 2005 (UTC)
- They are added to the cache as verbatim, it checks in the cache if the template name is present, if present it sets $text to it and parse it, else it makes a sql call. (see line 2420 in same file) →AzaToth 21:44, 16 December 2005 (UTC)
- Wrong again. -- Netoholic @ 21:59, 16 December 2005 (UTC)
- They are added to the cache as verbatim, it checks in the cache if the template name is present, if present it sets $text to it and parse it, else it makes a sql call. (see line 2420 in same file) →AzaToth 21:44, 16 December 2005 (UTC)
- You said it right... "multiple SQL queries for the same string" - multiple occurances of {(stub}} are held in the parser... but parameterized templates are not all the same string. Take . {(userbox|...}} is called 19 times because the string changes each time. -- Netoholic @ 21:32, 16 December 2005 (UTC)
- →AzaToth 21:23, 16 December 2005 (UTC)
- If userboxes are creating any sort of server load, they should be shot on sight - they are as wholly a non-essential function as can be dreamed up. We ought not have to play "Which way of doing this totally useless function is less destructive." Phil Sandifer 21:12, 16 December 2005 (UTC)
- I don't think userboxes are to much of a worry, they are only used on low traffic pages (userpages) →AzaToth 21:21, 16 December 2005 (UTC)
They also tend to be used multiple times on userpages. Furthermore, there is absolutely no reason why they should need to use meta-templates. "This user is X" is a simple enough thing to communicate without being l33t. Phil Sandifer 21:26, 16 December 2005 (UTC)
- That's why I created userbox foo using switch to reduce the relative number of sql calls if multiple simlar boxes are used on one page →AzaToth 21:29, 16 December 2005 (UTC)
- By far the easiest thing to do, though, is to just subst the templates. Phil Sandifer 21:42, 16 December 2005 (UTC)
- I think people can get rather angry if you start to subst on their user pages. →AzaToth 21:48, 16 December 2005 (UTC)
- Aza... you should be trying to help us reduce the server load. Instead, you are just expanding this practice directly in the face of better judgement. You've made it so that several templates can't even be subst'd anymore (Wikipedia:Template substitution#Templates that should NOT be subst'd). You're making a mess that you know you won't have to clean up.
I vote we just bite the bullet, blank and protect these damn "logic" templates. The trivial purposes we're using this for are not worth it all, and the use is expanding daily. -- Netoholic @ 21:59, 16 December 2005 (UTC)- That will likely confuse people - how about if we change them to read something like "You are seeing this text because this template uses a deprecated meta-template. Please correct its usage" so that at least people know what happened. Phil Sandifer 22:03, 16 December 2005 (UTC)
- Well, neither way would be pretty, but either would inspire some quick work either restoring older templates/versions to use. I can find alternatives for every instance of meta-template use. The technical side isn't the problem... it's the people that openly defy this guideline. I mean, I can understand disagreeing, but actually expanding these things at this point is just reckless. -- Netoholic @ 22:27, 16 December 2005 (UTC)
- That will likely confuse people - how about if we change them to read something like "You are seeing this text because this template uses a deprecated meta-template. Please correct its usage" so that at least people know what happened. Phil Sandifer 22:03, 16 December 2005 (UTC)
- Aza... you should be trying to help us reduce the server load. Instead, you are just expanding this practice directly in the face of better judgement. You've made it so that several templates can't even be subst'd anymore (Wikipedia:Template substitution#Templates that should NOT be subst'd). You're making a mess that you know you won't have to clean up.
- I think people can get rather angry if you start to subst on their user pages. →AzaToth 21:48, 16 December 2005 (UTC)
- By far the easiest thing to do, though, is to just subst the templates. Phil Sandifer 21:42, 16 December 2005 (UTC)
related debate
The relevance of this guidelene is being debated at Template talk:Spoiler#Wikipedia:Avoid using meta-templates. People intested in these issues would be welcome to comment there. DES (talk) 18:33, 14 December 2005 (UTC)
- Don't let this turn into a MeatBall:ForestFire. Discuss the WP:AUM guideline here... talk about possibly merging the spoiler templates there. -- Netoholic @ 18:56, 14 December 2005 (UTC)
- Since the queastion about whether the AUM guideline applis to the spolier templates, and indeed to the IF logic templates has been raised there, it seems that it is a courtesy to let intersted and possibly knowlegable people here know about the discussion there. This was more in the line of posting a notice of a relevant ongoing discussion in another plce, such as is often done on the pump, or via RFC. I fail to see how that is ignigting a "forest fire" (and given the size of wikipedia, i don't see that discussion on several pages has the kind of problems that MeatBall was complaining about anyway. My only experince with a case where someone cited that "guideline" was in what I continue to regard as an improper attempt to stifle valid discussion, so I do not react positively to the reference.) I might add that you are the person who raised the issue of AUM on Template talk:Spoiler, and used it as the basis of a revert, to boot. DES (talk) 19:04, 14 December 2005 (UTC)
A small point
Templates are needed for consistency. Compare the situation where we have templates A and B. If they call a template C implementing the common denominator, and it gets edited, then, true enough, all pages containing A and B will need to be re-rendered. But if they don't call C, and A is changed then B must be changed as well. In case of several similar templates this is prone to error (I'm sure you can imagine what can go wrong). All pages containing A and C still need to be re-rendered. Fortunately most of the templates like C will not need changing frequently. That templates are a vandal-magnet is a problem all by itself. Suppose someone would put something nasty on disamb? Perhaps it would be better if we only allowed high-frequency templates to be changed only by registered users who have been around for a while. But that's probably to unwiki of me. Another thing: might it be possible to make only that part of a page affected by a template re-render if that template changes? That would solve a lot. Also if an article is edited and only stuff outside template calls changes, they wouldn't need to be called again, would they? I know, our develepors are busy enough as it is, but hey, one can dream (or have a wishlist). Shinobu 19:55, 16 December 2005 (UTC)
- Yes, if A and B have a commonality that is changed without a template the net number of articles to be re-rendered is the same, BUT if it's done by modifying a common template C the software immediately marks cached versions of all of the articles as being out of date. With templates using templates, this can result in a tremendous burst of activity that is smoothed out somewhat if instead several templates are modified each affecting only a subset of the total number of articles. The software could keep a queue of cache invalidation requests and meter them to a reasonable rate (even do them asynchronously to the change of the template), but I'm guessing this would be a fairly tricky change to get right. Re-rendering only part of a page is not possible given the current hardware/software architecture (the squid servers, which are the primary caching mechanism, work by caching entire page contents). This could potentially be done using features fairly recently added to the squid software, but again it wouldn't be easy. I think the bottom line is that the developers know there's interest in this, they would like to do something if they could, they aren't stupid, and it hasn't been done - my take-away is that it must be VERY hard. -- Rick Block (talk) 23:57, 16 December 2005 (UTC)
Incorrect example
Neither {{Metastub}} nor the stub tempaltes (not categories) created using it, nor stub types in general, are or use meta-tempaltes in any way, so they are not appropriate for mention here. Furhtermore, new stub types are normally subject to a proposal and approval process, precisely to avoid "scope creep" and "spur-of-the-moment" creation of new stub types, see WP:WSS/P. As a result i think the entire "scope creep" section is invalid, as the removal of this clearly incorrect example leaves it without any example at all, and deprices it of what the project page says is currntly the principle example. If that is the principle example of meta-tempalte involvement in scope creep, there is none. DES (talk) 22:42, 16 December 2005 (UTC)
- While the specific examples are perhaps out-dated (thanks to this guideline's existence), we have much BIGGER fish to fry lately and the section should remain, but be updated. Latest evil-doers can be found at Category:Wikipedia special effects templates and WP:UBX. UBX is a particularly good "scope creep" example. -- Netoholic @ 22:48, 16 December 2005 (UTC)
Offer of assistance
I would like to offer my assistance to anyone looking for ways to make a template work while also following this policy and general good practices. Please contact me on my talk page and describe what you're trying to achieve. I also run a bot which can assist with some conversion/migration tasks. -- Netoholic @ 07:34, 18 December 2005 (UTC)
- Maybe you could put that on your user page? Maybe with some pointers to your works (maybe with examples)? Thanks for the offer. Maybe I could ask for some bot run in the future. I didn't recognize that you also operate one. – Adrian | Talk 09:13, 18 December 2005 (UTC)
Maintainability and liability
There is a saying in the computer programming world: “Premature optimisation is the root of all evil”. While a reasonable degree of responsiveness (which Netoholic’s revert warring does nothing to promote) is worthwhile, aggressively attempting to optimise the servers at the expense of maintainabilty ties up the time and work of editors. Even for editors such as myself who prefer to work on editing other people’s work, it is busywork and a distraction from checking core quality. Some people underestimate the importance of useful back-editing in handling the rubbish (and libel; the John Siegenthaler incident isn’t a worst case) that Wikipedia absolutely must keep under control if it is to survive. Susvolans ⇔ 16:27, 18 December 2005 (UTC)
- This policy has been on the records for months and has been systematically ignored. I see little reason to call a clean up at this point premature. Phil Sandifer 17:17, 18 December 2005 (UTC)
- Susvolans, you may disagree with this policy but then you don't need to do any work. All you need to do is allow me and others to do this "busywork" of cleaning up meta-templates. My biggest barrier right now is people reverting my efforts. Go work on articles, and I'll (we'll) fix the templates. -- Netoholic @ 17:46, 18 December 2005 (UTC)
- The busywork I was talking about was maintaining by hand pages that have long text instead of templates. Susvolans ⇔ 17:49, 18 December 2005 (UTC)
- All well and good that you don't want to do this. The developers have asked you to do it anyway, however. So do it anyway. Phil Sandifer 17:50, 18 December 2005 (UTC)
- I agree with Susvolans. To Susvolans: I would propose to stop discussing here. It is pointless. We now have 21'000+ articles that depend for example on template:if or its server friendlier replacement template:qif (most via meta-templates). This is 2.6% of all wikipedia articles. That's a fact. It can't be stopped anyway. It might pass a TfD and then it might go to the holding cell. And then? Good luck in fixing 21'000 articles! – Adrian | Talk 19:06, 18 December 2005 (UTC)
- Actually, I suspect that, having just killed Template:If without removing it at all, the damage will be cleaned up by the users by dinner. Phil Sandifer 19:27, 18 December 2005 (UTC)
- Yes. because I have it almost converted to qif. So why don't you kill qif, please? I'd love to watch this! – Adrian | Talk 19:42, 18 December 2005 (UTC)
- Please refrain from rejoicing at demonstrations of denial of service attack vulnerabilities. Doing so, and deliberately acting in ways known to make them worse, despite repeated requests not to do so, is unhelpful. Jamesday 20:27, 18 December 2005 (UTC)
- Seconded. That would be the precise phrasing I was grasping for - David Gerard 20:36, 18 December 2005 (UTC)
- To give you an idea of how bad these templates are, killing if locked the database briefly. Phil Sandifer 19:44, 18 December 2005 (UTC)
- At least I do not have to work on converting if to qif any longer. Thanks! – Adrian | Talk 19:48, 18 December 2005 (UTC)
- Way to be a team player... -- Netoholic @ 20:33, 18 December 2005 (UTC)
- Please instead work at reducing the use of qif to reduce the harm. Jamesday 20:27, 18 December 2005 (UTC)
- I hope that this SPECIFIC REQUEST FROM A DEVELOPER not to use qif now ends the debate? Phil Sandifer 20:32, 18 December 2005 (UTC)
- Specifically, from Wikimedia's DBA - David Gerard 20:36, 18 December 2005 (UTC)
Feature request
- Experimental technical prefetch — Some high traffic template could be stored in a high-speed buffer to be used as is. →AzaToth 02:26, 17 December 2005 (UTC)
- (moved to talk page since this isn't an existing alternative to meta-templates, but a feature request. Submitting it to BugZilla may be useful). Radiant_>|< 21:41, 18 December 2005 (UTC)
Protected
Owing to foolish removal of the policy tag on querulous and insubstantial grounds, I have protected the page. And don't say I didn't warn you - David Gerard 21:02, 18 December 2005 (UTC)
- Seconded. Any issues related to copyright, legality or server load can be and are imposed by Jimbo, the Board or the Devs. I would like to hear a good reason for not deprecating all "conditional" templates, because their practical use is outweighed by the problems they cause. Radiant_>|< 21:37, 18 December 2005 (UTC)
- Speaking of policies: "Admins must not protect pages they are engaged in editing, except in the case of simple vandalism." —Lifeisunfair 22:07, 18 December 2005 (UTC)
- Removing a policy tag counts, thank you for playing! - David Gerard 22:16, 18 December 2005 (UTC)
Potential alternative to meta-templates
AzaToth has written m:User:AzaToth/Logic, which implements conditionals as Mediawiki builtins; I've brought this code to the attention of wikitech-l and also suggested he speak to Brion, Tim and/or Jamesday on #wikimedia-tech - David Gerard 21:50, 18 December 2005 (UTC)
- Sounds like an improvement since it doesn't require a db query, but wouldn't it be possible to make such calculations clientside rather than serverside? Radiant_>|< 21:57, 18 December 2005 (UTC)
- Yes it would be possible by defining classes and using javascript, but it have some problems, one is that redundant information will be transmitted and increase the bandwidth (dont know how much this will affect on the total), and two if using javascript, all templates will be evaluated even if they are not to be shown (My implementation is ment to be run before any other parsing of the wiki code is performed), third is that if using javascript, it's problematic to access parameters (you could include all paramters, but how would you then decide what paramter belongs to what part of the document) →AzaToth 22:15, 18 December 2005 (UTC)
- If AzaToth's method (or some variation) proves feasible, it should satisfy everyone. This is precisely the sort of solution that I've been hoping for (since before I even knew that meta-templates existed, let alone learned of their negative impact). I strongly believe that we should wait to see how this pans out before engaging in the nightmarish process of eliminating all existing implementations of conditional templates. —Lifeisunfair 22:07, 18 December 2005 (UTC)
My concerns
I take this issue very seriously. If the use of meta-templates is harming Wikipedia, something must be done to stop this.
I am, however, curious as to why the guideline wasn't elevated to the level of policy sooner, and why this was done only when a dispute regarding the guideline's validity began. I'm not arguing that the "policy" status is illegitimate, but I can understand why someone might suspect that this sudden change was made purely as a means of justifying controversial edits (the removal of meta-templates). Comments on the part of Jimbo have been referenced, and I would sincerely appreciate a link.
Additionally, it's highly irresponsible to deliberately break (and protect) a template, thereby forcing others to clean up the resultant mess "by dinner." When a reader is simply attempting to obtain information from the encyclopedia, a message asking him/her to "fix the page to exclude this template" is not helpful, especially considering the fact that the template in question usually doesn't even appear directly on the page (which is likely to confuse people in such a manner that they remove useful templates from articles, instead of removing the meta-templates contained therein). —Lifeisunfair 22:07, 18 December 2005 (UTC)
- To be clear, it wasn't a matter of "Clean up these templates before dinner or no dessert." I had faith - faith that appears to be well-founded - that the templates would get tidied in about six hours, and that this would be the most effective way to kick-start the process. Phil Sandifer 22:09, 18 December 2005 (UTC)
- Here's the issue in a nutshell. It was marked guideline, in the sense that metatemplates were/are not absolutely 100% forbidden. They should be avoided whenever possible, unless you have a really, really good reason not to. Unfortunately, this distinction was (a) too subtle, and (b) more-or-less ignored by people who went about creating the abominations we have today. Obviously the subtle approach has failed, misreably. As such, I've marked it as policy, which it was all along. Raul654 22:10, 18 December 2005 (UTC)