diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..0d12b56 --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ +# prometheus-client-c + +This project provides shared libraries for instrumenting software via [Prometheus](https://prometheus.io) + +* libprom - Provides the core API. Resources such as counters, gauges, histograms, and + collector registries can be found here. This library has no dependencies on third-party + libraries; however, it does rely on pthreads native to POSIX systems. +* libpromhttp - Provides a simple web handler to expose Prometheus metrics for scraping. + This library has a dependency on libmircohttpd. + +Documentation can be found +[at the documentation site](https://digitalocean.github.io/prometheus-client-c/) +and an example can be found under example/. Check under the releases tab for tarballs and debian installers + +## Versioning + +This project generally follows [semantic versioning](https://semver.org). For each version you can find a corresponding +release under the releases type. Do not expect the master branch to maintain alignment with the latest release. It may +contain changes not yet released. + +## Development + +The only development dependencies required to get started are Docker, Make and Bash. Navigate to the root fo this +project directory and execute `make`. This process will build the development container, build libprom and libpromhttp, +run the unit tests and execute the smoke tests. + +The stages of the development workflow are automated via `auto` which can be found in the root of this project directory. +Execute `./auto -h` for information regarding the different subcommands. Information for each subcommand can be +obtained by executing `./auto CMD -h`. + +## Contributing + +Thank you for your interest in contributing to prometheus-client-c! There two primary ways to get involved with this +project: documentation and code modifications. In either case, the process is identical. + +### General Rules for Contribution + +* Open An Issue: Before opening a PR or starting any work, open an issue. In the issue, describe the problem you +want to fix and how you would like to fix it. The level of detail should match the relative size of the proposed change. +This will allow us to work together to determine the best path forward towards a sound solution. + +* Open a Pull Request: After you have gotten confirmation on your proposed change it's time to get to work! Create a +fork and make all of your updates in said fork. For each commit, you must prefix the commit with the associated issue. +For example: `#12 - Fixing typo in documentation`. Before opening a pull request, review the commit log for your fork. +If any of your commit messages are extraneous, squash said commits using `git rebase`. Once you're happy with your +changes and your commit log, open a pull request against the master branch. + +* Engage in the Code Review: After submitting your pull request, there may be some requests for changes. If you have +any questions or concerns, please do not hesitate to make them known. The code review process is a bidirectional +communication process so please do not be shy. Speak up! + +### Coding Rules for Contribution + +* Please follow the general coding style already present in the project. + * We use a 120 character margin, so please honor this margin by breaking long statements and expressions over multiple + lines. + * Indent with 2 spaces instead of tabs. + * Every struct must have a constructor function and destructor function. + * Every method must pass a pointer to the target struct as the first argument. + * Every function that is not a constructor or destructor and does not return a value must return an int to signify + success with 0 and failure with non-zero. + * Every function name must begin with the library name. For example, all functions within prom must begin with `prom_` + and all functions within promhttp must begin with `promhttp_`. + * All l-values must be underscore delimited (i.e. snake-case). + * All macros must be captilalized. + * Every pointer reference must be assigned a NULL value after it is destroyed either by prom_free or its + corresponding destructor function. +* All new functions must introduce a corresponding suite of unit tests. +* If you add functionality to an existing function, be sure to add a corresponding unit test to verify correctness. + +## Misc + +* Language level: C11 |
