Project Awesome Opportunity

In the continued interests of making Ubuntu a rocking platform for opportunistic developers, today we formulated the plan for Project Awesome Opportunity. The goal is simple: build an opportunistic development workflow into Ubuntu. You will install one package from Universe and your Ubuntu will be hot-rodded for opportunistic application development, making development more fun and more accessible for a glorious itch scratching smackdown.

At the heart of the project is Ground Control by Martin Owens and Quickly by Rick Spencer and Didier Roche. I have been thinking about the challenges of how we build a great first incarnation of a platform optimised for opportunistic developers, and it struck me that we can divide the first set of tasks into three broad areas:

  • Creating a Project – we need to help opportunistic developers ramp up as quickly as possible: they feel the itch and they are ready to scratch right away.
  • Collaborating on a project – it should be really simple grab code, create a contribution and submit it to the project.
  • Fixing a Bug – bugs are at the heart of software projects, and we should optimize the bug fixing process making it a doddle for opportunistic bug fixing developers to grab some code and make it work.

A key part of this workflow which I designed yesterday is the Fixing a Bug component, and this is something I am really passionate about us trying to deliver in the Lucid timeframe. This is not a formal project that my team is working on, this is something that I am focused on in my spare time and coordinating with Ground Control author and rock star, Martin Owens.

Let me explain how it works:

Opportunistic development lives in the Projects/ directory in your home directory. When you load this directory in Nautilus, you see this:

Ground Control places three buttons that identify the key use cases we are keen to satisfy. When the user clicks the ”Fix Bug” button the following dialog box appears

For the first cut of this feature a bug number is required, but the feature could also include a search box for finding bugs and even potentially have an option on the Launchpad project page saying ”Fix a bug on your desktop” (or some other descriptive term) and when you click that link, Nautilus opens up and is fed the bug number.

When a bug number is submitted, Ground Control will create a branch that the bug affects (typically trunk) into your Projects/ directory. You can then go and hack the code:

When a source file in the branch is changed (and ultimately the coder fixes the bug), we now see an ”Upload Fix” button:

At this point the branch has the fix committed, so the coder clicks the button and then sees this dialog box:

This dialog box asks for the following:

  • The first box is the content that goes into the commit message.
  • The second box is the content that goes into the merge proposal.
  • The third box is optional additional characters for the branch name.

When the user clicks the OK button, the following process occurs:

  • Bazaar commits to the local branch.
  • The branch is pushed to the branch location specified.
  • The branch is added to the bug report.
  • A merge proposal is made.

So, I fleshed this idea out over the last few days and documented it and had a chat with Martin Owens who created Ground Control, and he has committed to finish off the current feature set of Ground Control and creating the Fix a Bug feature in the next two weeks. Martin has volunteered to invest a significant amount of time and effort into solving this problem in Ground Control, and I am going to be working to grow awareness of the project, handle the packaging in Universe, and help to get more people involved in testing and translations. See the Create a Project, Collaborate and Fix a Bug blueprints for this feature. Feel free to subscribe to them to track progress.

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.
  • Moral Support – Martin Owens is doctormo on Freenode. Ping him and tell him he is awesome. He and I hang out in #ubuntu-community-team: buy him a virtual beer.

So that is the goal. Let’s see if we can rock it and fire up more opportunistic developers.

  • Will Daniels

    A really excellent project I think! One of the scariest things for a developer new to the FOSS world is not really knowing the conventions and established workflows for getting involved…at least it was for me, and still is to some degree because I forget things quickly nowadays 😀

    It all seems quite simple and logical once you get used to things, so we quickly forget how complicated launchpad looks when you first encounter it, not knowing which packages deal with what, finding which source packages each binary package gets built from etc…even how to make a patch file, so anything that helps integrate, guide and streamline that process is a great step forward IMHO.

    And I’m sure the more experienced contributors will appreciate the little things like not having to remember the bug numbers and having the LP “book-keeping” done all in one shot.

    Always nice to see also when free software projects start playing to their strengths instead of playing catch-up :)

    Nice work, I look forward to trying this out!

  • MTecknology

    AWESOME! That little tool looks amazing.

    Now we just need to get more developers willing to have a project on Launchpad; whether they develop with it or not.

  • Evan Sanders

    Great work! This sort of thing is exactly why I keep coming back to Ubuntu. You guys just GET IT.

  • Brett

    Have you read David Siegel’s post on “fixing a bug”?

  • MementoMori

    I think there still are big problems preventing new people to work on projects.

    When you checkout a new project (maybe you have a little of spare time and desire helping) the first thing you probably think is: “where should I start??”

    I think projects should ship an UML description to help people navigating sources and do better (and quicker) fixes and better (and quicker) implementations…

  • Mike Rooney

    Very cool indeed! I suspect lowering the barrier to entry along with encouragement for new developers will help a lot more bugs get fixed.

    One thing missing from this workflow that David mentioned is the ability to build and test the fix. It would be cool if there was a button that could spit out a .deb file for your package and allow you to make sure it works as expected.

  • bonz


  • Jonathan Jesse

    Question: Seems that these are a bunch of great tools to further Ubuntu and GNOME development but would great to see tools work just as well under KDE and Kubuntu as well.

    Is it too hard to port over to KDE/Kubuntu? I’m not a programmer so I don’t know the answers to these questions

  • DeeJay1

    Yay, someone got i18n working THX! I’ll start translating it right away!

  • a-non-e-moose

    some cool stuff you’ve got there. And while I know you are a ubuntu guy I really wonder if it’s really such a great idea to make this so ubuntu centric (bazaar, launchpad etc). Developers and people with an urge to scratch their itch use all kind of distros, in fact I always seen ubuntu as more of a ‘users distro’ than a ‘geek hacking C in the middle of the night distro’.

  • ulrik

    wrong button order in dialogs 😉

  • bruno

    Beautiful! That little tool looks amazing. I look forward to trying this out!

  • Ross Peoples

    This is a terrific idea! I have considered fixing bug myself, but found the process to be overwhelming. This would greatly help people like me that want to help fix bugs but find the bug fixing process scary.

    Also, as a couple of people have mentioned, there needs to be a way to test the fix before submitting it. Once you figure this out, you’ll have an end-to-end solution.

    Nice job!

  • seifsallam

    wow, thats amazing, but will this project support git and github, or its just for Bazaar and Launchpad

  • Jon Nordby

    Very nice to see you putting this on the agenda, it’s sorely needed. I’m hoping that this will turn out to be something that many distros/projects can use and not limited to Ubuntu+GNOME+Launchpad.

  • Aleks

    This has got to be one of the most interesting ideas I’ve ever seen.

    I can’t wait to see it come to fruition!

  • Brett
  • Jonathan Lange

    Man, this is something that the Launchpad team have been thinking about since September.

    I’m very glad that you & doctormo have done something about it and that Launchpad actually makes it possible for this stuff to happen.

    Your people should talk to my people. :)

  • binarylooks

    The whole “I don’t want this for kde” thing makes me sad. I feel less and less part of the ubuntu community. Please do something about this Jono, you are currently losing people and creating a lot of frustration. Maybe a small clarification post for us kubuntu guys?

  • Ubuntu Opportunistic Developer Week

    […] declared Project Awesome Opportunity first on his blog where he explains how to get started using “Ground Control”, an integration of Bazaar […]

  • Jon

    Wow, this has inspired me to get 9.10 on my machine. I’ve been looking for an easy way to start contributing and I think this just might spur me on.

  • Robert Collins

    Does look nice.