Hello, wikitech.
I have applied to Google Summer of Code with the project to enable
category moving without using bots. After some correspondance with
Catrope, the following text is my project idea. Any feedback would be
welcome.
Synopsis
I will provide capability of moving categories to achieve an effect
for the end-user similar to that of moving other pages. Currently,
contributors must apply to use a bot that recreates the category page
and changes the category link on all relevant articles.
Project
The object can be divided into three parts. First, the category page
is moved, along with its history, just as renaming of articles works.
A redirect is optionally placed on the old category page, and the
category discussion is moved as well.
Second, all articles in the relevant category must have their category
links changed. There are several obstacles involved in this task:
1. Finding all alternative ways of categorizing articles. It is simple
to match the simple category links and category lists, but more
difficult to find e.g. categories included from a template. Roan
Kattouw (Catrope) suggested category redirects for this, such that all
articles categorised as [[Category:A]] would also be listed at
[[Category:B]] if the prior has been redirected to the latter.
2. Articles might be in the process of being edited as the movement is
done. This, however, can be solved in the same manner as edit
collisions are currently solved.
3. The algorithm would likely have high complexity and would thus not
scale well with very large categories.
This is likely to constitute a significant and challenging part of the project.
As the last step, the relevant entries in the categorylinks table
would need to be changed. This is accomplished by a simple SQL query.
This could be avoided if bug #13579 [1] ("Category table should use
category ID rather than category name") is fixed, which it could be as
part of this project.
The project would preferably be written as a patch to the core.
Catrope suggested setting up a separate SVN branch for the project,
such that everyone can see my progress.
Profits for MediaWiki
Developing a means of moving categories would decrease dependency on
bots, gaining in administrative time. Additionally, the solution would
be faster than any bot-relying solution could be due to, among other
things, the removed need of loading pages.
Category moving would also increase the consistency in layout on the
different article types. The only real reason for a "move" tab not to
reside on category pages is that the feature is not yet implemented.
Roadmap
Publishing this document to the MediaWiki development community
(wikitech-l) and awaiting comments on the planned procedure would be
the first step.
After the community bonding period specified by the time line, a week
should be enough to get comfortable with the relevant MediaWiki code
and implement the first section, moving the category page along with
its discussion and history. Much old code should be reusable here,
such as the Title::moveTo() method for moving pages.
Until mid of July, most of the second part of the project should be
finished. In a week from there, the last part would be completed, too.
A month is then reserved for bug-testing, tweaking and as a buffer for
unexpected obstacles. The MediaWiki community is very important in
this step for testing and feedback.
Regards
--
Tim Johansson
http://timjoh.com/