ARTICLE

Fixing Bugs The Opportunistic Way

by | Wed 10 Feb 2010

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.

An invitation-only accelerator that develops industry-leading community engagement and growth via personalized training, coaching, and accountability...all tailored to your company's needs.

Want to read some more?

Happy Holidays

Happy Holidays

Just a quick note to wish all of you a happy, restful, and peaceful holidays, however and whoever you spend it with. Take care, folks, and I look forward to seeing you in 2015!

The Impact of One Person

The Impact of One Person

I am 35 years old and *people* never cease to surprise me. My trip home from Los Angeles today was a good example of this. It was a tortuous affair that should have been a quick hop from LA to Oakland, popping on BArt, and then getting home for a cup of tea and an...

Feedback Requested: Great Examples of Community

Feedback Requested: Great Examples of Community

Folks, I need to ask for some help. Like many, I have some go-to examples of great communities. This includes Wikipedia, OpenStreetmap, Ubuntu, Debian, Linux, and others. Many of these are software related, many of them are Open Source. I would like to ask your...

Ubuntu Governance Reboot: Five Proposals

Ubuntu Governance Reboot: Five Proposals

Sorry, this is *long*, but hang in there. A little while back I wrote [a blog post](https://archivedblog.jonobacon.com/2014/11/14/ubuntu-governance-reboot/) that seemed to inspire some people and ruffle the feathers of some others. It was designed as a...

Ubuntu Governance: Reboot?

Ubuntu Governance: Reboot?

For many years Ubuntu has had a comprehensive governance structure. At the top of the tree are the Community Council (community policy) and the Technical Board (technical policy). Below those boards are sub-councils such as the IRC, Forum, and LoCo councils, and...

Dealing With Disrespect: The Video

Dealing With Disrespect: The Video

A while back I wrote and released a free e-book called [Dealing With Disrespect](https://www.dealingwithdisrespect.com/). It is a book that provides a short, simple to read, free guide for handling personalized, mean-spirited, disrespectful, and in some cases,...