The Upstream client will be the primary client for code collaboration and code reviews for projects in the Radicle platform. The primary value proposition for the Radicle platform is the decentralized nature of the underlying protocol. That said, at its core, the platform is only useful to DAOs if teams can collaborate on it. The Upstream client will help facilitate all the collaboration.
The main demographic that will be using the initial MVP are DAOs that have a small to mid sized group of developers. We expect these teams will test out the platform with a smaller project, with a few core contributors and varying guest contributors.
<aside> đź’ˇ This is a diagram that walks through the MVP user flow and problem sets: https://whimsical.com/upstream-mvp-U4YYGUP4T7gFbqxeVJbQ1C
</aside>
The MVP features are designed to give users a working code collaboration tool. Much of the inspiration is taken from tools such as Github, Gitlab and Bitbucket. We will start by offering features that allow team members to effectively pull code and commit fixes to the project.
Our goal is to allow DAOs to begin using Radicle to host their code and utilize a third party project management software for issue tracking. Our Post-MVP features will focus on code collaboration tools.
Category | Feature Name | Value | Known Problems | Notes | Status |
---|---|---|---|---|---|
Project | Project Compatibility | - New projects created on the CLI should be searchable from Upstream | - Upstream currently uses the p2p protocol, while the CLI uses push/pull seed nodes. |
Projects created from the CLI currently don’t appear on Upstream | | In Progress | | | Project Follow | - Collaborators need to be able to follow a project so it shows up on their home screen and they’ll automatically receive updates when the project has new developments | - When users try to look for a project that’s been newly created, it will get stuck on “Still looking...” for the project.
This should be solved when the push/pull protocol is integrated
Idea: If the project isn’t found in X amount of time, we notify the user | | Not Started | | | Code Review | - Both collaborators and maintainers need to be able to view the code within a project, both from a branch and locally | | | Complete | | Fixes | Maintainer Branch | - Collaborators need to know which branch to work off of when beginning to create their fix | - We currently show which branch belongs to the maintainer of the project
Idea: We may think about ways to make it more apparent the time or latest fix that a branch has merged
Idea: Prominently display the maintainer’s designated branch on the Upstream UI | This communication will likely happen outside of the Radicle platform. For the time being, we will need to rely on the maintainer merging fixes into their branch to keep it up to date | Needs Improvement | | | Pulling Patches | - Maintainers need to be able to quickly find a fix that was submitted, and view the code in a CLI | - It’s difficult for both collaborators and maintainers to communicate the name of their branch. This is primarily due to the collaborator’s Peer ID that needs to be input into the CLI.
Idea: Shorten the branch name for patches.
Idea: Upgrade CLI tool to allow maintainers to search through submitted fixes(?) | The communication will happen outside of the Radicle platform. Maintainers will likely try to find a submitted fix via the collaborator’s Radicle ID / username | Needs Improvement | | Analytics and Feedback | Feedback Integration | - All users of Upstream should have an easy way to submit feedback, whether it’s suggestions or identified bugs | - This has not been done
Idea: Provide a button/link in the app to a Typeform survey that will ask users for feedback and auto-populate a Notion DB | | Not Started | | | User Analytics Integration | - Upstream should have various user analytics events that are triggered so we can track how users are using the product | - We need to first provide an analytics spec for user events that we’d like to track
Idea: Integrate Plausible into the app to track user events | Plausible might be a good tool for this. We need to create an analytics spec for the events we want to track. | Not Started |
After our MVP launch, the goal is to have a few DAOs that use the Radicle platform as their primary code collaboration tool within their development team. Once the features are stable and teams can efficiently collaborate using them, we will begin discovery for our post-MVP features.
We have identified a few quick follow-up features that we’d like to implement shortly post-launch:
Category | Feature Name | Value | Notes |
---|---|---|---|
Project | Issue Compatibility | - New issues and comments created on a project should also show up on the web client | |
Project Search | - Collaborators can search for a project without knowing the exact project URN | ||
Issues | Issue Creation | - Maintainer needs to be able to create an issue on a project | All issues should be auto-assigned a unique ID. The maintainer should be able to attach various data to the issue, including name and description |
Commenting | - Both maintainers and collaborators should be able to comment on an issue | Comments should be able to be both rich text with the ability to attach images | |
Issue Update | - Both maintainers and collaborators should be able to automatically see new issues and comments posted | There will need to be some subscription that automatically updates the UI when new activity is detected | |
Issue Statuses | - Maintainers need to be able to set a status on any particular issue |
As the product matures, our features will mainly focus on 2 categories:
Web3 Unique Features
Our core market differentiator will lie in features we can provide to solve DAO-specific problem sets. DAOs, unlike traditional organizations, have unique use cases such as handling a rotating list of collaborators, being able to track and compensate contributors to the project, providing incentives for various issues, etc. These are all problems that our competitors will not likely tackle, and there will be growing need for our primary demographic.
Code Collaboration Enhancements