diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md new file mode 100644 index 0000000..92122cf --- /dev/null +++ b/docs/CONTRIBUTING.md @@ -0,0 +1,74 @@ +# Contributing Guidelines to Open Rowing Monitor + +Thank you for considering contributing to Open Rowing Monitor. + +Please read the following sections in order to know how to ask questions and how to work on something. Open Rowing Monitor is a spare time project and by following these guidelines you help me to keep the time for managing this project reasonable. + +## Code of Conduct + +All contributors are expected to follow the [Code of Conduct](CODE_OF_CONDUCT.md). I want this to be a place where everyone feels comfortable. Please make sure you are welcoming and friendly to others. + +## How can I contribute? + +Keep an open mind! There are many ways for helpful contributions, like: + +* Writing forum posts +* Helping people on the forum +* Submitting bug reports and feature requests +* Improving the documentation +* Submitting rower profiles / test recordings +* Writing code which can be incorporated into the project itself + +### Report bugs and submit feature requests + +Look for existing issues and pull requests if the problem or feature has already been reported. If you find an issue or pull request which is still open, add comments to it instead of opening a new one. + +Make sure that you are running the latest version of Open Rowing Monitor before submitting a bug report. + +If you report a bug, please include information that can help to investigate the issue further, such as: + +* Rower Model and Setup +* Model of Raspberry Pi and version of operation system +* Relevant parts of log messages +* If possible, describe a [Minimal, Reproducible Example](https://stackoverflow.com/help/minimal-reproducible-example) + +### Improving the Documentation + +The documentation is an important part of Open Rowing Monitor. It is essential that it remains simple and accurate. If you have improvements or find errors, feel free to submit changes via Pull Requests or by filing a bug report or feature request. + +### Contributing to the Code + +Keep in mind that Open Rowing Monitor is a spare time project which I created to improve the performance of my rowing machine and to experiment with some concepts and technologies that I find interesting. + +I intend to keep the code base clean and maintainable by following some standards. I only accept Pull Requests that: + +* Fix bugs for existing functions +* Enhance the API or implementation of an existing function, configuration or documentation + +If you want to contribute new features to the code, please first discuss the change you wish to make via issue, forum, email, or any other method with me before making a change. This will make sure that there is chance of it getting accepted before you spend time working on it. + +#### Standards for Contributions + +* Contributions should be as small as possible, preferably one new feature per contribution +* All code should use the [JavaScript Standard Style](https://standardjs.com), if you don't skip the included `git hooks` you should not need to worry about this +* All code should be thoroughly tested +* If possible there should be automated test for your contribution (see the `*.test.js` files; the project uses `uvu`) + +#### Creating a Pull Request + +Only open a Pull Request when your contribution is ready for a review. I you want to get feedback on a contribution that does not yet match all criteria for a Pull Request you can open a [Draft pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests). + +* Please include a brief summary of the change, mentioning any issues that are fixed (or partially fixed) by this change +* Include relevant motivation and context +* Make sure that the PR only includes your intended changes by carefully reviewing the changes in the diff +* If possible / necessary, add tests and documentation to your contribution +* If possible, [sign your commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) + +I will review your contribution and respond as quickly as possible. Keep in mind that this is a spare time Open Source project, and it may take me some time to get back to you. Your patience is very much appreciated. + +## Your First Contribution + +Don't worry if you are new to contributing to an Open Source project. Here are a couple of tutorials that you might want to check out to get up to speed: + +* [How to Contribute to an Open Source Project on GitHub](https://makeapullrequest.com) +* [First Timers Only](https://www.firsttimersonly.com) diff --git a/docs/README.md b/docs/README.md index 979ee3d..875530c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -11,8 +11,8 @@ A free and open source performance monitor for rowing machines. It upgrades a ro Open Rowing Monitor is a Node.js application that runs on a Raspberry Pi and measures the rotation of the rower's flywheel (or similar) to calculate rowing specific metrics, such as power, split time, speed, stroke rate, distance and calories. -We currently develop and test it with a Sportstech WRX700 water-rower and a NordicTrack RX-800 hybrid magnetic / air-rower. But it should run fine with any rowing machine that uses some kind of damping mechanism, as long as you can add something to measure the speed of the flywheel. -We suspect it works well with DIY rowing machines like the [Openergo](https://openergo.webs.com) too. +It is currently developed and tested with a Sportstech WRX700 water-rower. But it should run fine with any rowing machine that uses some kind of damping mechanism, as long as you can add something to measure the speed of the flywheel. +It should also work well with DIY rowing machines like the [Openergo](https://openergo.webs.com). ## Features @@ -47,7 +47,7 @@ Fitness Machine Service (FTMS) is a standardized GATT protocol for different typ **FTMS Rower:** This is the FTMS profile for rowing machines and supports all rowing specific metrics (such as stroke rate). So far not many training applications for this profile exist, but the market is evolving. I've successfully tested it with [EXR](https://www.exrgame.com), [MyHomeFit](https://myhomefit.de) and [Kinomap](https://www.kinomap.com). -**FTMS Indoor Bike:** This FTMS profile is used by Smart Bike Trainers and widely adopted by training applications for bike training. It does not support rowing specific metrics. But we can present metrics such as power and distance to the biking application and use cadence for stroke rate. So why not use your virtual rowing bike to row up a mountain in [Zwift](https://www.zwift.com), [Bkool](https://www.bkool.com), [The Sufferfest](https://thesufferfest.com) or similar :-) +**FTMS Indoor Bike:** This FTMS profile is used by Smart Bike Trainers and widely adopted by training applications for bike training. It does not support rowing specific metrics. But it can present metrics such as power and distance to the biking application and use cadence for stroke rate. So why not use your virtual rowing bike to row up a mountain in [Zwift](https://www.zwift.com), [Bkool](https://www.bkool.com), [The Sufferfest](https://thesufferfest.com) or similar :-) **Concept2 PM:** Open Rowing Monitor also implements part of the Concept2 PM Bluetooth Smart Communication Interface Definition. This is still work in progress and only implements the most common parts of the spec, so it will not work with all applications that support C2 rowing machines. It currently works with all the samples from [The Erg Arcade](https://ergarcade.com), i.e. you can [row in the clouds](https://ergarcade.github.io/mrdoob-clouds/). This also works very well with [EXR](https://www.exrgame.com). @@ -83,6 +83,6 @@ Feel free to leave a message in the [GitHub Discussions](https://github.com/labe Check the advanced information on the [Physics behind Open Rowing Monitor](physics_openrowingmonitor.md). -We plan to add more features, here is the [Development Roadmap](backlog.md). +I plan to add more features, here is the [Development Roadmap](backlog.md). Contributions are welcome, please read the [Contributing Guidelines](CONTRIBUTING.md) first. This project uses some great work by others, see the [Attribution here](attribution.md). diff --git a/docs/backlog.md b/docs/backlog.md index 4172c39..3e197b7 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -1,6 +1,8 @@ # Development Roadmap for Open Rowing Monitor -This is the very minimalistic Backlog for further development of this project. +This is currently is a very minimalistic Backlog for further development of this project. + +If you would like to contribute to this project, please read the [Contributing Guidelines](CONTRIBUTING.md) first. ## Soon @@ -13,13 +15,12 @@ This is the very minimalistic Backlog for further development of this project. * automatically upload recorded rowing sessions to training platforms (i.e. Strava) * figure out where to set the Service Advertising Data (FTMS.pdf p 15) * add some attributes to BLE DeviceInformationService -* make Web UI a proper Web Application (tooling and SPA framework) * record the workout and show a visual graph of metrics * show a splash screen while booting the device ## Ideas * add video playback to the Web UI -* implement or integrate some rowing games +* implement or integrate some rowing games (i.e. a little 2D or 3D, game implemented as Web Component) * add possibility to define training timers * add possibility to define workouts (i.e. training intervals with goals)