Introducing Sunshine
Tags: substrate
Published: 2020-05-30 02:30:30

Hello world! We are building a bounty platform with [Substrate](https://github.com/paritytech/substrate) called [Sunshine](https://sunshine.foundation). Our project is supported by a grant from the Web3 Foundation ❤

The primary goal of Sunshine is to provide censorship resistant infrastructure for foundations to post bounties, accept applications, and supervise ongoing contracts.

We hope this infrastructure will make it easy for developers to form teams, pursue bounties, and disband after or even during the completion of a bounty. Our platform is built for people so we plan to support all of the expected unexpected things that happen.

Our motivation is empathy for open source developers, especially those in places with less reliable legal infrastructure.

The most basic idea is an expression for a team's ownership on-chain.
```rust
team: Vec<(AccountId, Shares)>
```
`Shares` is generic in this example, maybe it's a `u32`, but, more importantly, each tuple in the vector serves as a measure of ownership relative to other members of the team. The payout for each milestone of the grant can enforce this ownership structure to restrict withdrawals beyond a certain size for each team member (based on the member's proportion of ownership).

Of course, financial relationships are often much more nuanced than this 2D ownership structure. We'll be studying VC mechanisms for hints at how to express more complex ownership agreements.

## Sunshine Mobile Client
Our first significant deliverable will be the Sunshine Mobile Client. We intend to finish this work by the end of June 2020.
The Sunshine Mobile Client will be in Rust and it will share a [sled](https://github.com/spacejam/sled) db between
- [ipfs-embed](https://github.com/ipfs-rust/ipfs-embed) node
- [substrate-subxt light client](https://github.com/paritytech/substrate-subxt/pull/91)

The Sunshine Mobile Client constructs transactions to form coherent calls to the nodes on the Sunshine Network. Each of these nodes will run sunshine-node instances.

The Sunshine Mobile Client also communicates directly with our [Flutter interface](https://github.com/sunshine-protocol/sunshine-flutter) via native Dart-Rust FFI (so no dependency on polkadot-js).

If any of that sounds interesting, check out our [github](https://github.com/sunshine-protocol), the [rust-ipfs github](https://github.com/ipfs-rust/), or the previous links to see the code. There is also a list of interesting runtime features [here](https://meta5.world/posts/ysunshine).

## In Conclusion
By enforcing the terms of agreement for bounty contracts on-chain, Sunshine aspires to encourage power structures that decrease dependence on individuals and/or single-purpose entities.

We hope our work enables collaborative funding models that respect and appreciate the shared interests of people that operate in the same domain at different corporations.

The long-term vision is a system that uses comprehensive stakeholder signal to efficiently allocate resources to the projects that add the most value to an ecosystem.

Chasing this vision will involve designing and building configurable group governance, resilient to capture. It's an ideal and we're excited to work on it!

If any of this sounds interesting and you want to get involved, feel free to pop into our [gitter](https://gitter.im/sunshineprotocol/community#).