Rent-a-Mod

The Wesnoth users community has always been rather special compared to other gaming groups. The forumers are usually civilized, they respect the Posting Guidelines, rarely start heated discussions on their own, and follow our moderators and developers’ orders and recommendations.

The development team, our current moderators and I are usually around to help with any thread requiring moderation. Such a pacific community doesn’t require maintenance work like that very often, not counting the insatiable spam generators that never stop coming to attempt to plague the forums with cheap search engine-feeding signatures and gratuitously large ad-posts.

However, a rather recent phenomenon is that of Rent-a-Modding. There are some members who seem to think, consciously or not, that forum moderation works by following a tight set of rules resulting in mechanical procedures fitting every possible situation, derived of course from our Posting Guidelines. Other users attempt to answer to forum posts authored by newbies, by guessing what a developer or moderator would say in such situation, or by copying past moderator reactions.

The behavior I’m describing here is commonly known as backseat-modding, and as Urban Dictionary puts it, they are, effectively, a pain in the ass for actual mods and admins, but it’s not because they look like wannabe-mods, but because most of the time they are doing it wrong!

As I was saying, moderators don’t really follow strict rules to decide how to react to a particular situation, since every situation involves completely different contexts which depend a lot on the poster’s background and past behavior — there is, after all, a reason for handpicking Forum Regulars who might fit the job. This is what makes Rent-a-Mods annoying in the first place, since they can easily give out a really bad impression of our community and standards, scaring away newcomers and spreading bad words about us in other corners of the ’net.

Taking a wild guess of what a Developer will say to a poster regarding a specific development issue, such as Wesnoth’s future plans, or why problem X has not been fixed yet, or why feature Y is apparently never going to be implemented, is also a really Bad Thing™ since it wastes our time correcting the spreading misinformation before it gets stuck in people’s heads. There has been a lot of random guesswork regarding recent problems such as the supposed GNU General Public License violations by the iPhone/iPad port creator and distributor, or why a complaining poster has been banned from the multiplayer server(s) — hence we had to ban both to keep things orderly and avoid the development of useless time-consuming arguments.

In case I’m not getting my point across:

DON’T DO IT. IT’S NOT USEFUL FOR ANY OF THE INVOLVED PARTIES. LET THE MODS DO THEIR JOB.

Thanks for reading. I’m fairly certain that this post might not provide a clear enough answer for cases such as this, but I don’t feel like writing a longer and thorough rant at this moment.

Curiosity killed the cat

People’s curiosity has no limits, particularly when it comes to Wesnoth add-ons.

In order to reproduce a bug, I had uploaded and removed a test add-on from the add-on servers for 1.8 and trunk several times, yet it seems I forgot to remove it the last time. This hasn’t stopped people from downloading it out of morbid curiosity, although nobody has dared to ask me about it on IRC or the forums. Certainly not news to me, since this is exactly what happened with it the last time prior to its removal.

Wesnoth test addon screenshot

As of this writing, the 1.8 version has had 949 downloads, as it can be seen in the screenshot above. You’d think an add-on with a description of “FOO” and a misspelled title would not attract anyone to try it, but this principle doesn’t work in practice. Had the add-on contained code to break all other add-ons, people would still not get the idea, I guess. Then again, I’m talking about users who often mistakenly download the source code tarballs and then ask how to install Wesnoth on Windows or Mac OS X.

This is what I get for forgetting to remove this kind of stuff. Thanks Gambit for pointing it out to me this night.

Wesnoth.org and the Prosilver transition, Part II

Wesnoth forum - prosilver style (preview)

After some hesitation, I have deployed Prosilver Special Edition on the Wesnoth.org forums, with multiple changes meant to make it more similar to mainline Prosilver in terms of layout. Wesnoth’s custom Prosilver changes have also been applied on our copy of Prosilver SE.

In fact, Prosilver SE as used in Wesnoth.org depends completely on the main Prosilver template rather than its own partial template set, and it also replaces the default Prosilver theme/stylesheets and imagesets, since otherwise very few people would choose to use it. Besides, OAB.

Of course, further changes are not unlikely to occur, depending both on the users’ feedback and my own testing experiences.

Wesnoth.org and the Prosilver transition

Most people who frequented phpBB 2 forums have met the Subsilver theme at some point. Wesnoth’s community is not the exception, and the phpBB 3 switch completed by cycholka/Mist in March 2008 during the third-to-last host migration involved switching everyone to Subsilver2, which is the last incarnation of the good old Subsilver. Most of us Wesnoth forumers have become accustomed to the cleanness, quirks and old-school feel of Subsilver2.

However, that will eventually change.

Maintaining patches for mods affecting the forum user and moderator front-ends involves editing three template sets, which are Prosilver (phpBB 3’s new built-in and default style), Subsilver2 and AcidTech, which is Subsilver2-based with some essential layout differences. There are even some mods that don’t provide MODX instructions for Subsilver2, since it’s not essential for approval in the official modifications database to include support for this style that’s most likely going to be dropped in future phpBB release series.

If you take a look at my Projects section you’ll also notice that I’ve needed to write a couple of Subsilver2 hacks in the past to add minor functionality that’s present in the official phpBB 3 “Olympus” forum theme by default. There’s a third custom change in my tree, corresponding to the Quick Reply editor toggle button.

Continue reading “Wesnoth.org and the Prosilver transition

Wesnoth.org status

The host that provides all the primary services for the Wesnoth community, including forums, wiki, add-ons and the primary MP server, has been down for the last 4 hours. Work is underway to determine the causes and solve this problem as soon as it's possible. Stay tuned!

UPDATE 2010-07-31: the server went back online around 3:00 AM CEST. So far we still don't know the reasons for the crash, but we know that the server ran out of memory, which could have locked up the operating system indefinitely before being rebooted by hand.

Why the Wesnoth Markup Language is bad for you

In the past, I've seen many people from Wesnoth's user community and Development Team advocating the use and implementation of WML in Wesnoth and, potentially, other games.

Even I have participated in some debates over whether WML is good or bad for content developers. I have also expressed my opinions on topics such as the old, scrapped Python AI and the currently thriving embedded Lua support, all of this on IRC, usually in #wesnoth or #wesnoth-dev, and even #wesnoth-umc-dev.

I have got to admit that my personal opinions on programming languages have changed over time, mainly because I've learned from real experiences when maintaining or starting small to medium-sized projects built upon some of them. WML sort of counts as one of those since I'm the author and former maintainer of Invasion from the Unknown and, more recently, After the Storm. I have also worked on the WML events engine a bit implementing new features or fixing known and unknown bugs, including some I've found while developing my own WML content.

At this point, I think I am qualified for thoroughly examining the pros and cons of WML with a less partial point of view, so here's a rather lengthy review of both, despite the title of the article, which deliberately sounds like flamewar bait for the audience. 😉

Continue reading “Why the Wesnoth Markup Language is bad for you

Forum games and Wesnoth.org

Recently, Wesnoth's Off-Topic forum has fallen victim of a virus that had already attempted to take over our community long time ago. Forums games are a fun application of the board system to have some fun in social zones, but they sometimes get annoying.

They get particularly annoying when all the people involved have little or no creativity at all. There was a “Ruin a Wish Foundation” thread in Wesnoth's Off-Topic forum for a while until I locked it to try and see whether anyone would care. Some people did, and in fact, a new “Ruin a Wish Foundation” thread was started shortly afterwards. I simply let it go this time, but the amount of repetitiveness in the game's posts is getting pretty irritating.

Meanwhile, the incredibly hard-to-read “Three Word Story” game is also taking up space, and serves only as an unsettling showcase of these forumers' inability to come up with something different and amusing such as the “Limerick Duel” thread.

All in all, the Off-Topic forum will continue to be doomed to autopruning if this madness continues.

This is particularly terrible because the primary excuse used by the Powers That Be™ to justify the autopruning of Off-Topic is disk space, with pointlessness being a secondary excuse. Autopruning was introduced during times when the Wesnoth.org community forums were hosted on a server that wasn't under our control. This has certainly changed nowadays, and I honestly can't see how it's more important to avoid increasing Off-Topic's size in posts (where normal users can't add attachments) while individual art and music threads in other forums can use take up even more disk space thanks to enormous (occasionally gratuitously redundant) attachments. So, while space is no longer an excuse, the pointlessness seems to be a plague that we can't exterminate. Yet.

As I said not long ago in a certain post in Off-Topic:

Off-Topic is the name of the forum. This has never meant that you can go wild and be stupid or such (“off-topic”) in here.

More RAM at last! (or, the side-effects of patching the ACPI DSDT)

Today I bought and installed another 2 GB of RAM from my HP Pavilion dv5-1132la laptop while on an errand to buy a new laptop for someone else — it ended up being a HP Pavilion dv4-something in case you are wondering.

This means that I can not only run Windows 2000, Windows XP, Windows 98, OpenSolaris 2009.06 and Debian Lenny on VirtualBox all at the same time now, but I'll also be able to compile Wesnoth faster now that I can take advantage of the dual-core AMD processor without running out of RAM and getting excess swapping to disk during the build!

It didn't work quite well at first, though. Problems occurred when I started enough processes to consume over 2 GB of RAM:

BUG: Bad page state in process VirtualBox pfn:6febe
page:ffffea000187b990 flags:4000000000800000 count:0 mapcount:0 mapping:(null) index:0
Pid: 4323, comm: VirtualBox Tainted: G A 2.6.33.4-bluecore263-preempt-suspend2 #1
Call Trace:
[<ffffffff81086a48>] ? bad_page+0x102/0x115
[<ffffffff810882a2>] ? get_page_from_freelist+0x3b0/0x517
[<ffffffff810884f6>] ? __alloc_pages_nodemask+0xed/0x588
[<ffffffff810884f6>] ? __alloc_pages_nodemask+0xed/0x588
[<ffffffff810a0b2a>] ? __vmalloc_area_node+0xea/0x10a
[<ffffffffa021d514>] ? rtR0MemObjLinuxAllocPages+0xd8/0x1cc [vboxdrv]
[<ffffffffa021d630>] ? rtR0MemObjLinuxAllocPhysSub2+0x28/0xde [vboxdrv]
[<ffffffffa022a7dd>] ? g_abExecMemory+0x1ddd/0x180000 [vboxdrv]
[<ffffffffa022ad78>] ? g_abExecMemory+0x2378/0x180000 [vboxdrv]
[<ffffffffa022d2b0>] ? g_abExecMemory+0x48b0/0x180000 [vboxdrv]
[<ffffffff8102cc1c>] ? cpuacct_charge+0x54/0x76
[<ffffffffa023b2f4>] ? g_abExecMemory+0x128f4/0x180000 [vboxdrv]
[<ffffffffa023d28f>] ? g_abExecMemory+0x1488f/0x180000 [vboxdrv]
[<ffffffffa023d7bb>] ? g_abExecMemory+0x14dbb/0x180000 [vboxdrv]
[<ffffffffa02316da>] ? g_abExecMemory+0x8cda/0x180000 [vboxdrv]
[<ffffffffa0218ded>] ? supdrvIOCtl+0x1241/0x20f8 [vboxdrv]
[<ffffffffa021ce22>] ? rtR0MemAlloc+0x90/0xb4 [vboxdrv]
[<ffffffffa02152a7>] ? VBoxDrvLinuxIOCtl+0x114/0x18e [vboxdrv]
[<ffffffff81028440>] ? pick_next_task_fair+0xac/0x112
[<ffffffff810ba422>] ? vfs_ioctl+0x23/0x93
[<ffffffff810ba92d>] ? do_vfs_ioctl+0x429/0x46d
[<ffffffff810aeff3>] ? fget_light+0xc3/0xe8
[<ffffffff810ba9ad>] ? sys_ioctl+0x3c/0x5c
[<ffffffff81001f2b>] ? system_call_fastpath+0x16/0x1b

While at first I thought it was a problem with the new RAM module itself (either that or damage on the old module, which is occupying the formerly free slot) I quickly suspected of the Linux kernel configuration instead because of several ACPI-related errors in the boot log.

reserve_ram_pages_type failed 0x6febe000-0x6febf000, track 0x10, req 0x10
ioremap reserve_memtype failed -16
ACPI Error: Could not map memory at 000000006FEBEE70, size 7 (20091214/exregion-180)
ACPI Exception: AE_NO_MEMORY, Returned by Handler for [SystemMemory] (20091214/evregion-475)
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.TOM_] (Node ffff88013f8605d0), AE_NO_MEMORY
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._CRS] (Node ffff88013f860430), AE_NO_MEMORY
ACPI Error (uteval-0250): Method execution failed [\_SB_.PCI0._CRS] (Node ffff88013f860430), AE_NO_MEMORY

After running some memory test utilities and getting no problem reports I recompiled another kernel (blessed be ccache, by the way!) without my patched DSDT which I needed for getting thermal zone readings with Linux. I might have mentioned before that this laptop has a special rule in the ACPI DSDT to not allow any operating system other than Windows Vista (even the particular version) to read the temperature status.

As I suspected, all the boot errors went away after rebooting to an unpatched/untainted kernel, and right now I'm using 3678 MB of 3707 MB (damned graphics controller) without hitting a “bad page.”

I'm not sure why the patched DSDT caused this little mess, but I'll check what happens if I repatch it now, using the current “original” DSDT.

On Wesnoth's grow rate

When I got my current HP laptop on December 2008, it was pretty nice to compile Wesnoth from scratch with 3 or 4 parallel compiler instances in less than 15 minutes, even when making -O3 builds.

Nowadays, it can take an hour to make an -O3 build with 1 single compiler instance, and parallel compiling is out of the question. In comparison, Wesnoth 1.0 can be compiled in 3 minutes and a half with 1 single instance, and much less time with -j 4.

Exactly what is wrong with this? Let's take a look at the relevant system stats and compilation settings:

  • CPU: AMD Athlon X2 Dual-Core QL-62 (2 GHz each core)
  • RAM: 2 GiB minus 256 MiB (onboard graphics)
  • OS: Debian GNU/Linux “Squeeze” (amd64) (GCC 4.4.2)
  • Kernel: Linux bluecore 2.6.33.2-bluecore261-preempt-suspend2-audit #1 SMP PREEMPT Mon Apr 12 21:38:39 CLT 2010 x86_64 GNU/Linux (Tux-On-Ice patch, optimizations for AMD K8, timer freq. 1000 hz., NO_HZ, PREEMPT)
  • Filesystem where .ccache and Wesnoth's source are: ext3 (sda6)
  • Filesystem for /tmp: XFS (sda9)<
  • CXXFLAGS: -pipe -mtune=native -march=native -O3 -Wl,--gc-sections,--relax
  • Build system: SCons (ccache=True, fast=True)

-O3 obviously involves extra CPU load at compile time because of the extra optimizations compared to, say, the default -O2. Nonetheless, I know well that it used not to take this long to build Wesnoth at the start of 2009. Wesnoth's code grew a lot over the course of the year due to the introduction of the new AI framework, the new lobby and more GUI2 development. Particularly, if I run scons with -j 2 or greater nowadays, I can run out of free RAM (making Linux page everything out to swap memory) during the compilation of the AI framework.

The most likely reason for this problem is the common use of C++ templates in that code. This feature is used a lot in GUI2 as well, but the code generated by template instantiation on every object file appears to be smaller.

While building stuff from scratch should be relatively uncommon for a developer like me who also has ccache installed and enabled, very minor changes in GUI2 or the AI from other developers currently trigger a near-total recompilation of Wesnoth. I have complained a lot about this in many opportunities, but it seems that I've hit a hard wall as a consequence of Wesnoth's evolution.

An -O3 executable of the main game target can be as large as 14 MiB. An -O0 debug build with symbols nears 400 MiB, and the directory with the resultant object files (including the executable) reaches 1.4 GiB of size.

Right now I'm considering adding more RAM for other reasons — namely, running Windows XP SP3 on VirtualBox can easily starve the host if certain apps like Iceweasel or Kate are running on the latter. I've yet to see if this will help me compile Wesnoth faster. It won't magically reduce the frequency of full rebuilds, though, and that's really discouraging me from hacking the mainline engine unless it's a one-shoot patch like the one involved in the fix for bug #15902.

The alternative is getting a quad-core machine or a distcc host. The first is least likely to happen. 😐

Wesnoth Evolution: An interview with Dave

As I mentioned in my Wesnoth Evolution: 0.1 article, I contacted David White (a.k.a. Dave/Sirp) to ask him a few questions about Wesnoth's early history — more specifically, about codename “strategy” and Wesnoth 0.1.

This is not an all-inclusive interview. You can find more information on Wesnoth's history in Wesnoth.org if you know how and what to search. Wesnoth Philosophy on the wiki (which includes The History of, and Philosophy behind Wesnoth) may be a good starting point.

Continue reading “Wesnoth Evolution: An interview with Dave