← Back to team overview

multi-touch-dev team mailing list archive

Re: Core Values for Development

 

On 08/18/2010 02:23 PM, Duncan McGreggor wrote:
> Hey folks,
> 
> I wanted to bring this by everyone's radar, as I'll be talking more
> about it after Beta Freeze. There are a few crucial things I want to
> emphasize when it comes to our development process:

Note that I've put an edited (and humorously enhanced) version of the
below guide on the following wiki page:
  https://wiki.ubuntu.com/Multitouch/DevelopersGuideToTheGalaxy

This is now part of a new section on the main Multitouch wiki page:
  https://wiki.ubuntu.com/Multitouch#Development

For core developers and other uTouch contributors, this is required
reading. The process outlined there will become formal team policy by
Natty, so we need to start ramping up now.

Thanks,

d

>  * we need to use the test-driven development strategy (no matter the
> initial pain)
>  * we have to release our software early (regardless if you think it's
> crap)
>  * it is of the utmost importance that we embrace the peer-review process
> 
> I cover these in more detail below. Please read; I will, no joke, be
> quizzing everyone about this :-)
> 
> 
> 
> TDD:
> 
> This can be a real pain to get used to, so I'll be helping you guys out
> on this one. The peer-review process will also reinforce TDD. For
> starters, whenever you find a bug, add a unit test that demonstrates the
> failure. The test suite should should run and fail with the new test.
> Add your fix, the test suite should then pass.
> 
> After that, we need to get everyone in the habit of starting with unit
> tests as a natural part of problem solving and exploring possible
> solution spaces. We do this anyway in our heads. We need to literally
> codify that process. You'll thank me later.
> 
> Finally, we will get to the point were every code path has a unit test,
> and we'll hit 100% test coverage :-)
> 
> 
> 
> Release Early/Often:
> 
> One of the biggest hang-ups that developers have to get over once they
> start working on team projects (when they've been used to developing on
> their own, or on focused tasks) is the feeling of incompleteness and
> vulnerability when it comes to making software publicly visible. I need
> to get some therapy on this one right away :-) This slows *everyone*
> down. I you think that by working a few more days in isolation, you can
> make it *just right* and *then* it's safe to release, you're wrong! Very
> often what happens is all that work goes to waste, because a fellow
> engineer comes along and says, "Oh, but what about this?" resulting in
> the need to refactor all that work.
> 
> We cannot afford that. We need to make sure those conversations happen
> right away. Trust me, there will still be plenty for you to do. And
> since everyone is so busy, you'll still get to do it. Ultimately, this
> will save more time and tears; everyone benefits :-)
> 
> 
> 
> Peer Review:
> 
> Finally, peer review. The ego-buster. The early-bug-finder. The
> well-oiled machine. This is where we're heading, and the sooner we get
> there, the better Multi-touch will be in Ubuntu (and anywhere else
> uTouch is used).
> 
> Now that we're moving out of panic-driven development into test-driven
> development, we need to make sure that we start doing the following,
> starting in Natty at the latest:
>  * examining the project goals for a cycle as a whole
>  * determining a good initial guess at task break-downs for each
> feature, creating new tasks as features are better understood
>  * filing tickets/bugs for each task
>  * creating a branch for each task and linking it to the ticket
>  * working in those branches, asking questions of our team members and
> the community while doing so
>  * submitting branches for review ("merge proposal" in Launchpad
> terminology)
>  * looking at each others' code, providing review feedback, running the
> test suite against the code, checking for the addition of unit tests for
> new/changed code
>  * merging branches to trunk, only after a final approval
> 
> Starting now, this needs to become your Developer's Guide to the Galaxy
> :-) I know that parts of the code base are in strong flux right now, and
> will be until Beta Freeze. Until then, keep these thoughts in mind,
> 'cause in two weeks, this is what we all need to be doing.
> 
> We want small, light teams. Small, light tasks and branches. Heavy-duty
> awesomeness. Following this as a guide, we can accomplish just that.
> 
> 
> 
> Thanks for reading :-)
> 
> d
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~multi-touch-dev
> Post to     : multi-touch-dev@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~multi-touch-dev
> More help   : https://help.launchpad.net/ListHelp




References