Skip to content
This repository has been archived by the owner on Nov 6, 2020. It is now read-only.

docs: Update Readme with TOC, Contributor Guideline. Update Cargo package descriptions #10652

Merged
merged 45 commits into from
Jun 25, 2019
Merged
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
39b5ae9
docs: Update Readme with TOC, Contributor Guide and License sections
ltfschoen May 13, 2019
4dd7577
docs: Simplify package descriptions in Readme
ltfschoen May 13, 2019
950d634
docs: Fix typos
ltfschoen May 13, 2019
11834e3
docs: Update Cargo package configs adding missing descriptions
ltfschoen May 13, 2019
f91f26d
fix: Remove machine since was accidental from diff branch. Fix contri…
ltfschoen May 13, 2019
5892bca
fix: Fix formatting
ltfschoen May 13, 2019
dfacb82
remove details snippet since not code and formats badly
ltfschoen May 13, 2019
a37742e
review-fix: Remove duplicate description
ltfschoen May 13, 2019
049135e
fix dot point formatting
ltfschoen May 13, 2019
10205c9
fix: Add missing description to vm package
ltfschoen May 14, 2019
cf05a7d
fix: Remove duplicate Code of Conduct and Contributor guidelines
ltfschoen May 14, 2019
bc30b00
docs: Update Contributing for consistency with other repos
ltfschoen May 14, 2019
a8132d7
docs: Update Readme to link to existing Code of Conduct and Contribut…
ltfschoen May 14, 2019
8124328
refactor: Add missing space
ltfschoen May 14, 2019
e6e5f82
fix: Fix links to be markdown format
ltfschoen May 14, 2019
c7f2a87
review-fix: Update CONTRIBUTING.md to link to Parity Ethereum Style G…
ltfschoen May 15, 2019
8a139c8
merge latest master and fix conflicts
ltfschoen May 28, 2019
282a4e3
Merge branch 'master' into luke-readme2
ltfschoen Jun 6, 2019
c40158c
docs: Fix type in .github/CONTRIBUTING.md
ltfschoen Jun 6, 2019
d1ec475
docs: Fix typo in .github/CONTRIBUTING.md
ltfschoen Jun 6, 2019
e7ac760
docs: Rephrase parity-clib/Cargo.toml
ltfschoen Jun 6, 2019
b820960
review-fix: Fix whole paragraph
ltfschoen Jun 6, 2019
b9f6384
review-fix: Add comment to prevent direct pushes to master branch
ltfschoen Jun 6, 2019
a8fb47d
review-fix: Change some rules to recommendations
ltfschoen Jun 6, 2019
cdaa2a7
Update .github/CONTRIBUTING.md
ltfschoen Jun 6, 2019
c1163ef
review-fix: Replace feature reduction with breaking changes dot point
ltfschoen Jun 6, 2019
851499d
review-fix: Rephrase what to do when reviewing PR
ltfschoen Jun 6, 2019
e9e3920
review-fix: Update parity-rpc package description and module rustdocs
ltfschoen Jun 6, 2019
8d0e013
docs: Add missing fullstop
ltfschoen Jun 6, 2019
95dd2cb
review-fix: Update rustdoc section to show all packages first as default
ltfschoen Jun 6, 2019
e87b8ba
review-fix: Rename Parity Util to Parity Core Libraries
ltfschoen Jun 6, 2019
68578b4
review-fix: Rename readme too for the C bindings name change
ltfschoen Jun 6, 2019
39cdd6f
review-fix: Remove some docs since we do not teach the reader Rust
ltfschoen Jun 6, 2019
55d1a3e
review-fix: Wrap Parity Ethereum specific packages in a details section
ltfschoen Jun 6, 2019
d880c01
review-fix: Separate tools that are in this repo vs those that are not
ltfschoen Jun 6, 2019
46b5e94
review-fix: Add link to ethabi on crates.io
ltfschoen Jun 6, 2019
c1a71f2
review-fix: Remove unnecessary extra line talking about pushing to ma…
ltfschoen Jun 11, 2019
4a85e6c
Merge branch 'master' into luke-readme2
ltfschoen Jun 19, 2019
805e39d
review-fix: Remove useless summary of parts of the rust book document…
ltfschoen Jun 21, 2019
c095637
docs: Update .github/CONTRIBUTING.md to specify two reviewers required
ltfschoen Jun 21, 2019
9f69b61
docs: Update README.md with simplification
ltfschoen Jun 21, 2019
b89af4f
docs: Update README.md renaming to Test Runner instead of just Run
ltfschoen Jun 21, 2019
68d0f15
review-fix: Remove hardware wallet from docs
ltfschoen Jun 21, 2019
488d9d7
review-fix: Remove veto PR section of contributor doc
ltfschoen Jun 21, 2019
8bfadc0
review-fix: Change to test generator title
ltfschoen Jun 25, 2019
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
43 changes: 42 additions & 1 deletion .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,48 @@ Also, try to include **steps to reproduce** the issue and expand on the **actual

If you would like to contribute to Parity Ethereum, please **fork it**, fix bugs or implement features, and [propose a pull request](https://github.com/paritytech/parity-ethereum/compare).

Please, refer to the [Coding Guide](https://wiki.parity.io/Coding-guide) in our wiki for more details about hacking on Parity.
### Labels & Milestones

We use [labels](https://github.com/paritytech/parity-ethereum/labels) to manage PRs and issues and communicate the state of a PR. Please familiarize yourself with them. Furthermore we are organizing issues in [milestones](https://github.com/paritytech/parity-ethereum/milestones). Best way to get started is to a pick a ticket from the current milestone tagged [`easy`](https://github.com/paritytech/parity-ethereum/labels/Q2-easy%20%F0%9F%92%83) and get going, or [`mentor`](https://github.com/paritytech/parity-ethereum/labels/Q1-mentor%20%F0%9F%95%BA) and get in contact with the mentor offering their support on that larger task.

### Rules

There are a few basic ground-rules for contributors (including the maintainer(s) of the project):

* **No `--force` pushes** or modifying the master branch history in any way. If you need to rebase, ensure you do it in your own repo.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we even allow pushing directly to master? We shouldn't.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've addressed this in commit b9f6384

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then I think this line is redundant then - if you can't push to master you can't --force push to master either.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've addressed this in another commit c1a71f2

* **No pushing directly to the master branch**.
* **All modifications** must be made in a **pull-request** to solicit feedback from other contributors.
* A pull-request *must not be merged until CI* has finished successfully.
ltfschoen marked this conversation as resolved.
Show resolved Hide resolved
* Contributors should adhere to the [Parity Ethereum Style Guide](https://wiki.parity.io/Parity-Ethereum-Style-Guide).

### Recommendations

* **Non-master branch names** *should* be prefixed with a short name moniker, followed by the associated Github Issue ID (if any), and a brief description of the task using the format `<GITHUB_USERNAME>-<ISSUE_ID>-<BRIEF_DESCRIPTION>` (e.g. `gavin-123-readme`). The name moniker helps people to inquiry about their unfinished work, and the GitHub Issue ID helps your future self and other developers (particularly those who are onboarding) find out about and understand the original scope of the task, and where it fits into Parity Ethereum [Projects](https://github.com/paritytech/parity-ethereum/projects).
* **Remove stale branches periodically**

### Preparing Pull Requests

* If your PR does not alter any logic (e.g. comments, dependencies, docs), then it may be tagged [`insubstantial`](https://github.com/paritytech/parity-ethereum/pulls?q=is%3Aopen+is%3Apr+label%3A%22A2-insubstantial+%F0%9F%91%B6%22).

* Once a PR is ready for review please add the [`pleasereview`](https://github.com/paritytech/parity-ethereum/pulls?utf8=%E2%9C%93&q=is%3Aopen+is%3Apr+label%3A%22A0-pleasereview+%F0%9F%A4%93%22+) label.

### Reviewing Pull Requests*:

* At least two reviewers are required to review PRs (even for PRs tagged [`insubstantial`](https://github.com/paritytech/parity-ethereum/pulls?q=is%3Aopen+is%3Apr+label%3A%22A2-insubstantial+%F0%9F%91%B6%22)).

When doing a review, make sure to look for any:

* Buggy behavior.
dvdplm marked this conversation as resolved.
Show resolved Hide resolved
* Undue maintenance burden.
* Breaking with house coding style.
* Pessimization (i.e. reduction of speed as measured in the projects benchmarks).
* Breaking changes should be carefuly reviewed and tagged as such so they end up in the [changelog](../CHANGELOG.md).
* Uselessness (i.e. it does not strictly add a feature or fix a known issue).

*Reviews may not be used as an effective veto for a PR because*:
dvdplm marked this conversation as resolved.
Show resolved Hide resolved

* There exists a somewhat cleaner/better/faster way of accomplishing the same feature/fix.
* It does not fit well with some other contributors' longer-term vision for the project.

## License.

Expand Down
269 changes: 252 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,24 @@
<p align="center"><a href="https://gitlab.parity.io/parity/parity-ethereum/commits/master" target="_blank"><img src="https://gitlab.parity.io/parity/parity-ethereum/badges/master/build.svg" /></a>
<a href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank"><img src="https://img.shields.io/badge/license-GPL%20v3-green.svg" /></a></p>

## Table of Contents

1. [Description](#chapter-001)
2. [Technical Overview](#chapter-002)
3. [Building](#chapter-003)<br>
3.1 [Building Dependencies](#chapter-0031)<br>
3.2 [Building from Source Code](#chapter-0032)<br>
3.3 [Simple One-Line Installer for Mac and Linux](#chapter-0033)<br>
3.4 [Starting Parity Ethereum](#chapter-0034)
4. [Documentation](#chapter-004)
5. [Toolchain](#chapter-005)
6. [Community](#chapter-006)
7. [Contributing](#chapter-007)
8. [License](#chapter-008)


## 1. Description <a id="chapter-001"></a>

**Built for mission-critical use**: Miners, service providers, and exchanges need fast synchronisation and maximum uptime. Parity Ethereum provides the core infrastructure essential for speedy and reliable services.

- Clean, modular codebase for easy customisation
Expand All @@ -15,7 +33,7 @@
- Synchronise in hours, not days with Warp Sync
- Modular for light integration into your service or product

## Technical Overview
## 2. Technical Overview <a id="chapter-002"></a>

Parity Ethereum's goal is to be the fastest, lightest, and most secure Ethereum client. We are developing Parity Ethereum using the sophisticated and cutting-edge **Rust programming language**. Parity Ethereum is licensed under the GPLv3 and can be used for all your Ethereum needs.

Expand All @@ -25,7 +43,9 @@ If you run into problems while using Parity Ethereum, check out the [wiki for do

Parity Ethereum's current beta-release is 2.1. You can download it at [the releases page](https://github.com/paritytech/parity-ethereum/releases) or follow the instructions below to build from source. Please, mind the [CHANGELOG.md](CHANGELOG.md) for a list of all changes between different versions.

## Build Dependencies
## 3. Building <a id="chapter-003"></a>

### 3.1 Build Dependencies <a id="chapter-0031"></a>

Parity Ethereum requires **latest stable Rust version** to build.

Expand Down Expand Up @@ -58,7 +78,7 @@ Once you have `rustup` installed, then you need to install:

Make sure that these binaries are in your `PATH`. After that, you should be able to build Parity Ethereum from source.

## Build from Source Code
### 3.2 Build from Source Code <a id="chapter-0032"></a>

```bash
# download Parity Ethereum code
Expand Down Expand Up @@ -95,7 +115,7 @@ or
$ git checkout beta
```

## Simple One-Line Installer for Mac and Linux
### 3.3 Simple One-Line Installer for Mac and Linux <a id="chapter-0033"></a>

```bash
bash <(curl https://get.parity.io -L)
Expand All @@ -107,9 +127,9 @@ The one-line installer always defaults to the latest beta release. To install a
bash <(curl https://get.parity.io -L) -r stable
```

## Start Parity Ethereum
### 3.4 Starting Parity Ethereum <a id="chapter-0034"></a>

### Manually
#### Manually

To start Parity Ethereum manually, just run

Expand All @@ -119,7 +139,7 @@ $ ./target/release/parity

so Parity Ethereum begins syncing the Ethereum blockchain.

### Using `systemd` service file
#### Using `systemd` service file

To start Parity Ethereum as a regular user using `systemd` init:

Expand All @@ -128,17 +148,226 @@ To start Parity Ethereum as a regular user using `systemd` init:
2. Copy release to bin folder, write `sudo install ./target/release/parity /usr/bin/parity`
3. To configure Parity Ethereum, write a `/etc/parity/config.toml` config file, see [Configuring Parity Ethereum](https://paritytech.github.io/wiki/Configuring-Parity) for details.

## Parity Ethereum toolchain
## 4. Documentation <a id="chapter-004"></a>

Official website: https://parity.io

Be sure to [check out our wiki](https://wiki.parity.io) for more information.

### Viewing documentation for Parity Ethereum packages

You can generate documentation for Parity Ethereum Rust package(s) that automatically opens in your web browser using [rustdoc with Cargo](https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html#using-rustdoc-with-cargo) (of the The Rustdoc Book), by running the the following commands:
ltfschoen marked this conversation as resolved.
Show resolved Hide resolved

* **All** packages
```
cargo doc --open
```

* Specific package
```
cargo doc --package <spec> --open
```

Replacing `<spec>` with one of the following from the details section below (i.e. `cargo doc --package parity-ethereum --open`):

<details><p>

* Parity Ethereum (EthCore) Client Application
```bash
parity-ethereum
```
* Parity Ethereum Account Management, Hardware Wallet Support, Key Management Tool, and Keys Generator
```bash
ethcore-accounts, ethkey-cli, ethstore, ethstore-cli, fake-hardware-wallet, hardware-wallets
dvdplm marked this conversation as resolved.
Show resolved Hide resolved
```
* Parity Chain Specification
```bash
chainspec
```
* Parity CLI Signer Tool & RPC Client
```bash
cli-signer parity-rpc-client
```
* Parity Ethereum Ethash & ProgPoW Implementations
```bash
ethash
```
* Parity (EthCore) Library
```bash
ethcore
```
* Parity Ethereum Blockchain Database, Generator, Configuration,
dvdplm marked this conversation as resolved.
Show resolved Hide resolved
Caching, Importing Blocks, and Block Information
```bash
ethcore-blockchain
```
* Parity Ethereum (EthCore) Contract Calls and Blockchain Service & Registry Information
```bash
ethcore-call-contract
```
* Parity Ethereum (EthCore) Database Access & Utilities, Database Cache Manager
```bash
ethcore-db
```
* Parity Ethereum Virtual Machine (EVM) Rust Implementation
```bash
evm
```
* Parity Ethereum (EthCore) Light Client Implementation
```bash
ethcore-light
```
* Parity Smart Contract based Node Filter, Manage Permissions of Network Connections
```bash
node-filter
```
* Parity Private Transactions
```bash
ethcore-private-tx
```
* Parity Ethereum (EthCore) Client & Network Service Creation & Registration with the I/O Subsystem
```bash
ethcore-service
```
* Parity Ethereum (EthCore) Blockchain Synchronization
```bash
ethcore-sync
```
* Parity Ethereum Common Types
```bash
common-types
```
* Parity Ethereum Virtual Machines (VM) Support Library
```bash
vm
```
* Parity Ethereum WASM Interpreter
```bash
wasm
```
* Parity Ethereum WASM Test Run
ltfschoen marked this conversation as resolved.
Show resolved Hide resolved
```bash
pwasm-run-test
```
* Parity EVM Implementation
```bash
evmbin
```
* Parity Ethereum IPFS-compatible API
```bash
parity-ipfs-api
```
* Parity Ethereum JSON Deserialization
```bash
ethjson
```
* Parity Ethereum State Machine Generalization for Consensus Engines
```bash
parity-machine
```
* Parity Ethereum (EthCore) Miner Interface
```bash
ethcore-miner parity-local-store price-info ethcore-stratum using_queue
```
* Parity Ethereum (EthCore) Logger Implementation
```bash
ethcore-logger
```
* C bindings library for the Parity Ethereum client
```bash
parity-clib
```
* Parity Ethereum JSON-RPC Servers
```bash
parity-rpc
```
* Parity Ethereum (EthCore) Secret Store
```bash
ethcore-secretstore
```
* Parity Updater Service
```bash
parity-updater parity-hash-fetch
```
* Parity Core Libraries (Parity Util)
```bash
ethcore-bloom-journal blooms-db dir eip-712 fake-fetch fastmap fetch ethcore-io
journaldb keccak-hasher len-caching-lock macros memory-cache memzero
migration-rocksdb ethcore-network ethcore-network-devp2p panic_hook
patricia-trie-ethereum registrar rlp_compress rlp_derive parity-runtime stats
time-utils triehash-ethereum unexpected parity-version
```
* Parity Whisper Protocol Implementation
```bash
parity-whisper whisper-cli
```

</p></details>

### Contributing to documentation for Parity Ethereum packages

[Document source code](https://doc.rust-lang.org/1.9.0/book/documentation.html) for Parity Ethereum packages by annotating the source code with documentation comments.

Example (generic):
```markdown
/// Summary
///
/// Description
///
/// # Panics
///
/// # Errors
///
/// # Safety
///
/// # Examples
///
/// Summary of Example 1
///
/// ```rust
/// // insert example 1 code here
/// ```
///
```

* Important notes:
* Modules are documented using `//!`
dvdplm marked this conversation as resolved.
Show resolved Hide resolved
```
//! Summary (of module)
//!
//! Description (of module)
```
* Special section header is indicated with a hash `#`.
* `Panics` section requires an explanation if the function triggers a panic
dvdplm marked this conversation as resolved.
Show resolved Hide resolved
* `Errors` section is for describing conditions under which a function of method returns `Err(E)` if it returns a `Result<T, E>`
* `Safety` section requires an explanation if the function is `unsafe`
* `Examples` section includes examples of using the function or method
* Instead of including the programming language to use for syntax highlighting as the annotation
after the triple graves, alternative annotations include the `ignore`, `text`, `should_panic`, or `no_run`.
* Summary sentence is a short high level single sentence of its functionality
* Description paragraph is for details additional to the summary sentence
* Missing documentation annotations may be used to identify items that are missing documentation with warnings `#![warn(missing_docs)]` or errors `#![deny(missing_docs)]`. `#![deny(missing_docs)]` is required in all new code.
* Hide documentation for items with `#[doc(hidden)]`

### Contributing to documentation (tests, extended examples, macros) for Parity Ethereum packages

The code block annotations in the `# Example` section may be used as [documentation as tests and for extended examples](https://doc.rust-lang.org/1.9.0/book/documentation.html#documentation-as-tests).

## 5. Toolchain <a id="chapter-005"></a>

In addition to the Parity Ethereum client, there are additional tools in this repository available:

- [evmbin](https://github.com/paritytech/parity-ethereum/blob/master/evmbin/) - EVM implementation for Parity Ethereum.
- [ethabi](https://github.com/paritytech/ethabi) - Parity Ethereum function calls encoding.
- [ethstore](https://github.com/paritytech/parity-ethereum/blob/master/accounts/ethstore) - Parity Ethereum key management.
- [ethkey](https://github.com/paritytech/parity-ethereum/blob/master/accounts/ethkey) - Parity Ethereum keys generator.
- [whisper](https://github.com/paritytech/parity-ethereum/blob/master/whisper/) - Implementation of Whisper-v2 PoC.
- [evmbin](./evmbin) - Parity Ethereum EVM Implementation.
- [ethstore](./accounts/ethstore) - Parity Ethereum Key Management.
- [ethkey](./accounts/ethkey) - Parity Ethereum Keys Generator.
- [whisper](./whisper) - Parity Ethereum Whisper-v2 PoC Implementation.

## Join the chat!
The following tool is available in a separate repository:
- [ethabi](https://github.com/paritytech/ethabi) - Parity Ethereum Encoding of Function Calls. [Docs here](https://crates.io/crates/ethabi)

## 6. Community <a id="chapter-006"></a>

### Join the chat!

Questions? Get in touch with us on Gitter:
[![Gitter: Parity](https://img.shields.io/badge/gitter-parity-4AB495.svg)](https://gitter.im/paritytech/parity)
Expand All @@ -149,8 +378,14 @@ Questions? Get in touch with us on Gitter:
Alternatively, join our community on Matrix:
[![Riot: +Parity](https://img.shields.io/badge/riot-%2Bparity%3Amatrix.parity.io-orange.svg)](https://riot.im/app/#/group/+parity:matrix.parity.io)

## Documentation
## 7. Contributing <a id="chapter-007"></a>

Official website: https://parity.io
An introduction has been provided in the ["So You Want to be a Core Developer" presentation slides by Hernando Castano](http://tiny.cc/contrib-to-parity-eth). Additional guidelines are provided in [CONTRIBUTING](./.github/CONTRIBUTING.md).

Be sure to [check out our wiki](https://wiki.parity.io) for more information.
### Contributor Code of Conduct

[CODE_OF_CONDUCT](./.github/CODE_OF_CONDUCT.md)

## 8. License <a id="chapter-008"></a>

[LICENSE](./LICENSE)
2 changes: 1 addition & 1 deletion accounts/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[package]
description = "Account management for Parity Ethereum"
description = "Parity Ethereum Account Management"
homepage = "http://parity.io"
license = "GPL-3.0"
name = "ethcore-accounts"
Expand Down
1 change: 1 addition & 0 deletions accounts/ethkey/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
[package]
description = "Parity Ethereum Keys Generator"
name = "ethkey"
version = "0.3.0"
authors = ["Parity Technologies <admin@parity.io>"]
Expand Down
Loading