git is a widely adopted and used versioning system. Platforms such a GitHub allow for open source code to be publicly shared and maintained. A decentralized solution would allow for independence from any one platform, by being hosted by a community of peers. Swarm decentralized storage and related technologies developed under Fair Data Society allow for such decentralized solutions.
With fdp-storage and beeson we are able to create a simple decentralized git server. This will require a set of smart contracts and CLI to implement a basic git on top of Swarm.
This bounty is about creating CLI for beeson-git, using a schema from previous bounty.
TODO: add link to implementation of schema.
Implement CLI for beeson-git library in Typescript, including unit tests, documentation and use cases.
Deliverables
Smart contracts
Registry.sol: A registry that holds Swarm references to git repositories. Must have: createRepository, archiveRepository (soft delete), whitelistUser
Branches.sol: A registry containing a repository source code branches. Must have: commits, pushCommit, verifyCommit(userAddress), archiveCommit
PullRequests.sol: A registry that holds Pull Requests
Dapp/CLI
swarm-git create <repository> --creator <address>: Creates a repository
swarm-git archive <repository>: Archives/soft delete a repository
swarm-git user add/remove --user <address> --repository <repository>: Adds or remove an user
swarm-git files add/remove: Adds or remove files to commit
swarm-git commit -m "Init" --repository <repository>: Creates a commit
swarm-git push: Push commit
swarm-git pull: Pull commit
Nice to have
swarm-git merge --from <branch> --to <branch> --pull-request: Merge and or create pull request
Research using swam-feeds sequential API
Research using beeson/'beeson-multiformats` for traversal queries
Bonus
Use existing open source Git wrappers on top of fdp-storage
Approving criteria
What needs to be done / demonstrated to consider the bounty finished.
A new, open-source repository is created and link to repository posted under the issue
Use open source license Apache 2.0
Tasks completed
Deliverables implemented
documentation included in the README of the repository
Timeline
Estimated time needed for this bounty is around 5 weeks.
Deadline: 5 calendar weeks after approval.
Compensation: In BZZ tokens in amount of 4000 DAI at the date of payment (as of the price of BZZ / DAI on the day of the payout as determined by Fair Data Society).
Bounty process
One team will be selected and approved to work on the project.
Upon completion, the bounty will be awarded to the chosen team, if the approving criteria is met.
If the approving criteria is not met, another team will be selected and approved. Consequentially the deadline will be extended.
If no project matches all the approving criteria, no bounty will be awarded.
References
References that might be helpful in completing the bounty.
Motivation / background / user story
git is a widely adopted and used versioning system. Platforms such a GitHub allow for open source code to be publicly shared and maintained. A decentralized solution would allow for independence from any one platform, by being hosted by a community of peers. Swarm decentralized storage and related technologies developed under Fair Data Society allow for such decentralized solutions.
With
fdp-storage
andbeeson
we are able to create a simple decentralized git server. This will require a set of smart contracts and CLI to implement a basic git on top of Swarm.This bounty is about creating CLI for beeson-git, using a schema from previous bounty. TODO: add link to implementation of schema.
Tasks
beeson
repo: https://github.com/fairDataSociety/beesonfdp-storage
repo: https://github.com/fairDataSociety/fdp-storageDeliverables
Smart contracts
Registry.sol
: A registry that holds Swarm references to git repositories. Must have: createRepository, archiveRepository (soft delete), whitelistUserBranches.sol
: A registry containing a repository source code branches. Must have: commits, pushCommit, verifyCommit(userAddress), archiveCommitPullRequests.sol
: A registry that holds Pull RequestsDapp/CLI
swarm-git create <repository> --creator <address>
: Creates a repositoryswarm-git archive <repository>
: Archives/soft delete a repositoryswarm-git user add/remove --user <address> --repository <repository>
: Adds or remove an userswarm-git files add/remove
: Adds or remove files to commitswarm-git commit -m "Init" --repository <repository>
: Creates a commitswarm-git push
: Push commitswarm-git pull
: Pull commitNice to have
swarm-git merge --from <branch> --to <branch> --pull-request
: Merge and or create pull requestswam-feeds
sequential APIbeeson
/'beeson-multiformats` for traversal queriesBonus
fdp-storage
Approving criteria
What needs to be done / demonstrated to consider the bounty finished.
Timeline
Estimated time needed for this bounty is around 5 weeks.
Deadline: 5 calendar weeks after approval.
Compensation: In BZZ tokens in amount of 4000 DAI at the date of payment (as of the price of BZZ / DAI on the day of the payout as determined by Fair Data Society).
Bounty process
References
References that might be helpful in completing the bounty.
Use the Fair Data Society Discord for more information and support.
Mind the Fair Data Society Principles in your tasks.
Article: Rehosting git repositories on IPFS: https://dev.to/woss/part-1-rehosting-git-repositories-on-ipfs-23bf