diff --git a/docs/090_roadmap/README.md b/docs/090_roadmap/README.md index 6659f3d67..fccb78f8d 100644 --- a/docs/090_roadmap/README.md +++ b/docs/090_roadmap/README.md @@ -1,57 +1,68 @@ # Roadmap for Pepr - _2024 Roadmap_ ## Phase 1: Preparation - Testing and Docs - **Q1**: - **Establish Medium for Communication with Community**: - Establish communication channel for community members and contributors. Easy/discoverable "how to contribute" guide. + - Establish communication channel for community members and contributors. Easy/discoverable "how to contribute" guide. - **Site/Documentation**: - Improve information architecture, nail killer use-cases, and make it obvious how to get started and find your way around. + - Improve information architecture, nail killer use-cases, and make it obvious how to get started and find your way around. - **Automated Testing**: - Focus on stories that increase confidence in protection of features and functionality. Simplify hello-pepr and bring e2e test against external repo with examples. Make sure that contributions are well-tested. + - Focus on stories that increase confidence in protection of features and functionality. Simplify hello-pepr and bring e2e test against external repo with examples. Make sure that contributions are well-tested. -## Phase 2: Community Building, Competitive Analysis, and Feature Development +## Phase 2: Community Building, Competitive Analysis, Instrumentation and Feature Development - **Q2**: - **Community Engagement**: - Begin engaging with potential contributors and users through social media, Kubernetes/Cloud Native Computing Foundation (CNCF) meetups, and other channels. Monitor and participate in our Slack channel. + - Begin engaging with potential contributors and users through social media, Kubernetes/Cloud Native Computing Foundation (CNCF) meetups, and other channels. Monitor and participate in our Slack channel. - **Feature Development**: - Based on company feedback, continuously improve and add features. Add feature parity with other tools in the Kubernetes ecosystem where it makes sense. Chip away at the backlog. + - Based on company feedback, continuously improve and add features. Add feature parity with other tools in the Kubernetes ecosystem where it makes sense. Chip away at the backlog. - **Documentation Improvements**: - Continue to improve documentation and add more examples like Doom, find scaling limitations + - Continue to improve documentation and add more examples like Doom, find scaling limitations - **Competitive Analysis**: - Understand the competitive landscape and how/where Pepr can/does differentiate itself. Have it in the docs. + - Understand the competitive landscape and how/where Pepr can/does differentiate itself. Have it in the docs. + - **Instrumentation**: + - Outfit Pepr with the necessary instrumentation to collect metrics and logs. Use this data to make informed about the watch direction. -## Phase 3: Donation, Transition, Move Project, and Stabilization/Improvement of New Features +## Phase 3: Informer Iterations, Watch Analysis, Metric Collection, Development/Stabilization/Improvement of New Features - **Q3**: - - **Donation**: - - Donate the project to the CNCF. - - CNCF Code of conduct - - CNCF IP policy - - CNCF CLA - - Discoverable and simple governance model - - move project to its own organization - - ensure license in Apache 2.0 - - Transfer trademark, logo, domain name, and other assets to CNCF. - - **Community Building**: - Grow the contributor base, establish a governance model, and encourage community-led initiatives. Interact with people in our Slack channel. + - **Informer Iterations**: + - Tune informer based on feedback from UDS Core and delivery so events will be reconciled through eventual consistency. + - [Evaluate](https://github.com/defenseunicorns/pepr/blob/main/adr/0015-kfc-watch-undici.md) other underlying technologies for informer. - **Feature Development**: - Based on community feedback, continuously improve and add features. Rigoursly test and document and review code. + - `.WithNameRegex()/.InNamespaceRegex()` for Kubernetes Controller development against resources that could match a variety of names or namespaces. + - `.WithDeletionTimestamp()` for Kubernetes Controller Development against resources that are pending deletion + - Create a sharded queue that enables the Module Author to define queueing strategies based on `kind`, `kind/namespace`, `kind/namespace/name`, `global`. + - **Community Building**: + - Grow the contributor base, establish a governance model, and encourage community-led initiatives. Look to drive conversation in our Slack Channel. + - Based on community feedback, continuously improve and add features. Rigoursly test and document and review code. - **Project Advocation**: - Publicly advocate for the project and encourage adoption. - - **Submit PR for Sandbox** - - Submit sandbox PR when ready + - Publicly advocate for the project and encourage adoption. + - **Stability**: + - Ensure that the project is stable and reliable. Make sure that the project is well-tested and documented. + - Identify new areas of project improvement and work on them. -## Phase 4: Post Donation +## Phase 4: Feature Development, Stablization, Code and Testing Quality Improvements - **Q4**: - - **Road to GA**: - Right now, Pepr itself is still in its 'development' phase. We are working on some final things before we release the official 1.0 General Availability (GA) release - - **Community Meetings**: - - Monthly community meetings/steering committee meetings/contributor meetings - - **Review Sandbox PR** - - Review PR for sandbox - - **Road to Incubation**: - - to come + - **Features**: + - Improve DevEx overrides in Pepr section of package.json for customized builds of Modules + - `.Finalize()` for Kubernetes Controller Development to controlling downstream resources through finalizers + - Scaffolding to validate images from a registry through cosign/sigstore + - Replace node-fetch with Undici in the KFC project for performance improvements + - **Removal of Circular Dependencies**: + Identify and remove circular dependencies in the codebase. + - **Strong Typings**: + - Identify where we can make Pepr/KFC stronger by adding typings. + - **Work to reduce code complexity** + - Monitor code complexity through eslint, work to drive down complexity + - **Robust E2E Tests in KFC**: + - Create a strong e2e suite in KFC, ensure tests are robust and cover all the features of KFC. + - **Documentation**: + - Ensure that the documentation is up-to-date and accurate. Add more examples and use-cases. + - Onboarding and contribution guides should be clear and easy to follow. + - **Load/Stress Testing**: + - Load test Pepr/KFC to identify bottlenecks and areas of improvement. + - Ensure that Pepr/KFC can handle a large number of resources and events over a sustained period of time (nightly). + diff --git a/src/cli/build.ts b/src/cli/build.ts index f48f477ac..5ec58740e 100644 --- a/src/cli/build.ts +++ b/src/cli/build.ts @@ -14,7 +14,7 @@ import { Option } from "commander"; import { validateCapabilityNames, parseTimeout } from "../lib/helpers"; import { sanitizeResourceName } from "../sdk/sdk"; import { determineRbacMode } from "./build.helpers"; -import { createDirectoryIfNotExists } from "../lib/filesystemHelpers"; +import { createDirectoryIfNotExists } from "../lib/filesystemService"; const peprTS = "pepr.ts"; let outputDir: string = "dist"; export type Reloader = (opts: BuildResult) => void | Promise; diff --git a/src/lib/assets/index.ts b/src/lib/assets/index.ts index 4e13f6041..c699d6070 100644 --- a/src/lib/assets/index.ts +++ b/src/lib/assets/index.ts @@ -27,7 +27,7 @@ import { apiTokenSecret, service, tlsSecret, watcherService } from "./networking import { watcher, moduleSecret } from "./pods"; import { clusterRoleBinding, serviceAccount, storeRole, storeRoleBinding } from "./rbac"; -import { createDirectoryIfNotExists } from "../filesystemHelpers"; +import { createDirectoryIfNotExists } from "../filesystemService"; export class Assets { readonly name: string; readonly tls: TLSOut; diff --git a/src/lib/filesytemHelpers.test.ts b/src/lib/filesystemService.test.ts similarity index 90% rename from src/lib/filesytemHelpers.test.ts rename to src/lib/filesystemService.test.ts index ef51107af..da00e4840 100644 --- a/src/lib/filesytemHelpers.test.ts +++ b/src/lib/filesystemService.test.ts @@ -1,5 +1,8 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: 2023-Present The Pepr Authors + import { describe, jest, expect, it } from "@jest/globals"; -import { createDirectoryIfNotExists } from "./filesystemHelpers"; +import { createDirectoryIfNotExists } from "./filesystemService"; import { promises as fs } from "fs"; jest.mock("fs", () => { diff --git a/src/lib/filesystemHelpers.ts b/src/lib/filesystemService.ts similarity index 100% rename from src/lib/filesystemHelpers.ts rename to src/lib/filesystemService.ts