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](https://blueprints.edge.launchpad.net/groundcontrol/+spec/groundcontrol-lucid-createproject), [Collaborate](https://blueprints.edge.launchpad.net/groundcontrol/+spec/groundcontrol-lucid-collaborate) and [Fix a Bug](https://blueprints.edge.launchpad.net/groundcontrol/+spec/groundcontrol-lucid-fixbug) 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](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).
* **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*.