-
Notifications
You must be signed in to change notification settings - Fork 3
2. For Product Owner Employees: How to Manage a Code With Us Opportunity
If you manage a digital product in the private sector, Sovrin's Code With Us can help you access talented developers and pay for code quickly.
Post an opportunity, evaluate proposals, assign a developer, and get to work!
Defining and publishing an opportunity
Inviting comments and questions
To use Sovrin's Code With Us, you need to be:
- Developing software in a GitHub repository under an open source license
Here are the legal terms that govern Sovrin's Code With Us.
If you're new to GitHub, here are some awesome resources that will help you get familiar with the mechanics and lingo used on the site.
In your repository, make sure you have the following:
- A README.md file. This should include basic info about your repo. (Here's an example)
- A CONTRIBUTING.md file. (You can copy this one as a starting point.)
- A CODE-OF-CONDUCT.md file. (You can copy this one as a starting point.)
- Most importantly, a LICENSE file.
To successfully manage a Code With Us opportunity, you will need:
- an opportunity contact - a person who will be on point for the duration of the proposal period to respond to general questions about the opportunity
- a technical contact (Qualified Receiver) - a person who has the technical expertise to respond to technical questions about the work, provide direction for the duration of the opportunity, evaluate and test the work as it comes in, and make the final decision to accept (or reject) it.
(The opportunity contact and technical contact can be the same person.)
When creating the opportunity, you will define acceptance criteria and a fixed price for the code you want delivered. Make sure you have approval from your expense authority, and that you are prepared to pay a developer's invoice at the end of the process by EFT, cheque, or to a PayPal business account within 30 days. Here's what we tell developers about their options for getting paid.
Defining the details of the opportunity and publishing it is all done within the Sovrin DevExchange app:
-
Sign up (you'll need your GitHub login for this).
-
Click on your user avatar in the top right of the navbar and navigate to Settings.
- enter your email address
- click on the 'Send Request' button. We'll verify you and grant you permission to publish content on the site.
Once you're verified:
- Navigate to the Programs page. If your program is not already listed, click the '+ List a Program' button. Provide some information about your program/organization and publish the page.
- Navigate to the Projects page. If your project isn't already listed, click the '+ List a Project' button. Go through the same steps to provide information about your project. This helps developers understand the context around the opportunity.
Now you're ready to define and publish your opportunity!
- Navigate to the Opportunities page. Click the '+ Post an Opportunity' button. Start filling out the form to define everything in the form. Use the '?' help buttons for tips on what's required. You can work on this iteratively - save your opportunity in draft until you're ready to publish it.
Once you’ve got everything defined just how you want it, navigate to your opportunity and click the 'Publish' button. As soon as you publish your opportunity:
- It gets listed to all public viewers on the opportunities page
- An automated email notification is sent to all subscribed users on Sovrin's DevExchange alerting them to your opportunity
- A new Issue is generated in your GitHub repository containing a link to the opportunity on Sovrin's DevExchange.
As soon as your opportunity is published, scroll to the bottom of your opportunity page, you'll see a link to an Issue in your GitHub repo where interested developers can ask questions.
Your opportunity contact or technical contact should navigate to the issue and post a comment right away that encourages readers to ask questions, something like this:
Your opportunity contact and/or technical contact will need to be ready to respond to comments on the Issue in GitHub in a timely manner.
Strive to respond to new comments within the same business day. Questions received after hours should be responded to the next business day.
If an applicant contacts you directly (i.e. by email) with a question, post the question that they asked and your answer as a new comment in the GitHub issue, so that all potential applicants have access to the additional clarification. You can do this without revealing the identity of the applicant who asked privately.
Before the proposal deadline, you should prepare a scoring sheet based on the proposal evaluation criteria you stated in the opportunity.
Once the proposal deadline has passed, sign in to Sovrin's DevExchange and navigate to the opportunity page. You'll be able to see the proposals that have come in. You can click into each proposal to view, or download a .zip file of the whole batch.
Score the proposals by the matrix you pre-defined in the proposal evaluation criteria. Each evaluator should independently score all the proposals before discussing as a group and coming to consensus.
Save the proposals and evaluations in a secure folder for when respondents ask for feedback, and for FOI requests.
Assigning an opportunity to a developer isn't a guarantee that you're going to pay them. Payment is dependent on fulfillment of the acceptance criteria.
If you set a milestone for the code to be delivered, and the developer can't meet it, you have the right to extend the milestone or to reassign the work to another developer.
When you've completed your evaluation and have selected a developer that you want to assign, contact them privately to confirm that they still want the assignment. If they confirm:
- Sign into Sovrin's DevExchange and navigate to the opportunity page
- Under Proposals received, click on the applicant you want to assign.
- Inside the proposal detail view, scroll to the bottom of the view and click on the Assign this Applicant button. Doing this will: (1) send an email notification to the assignee confirming that they have been assigned, (2) mark the opportunity page showing the assignee, and (3) post a comment on the GitHub issue saying that the opportunity has now been assigned.
- Post a comment on the GitHub issue that:
- thanks all applicants for their proposals
- states how many proposals were received
- identifies the name (and/or GitHub handle) of the assignee, and
- invites applicants to contact you privately if they would like feedback on their proposal.
Here's an example:
To make it even more explicit, you may wish to make the assignee appear in the Assignees box on the right side of the page:
To add them, you'll first need to invite them as a collaborator to the repo. (Make sure to invite them with Read-only access, so that they have to make pull requests, rather than be able to commit to the repo directly.) Once they accept your invitation, you'll be able to select them in the Assignees box.
Rules of thumb:
- Keep all your discussions about the work in comments on GitHub. This way, if something happens and the assigned developer can't complete the task, someone else can pick up where they left off.
- Encourage the assigned developer(s) to submit their work early and often so you can ensure they're on the right track. The goal is an efficient and reasonable collaboration that ensures the acceptance criteria is met by the targeted milestone.
- If you set a milestone for the work to be completed, it's OK to go over the milestone. If you don't think that extending the date is going to result in the acceptance criteria being met, you have the option to reassign the work to another developer (for example, the person whose proposal scored 2nd best), or pay a portion of the fixed cost for the opportunity. This is a tough call -- you'll have to decide what is fair to you, the assigned developer, and the other people who submitted proposals.
When you are satisfied that all of the acceptance criteria has been met to pay the fixed price, close the issue for the opportunity with a comment that explicitly states the criteria has been met and points to the code you are paying for (e.g. a link to a pull request or a list of commits by specific individuals). Here are a couple of examples:
Once this is all done, you're ready to pay the developer!
Payment is not handled by Sovrin's DevExchange app. Once all of the acceptance criteria has been met and you are ready to pay the developer, you will need to have them submit an invoice for processing per your normal financial administrative process.
Contact the developer privately to tell them how to submit their invoice to you, confirm the method of payment they prefer, and provide any other forms they need to submit.
If you have an idea for improving the Code With Us process or the content in this wiki, please open an issue and share your ideas.