-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Improve contribution guide & readme, add code of conduct #5068
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
Changes from 15 commits
b733954
6df7dff
63fb73f
5f39303
7a402a3
3d931e2
594aeb2
58f1123
f9aec7d
96d1616
8fb8d80
32e374d
518d2ea
01dd22b
5c73c7c
e367692
f69d47d
191c829
c22e23b
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 | ||||
---|---|---|---|---|---|---|
@@ -1,4 +1,42 @@ | ||||||
# Contributing to plotly.js | ||||||
# Contributing to Plotly.js | ||||||
|
||||||
Thanks for your interest in contributing to Plotly.js! We are actively looking for | ||||||
diverse contributors, with diverse background and skills. | ||||||
|
||||||
## Code of Conduct | ||||||
|
||||||
Please check out our [Code of Conduct](code_of_conduct.md). Don't tl:dr; it | ||||||
but the general idea is to be nice. | ||||||
|
||||||
## Plotly.js vs Plotly.py and Plotly.R | ||||||
|
||||||
[Plotly.js](https://plotly.com/javascript) is a standalone Javascript data visualization library, and it also powers the Python and R modules named `plotly` in those respective ecosystems (referred to as [Plotly.py](https://plotly.com/python) and [Plotly.R](http://plotly.com/r), respectively, for clarity). There also exist Plotly.js-powered libraries for other languages such as Julia, Scala, Rust, .NET and even C++! | ||||||
|
||||||
The basic architecture of Plotly.js is to accept [JSON](https://json.org/) representation of figures that adhere to the [figure schema](https://plotly.com/javascript/reference/index/) and draw interactive graphical representations of these figures in a browser. Libraries in other languages like Python and R provide idiomatic interfaces for users of those languages to create and manipulate these JSON structures, and arrange for them to be rendered in a browser context by Plotly.js. This means that in many cases, when a Python or R user wishes to add a feature to the library they know as `plotly`, the relevant changes must be implemented in Plotly.js, in this repo. | ||||||
|
||||||
## How do changes get made to Plotly.js? | ||||||
|
||||||
A **new feature** is composed of additions to the schema - adding new attributes, adding entire new trace types, or just adding new values to existing attributes - along with the associated drawing code. This project has a strong commitment to backwards-compatibility, so changing the graphical output for existing schema attributes and values, or changing the default value of an attribute, is generally only done as a mostly-backwards-compatible **bug fix**, for cases when the current graphical output is incorrect, nonsensical or otherwise very problematic. Non-schema-related features and bug fixes are possible as well, usually around performance, security, bundling, function signatures etc, and generally follow the same principles. | ||||||
|
||||||
The basic process for adding new features or fixing bugs is as follows: | ||||||
|
||||||
1. **Discussion** - A community member or maintainer creates an issue to discuss the use-case for the new feature. This usually entails describing the desired graphical output and discussing how close the current system can get to specifying or drawing such a figure. If the issue is perceived to be a bug, the discussion revolves around understanding how the current behaviour is incorrect or problematic, and how existing users of the system would be impacted by a change in this behaviour. | ||||||
2. **Proposal** - If the current system cannot specify or draw such a figure, or if the way to do it is too onerous, the next step is to discuss or propose a specific change to the schema: new attributes to be added or new accepted values to new attributes, along with a prose description of the proposed drawing code. If the issue is determined to be a bug rather than a feature, the same type of proposal is required: a definition of which attributes and values will be impacted by the proposed change. A good proposal includes discussion of whether or not existing attributes can be modified rather than adding new attributes and details about which trace types or subplot types are impacted by the change. | ||||||
3. **Iteration** - The maintainers of the library or any other interested community member will then give feedback on the proposal, usually focused on consistency with the rest of the schema, and helping define a test plan to further elaborate potential edge cases. | ||||||
4. **Approval** - After a number of iterations, the maintainers of the library will generally approve a proposal with an informal "this seems like something we would accept a pull request for" comment in the issue. | ||||||
5. **Development** - A community member or maintainer creates a branch and makes the appropriate modifications to the code and tests and opens a pull request. | ||||||
6. **Review** - The maintainers of the library will review the pull request, working with the original authors to ensure the code is ready for merging. | ||||||
|
6. **Review** - The maintainers of the library will review the pull request, working with the original authors to ensure the code is ready for merging. | |
6. **Review** - The maintainers of the library will review the pull request, working with the original authors to ensure the code is ready for merging. Iterations during review may take a bit of time, so be patient! In some cases it may also happen that the pull request cannot be merged for some reasons, but the process of starting by a discussion in an issue reduces the occurrence of this situation. |
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.
or something like that :-). I wanted to make sure that people know that it's not a completely linear process, sometimes unexpected difficulties arise, or life happens, or...
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -112,14 +112,14 @@ Building instructions using `webpack`, `browserify` and other build frameworks a | |
|
||
## Bugs and feature requests | ||
|
||
Have a bug or a feature request? Please first read the [issues guidelines](https://github.com/plotly/plotly.js/blob/master/CONTRIBUTING.md#opening-issues). | ||
Have a bug or a feature request? Please [open a Github issue](https://github.com/plotly/plotly.js/issues/new) keeping in mind the [issue guidelines](https://github.com/plotly/plotly.js/blob/master/.github/ISSUE_TEMPLATE.md). You may also want to read about [how changes get made to Plotly.js](https://github.com/plotly/plotly.js/blob/masterCONTRIBUTING.md) | ||
|
||
## Documentation | ||
|
||
Official plotly.js documentation is hosted on [plotly.com/javascript](https://plotly.com/javascript). | ||
Official plotly.js documentation is hosted at [https://plotly.com/javascript](https://plotly.com/javascript). | ||
|
||
These pages are generated by the Plotly [graphing-library-docs repo](https://github.com/plotly/graphing-library-docs) built with [Jekyll](https://jekyllrb.com/) and publicly hosted on GitHub Pages. | ||
For more info about contributing to Plotly documentation, please read through [contributing guidelines](https://github.com/plotly/documentation/blob/source/Contributing.md). | ||
For more info about contributing to Plotly documentation, please read through [contributing guidelines](https://github.com/plotly/graphing-library-docs/blob/master/README.md). | ||
|
||
## Contributing | ||
|
||
|
@@ -128,7 +128,6 @@ Please read through our [contributing guidelines](https://github.com/plotly/plot | |
## Community | ||
|
||
* Follow [@plotlygraphs](https://twitter.com/plotlygraphs) on Twitter for the latest Plotly news. | ||
* Follow [@plotly_js](https://twitter.com/plotly_js) on Twitter for plotly.js release updates. | ||
* Implementation help may be found on community.plot.com (tagged [`plotly-js`](https://community.plotly.com/c/plotly-js)) or | ||
on Stack Overflow (tagged [`plotly`](https://stackoverflow.com/questions/tagged/plotly)). | ||
* Developers should use the keyword `plotly` on packages which modify or add to the functionality of plotly.js when distributing through [npm](https://www.npmjs.com/browse/keyword/plotly). | ||
|
@@ -145,42 +144,35 @@ Open-source clients to the plotly.js APIs are available at these links: | |
|
||
| | GitHub repo | Getting started | | ||
|---|--------|---------| | ||
|**R / RStudio**| [ropensci/plotly](https://github.com/ropensci/plotly) | [plotly/r/getting-started](https://plotly.com/r/getting-started) | | ||
|**Python / Pandas / IPython notebook**| [plotly/plotly.py](https://github.com/plotly/plotly.py) | [plotly/python/getting-started](https://plotly.com/python/getting-started) | | ||
|**R / RStudio**| [ropensci/plotly](https://github.com/ropensci/plotly) | [plotly/r/getting-started](https://plotly.com/r/getting-started) | | ||
|**MATLAB**| [plotly/matlab-api](https://github.com/plotly/matlab-api) | [plotly/matlab/getting-started](https://plotly.com/matlab/getting-started) | | ||
|**node.js / Tonicdev / Jupyter notebook**| [plotly/plotly-notebook-js](https://github.com/plotly/plotly-notebook-js) | | | ||
|
||
## Creators | ||
|
||
### Active | ||
|
||
| | GitHub | Twitter | | ||
|---|--------|---------| | ||
|**Alex C. Johnson**| [@alexcjohnson](https://github.com/alexcjohnson) | | | ||
|**Étienne Tétreault-Pinard**| [@etpinard](https://github.com/etpinard) | [@etpinard](https://twitter.com/etpinard) | | ||
|**Antoine Roy-Gobeil** | [@antoinerg](https://github.com/antoinerg) | | | ||
|**Mojtaba Samimi** | [@archmoj](https://github.com/archmoj) | [@solarchvision](https://twitter.com/solarchvision) | | ||
|
||
### Hall of Fame | ||
|
||
| | GitHub | Twitter | | ||
|---|--------|---------| | ||
|**Mikola Lysenko**| [@mikolalysenko](https://github.com/mikolalysenko) | [@MikolaLysenko](https://twitter.com/MikolaLysenko) | | ||
|**Ricky Reusser**| [@rreusser](https://github.com/rreusser) | [@rickyreusser](https://twitter.com/rickyreusser) | | ||
|**Dmitry Yv.** | [@dy](https://github.com/dy) | [@DimaYv](https://twitter.com/dimayv)| | ||
|**Robert Monfera**| [@monfera](https://github.com/monfera) | [@monfera](https://twitter.com/monfera) | | ||
|**Robert Möstl** | [@rmoestl](https://github.com/rmoestl) | [@rmoestl](https://twitter.com/rmoestl) | | ||
|**Nicolas Riesco**| [@n-riesco](https://github.com/n-riesco) | | | ||
|**Miklós Tusz**| [@mdtusz](https://github.com/mdtusz) | [@mdtusz](https://twitter.com/mdtusz)| | ||
|**Chelsea Douglas**| [@cldougl](https://github.com/cldougl) | | | ||
|**Ben Postlethwaite**| [@bpostlethwaite](https://github.com/bpostlethwaite) | | | ||
|**Chris Parmer**| [@chriddyp](https://github.com/chriddyp) | | | ||
|**Alex Vados**| [@alexander-daniel](https://github.com/alexander-daniel) | | | ||
## Notable Contributors | ||
|
||
| | GitHub | Twitter | Status | | ||
|---|--------|---------|--------| | ||
|**Mojtaba Samimi** | [@archmoj](https://github.com/archmoj) | [@solarchvision](https://twitter.com/solarchvision) | Active, Maintainer | | ||
|
||
|**Alex C. Johnson**| [@alexcjohnson](https://github.com/alexcjohnson) | | Active, Maintainer | | ||
|**Antoine Roy-Gobeil** | [@antoinerg](https://github.com/antoinerg) | | Active, Maintainer | | ||
|**Nicolas Kruchten** | [@nicolaskruchten](https://github.com/nicolaskruchten) | [@nicolaskruchten](https://twitter.com/nicolaskruchten) | Active | | ||
|**Jon Mease** | [@jonmmease](https://github.com/jonmmease) | [@jonmmease](https://twitter.com/jonmmease) | Active | | ||
|**Étienne Tétreault-Pinard**| [@etpinard](https://github.com/etpinard) | [@etpinard](https://twitter.com/etpinard) | Hall of Fame | | ||
|**Mikola Lysenko**| [@mikolalysenko](https://github.com/mikolalysenko) | [@MikolaLysenko](https://twitter.com/MikolaLysenko) | Hall of Fame | | ||
|**Ricky Reusser**| [@rreusser](https://github.com/rreusser) | [@rickyreusser](https://twitter.com/rickyreusser) | Hall of Fame | | ||
|**Dmitry Yv.** | [@dy](https://github.com/dy) | [@DimaYv](https://twitter.com/dimayv)| Hall of Fame | | ||
|**Robert Monfera**| [@monfera](https://github.com/monfera) | [@monfera](https://twitter.com/monfera) | Hall of Fame | | ||
|**Robert Möstl** | [@rmoestl](https://github.com/rmoestl) | [@rmoestl](https://twitter.com/rmoestl) | Hall of Fame | | ||
|**Nicolas Riesco**| [@n-riesco](https://github.com/n-riesco) | | Hall of Fame | | ||
|**Miklós Tusz**| [@mdtusz](https://github.com/mdtusz) | [@mdtusz](https://twitter.com/mdtusz)| Hall of Fame | | ||
|**Chelsea Douglas**| [@cldougl](https://github.com/cldougl) | | Hall of Fame | | ||
|**Ben Postlethwaite**| [@bpostlethwaite](https://github.com/bpostlethwaite) | | Hall of Fame | | ||
|**Chris Parmer**| [@chriddyp](https://github.com/chriddyp) | | Hall of Fame | | ||
|**Alex Vados**| [@alexander-daniel](https://github.com/alexander-daniel) | | Hall of Fame | | ||
|
||
## Copyright and license | ||
|
||
Code and documentation copyright 2020 Plotly, Inc. | ||
|
||
Code released under the [MIT license](https://github.com/plotly/plotly.js/blob/master/LICENSE). | ||
|
||
Docs released under the [Creative Commons license](https://github.com/plotly/documentation/blob/source/LICENSE). |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
# Contributor Covenant Code of Conduct | ||
|
||
## Our Pledge | ||
|
||
In the interest of fostering an open and welcoming environment, we as | ||
contributors and maintainers pledge to making participation in our project and | ||
our community a harassment-free experience for everyone, regardless of age, body | ||
size, disability, ethnicity, gender identity and expression, level of experience, | ||
nationality, personal appearance, race, religion, or sexual identity and | ||
orientation. | ||
|
||
## Our Standards | ||
|
||
Examples of behavior that contributes to creating a positive environment | ||
include: | ||
|
||
* Using welcoming and inclusive language | ||
* Being respectful of differing viewpoints and experiences | ||
* Gracefully accepting constructive criticism | ||
* Focusing on what is best for the community | ||
* Showing empathy towards other community members | ||
|
||
Examples of unacceptable behavior by participants include: | ||
|
||
* The use of sexualized language or imagery and unwelcome sexual attention or | ||
advances | ||
* Trolling, insulting/derogatory comments, and personal or political attacks | ||
* Public or private harassment | ||
* Publishing others' private information, such as a physical or electronic | ||
address, without explicit permission | ||
* Other conduct which could reasonably be considered inappropriate in a | ||
professional setting | ||
|
||
## Our Responsibilities | ||
|
||
Project maintainers are responsible for clarifying the standards of acceptable | ||
behavior and are expected to take appropriate and fair corrective action in | ||
response to any instances of unacceptable behavior. | ||
|
||
Project maintainers have the right and responsibility to remove, edit, or | ||
reject comments, commits, code, wiki edits, issues, and other contributions | ||
that are not aligned to this Code of Conduct, or to ban temporarily or | ||
permanently any contributor for other behaviors that they deem inappropriate, | ||
threatening, offensive, or harmful. | ||
|
||
## Scope | ||
|
||
This Code of Conduct applies both within project spaces and in public spaces | ||
when an individual is representing the project or its community. Examples of | ||
representing a project or community include using an official project e-mail | ||
address, posting via an official social media account, or acting as an appointed | ||
representative at an online or offline event. Representation of a project may be | ||
further defined and clarified by project maintainers. | ||
|
||
## Enforcement | ||
|
||
Instances of abusive, harassing, or otherwise unacceptable behavior may be | ||
reported by contacting the project team at [email protected] or [email protected]. All | ||
|
||
complaints will be reviewed and investigated and will result in a response that | ||
is deemed necessary and appropriate to the circumstances. The project team is | ||
obligated to maintain confidentiality with regard to the reporter of an incident. | ||
Further details of specific enforcement policies may be posted separately. | ||
|
||
Project maintainers who do not follow or enforce the Code of Conduct in good | ||
faith may face temporary or permanent repercussions as determined by other | ||
members of the project's leadership. | ||
|
||
## Attribution | ||
|
||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, | ||
available at [http://contributor-covenant.org/version/1/4][version] | ||
|
||
[homepage]: http://contributor-covenant.org | ||
[version]: http://contributor-covenant.org/version/1/4/ |
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.
put here a few sentences explaining the organization of this document? It is quite long so it might be worth it. In particular some people will be looking specifically for out to set up a development environment.