Recently I announced [Project Awesome Opportunity](https://wiki.ubuntu.com/OpportunisticDeveloperWorkflow); an ambitious goal to build awesome collaboration facilities into Ubuntu that makes working together on projects as simple as possible. *Project Awesome Opportunity* is not just about coding: it is about people opportunistically creating things that scratch their itches. This could could anything from software to learning materials and more.
The project targets three primary use cases:
1. **Creating a software project** – creating and working on a project be as simple as possible using the wonderful [Quickly](https://wiki.ubuntu.com/Quickly) as a tool.
2. **Collaborating on content** – working together with Bazaar and sending content to Launchpad.
3. **Fixing a Bug** – taking the pain out of how you grab a bug to fix and contribute your fix back to the project.
I just wanted to follow up with the third of these three goals which Martin landed in [Ground Control](https://www.launchpad.net/groundcontrol) this week. Let me explain how it works.
Imagine you want to fix a bug. I created an example bug to do this demo:
To get started, you first go to your `Projects` directory and you can see some buttons:
Let’s now see how you can grab a project. Click the *Fetch Project* button and a dialog pops up where you can type in a project name which is hosted on Launchpad:
As you can see above, when you search, the projects are listed below. Just select the project and click *OK* and a directory appears in your `Projects` directory:
If you double-click on that directory you will see a few different buttons. We want to fix a bug, so click the *Fix Bug* button:
You will now see a dialog box where you can search for a bug within the project. When you search for a bug name or number the bugs appear. Click on the bug you want to fix and click the *OK* button:
Now a branch of the code will be downloaded to your directory:
When the code is downloaded the directory is named after the bug number:
You can now double-click on the directory and see the code:
Let’s do a simple change and add the following content to the `README` file:
#################################
##### THIS IS A TEST CHANGE #####
#################################
When you have made some changes, you will see a new *Upload Fix* button in the file browser:
When you click that button you will now see a dialog box where you can enter what changes you made to the project (this is a commit message, and useful adding details about your bug fix):
Click *OK* and another dialog box will appear, this time asking for a content for a merge proposal – a merge proposal is a request to the owners of the project to merge your bug fix into the main code base. Enter a message and click *OK*:
The fix will then be uploaded and your merge proposal made and you can now see a *View Request* button:
When you click the button your browser will show the merge request page where you can have a conversation with the project developers about your proposed merge, work out any kinks and otherwise collaborate together:
In addition to making the merge proposal, *Ground Control* also attaches your branch with the fix to the original bug report:
This process takes a significant level of complexity out of the process of fixing bugs and streamlines the developer on the bookends of the process: identifying what you want to fix and submitting the fix. This gives the developer more time to focus on the bug fix itself, which in my mind is the point of great developer tools.
For this feature to flourish and for us to rock the socks off *opportunistic developers* everywhere, we are going to need *your* help, particularly with testing and where possible bug fixes. Here are the main ways in which you can help:
* **Fixing Bugs** – Martin is largely a one man band on this project and he needs help fixing [Ground Control Bugs](https://bugs.edge.launchpad.net/groundcontrol). If you are interesting in helping, see the [bug list here](https://bugs.edge.launchpad.net/groundcontrol) and get involved. He will love you and I will hail you. 🙂
* **Testing** – Testing is critical to this project. We have a tight timeframe on this, so we need you to help. How do you test? Simple, [grab the dailly PPA](https://edge.launchpad.net/~groundcontrollers/+archive/dailybuilds) of Ground Control set up by the awesome Nathan Handler, test it and [report bugs](https://bugs.edge.launchpad.net/groundcontrol/+filebug).
The next step is building in top-level support for the awesome [Quickly](https://wiki.ubuntu.com/Quickly) model of creating new applications and working on those applications at a code/UI and development level. This will neatly mesh together the application development ease of use of use in Quickly and the integration with Launchpad with Ground Control. Didier is a total rock star with Quickly, and 0.4 is sounding awesome, and I am excited to see how these tools will work together and make opportunistic development accessible for all.