遵循以下最佳实践的项目将能够自愿的自我认证,并显示他们已经实现了核心基础设施计划(OpenSSF)徽章。 显示详细资料
[](https://www.bestpractices.dev/projects/4795)
<a href="https://www.bestpractices.dev/projects/4795"><img src="https://www.bestpractices.dev/projects/4795/badge"></a>
PowSyBl (Power System Blocks) is an open source library written in Java, dedicated to electrical grid modelling, simulation and visualisation. The power system blocks may be used through python scripts for a quick shot, but also be assembled to build state of the art applications.
https://www.powsybl.org/pages/contributing/ The styleguides are more detailed here: https://github.com/powsybl/.github/blob/main/CONTRIBUTING.md#contributing-to-the-code-or-the-documentation
https://probot.github.io/apps/dco/ We use DCO and it is mandatory in our CI to pass.
https://github.com/powsybl/.github/blob/master/CONTRIBUTING.md#project-governance
https://www.lfenergy.org/community/code-of-conduct/ accessible from the web site https://www.powsybl.org/pages/contributing/
https://www.powsybl.org/pages/documentation/developer/repositories/ The responsibilities by repository are detailed in that page. Each repository has its own page, for example for powsybl-core: https://www.powsybl.org/pages/documentation/developer/repositories/powsybl-core.html
https://www.powsybl.org/pages/documentation/developer/repositories/ for each repository, the responsibilities are always shared by two people.
https://github.com/powsybl/powsybl-core/ TF = 4 (coverage = 41.00%) TF authors (Developer;Files;Percentage): Geoffroy Jamgotchian;863;28.62 Mathieu BAGUE;843;27.96 MioRtia;583;19.34 Luma;313;10.38
https://github.com/powsybl/.github/blob/master/ROADMAP.md
Powsybl is a library that provides power system blocks used by softwares but does not have an adherence to a dedicated architecture.
https://github.com/powsybl/.github/blob/main/SECURITY.md
We have a getting started: We provide some tutorials: https://www.powsybl.org/pages/documentation/developer/tutorials/
The web site documentation is updated at each release.
https://github.com/powsybl/powsybl-core
Powsybl code and documentation is in english. There is no GUI over Powsybl.
Powsybl code and documentation is in english (only).
We don't store passwords.
In our migration guides. For example, for last release: https://github.com/powsybl/powsybl-core/wiki/Migration-guide-v4.1.0
https://github.com/powsybl/powsybl-core/projects We use github projects for that.
For the moment, the vulnerabilities have been detected by Github: https://github.com/powsybl/powsybl-core/issues?q=dependabot In case of any other kind of reporting, this will be listed in our https://github.com/powsybl/.github/blob/main/SECURITY.md
https://github.com/powsybl/.github/blob/master/CONTRIBUTING.md
https://github.com/powsybl/.github/blob/master/CONTRIBUTING.md#styleguides CI : we use linters and coding style checkers.
Developers are expected to follow the project guidelines (we use standard coding styles). The coding style is checked during Maven compilation with checkstyle with SonarCloud.
The C++ libraries we develop use CMake that allows to pass additional flags to the compilers and linkers using standard CMAKE_CXX_FLAGS and CMAKE_LD_FLAGS variables.
If the build type is set to Debug during project configuration phase, additional flags are passed to the compiler to add Debug information.
We build our repositories using Maven, which handles this issue and forbids it.
We use Maven. Our releases all have a dedicated version, stored on Maven central. A release train (powsybl-dependencies) gathers a set of compatible releases that have a dedicated version. The build is totally deterministic.
https://github.com/powsybl/powsybl-distribution
The installation system is standard, the installation location is configurable if needed.
https://github.com/powsybl/powsybl-core#readme for developers to contribute.
Dependencies are listed in the pom.xml files or in the CMakeLists.txt files. https://github.com/powsybl/powsybl-core/blob/master/pom.xml https://github.com/powsybl/powsybl-iidm4cpp/blob/master/CMakeLists.txt
Github provides a bot that detects vulnerabilities and opens pull requests to fix dependency versions. We also checked for dependency updates when new Powsybl releases are published.
For Java modules, the version of external dependencies are listed at the beginning of the parent pom.xml that makes it easy to update one or several dependencies. For C++ modules, we use system dependencies that should be up-to-date, but allow the users to use a custom version by updating the dependencies home directories.
When some functions are marked deprecated, we adapt the existing code following migration guides provided by the projects. We also pay really attention when we choose to add a new dependency to the project to select active and well maintained projects. If a project is not maintained anymore or seems to be inactive, we try to find an alternative project that fulfill our needs.
Unit tests have been implemented using Junit and are automatically run during the CI. If tests failed, the merge of the pull request is blocked until they pass. The report is produced by Jacoco.
When we met a bug, we create a unit test to reproduce it (TDD).
https://sonarcloud.io/component_measures?id=com.powsybl%3Apowsybl-core&metric=coverage
When a new functionality is introduced in Powsybl, the CI ensure that the code coverage remains at least the same, and the new code is well tested. If those requirements are not filled, the PR is blocked.
https://www.powsybl.org/pages/contributing/ see continuous integration description.
Sonar gives for each pull request a feedback about smells. The reviewer is in responsible for asking contributor to fix relevant issues and accept non relevant warnings. Compilation warnings displayed in the logs during compilation are failed during the development phase
Our project is not producing software but a framework dedicated to be integrated in a whole application that is responsible for the security assessment described in this requirement.
Our modules are released on maven central that requires each files to be signed, and the public key available on a key server (pool.sks-keyservers.net).
Currently, version tag are done by TSC members. We didn't require that they add their GPG key to their GitHub account. Work in progress.
For iidm xml we use the xsd files. For CGMES files, we rely on triple store. All inputs should follow a predefined format or they are rejected (https://www.powsybl.org/pages/documentation/index.html#grid-formats).
We use Sonarcloud analysis with its security-related rules in Java. We also have a strong review process: any new commit is reviewed and approved by a known committer. Any vulnerability in dependencies will be patched as we rely on Github. In our C++ code, we can start by using compiler flags.
https://github.com/powsybl/.github/security/policy
We use SonarCloud.
We use Valgrind for the C++ analysis code, done before each release.
后退