blob: 895559ee60cd0038125f0ddd91a25fa0d75ccd68 [file] [log] [blame] [view]
# Netstack Team's Cultural Tenets
Here are some cultural tenets which have helped keep the members of the [Fuchsia
Netstack team] aligned and productive. Having these values helps us navigate
prioritization and ambiguity.
## Compliance & Compatibility
> Fuchsia's success depends on being **compliant on the wire and compatible on
> the API surface**.
It is our responsibility to ensure RFC compliance and compatibility with adopted
network protocols. Instances of non-compliance are considered bugs except where
explicitly deemed necessary for interoperability with third parties. We have a
bias for citations; prior art and references are good sources of default
decisions.
We actively avoid the trap of "invented here", always designing with a guarantee
for compatibility with known networking APIs. We prefer to use Fuchsia concepts
to empower and improve on common networking concepts and APIs rather than invent
new ones for novelty's sake. We allow reinvention when needed, but compatibility
must always be addressed.
We encode our compliance and compatibility requirements by authoring tests that
run against other platforms as well as Fuchsia. That ensures that Fuchsia's
behavior matches or, alternatively, that the test serves as clear documentation
of any deviation from it.
## Shared Ownership
> Cross-contribution increases diversity of thought, and improves our
> [bus factor]. We reject internal and external siloing.
Networking and its subsystems are an integral part of the Fuchsia platform.
Information silos build walls between those system layers hindering creativity
and progress. We celebrate cross contributions by actively engaging, welcoming,
and encouraging them.
We're good neighbors to our sister and cousin teams, we hop over the ownership
fence to help them out and invite them over to do the same. We encode, publish,
and disseminate the good patterns that we find or come up with.
## Urgency Addressing Disrepair
> Left unattended, all code rots. It's our collective responsibility to actively
> fight against this decay.
We recognize cleanliness begets cleanliness. We believe clean, predictable, and
explicit code improves our engineering velocity. While working on the tree we're
constantly on the lookout for paper cuts and rough edges. When we hit those, we
prefer to fix them immediately. Sometimes the detour proves larger than
expected, but we seek not to lose the signal and document the need to revisit by
filing bugs and leaving breadcrumbs.
It takes a constantly vigilant eye to notice some of these instances. Sometimes
it's a pattern that stops making sense but is still being used; other times it's
a pattern that is not quite a good match in a particular case; often the rough
edge simply becomes clearer in hindsight. When navigating existing code, we're
aware that we at the same time know more (through hindsight) and less (through
not being original authors) than the original authors of the code. That
translates into a constant, yet respectful, challenge to the status quo.
The sense of urgency in addressing disrepair comes from the understanding that
copying existing patterns is always the path of least resistance, so by acting
quickly we prevent the spread of rot. In line with *Shared Ownership*, we apply
these standards to all the code in the Fuchsia tree.
[bus factor]: https://en.wikipedia.org/wiki/Bus_factor
[Fuchsia Netstack team]: /src/connectivity/network/OWNERS