# Motivations

{% hint style="info" %}
Why we built aragonOS?
{% endhint %}

aragonOS was born on our path to developing modular and upgradeable smart contracts to power decentralized organizations.

As the project began maturing and we started abstracting more and more, we ended up encapsulating a lot of strong design decisions into a generic framework that could be used by any protocol or decentralized application wanting upgradeability.

**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 while not causing problems at the protocol level. As a history lesson, if [*The DAO*](https://en.wikipedia.org/wiki/The_DAO_\(organization\)) had had an effective upgradeability mechanism, no hard fork would have been required to fix the problem. As a community we could have avoided months of unproductive discussions, delays in the roadmap, and billions lost in the market capitalization of the protocol due to the fork's damage to network effects.

But upgradeability is a double-edged sword. It doesn't matter how secure or trustless a smart contract is, if it can be upgraded, the contract will effectively be whatever is decided by the party that can upgrade the contract. The guarantees of an upgradeable smart contract are only as strong as the **governance mechanism** that can upgrade it which makes 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 **upgradeability** and **governance**, in the context of smart contracts, are in reality **two sides of the same coin**.

At Aragon, we are doing research in decentralized governance and the results of our research will all be made aragonOS-compatible. By using aragonOS, protocols can take advantage of our extensive research on governance, upgradeability, and every other aspect of the Aragon Network and Aragon client software.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://legacy-docs.aragon.org/developers/tools/aragonos/motivations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
