Resolution: Won't Finish
Currently, community developers who distribute their own Snowglobe builds, whether derived from unaltered sources or modified ones, have to ensure themselves manually that those are actually legally distributable. This is unfortunate because it is error prone and the developer might not even know about all the necessary steps to take. So even with best intentions they are quite likely to step over some legal lines.
I therefor suggest to introduce a new CMake variable, that'd facilitate building distributable packages.
Suggested Variable Name
BINDIST (for "bin ary dist ributable")
FALSE (would imply the current behaviour)
Pass -DBINDIST:BOOL=TRUE to develop.py or cmake to override the default value, or set it interactively with ccmake.
Effects of setting BINDIST to TRUE
$CMAKE_BINARY_DIR/newview/packaged/ and the bundle produced thereof would only contain files that can be legally distributed by everyone, without getting into conflict with copyright, trademark or patent law. This might imply leaving out/removing
- restricted fonts
- certain 3rd party libraries (KDU and FMOD come to mind)
The license files and copyright notices required to distribute the contained files would be included. (Just as they are now already, I guess.)
Additionally, the bundle would contain documentation for the end-user for how to make it feature complete (e.g. by copying the files that are only distributable by Linden Lab from an existing install of an official LL download)
As Good As Possible
Where distributable alternatives for left out stuff exists, those would be included, even when they are of lower quality. Otherwise the bundle should be as close to the one produced with the variable set to FALSE (or to the ones downloadable from LL, for that matter) as possible.
- The legal distributability of the thus produced package would only be "to the best of the community's knowledge"
- There would be no guaranty, whether explicit or implied, that the package is legally distributable
- Developers who modify the source, whether directly themselves or by applying others' patches, would still themselves be responsible to provide the source for those modification for GPL compliance
- Developers who introduce additional dependencies that they ship with their build would still be responsible to assure the distributability of those and license compatibility to the rest of the package, where necessary
- Developers who change the license(s) would still be responsible themselves to ensure their bundle is distributable under such changed licencing
- e.g. going from GPL with FLOSS exception to only GPL might require removing Vivox/SLVoice files
While this new variable might make life easier for packagers at the diverse linux distributions and for 3rd party viewer developers, I'm mainly thinking about Snowglobe's own community developers.
Reasons for distributing own builds of unmodified source:
- Provide native builds for OS/platforms/architectures, for which there is no official download
- Linux 64bit
- Builds with customized/different compiler flags (optimization level etc.)
- provide up-to-date builds when LL's build servers fail for some reason or are out of service
- provide builds of branches which aren't built automatically (will become more relevant with hg)
Reasons for distributing own builds of modified source:
- Let people who can't build themselves test the modification before it's being committed