diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 20e88bc..0ccc471 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,34 +1,232 @@ -# Contributing +# Contributing to the hpc-libs repository -To make contributions to this charm, you'll need a working [development setup](https://juju.is/docs/sdk/dev-setup). +Do you want to contribute to the hpc-libs charm libraries? You've come to +the right place then! __Here is how you can get involved.__ -You can create an environment for development with `tox`: +Please take a moment to review this document so that the contribution +process will be easy and effective for everyone. Also, please familiarise +yourself with the [Juju SDK](https://juju.is/docs/sdk) as it will help you +better understand how the charm libraries are put together. -```shell -tox devenv -e integration -source venv/bin/activate -``` +Following these guidelines helps you communicate that you respect the maintainers +managing the libraries. In return, they will reciprocate that respect +while addressing your issue or assessing your submitted changes and/or features. -## Testing +Have any questions? Feel free to ask them in the [Ubuntu High-Performance Computing +Matrix chat](https://matrix.to/#/#hpc:ubuntu.com). -This project uses `tox` for managing test environments. There are some pre-configured environments -that can be used for linting and formatting code when you're preparing contributions to the charm: +### Table of Contents -```shell -tox run -e format # update your code according to linting rules -tox run -e lint # code style -tox run -e static # static type checking -tox run -e unit # unit tests -tox run -e integration # integration tests -tox # runs 'format', 'lint', 'static', and 'unit' environments -``` +* [Using the issue tracker](#using-the-issue-tracker) +* [Issues and Labels](#issues-and-labels) +* [Bug Reports](#bug-reports) +* [Enhancement Proposals](#enhancement-proposals) +* [Pull Requests](#pull-requests) +* [Discussions](#discussions) +* [Code Guidelines](#code-guidelines) +* [License](#license) -## Build the charm +## Using the issue tracker -Build the charm in this git repository using: +The issue tracker is the preferred way for tracking [bug reports](#bug-reports), [enhancement proposals](#enhancement-proposals), +and [submitted pull requests](#pull-requests), but please follow these guidelines for the issue tracker: -```shell -charmcraft pack -``` +* Please __do not__ use the issue tracker for personal issues and/or support requests. +The [Discussions](#discussions) page is a better place to get help for personal support requests. - +A collection of charm libraries for authoring HPC charms ๐Ÿ“–๐Ÿ–‹๏ธ -# hpc-libs +The hpc-libs charm libraries are used within the [Juju](https://juju.is) charms that compose +Charmed HPC. They are standalone libraries, and should be managed +as charm libraries, with installation via `charmcraft fetch-lib ...`, after which they may be +imported and used as normal Python modules. The current charm libraries in hpc-libs include: + +* `is_container` - a library for detecting the virtualization environment the charm is running within. +* `slurm_ops` - a library for managing Slurm cluster operations via snap or systemd. + +## โœจ Getting Started + +Each charm library contains documentation and usage information in its module-level docstring. +Pretty documentation, along with installation instructions, can be viewed on Charmhub: + +* [`is_container` documentation](https://charmhub.io/hpc-libs/libraries/is_container) +* [`slurm_ops` documentation](https://charmhub.io/hpc-libs/libraries/slurm_ops) + +## ๐Ÿค” What's next? + +If you want to learn more about all the things you can do with the hpc-libs charm libraries, +or have any further questions on what you can do with the charm libraries, here are some +further resources for you to explore: + +* [Open an issue](https://github.com/charmed-hpc/hpc-libs/issues/new?title=ISSUE+TITLE&body=*Please+describe+your+issue*) +* [Ask a question on Github](https://github.com/orgs/charmed-hpc/discussions/categories/q-a) + +## ๐Ÿ› ๏ธ Development + +This project uses [tox](https://tox.wiki) as its command runner, which provides +some useful commands that will help you while hacking on hpc-libs: + +```shell +tox run -e fmt # Apply formatting standards to code. +tox run -e lint # Check code against coding style standards. +tox run -e static # Run static type checks. +tox run -e unit # Run unit tests. +``` + +To run the hpc-libs integration tests, you'll need to have both +[gambol](https://github.com/nuccitheboss/gambol) and [LXD](https://ubuntu.com/lxd) installed +on your machine: + +```shell +tox run -e integration # Run integration tests. +``` -Charmhub package name: operator-template -More information: https://charmhub.io/hpc-libs +If you're interested in contributing your work to hpc-libs, +take a look at our [contributing guidelines](./CONTRIBUTING.md) for further details. -Describe your charm in one or two sentences. +## ๐Ÿค Project and community -## Other resources +The hpc-libs charm libraries are a project of the [Ubuntu High-Performance Computing community](https://ubuntu.com/community/governance/teams/hpc). +Interested in contributing bug fixes, new editors, documentation, or feedback? Want to join the Ubuntu HPC community? Youโ€™ve come to the right place ๐Ÿคฉ - +Hereโ€™s some links to help you get started with joining the community: -- [Read more](https://example.com) +* [Ubuntu Code of Conduct](https://ubuntu.com/community/ethos/code-of-conduct) +* [Contributing guidelines](./CONTRIBUTING.md) +* [Join the conversation on Matrix](https://matrix.to/#/#hpc:ubuntu.com) +* [Get the latest news on Discourse](https://discourse.ubuntu.com/c/hpc/151) +* [Ask and answer questions on GitHub](https://github.com/orgs/charmed-hpc/discussions/categories/q-a) -- [Contributing](CONTRIBUTING.md) +## ๐Ÿ“‹ License -- See the [Juju SDK documentation](https://juju.is/docs/sdk) for more information about developing and improving charms. +The hpc-libs charm libraries are free software, distributed under the Apache Software License, version 2.0. +See the [Apache-2.0 LICENSE](./LICENSE) file for further details.