Skip to content

Introduce an initial set of DevEx features#10

Draft
adamwg wants to merge 2 commits into
crossplane:mainfrom
adamwg:awg/devex
Draft

Introduce an initial set of DevEx features#10
adamwg wants to merge 2 commits into
crossplane:mainfrom
adamwg:awg/devex

Conversation

@adamwg
Copy link
Copy Markdown
Member

@adamwg adamwg commented May 11, 2026

Description of your changes

This PR introduces the initial set of DevEx tools based around the concept of control plane Projects. Specifically, it introduces tools for:

  • Scaffolding a new, empty project.
  • Generating XRDs from example XRs or simpleschema documents.
  • Scaffolding compositions.
  • Scaffolding functions in go, go-templating, kcl, and python and adding them to composition pipelines.
  • Managing both runtime and build-time dependencies for a project, including generating language bindings (schemas) for added dependencies.
  • Building a project into a set of xpkgs.
  • Installing a project into a local control plane (created using kind) for testing.

Fixes crossplane/crossplane#6840

I have:

The central concept in our developer experience is the Project. Introduce the
Project API in preparation for adding the tooling.

Signed-off-by: Adam Wolfe Gordon <awg@upbound.io>
Comment thread internal/docker/docker.go
const maxFileSize = 1024 * 1024 * 1024

for {
header, err := tarReader.Next()
This commit introduces the initial set of DevEx tools based around the concept
of control plane Projects. Specifically, it introduces tools for:

- Scaffolding a new, empty project.
- Generating XRDs from example XRs or simpleschema documents.
- Scaffolding compositions.
- Scaffolding functions in go, go-templating, kcl, and python and adding them to
  composition pipelines.
- Managing both runtime and build-time dependencies for a project, including
  generating language bindings (schemas) for added dependencies.
- Building a project into a set of xpkgs.
- Pushing xpkgs built from a project to an OCI registry.
- Installing a project into a local control plane (created using kind) for
  testing.

Fixes crossplane/crossplane#6840

This work is based on (and imports a large amount of code from) the developer
experience tooling originally built as part of the proprietary `up` CLI at
Upbound. The following people contributed to that work:

Co-authored-by: Christopher Haar <christopher.haar@upbound.io>
Co-authored-by: Hasan Turken <turkenh@gmail.com>
Co-authored-by: Jason Tang <jason@upbound.io>
Co-authored-by: Murph <murph@opusdavei.org>
Co-authored-by: Nic Cope <nicc@rk0n.org>
Co-authored-by: Nicholas Thomson <RedbackThomson@users.noreply.github.com>
Co-authored-by: Philippe Scorsolini <p.scorsolini@gmail.com>
Co-authored-by: Tobias Kässer <tobias.kasser@upbound.io>
Co-authored-by: nullable-eth <2248325+nullable-eth@users.noreply.github.com>
Co-authored-by: tnthornton <2375126+tnthornton@users.noreply.github.com>

Signed-off-by: Adam Wolfe Gordon <awg@upbound.io>
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.

Proposal: Contribute the Upbound developer experience tooling to Crossplane

2 participants