Skip to content

Contributing

Roadmap 🛣

  • Additional future types and options
  • Additional future adaptors
  • Additional algorithms
  • Additional executors
  • Additional networking facilities

Guidelines 📐

  • Discussions: Discussions are concentrated on our GitHub discussions page. Don't refrain from asking questions and proposing ideas. If this library helps you create something interesting, please divulge it with the community.
  • Sharing Ideas: If you are a programmer with good ideas, please share these ideas with us.
  • Academic collaboration is more than welcome. It'd be great to see this library help people write papers.

Developer mode 👨‍💻

Build system targets that are only useful for developers of this project are hidden if the FUTURES_DEVELOPER_MODE CMake option is disabled. Enabling this option makes tests and other developer targets and options available.

Not enabling this option means that you are a consumer of this project, and thus you have no need for these targets and options.

PRs 💡

Feel free to contribute new features to this library. For complex features and changes, consider getting feedback from the community first. Contributing to an existing code base with its conventions might seem obscure at first but please don't let that discourage you from sharing your ideas.

There are many ways in which you can contribute to this library:

  • Testing the library in new environments see 1, 2, 3
  • Contributing with interesting examples see 1
  • Finding problems in this documentation see 1
  • Finding bugs in general see 1, 2, 3, 4
  • Whatever idea seems interesting to you

Constructive con

The only thing we ask you is to make sure your contribution is not destructive. Some contributions in which we are not interested are:

  • "I don't like this optional feature, so I removed/deprecated it"
  • "I removed this feature to support older versions of C++" but have not provided an equivalent alternative
  • "I removed this feature, so I don't have to install/update ______" but have not provided an equivalent alternative
  • "I'm creating this high-cost promise that we'll support __ forever" but I'm not sticking around to keep that promise

In doubt, please open a discussion first