The OM Development Team
Active Developers
OM is currently developed at the Linac Coherent Light Source facility (LCLS) of the SLAC National Accelerator Laboratory.
However, several collaborators from different institutions all over the world contribute code, testing and support to the project.
The current core development team includes the following people:
- Valerio Mariani (corresponding developer: [email protected])
- Alexandra Tolstikova
- Thomas Grant
Contributors
Several people have, over the years, contributed to the development and testing of OM with code, bug reports, ideas, etc. Some still do, occasionally. The following list might not be exhaustive:
- Steve Aplin
- Anton Barty
- Henry Chapman
- Jason Koglin
- Manuela Kuhn
- Luca Gelisio
- Mia Lahey-Rudolph
- Thomas J. Lane
- Andrew Morgan
- Christopher O'Grady
- Kanupriya Pande
- Thomas A. White
- Chun Hong Yoon
Guidelines for Contributions
New contributors to OM are always welcome!
This section contains some guidelines about coding style, language versions, etc. Please follow these guidelines whenever possible when contributing to the development of OM.
Version Control
-
OM is developed using the Git version control system.
-
OM's versioning scheme follows the Calendar Versioning system. Specifically, OM's version number uses the following format:
YY.MM.MINOR.[MICRO]
-
OM's development takes place on GitHub, and follows the GitHub workflow.
-
Bugs, issues, ideas for improvement, etc should be reported on the issue tracker of OM's main repository
Python
-
OM is mainly developed using the Python programming language.
-
All of OM's code should run with with all actively supported versions of Python (currently 3.6 to 3.9), with the only exception of facility-related code that requires a specific version of Python to run.
-
The Google Python Style Guide should be followed for all matters related to coding style and coding conventions.
-
All docstrings should be written according to the Google Style.
-
Before code is submitted to the main repository, the following linters and formatters should be run on it:
C/C++
-
Some OM extensions and plugins can, for performance reason, be written using the C++ or C programming languages.
-
All the C++ code in OM should follow at most the C++98 ISO standard, and the code should compile on a Linux RHEL7/CentOS7 platform using the development stack that comes with a standard installation of the system.
-
Part of the C++11 standard can be used when writing extensions. However, it must be possible to compile the code using version 4.8 of the gcc compiler (This requirement and the previous one are imposed by the OS version that must be used to create official Linux Python wheels).
-
All the C code in OM should follow at most the C99 ISO standard, and the code should compile on a Linux RHEL7/CentOS7 platform using the development stack that comes with a standard installation of the system (This requirement also comes from the OS version used to create the official Linux Python wheels).
-
The Cython framework should be used to interface C/C++ code with Python.