summaryrefslogtreecommitdiff
path: root/CONTRIBUTING.md
diff options
context:
space:
mode:
authorMartijn van Beurden <mvanb1@gmail.com>2022-09-05 19:11:31 +0200
committerGitHub <noreply@github.com>2022-09-05 19:11:31 +0200
commitdd8a264c566292de4d7da8f43688a169ffb431a1 (patch)
treec54ea6e27d5367c42836d3b7603376bbc944a4a1 /CONTRIBUTING.md
parent5e67c6278eb310e51da23c64862ef83dca8af01b (diff)
downloadflac-dd8a264c566292de4d7da8f43688a169ffb431a1.tar.gz
Restructure README, API and HTML documentation
Tool documentation has moved to man directory, other dev docs to README.md and CONTRIBUTING.md. User documentation is already on the website and doesn't really belong in the source code. Also, fix CMake so that it uses Doxyfile.in instead of using defaults.
Diffstat (limited to 'CONTRIBUTING.md')
-rw-r--r--CONTRIBUTING.md74
1 files changed, 74 insertions, 0 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..4c6ae799
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,74 @@
+Thanks for considering contributing to the FLAC project!
+
+Contributing to FLAC is possible in many ways. Among them are
+
+- Reporting bugs or other issues at https://github.com/xiph/flac/issues
+- Submitting patches at https://github.com/xiph/flac/pulls
+- Testing FLAC playing devices and software at
+ https://wiki.hydrogenaud.io/index.php?title=FLAC_decoder_testbench
+
+General communication not specific to issues is generally done through
+the FLAC mailing lists:
+
+- For user questions and discussions:
+ https://lists.xiph.org/mailman/listinfo/flac
+- For developer questions and discussions:
+ https://lists.xiph.org/mailman/listinfo/flac-dev
+
+## Goals
+
+Since FLAC is an open-source project, it's important to have a set of
+goals that everyone works to. They may change slightly from time to time
+but they're a good guideline. Changes should be in line with the goals
+and should not attempt to embrace any of the anti-goals.
+
+**Goals**
+
+- FLAC should be and stay an open format with an open-source reference
+ implementation.
+- FLAC should be lossless. This seems obvious but lossy compression
+ seems to creep into every audio codec. This goal also means that flac
+ should stay archival quality and be truly lossless for all input.
+ Testing of releases should be thorough.
+- FLAC should yield respectable compression, on par or better than other
+ lossless codecs.
+- FLAC should allow at least realtime decoding on even modest hardware.
+- FLAC should support fast sample-accurate seeking.
+- FLAC should allow gapless playback of consecutive streams. This follows from the lossless goal.
+- The FLAC project owes a lot to the many people who have advanced the
+ audio compression field so freely, and aims also to contribute through
+ the open-source development of new ideas.
+
+**Anti-goals**
+
+- Lossy compression. There are already many suitable lossy formats (Ogg
+ Vorbis, MP3, etc.).
+- Copy prevention, DRM, etc. There is no intention to add any copy
+ prevention methods. Of course, we can't stop someone from encrypting a
+ FLAC stream in another container (e.g. the way Apple encrypts AAC in
+ MP4 with FairPlay), that is the choice of the user.
+
+
+## Contributing patches
+
+Contributions to FLAC should be licensed with the same license as the
+part of the FLAC project the contribution belongs to. These are
+
+- libFLAC and libFLAC++ are licensed under Xiph.org's
+ BSD-like license (see COPYING.Xiph), so contributions to these
+ libraries should also be licensed under this license, otherwise they
+ cannot be accepted
+- the flac and metaflac command line programs are licensed under GPLv2,
+ see COPYING.GPL
+- the helper libraries for flac and metaflac (which are in src/share)
+ are licensed under varying licenses, see the license preamble for each
+ file to see how they are licensed
+
+Patches can be contributed through GitHub as a Pull Request.
+Alternatively you can supply patches through the mailing list.
+
+## Code style
+
+FLAC does have its own peculiar coding style that does not seem to fit
+general categories. You can use `git clang-format` to have your patch
+auto-formatted similar to the rest of the code.