Open Collective Principles

As we are building a new version of Open Collective, it’s good to keep track of some of the design principles that will guide us as we build together a co-op-erating system for communities.

Our North Star

A co-op-erating system for communities, a system to manage their financial and non financial contributions, their external and internal economy.

A community space

A place to record, acknowledge and value all the financial and non-financial contributions in your community.

A safe (yin) space

We leave no one behind. Everyone in the community should be able to contribute and have their contribution recorded. That means that we don’t only make it easy for anyone to contribute, we also make it easy for people to record contributions on behalf of others in their community that may not necessarily be connected.

A brave (yang) space

We create a space that allows for experimentation, without jeopardizing the structure and the assets of the community. This means we log everything and we allow for every action to be reversible whenever possible.

A personal space

The more we, the more me. Open Collective also needs to benefit you. It should be the go-to-place to record your contributions, get the latest updates from the communities you are part of, and interact with other members. It should help you manage your different identities. It should also provide a profile page where people can see who you are based on the contributions you make to various communities.

Design principles

Open and transparent by default

Everything is public within the community unless specified otherwise. This removes a lot of headaches in terms of access control, permissions, etc. Private information should stay on people’s devices and be shared peer to peer.

Trust by default

Within a community, there is a high level of trust. Therefore, we can get rid of passwords and access control. What matters is that everything is logged and reversible by the stewards.

Log everything

Every action should be logged (Nostr events).

Reversible

Every action should be reversible by the author or a steward (while keeping history). That means that the steward can maintain a blacklist of Nostr event ids that should be ignored.

Collaborative

Anyone can contribute. Wiki style. See an issue, a metadata missing, go fix it. Then login if you want to attach that contribution to (one of) your profile.

Offline first

Everything should be offline first, then sync with the community. This is not only a fantastic user experience (no latency), but it also ensures resilience as the data is decentralized among all users.

Decentralized

Communities should be able to run a local server and point their domain name to it. They should be able to define their own access control (e.g. some communities may decide to have a whitelist of users).

Built for normies

We do not expect users to have any technical experience. We don’t expect to know what a private key is (and how to store it properly).

Don’t compete, complete

People use Lu.ma, Google Drive, opencollective.com, let’s embrace that diversity of tools. We should also let anyone build other frontends, other ways to input data in the system (or consume it).

Technical choices

EVM Blockchain

We record all financial and non financial transactions on an EVM blockchain.

Nostr

We write all transaction metadata as Nostr notes.
We provide a default Nostr Relay for all open communities. Closed communities need to have their own Nostr Relay. This will enable them to have much more fine grain control for access control.

Private keys as session keys

We do not assume that people can keep a private key safe. Therefore, private keys should never leave a device (and exporting them should not be allowed). The corresponding public key should be considered like an IP address that can change over time. Each Open Collective Community Server should keep track of all their users and their associated sessions.

IPFS Storage (Or blossom?)

Make sure we use a decentralized solution to store assets, uploads, etc.

SQLite

Offline first FTW.