Unofficial patch

An unofficial patch is a patch for a piece of software, created by a third party such as a user community without the involvement of the original developer. Similar to an ordinary patch, it alleviates bugs or shortcomings. Unofficial patches do not usually change the intended usage of the software, in contrast to other third-party software adaptions such as mods or cracks.

Motivation

A common motivation for the creation of unofficial patches is missing technical support by the original software developer or provider. Reasons may include:

  • the software product reached its defined end-of-life[1] and/or was superseded by a successor product (planned obsolescence)[2]
  • the software was originally designed to operate in a substantially different environment and may require improvement/optimization (porting)
  • the developer has gone out of business and is not available anymore[3]
  • support is not economically viable (e.g. localization for small markets)
  • a fast solution for a time critical problem (e.g. security holes) when an official one takes too long[4][5][6]
  • the official developer is unable to cope with the problems[7]

Types

Unofficial patches are also sometimes called fan patches or community patches, and are typically intended to repair unresolved bugs and provide technical compatibility fixes, e.g. for newer operating systems, increased display resolutions[8][9] or new display formats.

While unofficial patches are most common for the PC platform, they can also be found for console games e.g. in context of the emulation community.[10]

Translations

Unofficial patches are not limited to technical fixes; fan translations of software, especially games, are often created if the software has not been released locally.[11] Fan translations are most common for Japanese role-playing games which are often not localized for Western markets.[12][13]

Another variant of unofficial patches are slipstream like patches which combine official patches together, when individual patches are only available online or as small incremental updates.

Methods

The most common case is that the source code and the original development tools are not available for the software. Therefore, the faulty software's binary must be analyzed at run time by reverse engineering and debugging. If the problem is found, a fix to the program must be applied. Sometimes only small changes in configuration files or the registry are required, sometimes binary hacks on the executable itself are required to fix bugs. If a software development kit (e.g. for modding) is available, fixes to the content can be easily produced, otherwise the community would need to create their own tools. These found fixes are typically packed to user deployable patches (e.g. with NSIS, Innosetup).

If the source code is available, support can by provided most effectively. Sometimes the source code is released intentionally,[14][15][16] sometimes by leaking[17][18][19] or mistake,[20] such as what happened with the game engine of the Thief series.[21][22] Sometimes fans even completely reverse-engineer source code from the original program binary.[23] With the source code available even the support of completely different but recent platforms with source ports becomes possible.

Law

While no court cases have directly addressed the legal ramifications of unofficial patches, similar cases have been tried on related issues. The case of Galoob v. Nintendo found that it was not copyright infringement by a user to apply an unauthorized patch to a system (while the scope was very specific to the Game Genie). On the other hand, the case Micro Star v. FormGen Inc. found that user-generated maps were derivative works of the original game. In Sega v. Accolade, the 9th Circuit held that making copies in the course of reverse engineering is a fair use, when it is the only way to get access to the "ideas and functional elements" in the copyrighted code, and when "there is a legitimate reason for seeking such access". According to Copyright law of the United States 17 U.S. Code § 117, the owner of a copy of a program can modify it as necessary for "Maintenance or Repair",[24] without permission from the copyright holder; an argumentation also raised by Daniel J. Bernstein professor at the University of Illinois at Chicago.[25]

Similar user rights are given also according to European copyright laws. The question of whether unauthorized changes of lawfully obtained copyright-protected software qualify as fair use is an unsettled area of law.[26] An article of Helbraun law firm remarks, in the context of fan translations, that while redistributing complete games with adaptions most likely does not fall under fair use, distributing the modifications as a patch might be legally permissible; however, that conclusion has not been tested in court.[27]

Reception

Reception of unofficial patches is mixed, but by large, copyright holders are ambivalent. When the software is not considered commercially viable unofficial patches are ignored by the copyright holder as it is not seen as a source of lost revenue.[11][28]There have been seldom cases of cease and desist letters to unofficial patch and fan translation projects.[29][30]

Sometimes the copyright holder actively support the patching and fixing efforts of a software community,[31] sometimes even by releasing the source code under a software license which allows the software community the continued software support by themselves.[16][14][15][32][33][34] Examples for such software are in the List of commercial video games with later released source code.

The free and open source software movement was founded in the 1980s to solve the underlying problem of unofficial patches, the limited possibility for user self-support in binary only distributed software due to missing source code. Free and open source software demands from distributed software the availability of source code, which prevents the technical problems and legal uncertainties of binary only user patching of proprietary software.

Examples in video games

Computer gameType
AnachronoxBug fix patch[35]
Age of Empires: The Rise of RomeBug fixes, balance fixes, stability fixes, UI and sound improvements, resolution fixes including support for more higher definition resolutions[36]
Arcanum: Of Steamworks and Magick ObscuraBug fix patch,[37] fan translation
Battlezone IIBug fix patch[38][39][40]
Civilization IVBug fixes and extensions,[41] (with SDK source code[42][43] and accessible XML configuration and Python files)[44]
Civilization VBug fixes and extensions (based on source code)[45][46][47]
Chrono TriggerFan translation, bug fix patch[48]
Command & ConquerBug fix patch, resolution fixes, added support for language packs[8][49][50]
Dark Souls IIBug fixes[51]
Deadly Premonition: The Director's CutResolution fix[9]
Ecco the DolphinBug fixes, ports for newer OSes[52][53]
The Elder Scrolls II: DaggerfallBug fix patch,[54] fan translation
The Elder Scrolls V: SkyrimBug fix patch,[55][56] translation fixes[57]
Empire Earth 2Bug fixes, unhandled exception crash fixes, Windows 8 / 10 / 11 support, more screen resolutions (including 4k and the custom screen resolution generator), DirectX 9 support, G-Sync / FreeSync and high monitor refresh rate fixes, unlimited camera zoom settings, changed low-quality sounds, new options in game (e.g. more population, cycle time of day, disable crowns system and leaders), integrated language changer, integrated private multiplayer server and many more new features (fully customizable), frequently updated.[58]
E.T. the Extra-TerrestrialBug fixes[59][60]
Fallout 2Bug fixes,[61] resolution fixes
Fallout: New VegasBug fixes,[62][63] stability and performance fixes (especially for modern systems)[64]
Fallout 4Bug fixes[65][66][67]
FreelancerBug fix patch[68]
Grand Theft Auto: San AndreasEngine, graphics and quality-of-life fixes[69]
Gothic 3Bug fix patch[7][33][70]
Infinity Engine (Baldur's Gate series, Icewind Dale etc.)Bug fix patch, resolution fixes[71]
IL-2 Sturmovik: Cliffs of DoverFix mod based on source code (which later became an official release as "Blitz Edition")[72]
Jagged Alliance 2 (now JA2-Stracciatella)Bug fix patch, resolution fixes, ports[73][74][75][76][77][78]
Jazz Jackrabbit 2Bug fixes, stability fixes, new features for client side and server side[79]
Legacy of Kain seriesBug fix patch[80][81][82]
LucasArts adventures (Monkey Island, Indiana Jones, etc.)Fan translation[83]
Master of MagicFan patch[84][85][86]
Master of Orion 3Fan translation,[87] bug fix
MinecraftFan fixes implemented to latest patches[88][89][90]
MVP Baseball 2005Fixes, support continuation[91][92][93]
Nier: AutomataResolution fixes, performance fix[94]
Nuclear ThroneVarious bug-fixes for co-op mode, as well as addition of online co-op[95][96]
ParadroidBug fixes, speed fixes[97]
RollcageBug fix patch[98]
Silent Hill 2'Enhanced Edition' rehaul, including bug fixes, enhanced and remade graphic assets, full widescreen support, HD cutscenes, and numerous modern improvements[99]
Silent Hunter II / Destroyer CommandBug fix patch (Ubisoft endorsed with source code)[16][100][101][102]
Star OceanFan translation[12]
Star Wars: Knights of the Old Republic II – The Sith LordsBug fixes,[103][104] restored content,[105] widescreen support[106]
Supreme CommanderBug fixes, multiplayer client and server replacement (Server emulator)[107][108][109][110]
Dark Engine (Thief 1, Thief 2, System Shock 2)Bug fix patch[21][22][111]
Titan QuestBug fix patch[112][113]
Ultima seriesBug fix patch,[114] fan translation
Ultima 4Bug fix patch, remaster[115][116]
Vampire: The Masquerade – BloodlinesBug fix patch, restored content, widescreen and modern OS support[117][118][119]
XenonautsBug fix patch and support continuation[120][121]

Examples in general software

SoftwareType
3dfx driversDriver fixes, continued support[122][123]
Adobe AcrobatFast security fix[124]
Socket 7 boards' Award BIOS32GB+ HDD support, AMD K6-2/3+ support[125][126][127]
iOS 4.3.3Fast security fix[128]
JavaFast security fix[129]
Windows 7, Windows 8Unlocking of hardware support[130]
Windows 98Slipstream patch, Bug fix patch,[1][131] support for harddrives > 137GB,[132] support for 2k API[133][134][135]
Windows XPUpdate pack[136][137]
Internet ExplorerFast security fix[138]
Nvidia nForce Chipset Device driverSupport for older Chipsets on newer Windows OSs[139][140][141]
Palm PreFunctionality extension[142]
Windows Metafile formatFast security fix[4][5][6]
Windows URI problemFast security fix[143]
Mac OS X 10.3Daylight saving time patch[144]

See also

References