Description
Hi everyone 👋
Here is a project that we intend to create with @mous1985 and @DIGIX666 for the renewal of our grant. If you have any suggestions, questions, or other inquiries, don't hesitate to let us know. Enjoy your reading! 😃
1. Introduction
Create a platform enabling teams to create and manage their bounty with internal and external contributors, to facilitate collaboration between teams and developers. We'll be focusing on how Gno could use it to manage their bounty, and then the aim is to extend the project to any teams wishing to manage their bounty with their contributors.
This allows all kinds of projects to operate openly or privately, and contributors to participate in tasks.
For the visual user interface, we're going to focus on markdown
only, to simplify its development, and concentrate on logic rather than visuals. This also enables easy integration of the platform directly into gnoweb
.
The main page will group the latest published bounty with the possibility for the user to filter the bounty by amount, creation date, domain, language etc...
The platform will also have its own discord server, whose main purpose will be to create private discussion threads between a developer and an organization to discuss a task to which a dev has been assigned.
2. The Organisations
An organization is a team of 1 or more people. Members of the organization can have different roles: Admin, Reviewers, Manager, Contributors ect...
(Accesscotrol.gno
)
Each role will have specific rights, e.g. only the Admin and Manager will have bounty creation rights.
The organization will have a profile (profile.gno
), with the following information:
- Organization name
- Profile photo
- Organization members (Internal)
- External contributors
- Biography
- Link to external resources (Github, Website...)
- Average payout time
- Reputation score
In addition to the organization's own information, a variety of other information is also available on each organization's profile:
- Suggestions from other users, such as features that would be interesting to have in the project proposed by the organization, or user feedback.
- A LeaderBoard with information on every person who has contributed to the organization.
Before creating tasks, the organization must create a Project with a name and description. The objectif of Projects is to group together the various tasks related to the same project, in the same place.
To create bounty tasks, the organization will first have to choose the type of task and its remuneration from these 4 possibilities:
- Assign task to someone: This option lets you assign a bounty task directly to a contributor who is already part of the organization. This can be useful if you know who you want to assign the task to, or if you want a task to be done by a contributor you already know, with whom you've already worked on similar tasks or others.
- Multiple submissions: With this option, all developers can submit their work, without the organization having to choose which developer to assign to the task. This can be used for a competition, for example, or simply to have a multitude of submissions and select only the best. For multiple bids, the organization has several choices: either it defines a fixed amount and assigns it to a single job. Or it can define different amounts, e.g. one amount for the first job, another for the second and another for the third.
- Open to applications: With this option, developers can submit their applications for the bounty via a form that will be created by the organization with the information they wish to have about the applicant (e.g. previous work, motivation, etc...), and the admin or a member of the organization can analyze the applications and choose the developer they wish to assign to the task.
- Bidding: With this option, developers can submit a bid with the amount they wish to pay for the job. In this case, the organization does not set a fixed price for the bounty, and developers are free to ask for any amount they wish, and the organization will then choose who it wishes to assign to the task according to the bids.
Once the options and the bounty amount have been defined, the orga will have to define various parameters, which are as follows:
- A title
- One or more labels (ex: Backend, FrontEnd, UI/UX ect...)
- A description of the task
- A maximum development time, (ex: 1 week)(optional)
- Choice if the task is for the general public or only for the organization's members and contributors
- Status (To do, In progress)
- Priority (Low, Medium, High)
- Points to distribute (corresponds to the difficulty of the task, e.g. 5 points for documentation and 30 points for something very technical)
- Possibility of assigning a reviewer who is part of the organisation
- Link the task to an issue or PR Github
- The organization will be able to provide a link to open a discord with developers wishing to apply.
Once a task has been created, the organization will have a view of it on a kanban board, enabling it to track the progress of the various tasks.
When the organization has assigned the task to a developer, it will receive a discord link to a private conversation with the developer.
Once the task has been completed, it goes into review, automatically if a reviewer was defined when the task was created, or otherwise, the orga will be notified that the task has been completed and should go into review.
The organisation is then invited to make the payment via the network chosen when the job was created, and an oracle will monitor whether the transaction has been made with the agreed amount in order to mark the job as paid once it has been completed.
Payment
Fractional payment: This option can be very useful in the case of a heavy task that may require a lot of time, with this option the organization can propose, for example, payment of a $5000 task in 3 instalments, the aim being to remunerate the developer after part of the task has been completed, until its total completion.
Payments can be made using the token chosen by the organization (e.g. $SOL, $BTC, $ATOM, $USDT etc.). In order to check whether a payment has been made correctly, we're going to set up an Oracle that will check whether the payment between the organization's address and the developer's address has been made. Firstly, this will enable us to avoid conflicts between the 2 parties over payment and guarantee that payment has been made or not. Secondly, it gives us information on the average time it takes for an organization to make a Bounty payment. Later, when the $GNOT is officially released, we'll integrate the ability to pay in $GNOT, and organizations that choose to pay their bounty with this token will be able to automate payment. Payment automation will be fast and transparent, with the organization sending the bounty amount directly to the contract when the bounty is created, and the contract sending the funds automatically to the developer as soon as the task has been validated.
It is also possible for an organization to group together a set of tasks into a single bounty. For example, define a set of 5 tasks that will be paid a total of $1,000.
3. Developers
Developers will have to create their profile by filling in the following fields:
- Username
- Github
- Biography
- Location (optional)
- Areas of expertise
- External link (optional)
The developer user interface also contains the following information:
- The organizations to which the developer belongs, and his/her role in them (contributor, reviewer, etc.)
- The points obtained for the various tasks carried out.
- A Leaderboard based on the points of all developers
- The total amount received for the various tasks carried out
When a developer looks at a task, a thread is displayed in which he can leave a comment and see the comments left by other users on that task.
Developers also have access to a Kanban table, giving them an overview of the various tasks already completed and those in progress.
When a developer is assigned to a task, he receives a discord link to a private conversation between him and the organization that created the task. This allows them to discuss certain details concerning the task to be carried out.
4. Conclusion and Future Vision
The future objectif is to develop the platform to enable all types of project to manage their bounty, and all developers to quickly and easily find projects to contribute to.
We then want to integrate a DAO that can certify the skills of developers based on different parameters, enabling organizations to facilitate the task of assigning tasks when they receive applications.
Another step we'd like to integrate as soon as possible is the possibility of paying in $GNOT, to integrate automatic payment via a smart contract within the dApp, to increase speed and ease of payment.