About a month ago, we released the first version of the Aragon Buidler plugin: a powerful new way for developers to take their Aragon app experiences to the next level.

After continuing to stabilize and enhance the plugin, we now feel confident and ready to move every Aragon app developer away from aragonCLI to the Aragon Buidler plugin. This will give developers a lot more power and flexibility, letting them leverage the Buidler ecosystem with only a few lines of code.

Changes

The transition is already underway and includes:

  • Writing documentation for using the Buidler plugin with new or existing apps
  • Merging all existing Aragon app boilerplates and recommending only a single React-based boilerplate that uses the builder plugin
  • Deprecating aragonCLI developer commands (aragon run, aragon publish, aragon deploy, aragon devchain, aragon ipfs)

Aragon Buidler plugin v0.2.0

With this release, the Aragon Buidler plugin now includes enough functionality to become your one-stop-shop for all Aragon app development needs.

The development cycle is simple:

  • npx buidler start: Setup a fully featured local environment where you can iterate on your app to perfection
  • npx buidler publish: Deploy your contract implementation, upload your beautiful front-end to IPFS, and publish the new version to aragonPM

And that’s it! This plugin abstracts all the complexity of aragonOS so you can focus on creating a great application. We’ve added three key features that make all of this possible, keep reading to learn more!

Publish Aragon apps

Publishing a new Aragon app is the last step of the development lifecycle. It is the moment that you decide to share your contribution with the rest of the world so it’s important to have a smooth, but flexible, process in place.

This version of the plugin introduces a new Builder task, publish, that improves on aragonCLI’s publish command by making it more flexible and stable. This task supports immediate Etherscan verification of any deployed contracts and allows you to do dry runs of your publish, outputting the transaction data that would be sent. In this way, you can decide to sign the publish transaction at a future time or give yourself time to make sure the IPFS content was propagated correctly. As always, remember to pin your app’s IPFS content on a persistent IPFS node (Pinata is a good place to start!) if you’d like to keep it accessible for others.

In the future, we are considering:

  • Allowing developers to automate their publishing process with CI support
  • Support publishing with transaction paths, allowing for complex governance schemes for upgrading apps.
  • Add integrated pinning solutions (e.g. Pinata)

With the recent announcement of the App Mining program starting, we believe that, more than ever, the publish process will be integral for app developers to consistently push updates and increase usage of their apps.

Script hooks

With aragonCLI, developers were forced to encode variable constructor arguments into CLI arguments and use custom bash scripts to set up their environment. But with the Buidler plugin, developers have a powerful new way to configure their local app development environment.

Script hooks allow you to configure your app, local organization, and any other dependencies in a streamlined, more flexible, and less error-prone way. We should also add that these script hooks are written in JavaScript—not Solidity—giving you its full expressiveness and speed! This is a massive improvement for developers working on Aragon apps that have complex dependencies and require a tedious setup. Check out this example if you’d like to see a real development workflow utilizing hooks.

Finally, with these hooks, you can also configure any necessary automation to run before publishing your app. From now on, you will only have to run npx buidler publish in your CI to publish your app!

App installer

Expanding on the capabilities of script hooks, we’ve introduced an experimental app installer into the plugin that allows you to magically pull production apps from a publicly available chain (e.g. Ethereum Mainnet or Rinkeby) and set them up in your local environment. And it’s available in just one line!

This feature is critical for encouraging developers to build composable Aragon apps. For example, if you are building an app that expands on the Agent app’s functionality, now you can locally create a test organization with the latest version of Agent fully working, smart contracts and front-end, without having to do any manual deployments or contract imports! See an example of this in action in the Finance app using the Vault..

Conclusion

We hope this new set of functionalities will spark the next generation of Aragon apps, whether those are completely new apps or apps that can build on top of the existing Aragon apps in novel ways.

Thanks to the SDK Working Group and again a special thanks to the Buidler team for continuing to support us during development. If you would like to help their efforts check out their Gitcon Grant.

Check out Aragon Buidler Plugin on Github or install it with npm install --save-dev @aragon/buidler-plugin.


This post was a collaboration between

Gabi, Aragon One

  • Gabi
  • Aragon One