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

Add DIP-1 #15

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions dips/dip-0001.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<pre>
DIP: 1
Title: DIP Purpose and Guidelines
Author(s): @fed-franz
Status: Draft
Type: Process
Created: 18-08-2023
Superseded-By: /
</pre>

## What is a DIP?
DIP stands for Dusk Improvement Proposal. A DIP is a design document describing a modification or a new feature of the Dusk protocol or its processes or environment. The DIP should provide a concise technical specification of the feature and a rationale for its implementation.

DIPs are intended to be the primary mechanisms for proposing and discussing modifications to the protocol and for documenting the design decisions that have gone into Dusk. For developers, DIPs are the point of reference to keep track of both past changes and current implementation progress. As such, DIPs should provide a summary of the discussion on the proposal, including favorable and dissenting opinions, advantages and disadvantages, and the motivation for each design choice.

Changes to the proposal should be properly mentioned and described in the DIP document.

## DIP Types
There are three types of DIP:
- A **Standard Track** DIP describes a change to the Dusk protocol or design; it affects all Dusk implementations and may require changes to the applications using Dusk (e.g., the wallets). A Standard Track DIP can fall into one of these categories:
- **Core**: includes changes to consensus rules, transaction or block data structures, the VM, or any other internal component;
- **Networking**: includes changes to the underlying P2P protocol and message structures;
- **Interface**: includes changes to node and contracts' ABI;
- An **Informational** DIP describes a Dusk design issue, or provides general guidelines or information to the Dusk community, but do not propose a new feature. Informational DIPs include standard definitions and best-practice recommendations to users and developers; while important, they are not part of the Dusk protocol and can be ignored without affecting the ability to use Dusk;
- A **Process** DIP describes a process surrounding Dusk, or a change to an existing process; they may propose an implementation, but no the Dusk's codebase; they can relate to the DIP process, to development procedures, or generally to the Dusk protocol governance; Process DIPs are not simple recommendations and user and developers are typically required to stick to their instructions.

## DIP Work Flow

## What belongs in a successful DIP?

## DIP Formats and Templates

## DIP Editors

## History
This document was mostly derived from Bitcoin's [BIP-1](https://github.com/bitcoin/bips/blob/master/bip-0001.mediawiki) and Ethereum's [EIP-1](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md), both of which were derived from Python's [PEP-1](https://peps.python.org/pep-0001/).