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?
Showing posts with label wtf. Show all posts
Showing posts with label wtf. Show all posts
Saturday, February 13, 2010
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.
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.
Saturday, October 17, 2009
Wiki autonomy...or then not
Back in 2007, I adopted a Wikia wiki named WarWiki. I revived it, imported a fair bunch of articles from English Wikipedia (with attribution, naturally) and so on. Then I moved on to work on other things (such as being a Wikia janitor, but that was quite a while ago) and didn't have so much time for that wiki.
WarWiki was relatively quiet, only a couple edits per week, mostly from random anonymous users. I decided to clean the wiki up a bit, and started by disabling Wikia's Welcome Tool (HAWelcome extension); don't get me wrong, HAWelcome is very nice extension, at least from a technical point of view, but some wikis prefer to do welcomes "old-school" style — that is, to have real users welcome other users instead of bots. I find it quite annoying when the welcome bot leaves a "Hi, thanks for your edit" message to a spambot. No wiki needs any more of those!
So, I disabled Welcome Tool, deleted some old IP talk pages, and also Welcome Tool's user page and its talk page. A couple of days after this, I gave sysop rights to a couple friends of mine, as I thought that they could help me revive this wiki. What a fool I was. The next day, a Wikia staff member undeleted Welcome Tool's user page and talk page and re-enabled the Welcome Tool. So much for that wiki autonomy.
But wait! This story isn't over just yet...
After this stunt, my fellow co-administrators disabled Welcome Tool once again and re-deleted its user and talk pages. Guess what this earned us? Mass-deoppings, that's what. I lost my bureaucrat and sysop rights, and all the people I had promoted to admin status a couple days earlier lost their sysop rights. For a while, WarWiki had only one (inactive) bureaucrat and two inactive admins. All active admins had lost their rights...and for what? Hmm, that's a good question. You see, we were never told the reason! Last time I checked, there was a box on Special:UserRights labeled "Reason for change".

The above is a screenshot of Special:UserRights special page on MediaWiki.org...do you see the box I'm talking about? Yeah, I see it there too.
A page I had deleted earlier, related to Wikia's new "blog" feature, was also undeleted by the Wikia staff member in question. I don't feel that blogs are appropriate for every wiki, and that's exactly why I had deleted the page earlier on.
After a relatively long and painful discussion with another Wikia staff member, I got my sysop rights back — of course, after I had been suspected of "doing a subtle troll". I haven't edited WarWiki since that, because I feel that their behavior towards me was at least highly questionable, if not more.
What does this remind me of? It certainly reminds me of this blog post by Mikko Hyppönen, the Chief Research Officer of F-Secure (English Wikipedia's article on F-Secure). His blog post has a link to Michael Krigsman's Project Failures Analysis regarding Mikko's problems with Twitter; I suggest checking it out. I think this quote sums it up nicely:
WarWiki was relatively quiet, only a couple edits per week, mostly from random anonymous users. I decided to clean the wiki up a bit, and started by disabling Wikia's Welcome Tool (HAWelcome extension); don't get me wrong, HAWelcome is very nice extension, at least from a technical point of view, but some wikis prefer to do welcomes "old-school" style — that is, to have real users welcome other users instead of bots. I find it quite annoying when the welcome bot leaves a "Hi, thanks for your edit" message to a spambot. No wiki needs any more of those!
So, I disabled Welcome Tool, deleted some old IP talk pages, and also Welcome Tool's user page and its talk page. A couple of days after this, I gave sysop rights to a couple friends of mine, as I thought that they could help me revive this wiki. What a fool I was. The next day, a Wikia staff member undeleted Welcome Tool's user page and talk page and re-enabled the Welcome Tool. So much for that wiki autonomy.
But wait! This story isn't over just yet...
After this stunt, my fellow co-administrators disabled Welcome Tool once again and re-deleted its user and talk pages. Guess what this earned us? Mass-deoppings, that's what. I lost my bureaucrat and sysop rights, and all the people I had promoted to admin status a couple days earlier lost their sysop rights. For a while, WarWiki had only one (inactive) bureaucrat and two inactive admins. All active admins had lost their rights...and for what? Hmm, that's a good question. You see, we were never told the reason! Last time I checked, there was a box on Special:UserRights labeled "Reason for change".

The above is a screenshot of Special:UserRights special page on MediaWiki.org...do you see the box I'm talking about? Yeah, I see it there too.
A page I had deleted earlier, related to Wikia's new "blog" feature, was also undeleted by the Wikia staff member in question. I don't feel that blogs are appropriate for every wiki, and that's exactly why I had deleted the page earlier on.
After a relatively long and painful discussion with another Wikia staff member, I got my sysop rights back — of course, after I had been suspected of "doing a subtle troll". I haven't edited WarWiki since that, because I feel that their behavior towards me was at least highly questionable, if not more.
What does this remind me of? It certainly reminds me of this blog post by Mikko Hyppönen, the Chief Research Officer of F-Secure (English Wikipedia's article on F-Secure). His blog post has a link to Michael Krigsman's Project Failures Analysis regarding Mikko's problems with Twitter; I suggest checking it out. I think this quote sums it up nicely:
| ” | [...]this situation offers a case study example of immature customer service and suggests problems with the organization’s corporate culture. | ” |
| ~Michael Krigsman [source] | ||
Sunday, August 23, 2009
Broken users
Special:BrokenRedirects is one of MediaWiki's most interesting - and, ironically enough, probably one of its most broken - special pages. It lists "broken" redirects - i.e. if the target doesn't exist but a page redirects there, the page is considered to be a broken redirect. What's interesting is that it considers interwiki redirects also "broken" in cases where interwiki redirecting isn't enabled.
But interwiki redirects are not broken redirects. The software has no (easy) way of checking - or if it does, it's not used - whether the page on the target wiki exists or not, so it just assumes that it's a broken redirect. This is probably why people use silly "soft redirect" templates.
Soft redirects are - at least in my opinion - pointless. Interwiki redirects are not broken redirects. If you, as an editor, cannot tell the difference between a redirect to a nonexistent page and a redirect to another wiki, then the only one who is broken is you. Not the software and most certainly not the redirect.
So why do I even care? Because:
Seriously, just because you don't understand it doesn't mean that it's broken.
But interwiki redirects are not broken redirects. The software has no (easy) way of checking - or if it does, it's not used - whether the page on the target wiki exists or not, so it just assumes that it's a broken redirect. This is probably why people use silly "soft redirect" templates.
Soft redirects are - at least in my opinion - pointless. Interwiki redirects are not broken redirects. If you, as an editor, cannot tell the difference between a redirect to a nonexistent page and a redirect to another wiki, then the only one who is broken is you. Not the software and most certainly not the redirect.
So why do I even care? Because:
- soft redirects are pointless
- I used to use interwiki redirects *a lot* during my time at Wikia and I absolutely hate getting notifications about new messages on some random wiki I haven't edited more than once
Seriously, just because you don't understand it doesn't mean that it's broken.
Saturday, August 15, 2009
The unanswered questions
Some time ago Wikia relaunched answers.wikia, their questions & answers site. It looked (and still looks) quite nice, so I was wondering how they did it. I looked into their SVN and found something related to the project. A skin, some extensions, some maintenance scripts...but one crucial thing was missing: a class called "Answers". The skin used functions provided by this missing class, which meant that the skin wouldn't work properly without the class.
What should I do? I decided to ask Wikia about the issue on their Q & A site. That's what it's for, right? The original answer to my question was quite vague. So I decided to reword my question a bit. This time I got a better answer: I was told to contact Wikia if I wanted to develop the source code (ah, Special:Contact, how much I love thee!).
Being the nice person I am, I sent in a polite request regarding the matter. I soon got a reply from a staff member who wrote that they'll be making sure that this report ends up to the right people. That was on May 21, 2009. I waited for over a month for something to happen regarding the matter, but nothng happened, so I decided to pay a visit to their IRC channel, #wikia. I was told that the IRC channel is not the place to get support (wtf?) and that the ticket -- my request -- has been forwarded to another person. The person I talked to refused to even tell who this "another person" in question is!
On August 9, 2009 I sent in another request through Special:Contact. The request was short and sweet: "rt#15912 needs some love." The ticket in question, rt#15912, is the one I sent back in May. This time I got a reply from a different staff member and they told me who this mysterious "another person" in question is. I'm supposed to discuss with this person about the source code of answers.wikia project.
But...why should I, really? There's nothing to discuss about, really. If Wikia is truly an open source project, then they should get a developer to commit those missing files. Typing "svn commit -m"adding missing files" file1.php file2.php fileN.php" in command line is not rocket science. Or then I'm a rocket scientist, as are my co-developers.
An anonymous user of answers.wikia (who, for the curious minds, isn't me) speculated that speculated that the delay in publishing the source code is intentional, in order to prevent competitors. I bet that if someone wanted to set up a competiting site, they'd just buy AnswerScript or something similar instead of using MediaWiki extensions and patches.
People should stop thinking open source as a threat and start thinking it as an opportunity.
What should I do? I decided to ask Wikia about the issue on their Q & A site. That's what it's for, right? The original answer to my question was quite vague. So I decided to reword my question a bit. This time I got a better answer: I was told to contact Wikia if I wanted to develop the source code (ah, Special:Contact, how much I love thee!).
Being the nice person I am, I sent in a polite request regarding the matter. I soon got a reply from a staff member who wrote that they'll be making sure that this report ends up to the right people. That was on May 21, 2009. I waited for over a month for something to happen regarding the matter, but nothng happened, so I decided to pay a visit to their IRC channel, #wikia. I was told that the IRC channel is not the place to get support (wtf?) and that the ticket -- my request -- has been forwarded to another person. The person I talked to refused to even tell who this "another person" in question is!
On August 9, 2009 I sent in another request through Special:Contact. The request was short and sweet: "rt#15912 needs some love." The ticket in question, rt#15912, is the one I sent back in May. This time I got a reply from a different staff member and they told me who this mysterious "another person" in question is. I'm supposed to discuss with this person about the source code of answers.wikia project.
But...why should I, really? There's nothing to discuss about, really. If Wikia is truly an open source project, then they should get a developer to commit those missing files. Typing "svn commit -m"adding missing files" file1.php file2.php fileN.php" in command line is not rocket science. Or then I'm a rocket scientist, as are my co-developers.
An anonymous user of answers.wikia (who, for the curious minds, isn't me) speculated that speculated that the delay in publishing the source code is intentional, in order to prevent competitors. I bet that if someone wanted to set up a competiting site, they'd just buy AnswerScript or something similar instead of using MediaWiki extensions and patches.
People should stop thinking open source as a threat and start thinking it as an opportunity.
Sunday, September 7, 2008
The wonders of PHP programming
I decided to update my working copy of regexBlock extension and finish up some work I started doing a long time ago - integrating changes from Wikia's SVN.
Everything looked nice until the update finished. I've got not only one but two files in conflicted state. I fix them and svn up again. Now I've got a clean-ish working copy and I can retry applying the Wikia modifications to my local copy.
One of the major annoyances of Wikia codebase is EasyTemplate class. The class supposedly allows "for easy mixing [of] HTML/JavaScript/CSS/PHP code". If you've ever written code for MediaWiki or taken a look at MediaWiki's source code, you're aware of public function addHTML in OutputPage.php. It does exactly what Wikia's EasyTemplate does, and even a bit easier IMO.
So the first thing I had to do to get the new regexBlock code working was to kill the EasyTemplate dependency. Thankfully that's about the easiest task there can be. Just replace the code referring to EasyTemplate with $wgOut->addHTML( 'code goes here' ); and that's almost about it (not quite, but let's not get into too technical details). Now I've got a working version of the extension in front of me, yay! Time to test it, so I'll add the extension into the LocalSettings.php of my local testing wiki, add the required tables to the database and go to the wiki to see any and all possible issues.
Okay, the special page loads, although the interface looked like as if there was at least one unclosed <div> tag. And then there was something other noteworthy too: one PHP notice (E_NOTICE) and one PHP warning (E_WARNING). The notice was about an "invalid argument supplied to foreach() on line..." and the warning was about an error within a function that used PHP's array_combine function. The warning related to array_combine function was actually very easy to fix, although I could've sworn that the first, obvious and correct fix didn't work the first time I tried it. After a while of trying, the error went away. That was the easy part of the upgrade...
What was remaining was the notice about an invalid argument to some foreach loop. It sounds relatively easy now, doesn't it? It certainly wasn't such. The current code (which does not raise any notices or errors) looks like this:
But when I had moved the code to the main .php file from the template file, I had pretty much copy-pasted parts of the code and it looked like this:
I do understand the people that hate PHP a bit better now. After I had fixed a couple errors like this, the interface worked relatively nicely.
Of course, I had to fix a couple message names - internationalization (i18n) support was added for regexBlock ages ago, but Wikia had added i18n on their own, which led to a new issue: a message containing some string, say, "permanent block" was called 'regexblock_permament_block' (sic) in Wikia's version and 'regexblock-view-block-infinite' in the official version.
Well, this was relatively easy task to be honest. After all, I only had to compare the two i18n files against each other and alter the message names in SpecialRegexBlock.php.
So, now what? Now I had a working, improved version of regexBlock extension that is error-free. Or that's what I thought myself. I tested the actual blocking mechanism and whoops:
No wonder that there are comments like "Fuck you, PHP. Fuck you in the ear!" around the MediaWiki codebase.
So, it's back to the drawing board for me, so to say. Maybe I'll have this extension upgrade finished before Christmas 2008, who knows.
Everything looked nice until the update finished. I've got not only one but two files in conflicted state. I fix them and svn up again. Now I've got a clean-ish working copy and I can retry applying the Wikia modifications to my local copy.
One of the major annoyances of Wikia codebase is EasyTemplate class. The class supposedly allows "for easy mixing [of] HTML/JavaScript/CSS/PHP code". If you've ever written code for MediaWiki or taken a look at MediaWiki's source code, you're aware of public function addHTML in OutputPage.php. It does exactly what Wikia's EasyTemplate does, and even a bit easier IMO.
So the first thing I had to do to get the new regexBlock code working was to kill the EasyTemplate dependency. Thankfully that's about the easiest task there can be. Just replace the code referring to EasyTemplate with $wgOut->addHTML( 'code goes here' ); and that's almost about it (not quite, but let's not get into too technical details). Now I've got a working version of the extension in front of me, yay! Time to test it, so I'll add the extension into the LocalSettings.php of my local testing wiki, add the required tables to the database and go to the wiki to see any and all possible issues.
Okay, the special page loads, although the interface looked like as if there was at least one unclosed <div> tag. And then there was something other noteworthy too: one PHP notice (E_NOTICE) and one PHP warning (E_WARNING). The notice was about an "invalid argument supplied to foreach() on line..." and the warning was about an error within a function that used PHP's array_combine function. The warning related to array_combine function was actually very easy to fix, although I could've sworn that the first, obvious and correct fix didn't work the first time I tried it. After a while of trying, the error went away. That was the easy part of the upgrade...
What was remaining was the notice about an invalid argument to some foreach loop. It sounds relatively easy now, doesn't it? It certainly wasn't such. The current code (which does not raise any notices or errors) looks like this:
$selected = htmlspecialchars( ($k == $this->mRegexBlockedExpire) ) ? 'selected="selected"' : '';
foreach( $expiries as $k => $v ) {
$wgOut->addHTML('<option value="'.$selected.'">'.htmlspecialchars($v).'</option>');
}
But when I had moved the code to the main .php file from the template file, I had pretty much copy-pasted parts of the code and it looked like this:
foreach( $expiries as $k => $v ) {
$wgOut->addHTML('<option value="'.htmlspecialchars( ($k == $this->mRegexBlockedExpire) ) ? 'selected="selected"' : ''.'">'.htmlspecialchars($v).';</option>');
}
I do understand the people that hate PHP a bit better now. After I had fixed a couple errors like this, the interface worked relatively nicely.
Of course, I had to fix a couple message names - internationalization (i18n) support was added for regexBlock ages ago, but Wikia had added i18n on their own, which led to a new issue: a message containing some string, say, "permanent block" was called 'regexblock_permament_block' (sic) in Wikia's version and 'regexblock-view-block-infinite' in the official version.
Well, this was relatively easy task to be honest. After all, I only had to compare the two i18n files against each other and alter the message names in SpecialRegexBlock.php.
So, now what? Now I had a working, improved version of regexBlock extension that is error-free. Or that's what I thought myself. I tested the actual blocking mechanism and whoops:
Expiry time invalid.
No wonder that there are comments like "Fuck you, PHP. Fuck you in the ear!" around the MediaWiki codebase.
So, it's back to the drawing board for me, so to say. Maybe I'll have this extension upgrade finished before Christmas 2008, who knows.
Subscribe to:
Posts (Atom)