some rules for contribution added
This commit is contained in:
81
Contributing.md
Normal file
81
Contributing.md
Normal file
@ -0,0 +1,81 @@
|
||||
# Contributing to StreamDevice
|
||||
|
||||
Contributions from the EPICS community (and others) are welcome.
|
||||
To ease the integration process, please follow the following guidelines.
|
||||
|
||||
All contributions should be done as a pull request to the git repository
|
||||
https://github.com/paulscherrerinstitute/StreamDevice. Make sure to provide
|
||||
meaningful commit messages (no essay but more than "changes").
|
||||
|
||||
For small modifications, a patch file is sufficient. Send it to me or better
|
||||
create an issue on https://github.com/paulscherrerinstitute/StreamDevice/issues
|
||||
and attach the patch file.
|
||||
|
||||
Justify your change requests. Write a short summary for your pull request
|
||||
to explain what the change is about and what it improves or which bug it
|
||||
fixes. Use the issue system on github to report bugs.
|
||||
|
||||
I reserve the right to accept or reject contributions or to request
|
||||
modifications before I accept them.
|
||||
|
||||
Of course, you may as well report bugs without providing a solution yourself.
|
||||
|
||||
## Code compatibility
|
||||
|
||||
All code must compile for any EPICS release from at least R3.14.12 up to the
|
||||
latest one. Likewise the code must be compatible with any operating system
|
||||
supported by EPICS, like Linux, Windows, MacOS, RTEMS and VxWorks.
|
||||
In particular VxWorks 5 compatibility rules out many modern C++ features.
|
||||
But there are also other platforms that for example do not support C++11, so
|
||||
don't use it.
|
||||
There should also be no compiler warning on any OS.
|
||||
|
||||
Avoid compiler dependent features like #pragmas, assumptions on byte order,
|
||||
type size (in particular the size of pointers and long int) and other
|
||||
non-portable things like the availability of certain header files. Make sure
|
||||
non-portable code parts are enclosed in proper compiler branches and provide
|
||||
working implementations for all architectures.
|
||||
|
||||
Make sure that the code in AsynDriverInterface stays compatible with old
|
||||
and new versions of asyn driver.
|
||||
|
||||
The core of StreamDevice does not depend on EPICS. This is on purpose, to be
|
||||
able to use it in other control system frameworks. Modifications should not
|
||||
add EPICS dependencies except to StreamEpics and AsynDriverInterface, or the
|
||||
new dependency must be in a separate file which can be left out of the build
|
||||
without jeopardizing the main functionality of StreamDevice.
|
||||
|
||||
The code must not depend on external libraries that may not be available on
|
||||
all systems, except if provided as a separate file which can be left out of
|
||||
the build on platforms that do not support the library.
|
||||
|
||||
## Language
|
||||
|
||||
Write in English. That includes all identifiers (variables, functions, ...),
|
||||
comments, documentation and commit messages. Check your spelling.
|
||||
|
||||
## File formats
|
||||
|
||||
All files are in Unix format (\n line terminators). Do not change them to
|
||||
any other format (e.g. Windows with \r\n terminators). Do not add new files in
|
||||
other formats.
|
||||
|
||||
The files must contain only ASCII characters. Do not use any Unicode multi-byte
|
||||
characters (including byte order marks) or any pre-Unicode code page dependent
|
||||
characters (e.g. umlaut), not even in comments. Do not use form feed, vertical
|
||||
tab, or other control characters except newline.
|
||||
|
||||
Indents are 4 spaces. Do not use tabs (except in Makefiles). Make sure your
|
||||
editor is set up accordingly.
|
||||
|
||||
Files must end in a newline and there must be no spaces at the end of lines.
|
||||
Do not add excessive amount of newlines at the end of files.
|
||||
|
||||
Do not add any editor configurations (e.g. for emacs) to the files. Also do
|
||||
not add any configuration files or directories for development environments,
|
||||
editors, etc.
|
||||
|
||||
-------
|
||||
|
||||
Dirk Zimoch <dirk.zimoch@psi.ch>, June 2021
|
||||
|
Reference in New Issue
Block a user