Skip to content

docs: Improve clarity and consistency of GitOps principles #96

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

jonathanagustin
Copy link

Summary

This PR refactors the GitOps principles to enhance clarity and eliminate circular references in the definition.

Motivation

While reviewing the principles document, I noticed that we use "GitOps" within the definition of GitOps itself (e.g., "A system managed by GitOps must have..."). This creates a circular reference that could be confusing for newcomers trying to understand what GitOps is.

Changes Made

  • Removed circular references. Eliminated instances where "GitOps" appeared within its own definition
  • Improved consistency. All principles now use "must" to clearly indicate these are requirements
  • Enhanced parallel structure. Standardized grammar across all four principles
  • Simplified wording. Principle 2 now reads more clearly as "stored with immutability, versioning, and history"

Why This Matters

As GitOps continues to gain adoption across the industry, having clear, self-contained principles becomes increasingly important. These changes maintain all the technical accuracy of the current definition while making it more accessible to those learning about GitOps for the first time.

The principles still convey exactly the same requirements - this is purely a clarity improvement that strengthens the document as a foundational reference.

Review Notes

All changes are documentation-only and don't affect any technical requirements or implementations. The glossary links remain unchanged.

Happy to discuss any of these changes or adjust based on feedback!

- Remove circular references (GitOps within its own definition)
- Establish consistent parallel structure across all principles
- Use imperative "must" throughout to clarify these are requirements
- Simplify principle 2 wording: "stored with immutability, versioning, and history"
- Remove redundant "The system" from principle 1
- Improve grammatical consistency and readability

These changes enhance clarity while maintaining the technical accuracy and intent of the original principles.

Signed-off-by: jonathanagustin <[email protected]>
@jonathanagustin
Copy link
Author

Anticipated Questions & Responses

Q: "Why remove 'GitOps' from the principles?"

A: This follows established best practices in technical writing and formal logic. A definition should not contain the term being defined (avoiding circular reasoning). Consider how confusing it would be if we defined "REST" as "A RESTful system must have these properties..." - the reader still wouldn't know what REST means.

Major technical standards follow this principle:

  • The OAuth 2.0 spec defines authorization requirements without using "OAuth" in the requirements
  • The Kubernetes API conventions define resources without saying "Kubernetes resources must..."
  • The REST dissertation by Roy Fielding defines architectural constraints without circular references

Q: "Doesn't 'the system' make it less clear we're talking about GitOps?"

A: The context is already established in two ways:

  1. The document title and introduction explicitly state these are "GitOps Principles"
  2. The introductory sentence sets up that these principles define what makes a system follow GitOps

Using "the system" after this context is established is actually clearer than repetition, following the principle of "given-new" information flow in technical writing.

Q: "Why change 'enforces' to 'stored with'?"

A: "Stored with" is more accurate to what actually happens:

  • Storage systems provide these properties, they don't enforce them
  • "Enforce" implies active prevention, but Git (for example) provides immutability through its design, not enforcement
  • This aligns with how we describe other technical properties (we say data is "stored with encryption," not "enforces encryption")

Q: "Why add 'must' to principles 3 and 4?"

A: Consistency and clarity of requirements. RFC 2119 establishes that "MUST" indicates an absolute requirement. Having some principles use "must" and others not could imply different levels of requirement. All four principles are equally mandatory for GitOps, so they should use consistent language.

Q: "Is removing 'complete' from 'complete version history' a meaningful change?"

A: Yes - it removes redundancy. No one understands "history" to mean "partial history" in this context. Just as we don't say "round circle" or "frozen ice," we don't need to specify "complete history." History, by definition, is complete - otherwise it's not history, it's excerpts. This follows the principle of concise technical writing: every word should add meaning, and modifiers that don't add information should be removed.

Q: "These seem like minor changes - are they worth it?"

A: These principles serve as the foundational definition for an entire methodology. Like constitutional documents or technical standards, every word matters. The clearer and more precise we make these principles, the easier it is for:

  • Newcomers to understand GitOps
  • Teams to evaluate if they're following GitOps
  • Tool builders to ensure compatibility
  • The community to have consistent discussions

Small improvements in foundational documents have outsized impact. As William Strunk Jr. wrote: "Vigorous writing is concise." This is especially true for technical definitions that will be referenced by thousands of practitioners.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant