Skip to content
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

aragonOS new documentation #204

Merged
merged 23 commits into from
Mar 28, 2018
Merged

aragonOS new documentation #204

merged 23 commits into from
Mar 28, 2018

Conversation

izqui
Copy link
Contributor

@izqui izqui commented Jan 26, 2018

Scaffolded document. Section progress:

  • 1. General architecture, Kernel and apps

  • 2. Kernel

  • 2.1 The app mapping

  • 2.2 Namespaces

  • ~3. Upgradeability

  • 3.1 DelegateProxies

  • 3.2 Kernel upgradeability

  • 3.3 AppProxies and upgradeability

  • 3.4 App sandbox

  • 4. ACL

  • 4.1 The ACL as an Aragon app, the Interface

  • 4.2 Basic ACL

  • 4.3 Permission managers

  • 4.4 Parameter interpretation

  • 4.5 Examples of rules

  • 5. Forwarders and EVMScript

  • 5.1 Forwarding and transaction pathing

  • 5.2 Forwarding interface

  • 5.2 EVMScripts

  • 5.2.1 Warnings

  • 5.2.2 Script executors

  • 5.2.2.1 CallsScript

  • 5.2.2.1 DelegateScript

  • 5.2.2.3 DeployDelegateScript

  • 6. The Aragon Package Manager

  • 6.1 APM as an Aragon DAO

  • 6.2 APMRegistry

  • 6.2.1 ENSSubdomainRegistrar

  • 6.2.2 APMRegistry governance

  • 6.3 Repos

  • 6.3.1 New version rules

  • 7. Aragon app development guide

  • 7.1 Using the ACL

  • 7.2 Upgradeability: storage considerations

  • 7.3 Testing and publishing your app with aragon-dev-cli

@coveralls
Copy link

coveralls commented Jan 27, 2018

Coverage Status

Coverage remained the same at 99.48% when pulling 59d79fa on docs into 55cc524 on dev.

@onbjerg
Copy link
Contributor

onbjerg commented Feb 7, 2018

I can do some of them

  • 3.4 App sandbox
  • 5.1 Forwarding and transaction pathing
  • 7 Aragon app development guide
  • 7.1 Using the ACL
  • 7.2 Upgradeability: storage considerations
  • 7.3 Testing and publishing your app with aragon-dev-cli

Also it might make sense to find a consistent way to visualize the ACL/transaction pathing (not just for this document), as many governance mechanism might be a collab between 2 or 3 apps.

@verdverm verdverm mentioned this pull request Feb 27, 2018
2 tasks
@izqui izqui changed the title [WIP] aragonOS new documentation aragonOS new documentation Mar 26, 2018
@izqui
Copy link
Contributor Author

izqui commented Mar 28, 2018

Merging but edits still need to happen #280

@izqui izqui merged commit 93056c2 into dev Mar 28, 2018
@izqui izqui deleted the docs branch March 28, 2018 11:41
Copy link

@Kyrrui Kyrrui left a comment

Choose a reason for hiding this comment

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

Reviewing as native english speaker


**Upgradeability** is really important when developing high-stakes systems in
platforms that are still evolving fast. Done well, it can allow for bug fixes
and improvements with very little disruption and not causing problems at the
Copy link

Choose a reason for hiding this comment

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

Change "disruption and not causing" to "disruption and without causing"

**Upgradeability** is really important when developing high-stakes systems in
platforms that are still evolving fast. Done well, it can allow for bug fixes
and improvements with very little disruption and not causing problems at the
protocol level. As a history lesson, if *The DAO* had had an effective
Copy link

Choose a reason for hiding this comment

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

Change "if The DAO had had an effective" to "if The DAO would have had an effective"

platforms that are still evolving fast. Done well, it can allow for bug fixes
and improvements with very little disruption and not causing problems at the
protocol level. As a history lesson, if *The DAO* had had an effective
upgradeability mechanism, no hard fork would have been required to fix the problem.
Copy link

Choose a reason for hiding this comment

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

change "problem." to "problem,"

making governance the most important aspect of upgradeability.

In a similar way, you cannot have effective governance without a way for upgrading
itself to a superior form of governance. Therefore we feel very strongly that
Copy link

Choose a reason for hiding this comment

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

change "without a way for upgrading itself" to just "without a way of upgrading"


In a similar way, you cannot have effective governance without a way for upgrading
itself to a superior form of governance. Therefore we feel very strongly that
**upgradeability** and **governance**, in the context of smart contract, are actually
Copy link

Choose a reason for hiding this comment

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

change "smart contract" to "smart contracts"

3. Deploy the Voting app
4. Grant the Voting app the ability to call `createPermission()`:
`grantPermission(votingAppAddress, aclAddress, CREATE_PERMISSIONS_ROLE)` (must be executed by `rootAddress`)
5. Deploy the Vault app, which has a action called `transferTokens()`
Copy link

Choose a reason for hiding this comment

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

change "a action" to "an action"

assigned an array of parameters that will be evaluated every time the ACL is checked
to see if the entity can perform the action.

Parameters allow to perform certain computations with the arguments of a role in
Copy link

Choose a reason for hiding this comment

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

Change "Parameters allow to" to "Parameters allow you to"

An ACL parameter is comprised of a data structure with 3 values:

- **Argument Value** (`uint240`): It is the value to compare against depending on
the argument. It is a regular Ethereum memory word, that looses it 2 most significant
Copy link

Choose a reason for hiding this comment

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

typo, change "looses" to "loses"

Even though `uint240`s are used, it can be used to store any integer up to `2^30 - 1`,
addresses and bytes32 (in the case of comparing hashes, losing 2 bytes of precision
shouldn't be a dealbreaker if the hash algorithm is secure). The only problem is
when
Copy link

Choose a reason for hiding this comment

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

Is this sentence incomplete?


## 7. Aragon app development guide

This is a small walk through on how to build a fully upgradeable registry app with pluggable governance.
Copy link

Choose a reason for hiding this comment

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

change "walk through" to "walkthrough"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants