遵循以下最佳实践的项目将能够自愿的自我认证,并显示他们已经实现了核心基础设施计划(OpenSSF)徽章。 显示详细资料
[](https://www.bestpractices.dev/projects/2726)
<a href="https://www.bestpractices.dev/projects/2726"><img src="https://www.bestpractices.dev/projects/2726/badge"></a>
Orekit is a low level library written in Java, providing an accurate and efficient core layer for space flight dynamics applications.
https://www.orekit.org/site-orekit-development/guidelines.html
It is written in the governance of the project that the acceptance of contributions is subject to the prior signature by the contributor of an ICLA (Individual Contributor License Agreement) and a CCLA (Corporate Contributor License Agreement): https://www.orekit.org/doc/orekit_governance_v4.pdf
This is indicated in the governance of the project. https://www.orekit.org/doc/orekit_governance_v4.pdf
A code of conduct is desirable for any project, but the Orekit project has not yet encountered any inappropriate behavior or remarks that has made it feel necessary to establish such a code.
Several people have the ability (access and skills) to administer the collaborative development tools we use. The cryptographic keys used to sign the archives are not personal keys, but project-specific keys that several administrators can use. Releases can be done by several people (and it is not always the same person who does the release). The releasing process is fully documented: https://gitlab.orekit.org/orekit/orekit/-/blob/develop/src/site/markdown/release-guide.md
https://gitlab.orekit.org/orekit/orekit/-/milestones
https://www.orekit.org/overview.html https://www.orekit.org/site-orekit-development/index.html
https://www.orekit.org/doc-tutorials.html
The documentation is included in the source code repository, maintained along with the code (providing up-to-date feature documentation is a project requirement) and automatically built and released with the code. https://www.orekit.org/doc-maven.html https://www.orekit.org/site-orekit-development/index.html
https://www.orekit.org/
This problem is not taken into account by the team, which has limited human resources to develop a software implementing the state of the art in its field and which addresses a niche market (space dynamics).
https://www.orekit.org/site-orekit-development/index.html Orekit is localized in several languages: Danish, English, French, Galician, German, Greek, Italian, Norwegian, Romanian and Spanish.
The project relies on a static web site and a few collaborative development tools (Gitlab, SonarQube, Nexus, Discourse) that implement best practices in this domain.
When critical issues occur, the project releases patches for several versions: https://www.orekit.org/news/2017/11/06/orekit-security-fix.html But less severe bugs are only fixed on the version under development and on the last stable version released: https://www.orekit.org/news/2021/06/17/orekit-10.3.1-released.html
https://gitlab.orekit.org/orekit/orekit/-/issues
This feature is provided by Gitlab: https://gitlab.orekit.org/orekit/orekit/-/issues
Vulnerabilities (i.e. security issues) are very rare (only 2 have been identified since 2008) and Gitlab warns developers that the reported issue is confidential.
https://www.orekit.org/site-orekit-development/guidelines.html https://gitlab.orekit.org/orekit/orekit/-/blob/develop/checkstyle.xml The Orekit project is one of the reference projects used by CheckStyle developers to verify the impact of new rules and developments. The CI pipeline verifies the application of these coding rules.
This is documented in the contributing guide (how to configure the Eclipse IDE to take into account the CheckStyle rules): https://www.orekit.org/site-orekit-development/contributing.html
The project provides a Java library, which is not a native binary, but contains a bytecode.
This feature is provided by Java compiler.
This requirement is managed by Maven.
Orekit is a library available in the official Maven repository: https://mvnrepository.com/artifact/org.orekit/orekit and in our own package repository: https://packages.orekit.org/#browse/browse:maven-releases:org%2Forekit%2Forekit Thanks to Maven, projects using the Orekit library can download and deploy this library with their application.
Java applications does not follow the POSIX standard, but Java and Maven ensure a homogeneity of deployment between Java applications.
https://www.orekit.org/site-orekit-development/sources.html https://www.orekit.org/site-orekit-development/building.html https://www.orekit.org/site-orekit-development/guidelines.html https://www.orekit.org/site-orekit-development/contributing.html
This feature is provided by Maven and dependencies are listed in the generated documentation: https://www.orekit.org/site-orekit-development/project-info.html
The Orekit library has only one external dependency. This is the Hipparchus library, which is developed by the same people: https://www.hipparchus.org/
https://www.orekit.org/site-orekit-development/dependencies.html
The Orekit library is a low level library. It only relies on the Hipparchus library, which is developed by the same people. The Orekit library is one of the reference implementations of several standards in its field.
https://sonar.orekit.org/component_measures?id=orekit%3Aorekit&metric=tests
https://sonar.orekit.org/component_measures?id=orekit%3Aorekit&metric=coverage
https://www.orekit.org/site-orekit-development/guidelines.html "The first goal, validation, implies tests must be as extensive as possible. They should include realistic operational cases but also contingency cases. The jacoco tool must be used to monitor test coverage. A very high level of coverage is desired. We do not set up mandatory objective figures, but only guidelines here. However, a 60% line coverage would clearly not be acceptable at all and 80% would be considered deceptive."
SonarQube's qualimetric report speaks for itself: https://sonar.orekit.org/dashboard?id=orekit%3Aorekit
SHA1 and MD5 sums, and GnuPG signature are provided for each artefact: https://repo1.maven.org/maven2/org/orekit/orekit/10.3.1/ This is not internally documented as these tools are widely used for this purpose.
The reading of the data is carefully validated in the source code. For this reason and others, Orekit is one of the reference implementations of several standards in its field.
The Orekit project aims to provide a low-level computing library with a very small attack surface. However, the development team takes care of the robustness of the code and has a very high level of requirement on its quality and on the test coverage. Some tests have been specially developed to verify the numerical stability of the algorithms.
SpotBugs includes a lot of security checks
Orekit is a Java library. This language supports memory accesses and guarantees their consistency.
后退