It has just been brought to my attention (well, rather: I found out) that on the German Wikipedia, if someone submits a text that constitutes a copyright violation, the sysops there immediately delete the complete page history and reinstate the most recent version before the copyvio.
This is a pretty serious issue; I'm pretty sure that this is not GFDL-legal (while, obviously, keeping the copyvio in the page history isn't either); it removes legitimate contributions from legitimate users; and less seriously, it messes up statistics.
I am therefore strongly suggesting that someone add a feature whereby a sysop can delete a single previous revision, rather than the entire history of a page.
It would probably suffice to delete just from the 'old' table; if you want to delete the most current revision, you should probably revert to an older version first anyway, thereby moving the one you want to delete to the 'old' table.
Timwi
I think that this is pretty important, too. Can you please raise the license issue gently over there? It's better to keep a copyvio around in the page history for a little while, until a developer can delete it by hand, than to do what they are doing.
Your idea for a feature is a very good one, too.
Timwi wrote:
It has just been brought to my attention (well, rather: I found out) that on the German Wikipedia, if someone submits a text that constitutes a copyright violation, the sysops there immediately delete the complete page history and reinstate the most recent version before the copyvio.
This is a pretty serious issue; I'm pretty sure that this is not GFDL-legal (while, obviously, keeping the copyvio in the page history isn't either); it removes legitimate contributions from legitimate users; and less seriously, it messes up statistics.
I am therefore strongly suggesting that someone add a feature whereby a sysop can delete a single previous revision, rather than the entire history of a page.
It would probably suffice to delete just from the 'old' table; if you want to delete the most current revision, you should probably revert to an older version first anyway, thereby moving the one you want to delete to the 'old' table.
Timwi
Wikitech-l mailing list Wikitech-l@Wikipedia.org http://mail.wikipedia.org/mailman/listinfo/wikitech-l
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Jimmy Wales wrote: | I think that this is pretty important, too. Can you please raise the | license issue gently over there? It's better to keep a copyvio around | in the page history for a little while, until a developer can delete | it by hand, than to do what they are doing. | | Your idea for a feature is a very good one, too. I hacked some code during this evening which enables deletion of single revisions. It is quick and dirty and does not provide any security (confirmation, checking if the revision still exists) but it works. Here are the diffs (hope this is correct, if not I will mail the complete files to some of the developers): includes/PageHistory.php 84,85c84,85 < $s .= $this->historyLine( < $this->mArticle->getTimestamp(), - --- | $s .= $this->historyLine( | $this->mArticle->getTimestamp(), 89c89 < ( $this->mArticle->getMinorEdit() > 0 ) - --- | ( $this->mArticle->getMinorEdit() > 0 ) 188a189,190 | // Add a link to delete only this revision of the page history | $dellink = $this->mSkin->makeKnownLink( $artname, $cur, "delold=($oid)"); 192c194 < $s .= "({$curlink}) (!OLDID!{$oid}!) $arbitrary . ."; - --- | $s .= "({$curlink}) (!OLDID!{$oid}!) ($dellink) $arbitrary . .
index.php: 88a89,91 | case "delold": | $wgArticle->$action($oid); | break;
includes/Article.php: 943a944,986 | function delold () { | global $wgUser, $wgOut, $wgMessageCache; | | $fname = "Article::DeleteOld"; | wfDebug( "$fname\n" ); | | if ( ( ! $wgUser->isSysop() ) ) { | $wgOut->sysopRequired(); | return; | } | if ( wfReadOnly() ) { | $wgOut->readOnlyPage(); | return; | } | /* The following is a suggestion to store the deleted copyvio in a seperate | table named. I am not sure if this is useful and of course we could use | the archive table for this. */ | /* | $sql = "INSERT INTO copyvio (cv_namespace,cv_title,cv_text," . | "cv_comment,cv_user,cv_user_text,cv_timestamp,cv_minor_edit," . | "cv_flags) SELECT old_namespace,old_title,old_text,old_comment," . | "old_user,old_user_text,old_timestamp,old_minor_edit,old_flags " . | "FROM old WHERE oid='{$oid}'";"; | wfQuery( $sql, DB_WRITE, $fname ); | */ | $sql = "DELETE FROM old WHERE oid='{$oid}'"; | $wgOut->addHTML( "<p>" . $sql ); | //wfQuery( $sql, DB_WRITE, $fname ); | | $wgOut->setPagetitle( wfMsg( "actioncomplete" ) ); | $wgOut->setRobotpolicy( "noindex,nofollow" ); | | $sk = $wgUser->getSkin(); | $loglink = $sk->makeKnownLink( $wgLang->getNsText( | Namespace::getWikipedia() ) . | ":" . wfMsg( "dellogpage" ), wfMsg( "deletionlog" ) ); | | $text = wfMsg( "deletedtext", $deleted, $loglink ); | | $wgOut->addHTML( "<p>" . $text ); | $wgOut->returnToMain( false ); | } |
languages/Language.php 406d405 < "Allmessages" => "All system messages", 757a757 | "del" => "del", 1170a1171 | "deletedcopyvio" => "The old version of this article has been deleted",
Timwi timwi@gmx.net writes:
I am therefore strongly suggesting that someone add a feature whereby a sysop can delete a single previous revision, rather than the entire history of a page.
You must also delete _all_ revisions derived from the copyright violation. Of course, you can preserve parts of the jounger revisions which are not derived from the questionable parts.
"KE" == Karl Eichwalder ke@gnu.franken.de writes:
TW> I am therefore strongly suggesting that someone add a feature TW> whereby a sysop can delete a single previous revision, rather TW> than the entire history of a page.
KE> You must also delete _all_ revisions derived from the KE> copyright violation. Of course, you can preserve parts of the KE> jounger revisions which are not derived from the questionable KE> parts.
It'd be interesting to treat the changes as diffs. So if you've got 4 versions:
Version 1 Version 2 Version 3 Version 4
...and Version 2 is No Good For Some Reason, you create some diffs:
Version 1 Version 2 Diff 3 from 2 Diff 4 from 3
You then apply Diff 3 from 2 as a patch to Version 1, and Diff 4 from 3 as a patch against the result of that.
It would probably result in terrible conflicts, but it's an interesting idea.
~ESP
wikitech-l@lists.wikimedia.org