Git Product home page Git Product logo

solana-improvement-documents's Introduction

Solana Improvement Documents (SIMDs)

The goal of the SIMD project is to standardize and provide high-quality documentation for Solana and its ecosystem. This repository tracks past and ongoing improvements to Solana in the form of Solana Improvement Documents (SIMDs). SIMD-0001 governs the SIMD process.

SIMD Types

SIMDs can be divided into the following categories:

  • Standard SIMDs: Describe changes that affect most or all Solana implementations, such as:
    • Core: Changes affecting consensus or substantial changes to the validator.
    • Networking: Changes or substantial improvements to network protocol specifications.
    • Interfaces: Breaking changes around the client JSON RPC API specifications and standards.
  • Meta SIMDs: Describe a process surrounding Solana or propose a change to (or an event in) a process.

Before You Begin

Before you write a SIMD, ideas MUST be thoroughly discussed and vetted on the ideas section within this repo's disucssion page. Read and review SIMD-0001, which describes the SIMD process in detail.

This repository is for documenting standards and not for implementation help. For specific questions and concerns regarding SIMDs, it's best to discuss them in the questions section of this repo's disucssion page.

Access Policy

The SIMD repository has three levels of access, as detailed in SIMD-0007:

  1. Triage
  2. Write
  3. Maintain

To request access or report misuse, please follow the procedures outlined in SIMD-0007.

solana-improvement-documents's People

Contributors

0x0ece avatar 2501babe avatar anoushk1234 avatar apfitzge avatar ashwinsekar avatar benhawkins18 avatar bji avatar buffalojoec avatar carllin avatar ckamm avatar criesofcarrots avatar danpaul000 avatar godmodegalactus avatar haoranyi avatar iceomatic avatar jacobcreech avatar joncinque avatar jstarry avatar lheeger-jump avatar mvines avatar netwalker108 avatar ripatel-fd avatar samkim-crypto avatar tao-stones avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

solana-improvement-documents's Issues

Request Access (Level 1) for [Tamgros]

I'm Matt Sorg from Solana Foundation. I'll help managed and evolve of the SIMD process, and facilitate collaboration across protocol dev teams. Requesting Lvl 1 access as that'll obviously be necessary to perform this role.

Discord id: Tamgros#9322

Roadmap: Multi-Client Feature Gates

Roadmap: Multi-Client Feature Gates

This outline serves to articulate procedural and engineering efforts to introduce a new & improved strategy for managing Solana protocol changes and activating their corresponding feature gates, particularly in an environment with multiple validator clients.

Procedural Changes

Desired procedure:

  1. SIMDs are changes to the Solana protocol, not any particular validator client. All Solana protocol features require a SIMD.

Ideally, SIMD merges should always be coupled to a relevant change to the Solana specification, however, at this time we do not have enough specifications published on Solana to enforce this.

  1. Structured SIMD review process:
  • Required reviews from members of each validator client on Solana.
  • Concept of "priority level" for proposals, for ease of review.
  • Ability to request validator reviews on proposals effecting validator economics.
  1. Tracking of feature implementation across clients after SIMD is merged:
  • Tracking development progress of merged proposals across each client.
  • Target dates for implementation and feature activation, agreed upon by all clients.
  • Linking of relevant code changes back to their corresponding original proposal.
  • Improved Feature Gate Activation Schedule integrated with development progress tracking.

Tasks

  • Enforce SIMDs for all feature gates.
  • Establish GitHub teams and review requirements for SIMDs.
  • Introduce priority labels on SIMD pull requests.
  • Establish a process for optionally requesting validator review on proposals.
  • Develop a project board for tracking implementation with targets, linked changes, and an improved Feature Gate Activation Schedule.
  • (Optional) Publish a public web page for observing SIMDs and their development progress. See Ethereum's EIP page.

Protocol Changes (SIMDs)

Desired architecture:

  1. Feature Creation: Anyone can create a new feature gate.
  2. Authorized Feature Queuing: An authority (multi-sig or governance) controls the queuing of features to be activated.
  3. Safeguards for Pending Activations: Expanded control over pending feature activations (ie. ability to revoke).
  4. Automated Network Partition Protection: Prevention of network partitions during feature activation via built-in runtime functionality.

✅ SIMD 1/4: Enable Core BPF Programs (#88)

  • Establish a robust process for migrating builtin (native) programs to Core BPF.

✅ SIMD 2/4: Programify Feature Gate Program (#89)

  • Migrate the (ephemeral) builtin Feature111111111111111111111111111111111111 to a Core BPF program.
  • Enable the RevokePendingActivation instruction on Feature111111111111111111111111111111111111 for revoking features queued for activation.

🟠 SIMD 3/4: Feature Gate Threshold Automation (#72)

  • Add functionality to the Feature Gate program to manage feature “recognition”, including:
    • Tracking a node’s recognized features on-chain
    • Recording this information through a well-defined program instruction
  • Implement an automated process for marking proposed features as "eligible" based on stake support, including:
    • Assessing stake support for particular features through Feature Gate program on-chain data
    • Marking eligible only those with the necessary support

SIMD 4/4: Governance for Queuing Feature Activations

  • Establish a validator governance process for queueing eligible runtime features, possibly using the existing Feature Proposal program.

✅ = SIMD merged
🟠 = SIMD pending review

Move over improvement proposals from monorepo

Problem

The Solana monorepo docs section has two directories containing previous network proposals.

Having multiple repos for proposals fragments resources and attention. Would be good to have it all in a single place.

Suggested Fix

  • Move over documents from monorepo into this repo
  • Add SIMD header and assign number
  • Preserve original Git authorship attribution

Only allow squash merges

The Git history of this repo is a monstrosity. Can disable all merge types other than squash merge to keep it concise?

discourage writing code before proposal is approved

when a feature being proposed has already been implemented in part or in full, it leads to a sparse proposal document which leans on the implementation rather than stands alone and a bias toward what already exists. this defeats the proposal process altogether as the point is to agree on what a feature should look like and publish a document that is sufficiently detailed that someone can implement it from scratch.

at most a SIMD might include mock data structures or pseudo code to help describe complex logic, but even these should be kept to an absolute minimum and described as well as possible in prose.

--

i'm not sure we've decided on how to amend existing SIMDs, but this should fit into 0001 or its successor

Question: single slot finality

I'm interested in having L2s/rollups connected to Solana. Interoperability between these would aim to have latency reduced to the minimum.

One challenge is time to finality. Is there a plan to move towards a single slot finality model in the future? Or am I missing anything?

Thanks for your time.

improve access to lint tools

current workflow is not ideal for a globally distributed team.

proposal 1: solana tech discord contributor role should be able to trigger ci / lint run on solana-foundation/solana-improvement-documents
proposal 2: ci just autoruns on every request, as long as PR doesn't touch the ci config, lint tools are pretty lightweight

Request Access (Level 3) for [Tamgros]

I'm Matt Sorg from Solana Foundation. I'll help manage and evolve of the SIMD process, and facilitate collaboration across protocol dev teams. Requesting Lvl 3 access as that'll obviously be necessary to perform this role.

Discord id: Tamgros#9322

Request Access (Level 2) for [Tamgros]

I'm Matt Sorg from Solana Foundation. I'll help managed and evolve of the SIMD process, and facilitate collaboration across protocol dev teams. Requesting Lvl 2 access as that'll obviously be necessary to perform this role.

Discord id: Tamgros#9322

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.