Software Development Best Practices for Computational Chemistry
A community-oriented primer on software development best practices for modern computational chemistry.
Table of Contents
- Philosophy and Scope: Who should read this guide and what it tries to accomplish
- Licensing Guidelines: Start by selecting an appropriate license for your code
- Structuring Your Project: Structuring your project to achieve maximum gain with minimal pain
- Version Control: Manage changes to your code over time to maintain its integrity
- Python Coding Conventions: Follow these Python conventions to write extensible code that invites collaboration
- Unit Testing: Testing your code to make sure it does what you expect it to
- Continuous Integration: Setting up continuous integration to ensure new will not break things
- Documentation: Documenting your code and its use so others (and future you!) can use it
- Python Optimization: Speeding up your Python code without losing your mind
- Packaging and Deployment: Package your code and allow others to install it with minimal hassle
How to Contribute
We welcome your contributions and suggestions for how to make these materials more useful to the community. Please feel free to comment on the issue tracker or open a pull request to contribute.
Contributors
- John D. Chodera -
<john.chodera@choderalab.org>
- Patrick B. Grinaway -
<patrick.grinaway@choderalab.org>
- Andrea Rizzi -
<andrea.rizzi@choderalab.org>
- Gregory Ross -
<gregory.ross@choderalab.org>
- Levi N. Naden -
<levi.naden@choderalab.org>
- Arien ("Bas") S. Rustenburg -
<bas.rustenburg@choderalab.org>
Acknowledgments
We're grateful to the contributions of many people who helped define much of these software development practices:
- Robert McGibbon
- Jason Swails
- Matthew Harrigan
- Kyle A. Beauchamp
- Jan-Hendrk Prinz
- David W. Swenson
- Martin K. Scherer
- Frank Noe
License
This documentation resource is licensed under the Creative Commons Attribution 4.0 License.
You are free to:
- Share — copy and redistribute the material in any medium or format
- Adapt — remix, transform, and build upon the material for any purpose, even commercially.
The licensor cannot revoke these freedoms as long as you follow the license terms.
You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
See the full terms of the license here.