Skip to content

Document correct use of experimental feature flags

Arti crates have experimental feature flags, but I don't think we have any documentation about when or how to use these. I've heard conflicting info about what is allowed or not when using experimental feature flags, so it would be good to come to a consensus and then document it.

Questions:

  1. Does arti, when built with experimental features enabled, need to be usable by end users? For example do we need to ensure that it correctly bootstraps, builds circuits, supports SOCKS connections, etc on the live network?
  2. Can code behind an experimental feature flag panic? For example todo!, unwrap(), etc. What if this conflicts with (1)?
  3. Is it allowed for features behind an experimental feature flag to have privacy/security issues? For example an in-development feature may not yet have all of the checks/tests needed to ensure that it is secure, protected from dos issues, isn't fingerprintable, etc.

These questions arise since it's unclear what guarantees we want to provide to users who build arti with --all-features.

Issue inspired by !2932 (comment 3191196).

/cc @nickm, @dgoulet, @gabi-250