Aragon Q1 Development Update

Progress of development from the first quarter of 2018

Releasing Aragon Core v0.5, The Architect, was the biggest development milestone during the first quarter of the year. For some more information on the actual launch, you can check the official announcement:

Aragon Core v0.5 — The Architect — release
The most powerful Aragon release to date

What was released with Aragon Core v0.5

It is worth noting that there is not a single line of code in Aragon Core v0.5 being reused from the previous releases. This release is a full DApp (served using IPFS); we have discontinued the native desktop clients for the time being.

aragon/aragon v0.5 (aka the wrapper)

  • Finishing the refactor to a new modular architecture.
  • Support for running first and third party Aragon apps completely sandboxed from the rest of the app. Also added support for running multiple instances of one app in an organization.
  • Brand new Onboarding process with different templates to create and launch organizations.
  • Brand new signer view that provides accurate, human-readable, descriptions of the transactions the user will sign.

aragon/aragon-apps

  • New Voting app: binary-choice that can be used for performing arbitrary actions in the organization or signaling.
  • New Finance app: with economic abstraction, Aragon organizations can hold and manage ERC20 assets and ETH.
  • New TokenManager app: for minting, burning, and issuing normal and vested tokens. Allows for the creation of non-transferable tokens that can be used as a multisig.

aragon/aragonOS v3.1.1

  • All Aragon DAOs and apps in this release work with the latest release of aragonOS 3.
  • Brand new Kernel and ACL that replaces the old Bylaws.
  • Full organization upgradeability (every part of a DAO can be upgraded according to permissions in the ACL)
  • New Aragon Package Manager as an Aragon DAO, that allows for seamless app upgrades (both contract and frontend)

For more information on aragonOS 3, you can check the full announcement post we released in January:

Introducing aragonOS 3.0 alpha, the new operating system for protocols and DApps

Two different audits were started in Q1 and we expect to have the reports published in the coming weeks.

aragon/aragon.js 2.0

  • We separated the JS library that is used to interact with Aragon DAOs to its own package, this allows for easily creating different clients (different UIs, mobile apps or CLIs)
  • Loads the state of an organization, its different apps and ACL permissions from the blockchain.
  • Cache state locally for quicker and leaner loads.
  • Support for aragonOS transaction pathing, which allows users to directly invoke an action on an app, even if they don't hold the required permissions themselves, and it will calculate what needs to happen (e.g create a vote).
  • Radspec integration for describing transactions in a human-readable form.
  • Aragon ID integration for identity management.

aragon/radspec 1.0

  • Safer alternative to Ethereum's natspec.
  • Basic DSL (Domain Specific Language) for describing and computing the side effects of transactions.
  • Calls to arbitrary contracts (e.g. getting the token symbol from a token address)
  • Basic math arithmetic operations.
  • ABI is baked in to the descriptions themselves, so no need to bundle ABIs for all of your contracts dependencies

aragon/aragon-dev-cli 2.2

  • First release of our CLI for developing Aragon apps. All Aragon apps that are part of this release were published using aragon-dev-cli.
  • Create new Aragon apps from our provided boilerplates.
  • Create new repositories in APM and publish versions to those.
  • Implementation of IPFS and HTTP (dev mode) file provider to host app content.

aragon/aragon-ui v0.6

  • Our design framework with React components that are used to build the wrapper and our own Aragon apps.
  • Implementation of new components, totalling at 24 components that have been released with this version: *AragonApp, Badge, BadgeNumber, BaseStyles, Button, Card, CircleGraph, ContextMenu, Countdown, DropDown, Field, Footer, HOC, Header, IllustratedSection, Info, Input, LayoutGrid, Link, PreFooter, Radio, Section, SidePanel *and Table.
  • External third party apps are already using aragon-ui for non-Aragon apps like tcr-ui.

Deployment

DApps that can be shut down by shutting down a company's servers are not decentralized apps, just normal web 2.0 apps that use Ethereum as a settlement layer. This is certainly an improvement from using a centralized payments or database provider, but these apps could still be instantly stopped if a powerful enough actor feels threatened by it.

We feel very strongly about Aragon Core being a true decentralized app,resistent to censorship, no matter who doesn't like a given organization or Aragon app, it should be up to each individual to decide whether they want to use it or not. This applies to Aragon itself, no matter if the team disappears overnight or if we are asked to shut down Aragon Core or a particular organization, we have architected the system to not have such power.

However, given the current state of the decentralized web infrastructure, we had to make some trade-offs to ensure our beta could be used by anyone with as little friction as possible.

  • aragonpm.com: aragonpm.com runs apm-serve which is our easy to use bridge from web 2.0 to APM. When requesting aragon.aragonpm.com, apm-serve fetches the APM package at aragon.aragonpm.eth , along with the latest version of the content from IPFS and serves it through HTTP(S). We will be working on making it easier to run apm-serve locally and not require using our server for this.
  • Metamask (and therefore Infura): we made Metamask the default, easy way to use Aragon Core. This results in using trusted nodes by Infura as default.

It is worth noting that during our testnet beta, there is certainly less at stake than once we go to Mainnet. We are working on ways to easily create trustless local setups for people to use Aragon Core without relying on any piece of centralized infrastructure.

Community Contributions

We always appreciate community contributions, so a big thank you to all the community members who contributed during Q1!

aragon/aragonOS

Compile contracts on pre-publish by cpurta - Pull Request #241 - aragon/aragonOS

updates some pragma versions by verdverm - Pull Request #236 - aragon/aragonOS

cleans up a number of visibility warnings by verdverm - Pull Request #235 - aragon/aragonOS

Enable syntax highlighting by by fixing name of .gitattributes file by rbharath - Pull Request #230...

Fix minime tests by DeveloppSoft - Pull Request #216 - aragon/aragonOS

Gas reporter by cpurta - Pull Request #185 - aragon/aragonOS

Renaming 'App' contract to 'AragonApp' by drexpp - Pull Request #181 - aragon/aragonOS

aragon/aragon-apps

FIX:#86 Update README badges style to match aragonOS repo by yjkimjunior - Pull Request #90 -...

Gas reporter by cpurta - Pull Request #71 - aragon/aragon-apps

truffle & solc version update + view/pure fn by renexdev - Pull Request #70 - aragon/aragon-apps

aragon/aragon-dev-cli

Rename module.json to arapp.json, fix #29 by gasolin - Pull Request #40 - aragon/aragon-dev-cli

Add node version dependency by macor161 - Pull Request #28 - aragon/aragon-dev-cli

aragon/aragon

Fix broken README.md links by deamme - Pull Request #177 - aragon/aragon

correct the license to AGPLv3 by gasolin - Pull Request #134 - aragon/aragon

fix logo path in README by gasolin - Pull Request #131 - aragon/aragon

README: Updated link to issue tracker by rudygodoy - Pull Request #119 - aragon/aragon

aragon/aragon-ui

License should be MIT, fix 134 by gasolin - Pull Request #135 - aragon/aragon-ui

Add Frame and Resizable Component by kdichev - Pull Request #95 - aragon/aragon-ui

add required asterix in Field component by kdichev - Pull Request #88 - aragon/aragon-ui

Implement missing components documentation by FiberJW - Pull Request #83 - aragon/aragon-ui

Refactor utils structure by monokh - Pull Request #82 - aragon/aragon-ui

Makes styled-components a peerDependency 💅 by FiberJW - Pull Request #80 - aragon/aragon-ui

aragon/radspec

FIX #18 add power operator, example: should be 2000 by oivoodoo - Pull Request #25 - aragon/radspec

aragon/aragon-bare-boilerplate

correct module.json to arapp.json by gasolin - Pull Request #2 - aragon/aragon-bare-boilerplate

Open bounties

To incentivize more community contributions, we also have some bounties posted that are free for anyone to submit a claim to! We will also be posting more in the next quarter, so make sure to check back!

Node and token location information - Issue #5 - aragon/radspec
Add location information to tokens and AST nodes that map to the corresponding range in the source Radspec expression...

Tokens: ANT: 10.00

Support calling methods on own contract - Issue #4 - aragon/radspec
Support calling methods on the current contract instance. For example, for a contract, Simple.sol: contract Simple {...

Tokens: ANT: 20.00

Support fixed point numbers - Issue #2 - aragon/radspec
We currently do not support fixed point numbers, but we probably should (even though I have yet to see someone use them...

Tokens: ANT: 15.00