Skip to content
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

Adopt Developer & Architecture Ethos #77

Draft
wants to merge 43 commits into
base: main
Choose a base branch
from
Draft

Adopt Developer & Architecture Ethos #77

wants to merge 43 commits into from

Conversation

usrbinkat
Copy link
Member

Implement CCIO Project Ethos

Developer & Architecture Ethos

Kargo Kubevirt Kubernetes PaaS - Pulumi Python Infrastructure as Code (IaC)

Prime Directive: "Features are nice. Quality is paramount."

Quality is not just about the product or code. Enjoyable developer experience is imperative to the survival of FOSS.

ContainerCraft is a Developer Experience (DX) and User Experience (UX) obsessed project. As part of the CCIO Open Source education and skill development ecosystem, Kargo project's survival is dependent on the happiness of community developers and users.

Developer Directives

  • Improve Code Maintainability: Enhance structure and organization. Prioritize readable, reusable, and extensible code.
  • Optimize Performance: Code execution performance. honor configuration. Do not execute inactive code.
  • Establish Standard Practices: Develop a consistent approach to configuration handling, module deployment, and code organization to guide future development.

Developer Imperatives

The following guidelines promote happiness as a means of promoting growth and sustainability.

Imperative Explanation
User Experience (UX) Provide clear error messages, and logging to improve intuitive learning, development, and debugging.
Developer Experience (DX) Optimize DX with clear documentation, examples, and architecture.
Configurable Modules Support user module customization via the pulumi stack configuration pattern.
Module Data Classes Utilize typed dataclasses to safely encapsulate module configuration.
Sane Defaults in Data Classes Include sensible default values for module configurations.
User Configuration Handling Merge user-provided configurations with defaults. Allow minimal input for module configuration.
Simple Function Signatures Reduce parameter count. Encapsulate configuration objects in function signatures.
Type Annotations Enhance readability and maintainability with type annotations.
Safe Function Signatures Enforce type safety. Raise unknown configuration keys gracefully.
Maintain a streamlined entrypoint Minimize top-level code. Encapsulate module logic within the module directory and code.
Reuse + Dedupe code Refactor common patterns and logic into shared utilities in src/lib/. Adopt shared utilities when possible.
Version Control Dependencies Utilize versions.py to manage component versions within __main__.py.
Transparency Return informative version and configuration values to version and configuration dictionaries.
Conditional Execution Use conditional imports and execution. Prevent unnecessary code execution when modules are disabled.
Remove Deprecated Code Eliminate deprecated feature code.

@usrbinkat usrbinkat added documentation Improvements or additions to documentation enhancement New feature or request help wanted Extra attention is needed size/M Task Size: >3d dx DX Obsessed FOSS ux User Obsessed FOSS labels Sep 14, 2024
@usrbinkat usrbinkat added this to the MVP milestone Sep 14, 2024
@usrbinkat usrbinkat self-assigned this Sep 14, 2024
@usrbinkat
Copy link
Member Author

Implemented for module cert_manager

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

Copy link

pulumi bot commented Sep 22, 2024

🍹 The Destroy for usrbinkat/kargo/ci was successful.

Resource Changes

    Name         Type                         Operation
-   kargo-ci     pulumi:pulumi:Stack          delete
-   k8sProvider  pulumi:providers:kubernetes  delete

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation dx DX Obsessed FOSS enhancement New feature or request help wanted Extra attention is needed size/M Task Size: >3d ux User Obsessed FOSS
Projects
Status: In progress
Development

Successfully merging this pull request may close these issues.

1 participant