diff --git a/dips/dip-0001.md b/dips/dip-0001.md new file mode 100644 index 0000000..dc19886 --- /dev/null +++ b/dips/dip-0001.md @@ -0,0 +1,36 @@ +
+ DIP: 1 + Title: DIP Purpose and Guidelines + Author(s): @fed-franz + Status: Draft + Type: Process + Created: 18-08-2023 + Superseded-By: / ++ +## 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/). \ No newline at end of file