Thomas Schmitt 2020-07-07 15:59:02 +00:00
parent bee1df385f
commit 440b8de53b
1 changed files with 52 additions and 0 deletions

52
DevGuide.md Normal file

@ -0,0 +1,52 @@
## Development guide
The programming language of libburnia is ANSI C. Its build system is autotools,
but the sources do not depend on that. The target operating systems for now
are Linux with kernels >= 2.4, FreeBSD, NetBSD, Solaris, OpenBSD. Other X/Open
compliant systems are supported for POSIX i/o but not for MMC/SCSI command
transactions, which are needed for operating optical drives directly.
Any special dependency to the operating system must be in source
files separate from the generally portable C code.
Please try to keep the current coding style in each of the source files you
want to change.
The APIs and ABIs of released library versions are strongly protected towards
the future. Substantial effort must be made in order to maintain compatibility
to the previously released version. A break of compatibility and thus
incrementing of SONAME is only the outmost last resort, if ever. This shall
ensure that applications can be linked dynamically with all libraries which
are younger than the versions which where present at compile time.
### Patches
Patches should be submitted to mailing lists
`pkg-libburnia-devel@lists.alioth.debian.org` or `bug-xorriso@gnu.org`.
When starting to work on something, please announce this in advance,
explain the problem you want to address and the idea how to solve it,
if such an idea already exists.
Expect your patch to be discussed and possibly to be modified before being
applied.
By contributing code, you accept that smaller code pieces go under copyright
of respective module copyright owners. If your code is substantial enough
to create own copyright, you will have to release it under LGPL version 2,
so that we can now derive GPLv2-or-later but are free to switch in future
to LGPLv2.
### Commit policy
A general rule of a thumb is to make more small patches or commits instead
of one huge commit.
Please be descriptive in your commit messages.
### Releases
Releases are normally performed by Thomas Schmitt.
Release preparation includes a feature freeze and careful testing.