This project is open source, and it is meant to provide a common framework for network dismantling. The applications are twofold: this project can be used either to dismantle networks with the state-of-the-art algorithms or as a benchmark to compare the performance of such algorithms. We welcome and encourage contributions from the community, being them new algorithms implementations or improvements. If we work together, we can make this project a great tool for the network science community.
If you want to contribute, please read this document first, the ReadMe file, and the Discussions section of the repository.
We love pull requests, but please follow the guidelines below.
-
Ensure the bug was not already reported by searching on GitHub under Issues.
-
If you're unable to find an open issue addressing the problem, open a new one. Be sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring.
-
Open a new GitHub pull request with the patch.
-
Ensure the Pull Request description clearly describes the problem and solution. Include the relevant issue number if applicable.
Changes that are cosmetic in nature and do not add anything substantial to the stability, functionality or new methods will generally not be accepted.
-
Ensure no one else is working on the same thing by searching on GitHub under Discussions and Pull Requests.
-
If you're unable to find a discussion and pull request for the feature, suggest it in the Ideas section of the Discussions before start writing code. This way you can get feedback from the community and the feature can be prioritized. Moreover, you can get some guidance on how to implement it.
-
Do not open an issue on GitHub until you have collected positive feedback about the change. GitHub issues are primarily intended for bug reports and fixes.
Start reading our code and you'll get the hang of it. We optimize for usability, readability, modularity and performance (in that order).
- We indent using four spaces (soft tabs)
- We use named parameters for all methods that accept more than two parameters.
- This is open source software meant for the community:
- Use the terminology and the notation of the Network Science field.
- Consider the people who will read your code, and make it look nice for them.
- The code you write should be easy to understand. Do not sacrifice clarity for brevity.
- Use comments to explain code that may be confusing to others.
- Make sure your code is well tested.
- Make functions or methods small and simple. Avoid monolithic functions or methods.
- Reuse code whenever possible. Do not duplicate code.
- Prefer external libraries over writing your own code.