Page MenuHomePhabricator

wikidiff2 binaries are not distributable due to PHP / GPL license incompatibilities
Open, Needs TriagePublic

Description

This is a follow-up from T196043, in which we discovered the wikidiff2 license (GPL v2 or later) is incompatible with the PHP license. This makes it impossible to redistribute. :(

We could probably get all of the Wikimedia contributors to agree to a relicense to MIT, but there is code from Geoffrey Dairiki and GNU diffutils that seems unlikely for us to be able to relicense.

On IRC Tim said, "theoretically we could replace the GPL bits with another diff engine implementing the same interface, ultimately it all comes from published computer science literature".

Event Timeline

Regarding GNU diffutils, the code that was copied is the shift_boundaries function. git blame on 2.7 of diffutils shows that it was written by David MacKenzie and Paul Eggert - we could try reaching out to both of them to see if they're interested in relicensing?

Regarding GNU diffutils, the code that was copied is the shift_boundaries function. git blame on 2.7 of diffutils shows that it was written by David MacKenzie and Paul Eggert - we could try reaching out to both of them to see if they're interested in relicensing?

Sure. I suppose it's Eggert at UCLA: http://web.cs.ucla.edu/classes/spring09/cs111/mail-eggert.html

Is the copyright with David MacKenzie himself? According to https://www.gnu.org/people/people.html#d, he worked for FSF, so he probably signed a copyright assignment, right? https://www.fsf.org/bulletin/2014/spring/copyright-assignment-at-the-fsf Better ask him first, but FSF/GNU may also be able to help.

Vvjjkkii renamed this task from wikidiff2 binaries are not distributable due to PHP / GPL license incompatibilities to 7ubaaaaaaa.Jul 1 2018, 1:06 AM
Vvjjkkii triaged this task as High priority.
Vvjjkkii updated the task description. (Show Details)
Vvjjkkii removed a subscriber: Aklapper.
CommunityTechBot renamed this task from 7ubaaaaaaa to wikidiff2 binaries are not distributable due to PHP / GPL license incompatibilities.Jul 2 2018, 2:12 AM
CommunityTechBot raised the priority of this task from High to Needs Triage.
CommunityTechBot updated the task description. (Show Details)
CommunityTechBot added a subscriber: Aklapper.

In addition to shift_boundaries, compareseq is also quite similar to the one in diffutils. But although diffutils has a diag, Dairiki's diag is quite different and is apparently his own work. He cited two other sources as inspiration (NEDKONZ Algorithm::Diff and lecture notes by David Eppstein) but neither has code that is especially similar to Dairiki's diag or its helper lcs_pos. The LCS interpretation code in diff is also apparently Dairiki's own work.

Dairiki's difflib.php carried the following copyright header:

// Copyright (C) 2000, 2001 Geoffrey T. Dairiki <dairiki@dairiki.org>
// You may copy this code freely under the conditions of the GPL.

diffutils's analyze.c carries the following copyright header:

Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc.

Note that Dairiki's code also appears in PEAR Text_Diff, with an LGPL license, and is said to be "used/adapted with his permission". So he probably already agreed to license it as LGPL.

He's active on GitHub.