Pages

Tuesday, August 9, 2011

ArmchairGM is finally open source

August 1, 2011 was an important day in the history of open source software. That's when Wikia finally open-sourced the ArmchairGM codebase. You can browse the ArmchairGM codebase or even grab a copy of the ArmchairGM codebase, if you feel like it!

A bit of history


Over a year ago I tried open-sourcing the ArmchairGM codebase, but my idea was met with resistance and travelling to another country just to perform code cleanup — something you can do "online" by grabbing a copy of the codebase and then cleaning it up locally — was just not possible for me.

Later on, Sean Colombo, an awesome open source developer and the founder of LyricWiki, joined Wikia's technical team since LyricWiki moved to Wikia. On July 14th, I decided to e-mail Sean, just for the sake of it, to see if he'd be willing to help me out in making ArmchairGM's codebase open source.
You can believe that I was very surprised when I didn't receive the standard "sorry, can't do" reply that I've gotten used to getting from Wikia in response to my queries, but rather a sincere reply in which Sean stated that he'd be willing to help me out. Over the next two weeks, Sean worked hard to make sure that the ArmchairGM codebase would be ready to be released by removing private passwords and such things. And then, on August 1, it finally happened.
I was amazed that he took my original request — I had asked for a few ArmchairGM extensions and the skin — a couple steps further and open-sourced the entire codebase!

About the ArmchairGM codebase


The ArmchairGM codebase is based on MediaWiki 1.10alpha; the work on MediaWiki 1.10 started on 8 January 2007.
The current development version of MediaWiki is 1.19, the latest stable version is 1.17 and 1.18 will be released soon. So, as you can see, it's a bit old. After all, ArmchairGM was running on that 1.10alpha until early 2011, when it was upgraded to use the standard Wikia codebase.

Most of the interesting things can be found on the extensions and skins directories.

The extensions directory and its wikia subdirectory contain all the extensions used by ArmchairGM and/or created by Wikia developers — including ones that were short-lived, such as Challenge, or never enabled on ArmchairGM, such as LookupContribs.

The skins directory contains all the skins ever developed by the ArmchairGM staff, including the Sports skin used on ArmchairGM from 2007 to early 2011, its earlier incarnation, called simply ArmchairGM, the Halopedia skin and the Gamespot version of it, and plenty more. It should be noted that while this directory has plenty of PHP and CSS files (and even some JS files), most of the images used by custom skins are not there — some are accessible on Wikia's servers if you know where to look for them, some are permanently gone.

What about core hacks? Wikia has done and continues to do core hacks whenever they need to do something that MediaWiki doesn't support out-of-the-box. So far I've come across a few, relatively minor, yet unmarked core code hacks in the ArmchairGM codebase. I'm hoping that I'll have enough time later this year or the next year so that I can build a diff showing the differences between a standard MediaWiki 1.10alpha and the ArmchairGM version.
Needless to say that such a thing will be quite difficult to do, because "1.10alpha" can mean pretty much any version of MediaWiki between r18957 (committed on 8 January 2011) and r21732 (committed on 1 May 2007) — that's 2775 revisions of code, and the ArmchairGM codebase could've been forked from any of those revisions.

Update on 15 August 2011: I had totally forgotten about the existence of the RELEASE-NOTES file. Comparing the RELEASE-NOTES file of the ArmchairGM codebase to the RELEASE-NOTES of MediaWiki 1.10alpha at various points of development allowed me to track down the revision of MediaWiki that the ArmchairGM codebase is in. I believe that it's either r20138 or a revision very close to it.

To generate a patch file showing the differences between the standard MediaWiki codebase and the ArmchairGM codebase, first export a copy of MediaWiki at r20138:

svn export -r 20138 http://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3 MW-r20138

Then export a copy of the ArmchairGM codebase:

svn export https://svn.wikia-code.com/wikia/branches/wikia-ny/trunk NYC

And finally generate the patch:
diff -ur MW-r20138 NYC > diff-between-NYC-and-vanilla-MW-r20138.patch

Some changes are useless, like the change to includes/AjaxDispatcher.php, some are plain weird (like the various API changes to the files in the includes/api directory), and some changes (mostly the ones to OutputPage.php and SpecialPreferences.php) are a bit hard to read — but hey, there you have it, a file showing what changes were done to the core MediaWiki software by ArmchairGM's developers.
Most of the custom functionality that you once saw in ArmchairGM was done via extensions, thankfully, not via core changes; in addition to extensions, the skins also played a part — skins developed by ArmchairGM's developers usually implemented some custom handling for the main page of the wiki, for example, while a vanilla installation of MediaWiki with the default skin treats the wiki's main page the same way it would treat any other page.

For your viewing conveniece, here's a list of core MediaWiki files (81 in total) which differ between the ArmchairGM codebase and revision 20138 of MediaWiki:


extensions/README
includes/AjaxDispatcher.php
includes/AjaxFunctions.php
includes/api/ApiBase.php
includes/api/ApiFeedWatchlist.php
includes/api/ApiFormatBase.php
includes/api/ApiFormatJson.php
includes/api/ApiFormatPhp.php
includes/api/ApiFormatWddx.php
includes/api/ApiFormatXml.php
includes/api/ApiFormatYaml.php
includes/api/ApiHelp.php
includes/api/ApiLogin.php
includes/api/ApiMain.php
includes/api/ApiOpenSearch.php
includes/api/ApiPageSet.php
includes/api/ApiQueryAllpages.php
includes/api/ApiQueryBacklinks.php
includes/api/ApiQueryInfo.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQuery.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryRevisions.php
includes/api/ApiQuerySiteinfo.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiQueryWatchlist.php
includes/Article.php
includes/AutoLoader.php
includes/Database.php
includes/DefaultSettings.php
includes/DifferenceEngine.php
includes/EditPage.php
includes/Export.php
includes/GlobalFunctions.php
includes/Image.php
includes/LoadBalancer.php
includes/memcached-client.php
includes/MemcachedSessions.php
includes/MessageCache.php
includes/OutputPage.php
includes/ParserCache.php
includes/Parser.php
includes/QueryPage.php
includes/Sanitizer.php
includes/Skin.php
includes/SkinTemplate.php
includes/SpecialAllmessages.php
includes/SpecialConfirmemail.php
includes/SpecialContributions.php
includes/SpecialExport.php
includes/SpecialListusers.php
includes/SpecialLog.php
includes/SpecialMovepage.php
includes/SpecialNewpages.php
includes/SpecialPage.php
includes/SpecialPreferences.php
includes/SpecialRecentchanges.php
includes/SpecialSearch.php
includes/SpecialUndelete.php
includes/SpecialUpload.php
includes/SpecialUserlogin.php
includes/SpecialVersion.php
includes/SpecialWantedpages.php
includes/templates/Userlogin.php
includes/Title.php
includes/User.php
includes/WebStart.php
index.php
languages/messages/MessagesDe.php
languages/messages/MessagesEn.php
maintenance/deleteDefaultMessages.php
maintenance/dumpBackup.php
maintenance/generateSitemap.php
maintenance/postgres/tables.sql
maintenance/runJobs.php
skins/common/ajaxsearch.js
skins/common/common.css
skins/common/wikibits.js
skins/monobook/main.css
skins/monobook/rtl.css
skins/MonoBook.php


Ending Notes


Sure, the ArmchairGM codebase is old and plenty of stuff needs to be rewritten so that it even runs, let alone works properly, on modern versions of MediaWiki.
That being said, I'm glad that the ArmchairGM codebase is now open source — better late than never, as they say.

Thursday, March 31, 2011

Status update on SocialProfile for Q1/2011

This is the first quarterly update about the SocialProfile extension for MediaWiki, from January 1, 2011 to March 31, 2011.

Fixed bugs



  • Bug #26588 — image converting code should use $wgImageMagickConvertCommand instead of hardcoded "convert" (fixed in r79662)

  • Bug #28251 — SQL error in user profile pages (fixed in r84806)

  • Bug #27032 — new EditProfile special page to edit other users' social profiles



Other notable things




Plans for the future



  • Fix all open SocialProfile bugs — currently there are 6 open bugs; most of them aren't too complicated, so it should be possible to get them fixed by the end of the year

  • Improve and release other social tools — Comments, QuizGame, PictureGame, Video...there are plenty of awesome social extensions that need to be cleaned up and released



Do you have a wiki running SocialProfile? What features would you like to see incorporated in SocialProfile? Have some other thoughts, ideas or comments? Please let me know in the comments section.

Monday, September 6, 2010

Moving your wiki from Wikia to another host (off-Wikia)

You've just started a new wiki at Wikia. Congratulations. After a while, the community grows and there will be many editors. The bigger the wiki, the better, right? Most likely so. But with great articles comes great problems. Wikia's many software updates — at least things like Wikia's New New Style, which are purely political and motivated by the need to gain more revenue — can cause problems. What's the solution? Well, Wikia most certainly isn't going to stop applying software updates and writing new code. Would your community like to have a bit more space? There is a solution for your problem(s) — moving to another wiki host.

But moving off-Wikia to another, non-Wikia host is everything but simple and straightforward. Wikia usually refuses to close down the existing Wikia wiki; while it's true that they have every legal right to keep the Wikia site open, it's just not very fair or courteous towards the editors and administrators — the community of the wiki. In the worst case, administrators of the Wikia site may lose their rights on the Wikia site and the Wikia site will still exist and be editable by the world.

History knows of some fine examples. A Transformers-related wiki was started at transformers.wikia.com a long time ago. When Wikia's New Style — that is, forcing the Monaco skin down the users' throats — was introduced over two years ago, many wikis considered moving off-Wikia. This wiki was one of them. The wiki moved to TFWiki.net. Autonomy and total control of the wiki and no problems, right? Wrong. Wikia refused to close down the Wikia site and as an added "bonus", a high-ranking Wikia staff member, along with another staff member, removed the admins' and bureaucrats' rights on transformers.wikia.com, the log reason stating that these people have "moved to tfwiki.net". Well, it's the truth, you can't doubt that. What's noteworthy is that Wikia has no problems using the content created by these people. Sure, free content, but the current transformers.wikia.com is basically an unwanted and outdated fork of TFWiki.net.

Another case study: GisleWiki. This wiki was started at Wikia, but the founder (who, btw, pretty much built the site all by himself) didn't like Wikia's way of doing things, so he moved the wiki to its own domain, at GisleWiki.com. Wikia re-opened the Wikia site and look at it now: no edits for a long period of time and GisleWiki.com has more articles, obviously, because that wiki is being actively maintained by its founder. This didn't stop Wikia staff members from not only removing the founders' rights on the Wikia site, but also calling him a vandal. That's right folks — administrating a community, if you're not doing it as Wikia wants, is VANDALISM!

A more personal example is Jedipedia, the Finnish-language Star Wars wiki. I'm the co-founder of Jedipedia, along with Ufsark. In late July 2010, the wiki held a vote — at my initiative — to move to another wiki hosting service. The vote passed with nine (that's right, 9) people supporting and no-one opposing. Pretty much every active community member voted in the vote. Tells you something, eh?
The Jedipedia community and the administration team knew that Wikia wouldn't let the wiki go just like that, so we inserted a piece of JavaScript code into the site's JS. This JS code redirected the old Wikia site to the new location.
But on August 31st, a Wikia staff member discovered that we had moved and were using JavaScript to redirect the old Wikia site. This said person then proceeded to remove the JS code from our site. JouMan206, a long-serving bureaucrat and administrator of Jedipedia who later resigned at his own free will, reverted the Wikia staff member's action. The next day this Wikia staff member removed JouMan206's bureaucrat and administrator rights on Jedipedia. I must say that this certainly reminds me of the real-life historical event known as Prague Spring...

Moving on, currently there are two Finnish-language Star Wars wikis named Jedipedia: one has a community and is not hosted by Wikia, and the another one which is hosted by Wikia is practically empty in terms of people and activity. But it's not over yet. Dubček was taken to Moscow when the Warsaw Pact forces entered Czechoslovakia and I was about to receive my punishment for...for...for being an innocent bystander who had a solution for the community's problems.

04:58, 2 September 2010 I was blocked on a Wikia-wide scale by another Wikia staff member for "malicious use of javascript"[sic]. I was naturally quite shocked as I hadn't done anything on Wikia for a rather long while. So I sent them a short message; copied and pasted my block message and added "Please explain." This is what Wikia replied to me:


Jack, you were redirecting Wikia sites to your wiki farm, with code that
hid the effect from staff/helpers/vstf. I can (with effort) believe
that others using the code weren't aware that this was a problem, but
I'm sure you were aware of our likely reaction.

It seems it's time for you to move on from Wikia.


Here's a challenge for you, my dear reader: can you find a diff where I added "malicious javascript" to a Wikia-hosted wiki? I tell you that you'll be having difficulties with that task, as there are no diffs because I never added any malicious JavaScript to any Wikia-hosted wiki. Nevertheless, I can say that I saw this coming. All Wikia needed was an excuse, and finally they found a suitable one. Still, this isn't the proper way to treat people who did a lot of volunteer work for you, at least in my humble opinion.
What do you think? Please share your thoughts on this issue with me in the comments section.

P.S. The JS that this post has mentioned a few times is posted here, in case you need to redirect your Wikia site to a different URL address:

if ( wgUserGroups === null || typeof( wgUserGroups ) != null && wgUserGroups.join(' ').indexOf( 'staff' ) == -1 && wgUserGroups.join(' ').indexOf( 'helper' ) == -1 && wgUserGroups.join(' ').indexOf( 'vstf' ) == -1 && wgUserGroups.join(' ').indexOf( 'sysop' ) == -1 && wgUserGroups.join(' ').indexOf( 'bureaucrat' ) == -1 ) {
window.location = 'http://URLofYourNewWiki.example.com/wiki/' + wgPageName;
}

Sunday, February 28, 2010

The past, the present and the future of the social tools

Social tools is a term which usually refers to MediaWiki's SocialProfile extension. SocialProfile consists of 10 "modules" (which actually used to be separate extensions at some point, ages ago), of which 9 are enabled by default. The only module not enabled by default is UserWelcome, which provides the <welcomeUser /> tag. Here's a quick overview of SocialProfile's modules:


  • SystemGifts — award functionality. Awards are automatically given out by the software once the user has reached the specified threshold (i.e. 5 edits, for example).

  • UserActivity — social activity feed on user profile pages.

  • UserBoard — Facebook-like message boards on user profile pages.

  • UserProfile — turns plain old User: pages into cool, social profiles!

  • UserRelationship — friends and foes, which will be shown in your social profile.

  • UserStats — statistics related to social actions (i.e. friending, sending a board message, etc.). UserStats also contains the point system (User Levels)

  • UserSystemMessages — required by UserActivity, stores when a user advanced to the next level

  • UserWelcome — a parser hook extension which provides <welcomeUser /> tag, which can be used to display user-specific info to the current user (when used in combination with WikiTextLoggedInOut extension

  • YUI — a very simple extension which loads the Yahoo! User Interface JavaScript library (version 2.7.0) on every page load, along with some custom functions.



In addition to SocialProfile and its modules, some other social tools are also available in the official MediaWiki SVN repository, namely:


  • RandomUsersWithAvatars — adds <randomuserswithavatars> tag to show the avatars of randomly chosen wiki users who have set an avatar for themselves.

  • WikiTextLoggedInOut — adds <loggedin> and <loggedout> parser tags to show different text to anonymous and logged-in users. Most commonly this is used to display random avatars (see RandomUsersWithAvatars extension) to anonymous users and UserWelcome info to registered users.



The past of social tools


Social tools were developed by the founders of ArmchairGM, Aaron Wright, David Pean, Dan Lewis and Rob Lefkowitz. Then Wikia bought ArmchairGM and hired its developers. Soon enough the magazine-style wikis were launched. Magazine wikis were wikis with social tools and each had its own, unique skin. Gaming.Wikia's was the best, no doubt — it was much like ArmchairGM's current default skin, only darker.
In late 2007, it seems that Wikia started pulling the plug on the magazine wikis. By 2008 there were no magazine wikis left, all of them had been converted into ordinary, plain Wikia wikis.

However, the social tools saw a second coming: Halopedia, a wiki about the popular Halo game series, was converted into a social wiki — complete with picture games, polls, quizzes and everything! I remember when that happened; I was helping the ArmchairGM developers in debugging the 'new' Halopedia.

In February 2008, SocialProfile was released, after I had requested it. At this point, it was lacking some essential features, such as the point system and the special page to remove other users' avatars (Special:RemoveAvatar). But...it was there. Completely open-source. You have to remember that back in 2008, Wikia wasn't an open-source project.

After this, a couple other wikis also got the Halo treatment: GamerGear, a wiki about PC and console gaming gear, Grand Theft Wiki, a wiki about the Grand Theft Auto game series and FFXIclopedia, a wiki about the Final Fantasy XI massively multiplayer online role-playing game (MMORPG).

The present of social tools


The ArmchairGM developers have either left Wikia voluntarily or been laid off, which, according to Wikia, means that there's nobody who knows the code.

Halopedia, GamerGear, Grand Theft Wiki and FFXIclopedia are still running social tools. Halopedia held two important votes in this January. As a result, polls, quizzes, picture games and social userboxes were turned off for Halopedia. Poll namespace extension is still enabled for Grand Theft Wiki, but it doesn't work — try clicking on one of the options of some poll and you'll see what I mean.

The future of social tools


I'm still the (un)official lead developer of SocialProfile extension, and I have no plans whatsoever to quit. Just yesterday Bryan, a fellow MediaWiki developer, fixed bug #22598 — now users using MediaWiki 1.16 or latest trunk can again upload their avatars.

I'm hoping to have more social features cleaned up by the end of the year. Namely, Comments, FanBoxes (social userboxes), LinkFilter, PictureGame, PollNY and QuizGame.

It will be a time-consuming task, I'm sure of that. But then again, I also believe in open source. I know that the social tools are a succeess, and so do the users. After all, what else explains that there are 4 archives of questions from users regarding this extension? :-)

Saturday, February 13, 2010

Idealism is dead

Back in January, I had an idea. A good one, I thought. Wikia operates ArmchairGM, a sports wiki where the social tools originated. My idea was to improve some of the unreleased tools, such as sports network tool. To do that, I needed to access the source code. Here's the catch: these tools are unreleased. Thus they cannot be found on Wikia's SVN.

What to do? On January 20, I emailed Jimmy Wales, the founder of Wikipedia and co-founder of Wikia, about this issue. My email was quickly forwarded to Gil Penchina, the CEO of Wikia, Inc. Long story short, I was asked to come to Wikia's office, either Poland or United States one, and sign a non-disclosure agreement (NDA) in order to gain access to the ArmchairGM source code and be allowed to clean it up. Wikia even offered to pay for the expenses and meals.
I wouldn't have minded signing a NDA, but flying to another country is just not possible for me, at least not anytime soon. I thought I had found a solution: I have a friend who lives in Poland and also is a programmer, so I thought that he could go to Wikia's office. I informed Wikia about this idea, and their reply to this was, "Sure". A few days later they inform us that "I can't let some "guy off the street" we've never met or built a relationship with get that sort of access to our internal systems".

Now, here's the thing: my friend's not just some guy off the street, but a smart programmer who's more experienced in programming than I'll probably ever be. He has a Master's degree and he's trusted in many different places, both offline and online. The major difference between him and me is that I once had global administrator rights on Wikia and he didn't. Big whoppin' deal.

My motive in this whole deal was to help out the greater community -- other users of MediaWiki and fellow MediaWiki developers. So that they'd have the largest possible pool of code to choose from. ArmchairGM's social tools are truly unique, as is its skin. I believed that I could change the world -- just a little, but for the better. Apparently that was a stupid idea. Should I just scrap my skin system rewrite project then, too?

Because Wikia thinks that ArmchairGM is a failed project, they aren't willing to clean up the code themselves. This means that a great skin and many great extensions have been lost forever...unless a developer in Poznań or San Francisco area is willing to negotiate with Wikia. Anyone up for a challenge?

Sunday, February 7, 2010

Bugs

Bugs. Bugs are annoying. And no, I'm not talking about the real life bugs that bug you when you're trying to write a blog about Wikia bugs.
What is the proper procedure when you find a bug on Wikia? Where do you report them? Wikia used to have a Bugzilla for tracking bugs... but a very smart person must have decided it wasn't needed back in 2007 or so. Currently only Wikia staff are able to use Wikia's bug tracking system, when in the past everyone was able to use the Bugzilla. Since July 2008, Wikia's open company test page has stated that Wikia doesn't have open bugtracking yet. Now, we have two options left:

One of these options is Special:Contact, a feature I dislike using because it takes days before you finally get a reply and the reply you get usually says that they're looking into the problem and then you never hear from them again.

The other option we have is IRC, #Wikia on freenode to be precise. And this is where we reported a bug that was caused by the recent move of Wikia Central to community.wikia.com. A number of users have userpage templates to for use all around Wikia, these templates are located on Central (now moved to community.wikia). These templates stopped working after the move. Once I found out they were no longer working, I went to the Wikia IRC channel and asked if anyone knew what the problem was. The first person to reply referred me to a Wikia forum, now, there is nothing wrong with that. But, on the forum it says my bug had been reported 4 days before I reported it, and the forum also makes it very clear that Wikia does not care about fixing this bug. No, they are to busy moving Central around and creating bugs to actually consider fixing them. Now, I know it's more fun to play around while creating bugs and that fixing bugs is not really a fun thing to do, but, the normal users like me would surely appreciate it if bugs like that would be fixed as fast as possible.

And this is when the conversation in #Wikia really picked up, more and more people started to have their say (nothing wrong with that, right?). Well, if you think like that you have clearly not been around #Wikia lately. We were kindly requested to take our conversation to #Wikia-social, and no, this request did not come from Wikia staff because they're not around during the weekend. It was another user who suggested we take BUG REPORTS to a SOCIAL CHANNEL because the main channel is not for "complaining" as he called it.

The discussion then evolved into a heated argument about the fact that Wikia staff doesn't seems to care about bug reports. A shame really, cause all I was looking to find was the answer to a set of simple questions:

1) There is a bug, has it been reported yet?
2) If it has been reported, what is being done to fix it? If it hasn't been reported yet, how soon can someone look at it?

Although I did get an answer to both of my questions (1: yes 2: we don't care, so go bug someone else), I find the way I got them ridiculous. And what's even worse, another question has come to my mind: How the hell are we supposed to report bugs on Wikia?

By the time someone replies to an email sent via Special:Contact the bug has probably already gotten bored and fixed itself. If you go to the IRC channel you'll be met with hostility and accused of "complaining". In the end we'll just have to realize that there is no way to report a bug on Wikia, and even if there is, Wikia does not care about bugs and they care even less about users. We will just have to wait for bugs to learn how to fix themselves.

Wednesday, December 23, 2009

Answers, answers...answers?

It seems that Wikia is not very willing to discuss when they will release the missing parts of answer.wikia codebase — if ever. Wikia's contact form a.k.a Special:Contact is more or less of an alias to /dev/null. It's a shame, really. In my opinion, it's important to allow the users to participate if they want to do so. Now all the users can do is provide feedback and make suggestions. Surely it'd be better if the users could just take a look at the source code and fix the bugs they've found?

I've probably said it before, but I'll say it again just to make sure: it's not my problem if you're running your site(s) on a collection of hacks and quick patches. I've already offered my help and I know when it's not wanted. I just thought that it would've been nice to have an open-source answers platform for MediaWiki (since WikiAnswers is not open source) and it would've helped Wikia too, allowing better internationalization and more bug fixes.

Also, Merry Christmas to my readers — have an open-sourcey Christmas. ;-)