xref: /aosp_15_r20/external/flac/CONTRIBUTING.md (revision 600f14f40d737144c998e2ec7a483122d3776fbc)
1Thanks for considering contributing to the FLAC project!
2
3Contributing to FLAC is possible in many ways. Among them are
4
5- Reporting bugs or other issues at https://github.com/xiph/flac/issues
6- Submitting patches at https://github.com/xiph/flac/pulls
7- Testing FLAC playing devices and software at
8  https://wiki.hydrogenaud.io/index.php?title=FLAC_decoder_testbench
9
10General communication not specific to issues is generally done through
11the FLAC mailing lists:
12
13- For user questions and discussions:
14  https://lists.xiph.org/mailman/listinfo/flac
15- For developer questions and discussions:
16  https://lists.xiph.org/mailman/listinfo/flac-dev
17
18## Goals
19
20Since FLAC is an open-source project, it's important to have a set of
21goals that everyone works to. They may change slightly from time to time
22but they're a good guideline. Changes should be in line with the goals
23and should not attempt to embrace any of the anti-goals.
24
25**Goals**
26
27- FLAC should be and stay an open format with an open-source reference
28  implementation.
29- FLAC should be lossless. This seems obvious but lossy compression
30  seems to creep into every audio codec. This goal also means that flac
31  should stay archival quality and be truly lossless for all input.
32  Testing of releases should be thorough.
33- FLAC should yield respectable compression, on par or better than other
34  lossless codecs.
35- FLAC should allow at least realtime decoding on even modest hardware.
36- FLAC should support fast sample-accurate seeking.
37- FLAC should allow gapless playback of consecutive streams. This follows from the lossless goal.
38- The FLAC project owes a lot to the many people who have advanced the
39  audio compression field so freely, and aims also to contribute through
40  the open-source development of new ideas.
41
42**Anti-goals**
43
44- Lossy compression. There are already many suitable lossy formats (Ogg
45  Vorbis, MP3, etc.).
46- Copy prevention, DRM, etc. There is no intention to add any copy
47  prevention methods. Of course, we can't stop someone from encrypting a
48  FLAC stream in another container (e.g. the way Apple encrypts AAC in
49  MP4 with FairPlay), that is the choice of the user.
50
51
52## Contributing patches
53
54Contributions to FLAC should be licensed with the same license as the
55part of the FLAC project the contribution belongs to. These are
56
57- libFLAC and libFLAC++ are licensed under Xiph.org's
58  BSD-like license (see COPYING.Xiph), so contributions to these
59  libraries should also be licensed under this license, otherwise they
60  cannot be accepted
61- the flac and metaflac command line programs are licensed under GPLv2,
62  see COPYING.GPL
63- the helper libraries for flac and metaflac (which are in src/share)
64  are licensed under varying licenses, see the license preamble for each
65  file to see how they are licensed
66
67Patches can be contributed through GitHub as a Pull Request.
68Alternatively you can supply patches through the mailing list.
69
70## Code style
71
72FLAC does have its own peculiar coding style that does not seem to fit
73general categories. You can use `git clang-format` to have your patch
74auto-formatted similar to the rest of the code.
75