Fixing Bugs The Opportunistic Way

Recently I announced Project Awesome Opportunity; 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 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 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. If you are interesting in helping, see the bug list here 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 of Ground Control set up by the awesome Nathan Handler, test it and report bugs.

The next step is building in top-level support for the awesome 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.

  • http://paul.kishimoto.name Paul Kishimoto

    I really like David Siegel’s ideas (http://davidsiegel.org/improving-bug-workflow-for-opportunistic-programmers/) of popping open your editor-or-IDE-of-choice at the “Add/Edit/Delete files” stage of this workflow (https://wiki.ubuntu.com/OpportunisticDeveloperWorkflow#Workflows%20as%20Flowchart), and a browser plugin that lets you kickstart this whole process directly from a Launchpad page (i.e. removing the step of firing up a GC dialog to copy the bug ID into).

    I hope those features make it into this at some point, but it’s already great.

  • http://blogs.gnome.org/patrys/ Patryk “patrys” Zawadzki

    Any plans for a similar tool for {git,bugzilla}.gnome.org?

  • SjB

    I really like this ideal. Opportunistic Developers, will sure start adding more software to launchpad. My question is does Ubuntu have a process to push these apps to the Software Centre? I really wouldn’t want to have to add all these ppa.

  • http://www.gerv.net/ Gerv

    You write: “Click the Fetch Project button and a dialog pops up where you can type in a project name which is hosted on Launchpad”.

    Will it ever be possible to use this great workflow to fix bugs for applications which Ubuntu ships but which don’t do their source control in Launchpad?

    Gerv

  • heng

    This looks awesome.

    A couple of questions…

    Can one only offer bug fixes by modification of files or are new files possible? In which case, is there a nice “opportunistic” way of adding files?

    How does this integrate with a build system? It would be awesome if one could build and install a local deb from the bug fixed version without breaking everything, with a nice clicky gui.

  • jono

    Very possibly, but right now the first cut of the tool is focused on Launchpad.