yggdrasil RFCs

Welcome to the RFC repository for the yggdrasil framework! This repository contains the proposals and discussions for changes, improvements and new features within the yggdrasil framework.

Introduction to RFCs

RFCs (Request for Comments), are a series of documents used to discuss and define standards for core components of the yggdrasil framework. They help the team discuss and set standards for the core components of the framework, while maintaining an organised structure. In addition to providing comprehensive documentation, these documents also encapsulate the reasoning, design process, and guiding philosophy behind these components.

The RFC process serves a dual purpose: It encourages collaboration and transparency, while also serving as a valuable educational resource for existing and future contributors. This resource helps aids in understanding the framework's evoluation and principles, making it a crucial resource for anyone who wants to be a part of the framework's development!

RFC Process

This section describes the RFC process for the yggdrasil framework.

When you need to follow this process

You need to follow this process if you intend to introduce "substantial" changes or additions to the framework or the RFC process itself. A "substantial" change or addition refers to a modification or proposal that has a significant impact on the framework, its design or functionality.

TODO: provide examples

Some changes do not require an RFC:

  • Rephrasing, reorganizing, refactoring, or otherwise "changing shape does not change meaning".
  • Additions that strictly improve objective, numerical quality criteria (warning removal, speedup, trap more errors, etc.)

If you submit a pull request to implement a new feature without going through the RFC process, it may be closed with a polite request to submit an RFC first.

What the proces is

In short, to introduce major changes or additions to the yggdrasil framework, one must first get the RFC merged into the RFC repository as a markdown file. At that point the RFC is "active" and may be implemented in the framework.

The process consists of the following steps:

  1. Create a new branch on the rfc repository, make sure it follows the contributing guidelines.

  2. Copy 000-template.md to rfc/000-my-feature.md (where my feature is descriptive!).

    Don't assign an RFC number yet; This is going to be the PR number and we'll rename the file accordingly if the RFC is accepted!

  3. Fill in the RFC. Put care into the details for a swifty process!

  4. Submit a pull request. As a pull request the RFC will receive design feedback from the rest of the team, and the author should be prepared to revise it in response.

  5. Now that your RFC has an open pull request, you can use the issue number of the PR to update your 000- prefix to that number.

  6. Once a consensus has been reached, the RFC will be merged and the implementation will be planned.