Free Software
Fuji is free software, and so is the library it plays video through, and the two facts are one story. The formats a collection holds were products, each with a company behind it that moved on, and the decoders that still open them were written and kept by volunteers under a license that let them be kept. Fuji is under that license too, the GNU General Public License, version 3, so that what happened to the formats can happen to Fuji: the collection outlives the company, and the software that opens it outlives its author.
Free as in speech
Free software is software anyone may run, read, change and pass on. The Free Software Foundation's definition counts four freedoms, to run the program for any purpose, to study how it works and change it, to redistribute copies, and to distribute changed copies, and it says the word is to be read "as in 'free speech,' not as in 'free beer.'" The price may be nothing, and usually is, but the point is what you are allowed to do with it.
The idea has a founder and a date. Richard Stallman, a programmer at MIT's AI Lab, was refused the source code to a Xerox laser printer's software in 1980, having modified the lab's older printer himself, and concluded that people must be able to change the software they use. He announced the GNU Project in September 1983, an operating system anyone could share, and founded the Free Software Foundation in October 1985 to carry it. The GNU General Public License followed in February 1989, version 2 in June 1991 and version 3 in June 2007, and it was the first license of its kind for general use. Its mechanism is called copyleft: it uses copyright to pass the four freedoms on to everyone who receives the program or anything built from it, so a free program cannot be taken private by whoever gets it next. The Linux kernel, announced by Linus Torvalds in October 1991 and under the GPL from February 1992, is the thing most people have heard of that this produced. The Lesser GPL, published in 1991 for libraries and renamed in 1999, keeps the freedoms for the library itself while letting any program link it, free or not, and that distinction matters below.
"Open source" is the same software under a name a business could say. The Open Source Initiative was founded in February 1998 by Bruce Perens and Eric Raymond to campaign under it, and the two words now cover the whole field, from the kernel in a phone to the player in this file manager. The older name says what the field is for.
Creative Commons
Writing, pictures and film got their version in 2001. Lawrence Lessig, with Hal Abelson and Eric Eldred, founded Creative Commons in January 2001 to widen the pool of works people could legally reuse and share, and the first licenses came out in December 2002; version 4.0, the current one, in November 2013. A Creative Commons license is to a photograph or an essay what a free software license is to a program: a grant, written once, that says anyone may copy this, with the author's name kept on it. Big Buck Bunny, the Blender Institute's ten-minute film of 2008, was made to prove the idea for film and released under Creative Commons Attribution, and it is the film any video project may copy and play without asking anyone.
The formats that were products
The video on a drive was made by products, and every product had a company and a year. QuickTime arrived on December 2, 1991, and Cinepak joined it in 1992, written by Peter Barrett at SuperMac Technologies to play 320 by 240 video at the speed of a single-speed CD-ROM drive; it reached Windows in 1993 and the Sega CD, the Saturn, the 3DO and the Jaguar CD besides, so it is in the CD-ROM titles and the console cutscenes of that decade. Video for Windows shipped in November 1992 with Microsoft Video 1, a codec Microsoft licensed from Media Vision, and with Indeo, from Intel Architecture Labs, which Intel sold to Ligos in 2000. Sorenson Video came with QuickTime 3 on March 30, 1998, and its maker filed for bankruptcy in October 2018. RealVideo, from RealNetworks in February 1997, was made for streaming over a modem, and its files are the ones named .rm. Windows Media Video began in 1999 as Microsoft's answer to it. DivX began in 1998 when Jérôme Rota pulled a Microsoft MPEG-4 codec out of Windows Media Tools because the newer Windows Media Player would not play his own portfolio, and the company built on it was sold in 2011, 2014, 2015 and 2018. Flash Video, from Macromedia in 2003, carried Sorenson Spark, then VP6, then H.264, and was what YouTube played; Adobe stopped supporting Flash Player on December 31, 2020.
Then the platforms that made them let them go. On the Mac, Apple's own page says that "macOS Mojave is the final version of macOS to be compatible with legacy QuickTime software", and macOS Catalina, in October 2019, dropped the QuickTime 7 framework and every codec that lived in it. Six months ahead of it, Final Cut Pro 10.4.6 gained a step that detects media that may be incompatible with future versions of macOS after Mojave and converts it, which is Apple telling its editors to re-encode their archives while they still could; Howard Oakley's list of what was going ran to Cinepak, DivX, Flash Video, RealVideo, several Sorensons and Windows Media Video 7, 8 and 9. On Windows, Microsoft's security advisory of December 8, 2009 answered flaws in the Indeo codec by disabling it in Internet Explorer and Windows Media Player, and the list of formats Windows' media framework supports natively today has H.264, MPEG-4, Windows Media Video 9, DV and Motion JPEG on it, and not Cinepak, Indeo, Microsoft Video 1, Sorenson or RealVideo.
None of this is wrong of them. A company is a thing that moves on. But a collection does not move on, and a collector who kept a folder of CD-ROM clips from 1994 still has it, byte for byte, on a drive that opens nothing in it.
Volunteers
The people who had the files wrote the players. MPlayer began in 2000 because Árpád Gereöffy could not find a Linux player he liked after XAnim stopped in 1999, and by November of that year it had merged with a player that loaded Windows codec libraries directly, so a Linux machine could play what only Windows was meant to. VideoLAN began in 1996 as a student project at École Centrale Paris and released VLC under the GPL on February 1, 2001; by January 2025 it counted more than six billion downloads. The DivX codec itself was a week's reverse engineering by two people who wanted to play a file. What these had in common was the license: every one of them was free software, which meant that when a student graduated or a maintainer tired, the next person could pick the code up, and did.
FFmpeg
Under all of them, from December 2000, is FFmpeg. Fabrice Bellard started it that year, Michael Niedermayer led it from 2004 to 2015, and it is the library of decoders every free player reaches for, with more than a hundred codecs in it. The project's own description of its reach is a boast it can back: "It supports the most obscure ancient formats up to the cutting edge." Its table of video codecs has a row for every product above: Cinepak, Indeo 2 through 5, Microsoft Video 1, Sorenson 1 and 3, RealVideo 1 through 4, Windows Media Video 7 through 9, Sorenson Spark and VP6, and the Microsoft MPEG-4 that became DivX. Each of those rows is a decoder volunteers wrote and keep.
The license is where the story turns. FFmpeg is under the Lesser GPL, version 2.1 or later, with optional parts under the GPL, so a program that is not free may carry it, and the largest do: Chromium keeps its own copy of FFmpeg, and Google Chrome plays H.264 and AAC through it while Chromium does not. So the license is not what decides what a program plays. The decision is whether to carry the library whole, every decoder and every demuxer, or to switch on the short modern list a market wants. A free player carries it whole, because it exists for the files, and that is the choice Fuji makes.
Fuji reaches FFmpeg through mpv, a player begun in 2012 from the MPlayer line, which in June 2015 began moving most of its source from the GPL to the Lesser GPL so that other programs could embed it. Its library, libmpv, is what draws Fuji's video.
Provenance
A library that plays whatever it is handed is also the largest piece of someone else's code inside Fuji, and a collector who trusts Fuji with a drive is trusting that library to be what it says it is. So Fuji builds it rather than downloads it. One recipe, kept in the repository, names every source, each a tagged release fetched from its own project and checked against a hash written in the recipe before it is unpacked:
def fetch(name, url, sha):
sources.append({'name': name, 'url': url, 'sha256': sha})
file = src / url.rsplit('/', 1)[1]
if (src / name).is_dir(): return
say(f'== fetching {name}')
run(['curl', '-fsSL', '--retry', '3', '-o', file, url])
if sha256(file) != sha: sys.exit(f'{file} does not match the hash written in build.py')
run(['tar', '-xf', file, '-C', src])These are the sources, as the recipe names them on 2026-10-15. A tarball is checked by its SHA-256, and a project that publishes no tarball with its parts inside is cloned at a tag and checked by the commit.
| Library | Version | From | Checked against |
|---|---|---|---|
| zlib | 1.3.2 | github.com/madler/zlib | d7a0654783a4da529d1bb793b7ad9c3318020af77667bcae35f95d0e42a792f3 |
| FreeType | 2.15.0 | download-mirror.savannah.gnu.org | 93cd47eb719c325107f2d3cf087d06299e944c3b48a40b55537302304dea1dd5 |
| FriBidi | 1.0.17 | github.com/fribidi/fribidi | 6949dcde27d41cebad1fd741fcafc36d55a1020d2d872d4a6eb3914caabbada2 |
| HarfBuzz | 14.6.0 | github.com/harfbuzz/harfbuzz | d07a007327277708a2a73ae437887cdbaf282937f6d03ca5467723e9099af586 |
| libass | 0.17.5 | github.com/libass/libass | 2dca25c0e0c837ddf00b52011b3f82cac1e4ddd3ad018227806b0c2288864acc |
| Little CMS | 2.19 | github.com/mm2/Little-CMS | 49e7e134e4299733dd0eda434fa468997a28ab3d33fa397c642b03644f552216 |
| libplacebo | 7.360.1 | code.videolan.org, cloned | commit cee9b076f2c63104ccfd497fa79c39a867293ec4 |
| dav1d | 1.5.4 | downloads.videolan.org | 686616b7c69eb88d44459391ab25cac13b6647a3b288835c5784e71c1514a5c5 |
| FFmpeg | 9.0.2 | ffmpeg.org | 8c3850283eb25fa026482078a04051e0be17347b09ef81a0849bec15a96e002e |
| mpv | 0.41.0 | github.com/mpv-player/mpv | ee21092a5ee427353392360929dc64645c54479aefdb5babc5cfbb5fad626209 |
| SPIRV-Cross | vulkan-sdk-1.4.363.0 | github.com/KhronosGroup/SPIRV-Cross | f708982e88b763ef5b0394ed468fc2c3628f68cdab89f2e7a946cd628c04e721 |
| shaderc | 2026.4 | github.com/google/shaderc | f06ce5bcca94e5df7f34e115743597d0ad2e13c5fe9213c67dc8c76031241947 |
| glslang | inside shaderc | github.com/KhronosGroup/glslang, cloned | commit e1b562a8bed273a02f30b59b66a5d499793cede5 |
| SPIRV-Tools | inside shaderc | github.com/KhronosGroup/SPIRV-Tools, cloned | commit ef96ed763b43b59b33b31b362f09a02b729fa1c9 |
| SPIRV-Headers | inside shaderc | github.com/KhronosGroup/SPIRV-Headers, cloned | commit 04fd3caa1e8267e4d95c806cad901181728e1006 |
The first ten go into every platform's library. The last five are Windows' alone, where the picture is drawn through Direct3D, which takes its shaders in HLSL while mpv writes them in GLSL: shaderc compiles GLSL to SPIR-V, with the three libraries inside it at the commits its own DEPS file names, and SPIRV-Cross translates SPIR-V to HLSL. The Mac and Linux draw through OpenGL, which takes the shaders as mpv writes them.
They are built in order into one library with nothing in it from anywhere else: no nightly from a build farm, and no package manager's copy of the day, since Homebrew on the Mac, MSYS2 on Windows and Debian in the Linux containers provide the compiler and the build tools and not one byte of the result. The same recipe runs on all three, so every package of Fuji carries a library built from the same sources at the same versions, and the About section of Fuji's settings lists those parts and their versions, which are the recipe's numbers, mpv 0.41.0 on FFmpeg 9.0.2.
| Platform | Library | Decodes with | Draws with | Sound through |
|---|---|---|---|---|
| Windows | libmpv-2.dll | D3D11VA, DXVA2 and software | Direct3D 11 | WASAPI |
| Mac | libmpv.2.dylib | VideoToolbox and software | OpenGL | CoreAudio |
| Linux | libmpv.so.2 | software | OpenGL | ALSA and PulseAudio |
The build is reproducible: the recipe pins the time the linker would stamp into the file, zeroes the dates in its archives, keeps the Swift compiler from writing a per-run hash into the Mac's objects, and keeps local symbols out of the Mac's link, since Apple's linker writes those in whichever order its threads finish and hashes the file into the library's UUID before they are stripped, so the hash of the library names the recipe, the compilers and the folder it was built in, since mpv and FFmpeg each write their configure line into the binary, rather than the afternoon or the machine's load. On the Mac mini on 2026-10-15, two builds of every package gave the same libmpv.2.dylib, 25,717,744 bytes, SHA-256 622f89438d2fca1453b34b3f6234dcbea85e3d6e2165078f97e7b3df660085ed, and two relinks of mpv under full CPU load gave the same library again; on the Windows box on 2026-10-12, a build and two relinks of mpv gave the same libmpv-2.dll three times.
The recipe also writes down what it made, twice. Beside the library goes a record: the library's hash and size, the moment it was built, the hash of the recipe itself, the tools it was built with, and every source in the table with its hash. The command that stages a release copies that record into the package's sidecar, the small file beside every download on this site that carries the download's SHA-256, and the sidecars are committed to the repository, so the repository says of every release, in one tracked file, which library it carried and where each part of that library came from. And the same record goes into a ledger: four files at the root of the repository, library-mac.txt, library-win.txt, library-amd.txt and library-arm.txt, one per library Fuji ships, each appended by every compile and never otherwise edited. An entry is the library's line, with the moment, the size and the hash, then the recipe's hash, then the compilers, then one line per source with its hash and where it came from. Two entries with one hash on different days are the reproducibility shown rather than claimed. The command that stages a release refuses a package whose library the recipe as checked out did not build, and one whose library has no entry in the ledger, so no download carries a library the repository does not know.
The tools come from the machine rather than from the recipe, so the record names them: a library whose hash moved with nothing changed in the recipe is explained by the line that says what compiled it.
That is what free software looks like from the inside: a license that let the decoders be kept, a recipe that says exactly which copy of them Fuji carries, a record of which copy each release carried, and a program under the same license, so that the next person can keep it too.