Skip to content

Latest commit

 

History

History
174 lines (100 loc) · 12.5 KB

m03ip-1.md

File metadata and controls

174 lines (100 loc) · 12.5 KB
M03IP: 1
  Title: M03IP Purpose and Guidelines
  Status: Draft
  Type: Meta
  Author: Jason Coombs <[email protected]>
  Created: 2017-11-20

What is a M03IP?

M03IP stands for M0nk3y Improvement Proposal. A M03IP is a design document providing information to the M0nk3y community, or describing a new feature for Decentralized Hedge Funds or their processes or enabling technology and cryptoeconomics. The M03IP should provide a concise technical explanation of the idea and proposal, with rationale for the improvement. The M03IP author is responsible for building consensus within the community and documenting dissenting opinions.

M03IP Rationale

We intend M03IPs to be the primary mechanisms for proposing new ideas, for collecting community input on an issue, and for documenting the design decisions that have gone into M0nk3y as the model of all future Decentralized Hedge Funds. Because the M03IPs are maintained as text files in a versioned repository, their revision history is the historical record of the improvement proposal and chronicles the evolution of the Decentralized Hedge Fund concept and its enabling technology, practices and procedures.

For Decentralized Hedge Funds, and other developers of M03 Money Supply or related cryptoeconomic systems, M03IPs are a convenient way to track the progress of their evolution, compatibility and technical implementation. Ideally each Decentralized Hedge Fund or Decentralized Hedge Fund Manager would list the M03IPs that they have adopted. This will give end users, Coeval partners, third-party developers and customers a convenient way to know the current status of a given Decentralized Hedge Fund or the features supported by software used in operations of M03 Money Supply-compatible cryptoeconomic engineering projects.

M03IP Work Flow

The M03IP repository Collaborators change the M03IPs status. Please send all M03IP-related email to the M03IP Collaborators, which is listed under M03IP Editors below. Also see M03IP Editor Responsibilities & Workflow.

The M03IP process begins with a new idea for some technical aspect of a Decentralized Hedge Fund or its products, operations, policies, security or enabling technology. It is highly recommended that a single M03IP contain a single key proposal or new idea. The more focused the M03IP, the more successful it is likely to be. The M03IP editor reserves the right to reject M03IP proposals if they appear too unfocused or too broad. If in doubt, split your M03IP into several well-focused ones.

Each M03IP must have a champion - someone who writes the M03IP using the style and format described below, shepherds the discussions in the appropriate forums, and attempts to build community consensus around the idea.

Vetting an idea publicly before going as far as writing a M03IP is meant to save the potential author time. Asking the Decentralized Hedge Fund community first if an idea is original helps prevent too much time being spent on something that is guaranteed to be rejected based on prior discussions (searching the Internet does not always do the trick). It also helps to make sure the idea is applicable to the entire Decentralized Hedge Fund community and not just to the author or to some obscure feature or practice of M0nk3y as the pioneer of the concept. It should be understood that M0nk3y will do things that no other Decentralized Hedge Fund will ever do, for reasons that make no sense. Just because an idea sounds good to the author does not mean it will work for most people in most areas where a Decentralized Hedge Fund may operate or where its enabling technology is used. The Issues section of this repository is an excellent place to discuss your proposal with the community and start creating more formalized language around your M03IP.

Once the champion has asked the Decentralized Hedge Fund community whether an idea has any chance of acceptance a draft M03IP should be presented as a pull request. This gives the author a chance to continuously edit the draft M03IP for proper formatting and quality. This also allows for further public comment and the author of the M03IP to address concerns about the proposal.

If the M03IP collaborators approve, the M03IP editor will assign the M03IP a number (generally the issue or PR number related to the M03IP), label it as Standards Track, Informational, or Meta, give it status “Draft”, and add it to the git repository. The M03IP editor will not unreasonably deny a M03IP. Reasons for denying M03IP status include duplication of effort, being technically unsound, not providing proper motivation or addressing international regulatory compliance, or not in keeping with the Decentralized Hedge Fund philosophy.

What belongs in a successful M03IP?

Each M03IP should have the following parts:

  • Preamble - RFC 822 style headers containing metadata about the M03IP, including the M03IP number, a short descriptive title (limited to a maximum of 44 characters), the names, and optionally the contact info for each author, etc.
  • Simple Summary - “If you can’t explain it simply, you don’t understand it well enough.” Provide a simplified and layman-accessible explanation of the M03IP.
  • Abstract - a short (~200 word) description of the technical issue being addressed.
  • Motivation (*optional) - The motivation is critical for M03IPs that want to change the world. It should clearly explain why the existing structure and function of civilization is inadequate to address the problem that the M03IP solves. M03IP submissions without sufficient motivation may be rejected outright.
  • Specification - The technical specification should describe in technical detail any new feature, functionality, process, policy, business model, product, service, or other cryptoeconomic system enhancement being proposed. The specification should be detailed enough to allow competing, interoperable implementations by any software developer or Decentralized Hedge Fund Manager who decides to implement the M03IP.
  • Rationale - The rationale fleshes out the specification by describing what motivated the cryptoeconomic engineering design and why particular design decisions were made. It should describe alternate designs that were considered and related work, e.g. how the proposal addresses international regulatory compliance concerns. The rationale may also provide evidence of consensus within the community, and should discuss important objections or concerns raised during discussion.
  • Implementations - The implementations must be completed before any M03IP is given status “Final”, but it need not be completed before the M03IP is accepted. While there is merit to the approach of reaching consensus on the specification and rationale before writing code, the principle of “rough consensus and running code” is still useful when it comes to resolving many discussions of technical details.

M03IP Formats and Templates

M03IPs should be written in markdown format. Image files should be included in a subdirectory for that M03IP.

M03IP Header Preamble

Each M03IP must begin with an RFC 822 style header preamble. The headers must appear in the following order. Headers marked with "*" are optional and are described below. All other headers are required.

M03IP:< M03IP number > (this is determined by the M03IP editor)

Title:< M03IP title >

Author:< list of authors' real names, crypto wallet addresses, GitHub or chat usernames, and optionally, email addresses >

Status:< Draft | Active | Accepted | Deferred | Rejected | Withdrawn | Final | Superseded >

Created:< date created on, in ISO 8601 (yyyy-mm-dd) format >

* Requires:< M03IP numbers >

* Replaces:< M03IP number >

* Superseded-By:< M03IP number >

* Permalink:< url >

Note: The Permalink header is required for Final M03IPs only. It contains a URL that should point to a web resource where the ANNOUNCEMENT about the final approval of the M03IP is made.

The Created header records the date that the M03IP was assigned a number. Both headers should be in yyyy-mm-dd format, e.g. 2001-08-14.

M03IPs may have a Requires header, indicating the M03IP numbers that this M03IP depends on.

M03IPs may also have a Superseded-By header indicating that a M03IP has been rendered obsolete by a later document; the value is the number of the M03IP that replaces the current document. The newer M03IP must have a Replaces header containing the number of the M03IP that it rendered obsolete.

Auxiliary Files

M03IPs may include auxiliary files such as diagrams. Such files must be named M03IP-XXXX-Y.ext, where “XXXX” is the M03IP number, “Y” is a serial number (starting at 1), and “ext” is replaced by the actual file extension (e.g. “png”).

Transferring M03IP Ownership

It occasionally becomes necessary to transfer ownership of M03IPs to a new champion. In general, we'd like to retain the original author as a co-author of the transferred M03IP, but that's really up to the original author. A good reason to transfer ownership is because the original author no longer has the time or interest in updating it or following through with the M03IP process, or has fallen off the face of the 'net (i.e. is unreachable or not responding to email). A bad reason to transfer ownership is because you don't agree with the direction of the M03IP. We try to build consensus around a M03IP, but if that's not possible, you can always submit a competing M03IP.

If you are interested in assuming ownership of a M03IP, send a message asking to take over, addressed to both the original author and the M03IP editor. If the original author doesn't respond to email in a timely manner, the M03IP editor will make a unilateral decision (it's not like such decisions can't be reversed :).

M03IP Editors

The current M03IP editors are

* Jason Coombs (@JasonCoombs)

* Emily Coombs (@EmilyCoombs)

* Ocean Coombs (@OceanCoombs)

* Daniel Harrison (@dmhco)

M03IP Editor Responsibilities and Workflow

For each new M03IP that comes in, an editor does the following:

  • Read the M03IP to check if it is ready: sound and complete. The ideas must make rational sense, present a prima facie law-abiding premise, and be at least self-consistent even if they don't seem likely to be accepted.
  • The title should accurately describe the content.
  • Edit the M03IP for language (spelling, grammar, sentence structure, etc.), markup (Github flavored Markdown), code style

If the M03IP isn't ready for publication, the editor will send it back to the author for revision, with specific instructions.

Once the M03IP is ready for the repository, the M03IP editor will:

    1. Send a message back to the M03IP author(s) with next step.

The editors don't pass judgment on M03IPs. We merely do the administrative & editorial part.

History

This document was derived heavily from Bitcoin's BIP-0001 written by Amir Taaki which in turn was derived from Python's PEP-0001. In many places text was simply copied and modified. Although the PEP-0001 text was written by Barry Warsaw, Jeremy Hylton, and David Goodger, they are not responsible for its use in the M0nk3y Improvement Proposal process, and should not be bothered with technical questions specific to M0nk3y, other Decentralized Hedge Funds or the M03IP. Please direct all comments to the M03IP editors.

November 20, 2017: M03IPs are now a thing. Derived from Ethereum Improvement Proposals.

December 7, 2016: EIP 1 was improved and placed as a PR.

February 1, 2016: EIP 1 added editors, made draft improvements to process, and merged with Master stream.