-
Notifications
You must be signed in to change notification settings - Fork 6
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 PLEP 1 on purpose and guidelines of PLEPs #11
Changes from 7 commits
56446a3
3462c3f
c96b97a
892192a
7c770bf
153df4e
647e060
ce1e5a1
4278f02
4bc0c41
4f6e4b3
d0cdf5e
f6be1bc
8fa1376
94ee05b
8d34e1b
f9cebab
01ca59c
d8efc9c
6f304ed
7eb76c8
afef6c8
21dfc48
79457f9
ce66357
2482284
c1fdf98
2b1ef9b
60ccd86
edd6bb6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,191 @@ | ||
# PLEP-0001 -- Purpose and guidelines for PlasmaPy Enhancement Proposals | ||
|
||
| PLEP | 1 | | ||
|-------------------|-----------------------------------------------------------| | ||
| title | Purpose and guidelines for PlasmaPy Enhancement Proposals | | ||
| author(s) | Nick Murphy | | ||
| contact email | [email protected] | | ||
| date created | 2017-11-13 | | ||
| date last revised | 2018-02-04 | | ||
| type | process | | ||
| status | in preparation | | ||
|
||
## Introduction | ||
|
||
**Pl**asmaPy **E**nhancement **P**roposals (PLEPs) are design documents | ||
that provide information to the PlasmaPy community, describe | ||
decision-making processes, or propose major changes or enhancements to | ||
the code. PLEPs are intended to be the primary mechanism for proposing | ||
major changes to the direction of PlasmaPy, collecting community | ||
feedback, and documenting the reasoning behind major decisions. | ||
|
||
## Types of PLEPs | ||
|
||
There are three primary types of PLEPs: | ||
|
||
* A **standard PLEP** introduces and describes a major change to the | ||
PlasmaPy code base. Standard PLEPs may describe a new feature or | ||
subpackage, major changes to an existing package, or a backwards | ||
incompatible change to the application programming interface (API). | ||
A standard PLEP will start out as a proposal and eventually evolve | ||
into a design document if accepted. | ||
|
||
* A **process PLEP** describes a new process or change to an existing | ||
process in the management and coordination of PlasmaPy. Examples | ||
include changes to PlasmaPy decision-making processes or management | ||
structure, guidelines, or procedures. A process PLEP will start out | ||
as a proposal and eventually evolve into a document on the | ||
governance of PlasmaPy. | ||
|
||
* An **informational PLEP** provides information and does not describe | ||
any changes. | ||
|
||
## PLEP workflow | ||
|
||
A PLEP may come about when a contributor has an idea for how to improve | ||
PlasmaPy or when a Coordinating Committee member or subpackage | ||
maintainer requests a PLEP to be written before a pull request is | ||
accepted. The following subsections describe the procedure for PLEPs to | ||
be created, submitted, decided upon, amended, and implemented. Anyone | ||
who abides by the code of conduct may submit a PLEP. | ||
|
||
### Creating a PLEP | ||
|
||
Before writing a PLEP, it is generally advisable to bring up your idea | ||
on the PlasmaPy | ||
[Matrix](https://riot.im/app/#/room/#plasmapy:matrix.org)/[Gitter]( | ||
https://gitter.im/PlasmaPy/Lobby) channel and with the Coordinating | ||
Committee and/or subpackage maintainers to get initial feedback. PLEPs | ||
are not necessary for minor changes, which are often best [submitted as | ||
issues](https://github.com/PlasmaPy/PlasmaPy/issues/new) on the | ||
[PlasmaPy GitHub repository](https://github.com/PlasmaPy/PlasmaPy). | ||
|
||
A PLEP should contain a clear, concise, and well-organized description | ||
of a new idea or proposal. PLEPs should generally focus on a single | ||
topic. PLEPs should be written to be understandable to general | ||
members of the PlasmaPy community rather than just core contributors | ||
and Coordinating Committee members. However, technical details should | ||
be included when needed (e.g., when describing details about how a | ||
proposed change should be implemented). | ||
|
||
Standard PLEPs are generally only needed for major improvements to the | ||
code base such as significant restructuring of the code base or | ||
adoption of a new standard. PLEPs are more likely to be needed for | ||
changes that break backwards compatibility, especially for stable | ||
subpackages in development releases and after the release of version | ||
`1.0.0`. PLEPs are not needed for minor changes. | ||
|
||
All new PLEPs should begin with a copy of the PLEP template contained | ||
within the PlasmaPy/PlasmaPy-PLEPs repository. This copy should be | ||
renamed to `PLEP-nnnn.md` where `nnnn` should be the lowest PLEP number | ||
preceded by zeros that has not been tentatively or permanently assigned | ||
by the Coordinating Committee. The template contains a suggested | ||
outline that is most appropriate for a standard PLEP. Not all sections | ||
included in the template are required for every PLEP, and sometimes it | ||
is appropriate to create different sections. | ||
|
||
### Amending or superceding a PLEP | ||
|
||
PLEPs may be amended or superceded as PlasmaPy grows and changes. | ||
|
||
If a topic is already covered by an existing PLEP, then it is often | ||
appropriate to propose an amendment to that PLEP instead of writing a | ||
new PLEP. Amendments should not substantially change the spirit of | ||
the PLEP. Proposed amendments should update the "date last revised" | ||
category in the header. Amendments to PLEPs go through the same | ||
process as newly proposed PLEPs. | ||
|
||
When major changes to a PLEP are desired, then it is most appropriate | ||
to propose a new PLEP to supercede the old PLEP. The pull request to | ||
supersede a PLEP should change the "status" category in the header of | ||
the old PLEP to "superseded by PLEP N" where N is the number of the new | ||
PLEP not preceded by zeros. | ||
|
||
When PLEPs are amended or superseded, it is generally helpful to request | ||
reviews from the authors of the original PLEP. | ||
|
||
Minor changes to a PLEP that do not affect its meaning or intent (e.g., | ||
formatting changes, fixes to typos, updates to links, minor rewording to | ||
improve clarity, and reversing cosmic ray bit flips) do not need to go | ||
through the full review process, but do require approval by the | ||
Coordinating Committee. | ||
|
||
### Submitting a PLEP | ||
|
||
All new PLEPs and amendments to PLEPs should be submitted as pull | ||
requests into the PlasmaPy-PLEP repository. The pull request should be | ||
created while the PLEP is being written to allow for greater | ||
transparency and community input during the writing process. In this | ||
case, the sponsor should comment on the pull request and inform the | ||
Coordinating Committee when the proposed PLEP is ready for review. | ||
|
||
### Review process | ||
|
||
When a new PLEP or an amendment to a PLEP is submitted, the Coordinating | ||
Committee should appoint one of its members to be the PLEP's editor. The | ||
editor is responsible for aiding the sponsor by making sure that the | ||
PLEP follows the accepted standard and facilitating communication | ||
between the sponsor and the Coordinating Committee. The editor and | ||
sponsor may be the same person. | ||
|
||
When the sponsor and editor decide that the proposal is ready for | ||
broader discussion, then they should email the PlasmaPy list to | ||
introduce the PLEP and request community feedback. The status of the | ||
PLEP should be changed to "Discussion" at this time. Community | ||
discussion should take place through normal communication channels such | ||
as the Matrix/Gitter channel, on the pull request on GitHub, and video | ||
conferences. Concerns that are raised should be constructive and made in | ||
accordance with the PlasmaPy code of conduct. Important points and | ||
relevant meeting minutes should be recorded as comments on the GitHub | ||
pull request so that the community discussion may be archived. During | ||
the discussion phase, the sponsor should revise the PLEP in order to | ||
address concerns raised by the community. Others may propose changes as | ||
well. The discussion should continue until a general consensus among the | ||
PlasmaPy community has been reached. | ||
|
||
The Coordinating Committee is tasked with making the final decision on | ||
the PLEP. A PLEP shall be accepted when approved by at least two-thirds | ||
of the Coordinating Committee. | ||
|
||
### PLEP status | ||
|
||
The status of a standard or process PLEP may be any of the following: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can an informational PLEP have status or is it omitted? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I was wondering about this. The status for informational enhancement proposals for other projects is usually "Discussion" but this doesn't seem quite the best way to go about it. Maybe omitting the status of informational PLEPs would be best. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe. But then explicit is better than implicit, right? Perhaps just 'information' would do? |
||
|
||
* **In preparation**: The PLEP is currently being written. Community | ||
input is welcome during this phase so that concerns may be addressed | ||
earlier rather than later. | ||
|
||
* **Discussion**: The PLEP is currently being considered and getting | ||
community feedback before a decision has been made. This is the | ||
default status for informational PLEPs that have been completed. | ||
|
||
* **Accepted**: The PLEP has been accepted and it will be assigned a | ||
number and merged into the PlasmaPy/PlasmaPy-PLEPs repository. A | ||
decision rationale must be drafted and added to the PLEP by the | ||
sponsor of the PLEP or by someone appointed by the Coordinating | ||
Committee. Features proposed in standard PLEPs may now be | ||
implemented. Process PLEPs come into effect when accepted. | ||
|
||
* **Implemented**: The feature discussed in a standard PLEP has been | ||
fully implemented and merged into the main repository. At least | ||
half of the Coordinating Committee must agree that the | ||
implementation (including documentation and tests) is complete. A | ||
summary of the implementation process should be added to the PLEP | ||
when this status is reached. This summary should include links to | ||
the issues and pull requests associated with this PLEP that were | ||
created after the PLEP was accepted. | ||
|
||
* **Declined**: The community and Coordinating Committee decided against | ||
a proposed PLEP. A decision rationale should be provided by the | ||
sponsor and/or Coordinating Committee. The PLEP should still be | ||
assigned a number and merged into the main repository. A future PLEP | ||
may supercede this decision. | ||
|
||
* **Superseded**: THe PLEP is no longer in effect and has been replaced | ||
by another PLEP. | ||
|
||
Informational PLEPs that are being written should have a status of | ||
**in preparation**, and **informational** when it is sufficiently | ||
complete. Informational PLEPs may also have a statuses of **outdated** | ||
when the some of the information is out-of-date and needs updating, or | ||
**obsolete** when the PLEP is no longer needed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we have any kind of formal template for such a document? Or would the PLEP remain as is and be marked as a PLEP about governance?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is a PLEP template but that's more for standard PLEPs. Do you think we should have separate standard PLEP and process PLEP templates?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not necessarily - I'm just not clear on how a PLEP is different once it becomes a 'document on the governance of PlasmaPy'. I guess what I really mean to ask is is it the same document or once it's accepted are we then going to reconstitute it into a more formal document somewhere else?