Re: [Launchpad-dev] [RFC] Launchpad Enhancement Proposals

2010-02-12 Thread Jonathan Lange
On Thu, Feb 11, 2010 at 5:02 PM, Aaron Bentley aa...@canonical.com wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 Jonathan Lange wrote:
 On Wed, Feb 10, 2010 at 11:49 PM, Aaron Bentley aa...@canonical.com wrote:

 As Martin put it, I meant this as a toolbox from which people can use
 what fits the situation, not as a straight jacket, nor as a set of
 hoops to jump through.

 You said I'm proposing that before we begin work on _anything at all_,
 we run through this checklist: bugs, refactoring, features, whatever.
 You used emphatic language and underscores, so I took you literally.

 Because I thought positively in ReadyToCode meant affirmatively, I
 thought that all questions had to be answered yes.  That would be a
 set of hoops to jump through.

 Put those together, and you have a straitjacket.  If you didn't actually
 mean anything at all, nor that all questions had to be answered
 affirmatively, I'm happy.


Cool.

 Jonathan Lange wrote:
...
 What I'm saying is that we shouldn't _stop_ working on something until
 it's really very good. I could point to specific examples of where we
 have done this.

 I'm fully behind that sentiment, and I agree we've had problems like
 that.  What if we find cases where it's good and we don't know how to
 make it excellent?


Very glad you agree.

As for the case of something we don't know how to make excellent, I
don't know the answer. Do we need to have an answer now?

 1. https://dev.launchpad.net/ReadyToCode

 It's a very short list.
 Couldn't it also be seen as long?  It is actually eleven points, and
 many of them look like they would take more than a few minutes to complete.

 I would still like to see a response to this.


It could be seen as a long list. It is one item longer than God's most
famous list, for example. It's also at least two items longer than
seven plus or minus two. On the other hand, it's shorter than The
Twelve Days of Christmas and the DD 3rd edition first level spell
list for wizards and sorcerers.

I don't think it would take more than a few minutes to complete for
cases that don't involve UI.

 If you can answer every question on this list clearly, convincingly and 
 positively, then you are ready to code.
 By positively, do you mean affirmatively, not with good spirits?


 I think I meant a bit of both. I meant to guard against people
 answering Yes or No without qualifying it. Perhaps a better word
 would be specific.

 Hmm, that's very different from the meaning I took.  I took it to mean
 affirmatively, which would mean that yes answers would be required
 for every item on the list.  I think convincingly already covers most
 of what you mean, possibly something about justification would help.


Yeah, reading it now, I think what I really actually meant was if you
say 'no', have something to balance it.

 How can I make it clearer on the wiki page itself?

 Maybe something like A rationale should be provided if the answer is
 no?  And I think positively is too ambiguous to stand alone, so it
 should either be explained or removed.


Thanks. I've dropped this, and used your clarifying point (with some tweaks).

 Why does it make sense to generate a list of representative users /
 stakeholders for a trivial bugfix?  Why does it make sense to talk to
 them?  Do you mean vocal communication, or if not, which forms of
 communication do you mean?


 I would argue that the representative user for a trivial bug fix is
 the person who filed the bug. I would argue further that it's good to
 ask something of that person when you fix it. e.g. I've fixed the
 bug, can you give it a try?

 It might be a good idea, but this process happens before you fix the
 bug, so I don't see how it's relevant.  Could you take another stab at
 answering this?  Especially the bit about forms of communication?


Forms of communication: ultimately, any. For features, I'd strongly
recommend vocal communication, and if possible face-to-face user
testing. For a bug fix, the bug report is probably enough.

IRC  email are great too.

 What are the constraints on possible solutions?
 Why should we consider this for a trivial bugfix?  Isn't this likely to
 degenerate into justifying the obvious solution after the fact?


 To be honest, I've never tried, though I'd like to.

 So, here's one that's fresh in my mind: bug #492275.

 The fix is:
 @@ -581,8 +582,13 @@
                 [message.get('from')],
                 'Error Creating Merge Proposal', body)
             return
 - -
 - -
 +        except BranchCreationException, e:
 +            body = get_error_message(
 +                    'branch-creation-exception.txt', reason=e)
 +            simple_sendmail('me...@code.launchpad.net',
 +                [message.get('from')],
 +                'Error Creating Merge Proposal', body)
 +            return
         try:
             bmp = source.addLandingTarget(submitter, target,
                                           needs_review=True)

 Now, to me it 

Re: [Launchpad-dev] [RFC] Launchpad Enhancement Proposals

2010-02-12 Thread Aaron Bentley
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Jonathan Lange wrote:
 On Thu, Feb 11, 2010 at 5:02 PM, Aaron Bentley aa...@canonical.com wrote:
 I'm fully behind that sentiment, and I agree we've had problems like
 that.  What if we find cases where it's good and we don't know how to
 make it excellent?

 
 Very glad you agree.
 
 As for the case of something we don't know how to make excellent, I
 don't know the answer. Do we need to have an answer now?

It depends how strongly you feel about refusing to do anything that
isn't excellent.
 If pressed, I'd say the constraints are:

 - - we must explain why their merge proposal was not created
 - - we cannot do this using a web page, because the user will not
 necessarily be using our web site when this error is encountered

 Do you have any insight?

 
 I'd add we must provide the user with an avenue for further enquiry
 or a way of resolving the problem, and would challenge the second
 requirement, because we could also show the user the error when they
 next log on.

Perhaps I'd counter by adding a constraint that we must notify the user
*promptly*.  But I am really working backward from an established solution.

 Reflections / Thoughts:...

Agreed.

 So I guess I'm in favour of phrasing it strongly then trusting you to
 break the rules when it makes sense

I don't have a lot of respect for rules that I have to break in
non-exceptional circumstances.

 I think that this requires changes to our programming culture, and while
 checklists and policies can contribute to that change, they cannot stand
 alone.  People need to believe that these things are worthwhile to them,
 or at best they will do them grudgingly.

 
 Damn straight.
 
 How can I help make this happen?

A few ideas:
 - Convince the team leads that it is worth it to themselves as
   programmers and it will trickle down.
 - Point out success stories.
 - Convince people to give it a good, solid try, and analyse the
   outcomes with them afterward.  If they feel it helped them, encourage
   them to tell others about it.

 I guess one of the sources of tension in this discussion is simply
 that I prefer mild hyperbole to precision in process documents, all
 things being equal.

Quite likely.  I think that it's very hard to make rules that are clear
to everyone all the time.  I think hyperbole reduces clarity further.

 That doesn't seem to explain why only you can trigger the process.  As
 written, the documents state that a developer can determine that they
 need to follow the LEPP, but they cannot actually start the process.  It
 seems strange.

 
 What it's trying to get at is that paid work on new features or on
 revamping existing ones is driven by business needs and user needs,
 and that if you start something of that scale, you need to check that
 it aligns with them.

What scale?  I can certainly contemplate features that take less than a
day to implement.  The conflict tracking recently added to merge
proposals, for example.

 How can it be reconciled with have spent more than thirty minutes
 talking...?  The only way I can reconcile it is If you spend more than
 thirty minutes talking about a change, you must abandon it, until such
 time as the Product Strategist decides that should should implement it.

 Well, what were you going to do with it?
 Sorry, I don't understand the question.  Normally, I would continue to
 implement the feature.

 
 I'm not sure that's correct. Often we talk of features and then do
 nothing about them

I was assuming a context where we have already decided to implement the
change.

 So I guess I'm not sure what the problem is here. Or, I do see the
 problem, but it's a really deep one that already exists and that this
 process simply makes explicit.

The problem is that I will get blocked on you.  This will stop me from
doing work that I am supposed to be doing, and the document suggests
that there is nothing I can do to fix this.  I must wait until you,
entirely of your own accord, you decide to address the work I am blocked on.

 Even so, in the mean time we'd still need a place to list LEPs and
 track their progress. I don't want the process to be blocked on that
 and I dislike blueprints slightly less than I dislike editing tables
 in moin.

That may be, but the evidence suggests people would prefer to use other
tools, and until there is a serious commitment to improve blueprints, I
don't see the point of using them.

 I'm saying that we should do some analysis up-front and some design
 up-front. We already do this informally, I think, and should spend the
 little extra time to write it down and share with others.

Yes, but the idea of refusing to work on something that isn't excellent
means that we must design a feature thoroughly before we are ready to
code.  That, to me, is big design up front.

So providing a new set of procedures for doing design up front while
simultaneously saying you wanted to avoid BDUF seemed contradictory to me.

 On a 

Re: [Launchpad-dev] [RFC] Launchpad Enhancement Proposals

2010-02-12 Thread Martin Pool
On 13 February 2010 01:45, Aaron Bentley aa...@canonical.com wrote:

 Very glad you agree.

 As for the case of something we don't know how to make excellent, I
 don't know the answer. Do we need to have an answer now?

 It depends how strongly you feel about refusing to do anything that
 isn't excellent.

I'd change it from refuse to Don't be satisfied with anything less
than excellence.  Be impatient to get there.

 I think that this requires changes to our programming culture, and while
 checklists and policies can contribute to that change, they cannot stand
 alone.  People need to believe that these things are worthwhile to them,
 or at best they will do them grudgingly.

 Damn straight.

 How can I help make this happen?

What has worked for us in Bazaar is:

1. identify problem patterns, with vivid and painful real examples
2. get agreement that those patterns are indeed something the team
deeply desires to avoid in the future
3. propose an alternative process that might avoid the problem;
discuss until something is found that is cheap to try and might fix it
4. go and try it, knowing that this process is not a burden imposed by
the mgmt but rather something that may make development more fun

Clearly jml has problems he wants to fix but it could help to make
them more explicit.  In his first mail and documents he proposes

 * avoid reworking features

I think this needs to be unpacked a bit more; there's nothing
necessarily wrong with an evolutionary approach.  Is there an example
of rework that was clearly wasteful and avoidable?

 * avoid working on silly features

Obviously jml thinks this is a problem, but I've never personally
looked at a Launchpad feature and thought that's just silly, so I'd
like an example.

 * make our features so good that we have annoying fanboys queueing outside 
 our retail outlets on release day

This is a much more inspiring statement, and I'm sorry I only want to
talk in terms of problems.  Yet to me they seem easier to analyze.

I think the problem here is that Launchpad so rarely polishes a
feature from being done to being amazing.  A case in point would
be affectsmetoo, which seems so useful, but also feels like it's
been left half done in favour of adding another similar feature, bug
heat.

I don't mean by raising that example any personal criticism of the
bugs team (who have done great work) and I do recognize the situation
is complicated.  Yet it does seem like a case where Launchpad has not
excelled quite so much.

 * crappy pain points in the user interface

This does seem to happen; it can take the gloss off new features.

 * feature definitions that can inform qa
 * don't get user input at the requirements stage

Do Launchpad developers feel these are major problems?

some that seem implicit

* people don't talk to the product strategist / architect before
starting implementation, and as a result what?
* people implement features without talking to anyone else at all,
neither developers nor users?
* people implement features with no clear purpose or value (really?)
* there is no point at which you say ok, that's done _well_, let's move on

-- 
Martin http://launchpad.net/~mbp/

___
Mailing list: https://launchpad.net/~launchpad-dev
Post to : launchpad-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp


Re: [Launchpad-dev] [RFC] Launchpad Enhancement Proposals

2010-02-11 Thread Julian Edwards
On Thursday 11 February 2010 02:54:46 Tim Penhey wrote:
 I think the guts of what Aaron is getting at here is the following:
 
  * Do you expect _all_ questions to be answered for _every_ piece of work?
This doesn't really work for trivial or simple bug fixes
 
  * Is the Launchpad Enhancement Proposal Process necessary for _every_
enhancement?  Even minor ones?
 
 Tim


From the page itself:

{{{
You do not need to follow this process if:

* you are making a change that's not visible to users,
* you are fixing a shallow defect, or
* you have answers for each item on the ReadyToCode checklist 
}}}

___
Mailing list: https://launchpad.net/~launchpad-dev
Post to : launchpad-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp


Re: [Launchpad-dev] [RFC] Launchpad Enhancement Proposals

2010-02-11 Thread Jonathan Lange
On Wed, Feb 10, 2010 at 11:49 PM, Aaron Bentley aa...@canonical.com wrote:
...


First up, thanks for the thoughtful reply. It has been helpful for me
to think about this from a perspective that demands logical and
mechanical rigour.

As Martin put it, I meant this as a toolbox from which people can use
what fits the situation, not as a straight jacket, nor as a set of
hoops to jump through.

Some of your specific points have made me think more broadly. I've put
those broader thoughts in with the answers to the specific questions.

 Jonathan Lange wrote:
 Ultimately, it's not going to happen unless we all refuse to make
 anything short of excellent.

 Are you sure that this is true?  Can't we start by making something
 useful, then make it good, then make it excellent?  Can we be sure that
 something is excellent before we even start coding on it?


Of course we can start by making something useful, then good, then
excellent. I hope I never implied otherwise.

What I'm saying is that we shouldn't _stop_ working on something until
it's really very good. I could point to specific examples of where we
have done this.

 However, maybe some structure can help.

 Couldn't structure actually be a hindrance?  I am already finding that
 it takes me all day to make a trivial bugfix.  Wouldn't improving our
 velocity give us a better chance to polish things into excellence?


Yes, improving our velocity would give us a better chance to do that.
I don't think this will reduce velocity, and I don't have the coding
time to do the things I want that will actually increase our velocity.

Why don't I think it will reduce velocity? Because I think we mostly
already do think and talk about these things, and because I hope that
it will cut down time spent working on things no one needs.

 1. https://dev.launchpad.net/ReadyToCode

 It's a very short list.

 Couldn't it also be seen as long?  It is actually eleven points, and
 many of them look like they would take more than a few minutes to complete.

 - From the document:

 If you can answer every question on this list clearly, convincingly and 
 positively, then you are ready to code.

 By positively, do you mean affirmatively, not with good spirits?


I think I meant a bit of both. I meant to guard against people
answering Yes or No without qualifying it. Perhaps a better word
would be specific.

For example, for Do you have mockups? it is entirely valid to answer
no. One should say, No we don't need them because this is a
refactoring rather than no and thinking I can't be bothered or I
don't need no stinking mockups.

Does that clarify what I meant? How can I make it clearer on the wiki
page itself?

 This seems to imply that if you can't answer every question on the list
 clearly, convincingly and positively, you are not ready to code and
 should not code.  Is that your intention?  (It's not phrased as an
 equivalence, so I could come along and say If Francis says you're ready
 to code, you're ready to code, and that would not contradict you.)


That is my intention.

 What value this will bring to our users?

 How can this question be answered clearly, positively and convincingly
 for a refactoring?  On the face of it, a refactoring brings no direct
 value to users.


Two ways.

You could say, it brings no value to our users, or you could change
users to mean other developers.

 Do you have a list of representative users / stakeholders? Have you talked 
 to them?

 Why does it make sense to generate a list of representative users /
 stakeholders for a trivial bugfix?  Why does it make sense to talk to
 them?  Do you mean vocal communication, or if not, which forms of
 communication do you mean?


I would argue that the representative user for a trivial bug fix is
the person who filed the bug. I would argue further that it's good to
ask something of that person when you fix it. e.g. I've fixed the
bug, can you give it a try?

 What are the constraints on possible solutions?

 Why should we consider this for a trivial bugfix?  Isn't this likely to
 degenerate into justifying the obvious solution after the fact?


To be honest, I've never tried, though I'd like to.

If it's make-work, don't do it.

More broadly, there are two ways you can think about trivial bug fixes
and this RtC list.
  1. ReadyToCode doesn't apply to trivial bugfixes
  2. A change is trivial if most of the ReadyToCode list doesn't apply.

I'm thinking the second way and it sounds like you are inclined to the
first way. I don't think it matters much which way you approach it,
just as long as the list is used as a bunch of prompts to genuine
thought.

 Have you talked to someone else about this?

 If I have talked to representative users / stakeholders about this, then
 I have spoken with someone else about this.  Isn't this redundant?


In my head, I was thinking of two things:
 - another Launchpad hacker
 - it's really quite important to speak to someone else, so maybe put
it in twice

 Do you have a 

Re: [Launchpad-dev] [RFC] Launchpad Enhancement Proposals

2010-02-11 Thread Jonathan Lange
On Thu, Feb 11, 2010 at 2:31 AM, Ian Clatworthy
ian.clatwor...@canonical.com wrote:
 Jonathan Lange wrote:
 Hello,

 I've been thinking a bit about how we can achieve three[1] things:
  * avoid reworking features
  * avoid working on silly features
  * make our features so good that we have annoying fanboys queueing
 outside our retail outlets on release day

 In my experience, great products with annoying fanboys are the end
 result of 1000s of great decisions: every label, every widget, every
 workflow, every error message, etc. The primary challenge in a large
 software development team is how to distribute (wise) decision making.
 Ultimately, it's ideal if every software engineer gets the vision and
 makes smart choices accordingly. Failing that, team leaders need to be
 capable of getting it right.


I very strongly agree.  I have little or no idea on how to make that
happen or (more realistically) get better at what we already do there.

 I've been reading Mary  Tom's latest book on Lean SD this week. They
 put a huge emphasis on managing flow: finding what's slowing you down
 from delivering value faster. They also caution against introducing new
 processes that solve occasional problems: it can be better to wear the
 cost of rework (say) now and then than to slow down every change.


I know what you mean, and I agree with the point. I don't think this
is one of these cases.

 Sometimes the fastest way to improve quality is to simply fix lots of
 bugs. The primary argument against doing that is opportunity cost: could
 the time be better spent on delivering new features instead? That's
 never an easy call. I think your templates are great for new features.
 If fixing small bugs takes too long though, then that process needs to
 be improved IMO. I'd be hesitant to impose additional overhead on small
 changes.


For small bug fixes, I'm really proposing spending less than ten
minutes looking through a checklist with eleven points. The LEP thing
is only for new features. Mary  Tom also talk a lot about knowing
which things are ready to code.

Fixing small bugs takes too long. I'm not trying to solve that problem
now. It's a well-known and frequently-discussed problem within the
team, but as far as I can tell we've made little progress toward
solving it. Any help you have to offer on this would be appreciated.

We should also spend a lot of time fixing bugs, but I'm not trying to
solve that problem now. I have contended for a large chunk of
dedicated time for the whole Canonical Launchpad team to spend fixing
bugs. We aren't going to get something like that until we can
demonstrate how we'd manage it and what kind of results we'd get for
Canonical. It is my hope that considered use of a kanban board will
allow us to dedicate a significant fraction of our work-in-progress
items to fixing bugs in existing features.

 
 I really, really believe that big design up front is a wasteful
 practice that produces crappy software and unhappy developers. I would
 only be happy with these things becoming a part of our process if they
 were iterative and if the documents do not become ends in themselves.
 

 With that in mind, I want to know your thoughts on the whole thing.

 The essential thing is to not make yourself a bottleneck. That's *very*
 easy to do in a role like Product Strategist or Architect.


I think it's unavoidable for now. I definitely want to spread the
responsibility out further, but I think that in the early,
experimental phase it makes sense to centralize.

 Also, one trick that's appropriate now and then is to write documents
 that have ongoing value (e.g. end user documentation) instead of
 documents that become obsolete.


I agree. The thing is, I really want these things to focus on what
problems we are solving, rather than how we are solving them
(set-based design!). To me, this is the kind of thing that could
easily be turned into the introductory paragraph of a blog post, but
not user guides.

jml

___
Mailing list: https://launchpad.net/~launchpad-dev
Post to : launchpad-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp


Re: [Launchpad-dev] [RFC] Launchpad Enhancement Proposals

2010-02-11 Thread Francis J. Lacoste
On February 11, 2010, Jonathan Lange wrote:
  The Product Strategist triggers this process and approves any output
  from it.
 
  Why can only the Product Strategist trigger this process?  Combined with
  the you definitely need to follow this process list, this seems to
  imply that the product strategist will decide which features to
  implement and rework, which workflows to extend or change.
 
 It's my understanding that it's actually my responsibility to do so.
 Francis can correct me if I'm wrong.
 
 I should have communicated more about the role earlier and better.
 These processes are part of an attempt to be more explicit, and also
 to figure out the details.
 

Yes, it's the product strategist responsibility to ensure that we are crystal 
clear on what feature we implement/rework and why. It's not his responsibility 
to write up everything or come up with all the ideas. So he's probably not the 
only trigger of the process, but he's definitively the referee of it.

-- 
Francis J. Lacoste
francis.laco...@canonical.com


signature.asc
Description: This is a digitally signed message part.
___
Mailing list: https://launchpad.net/~launchpad-dev
Post to : launchpad-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp


Re: [Launchpad-dev] [RFC] Launchpad Enhancement Proposals

2010-02-11 Thread Barry Warsaw
On Feb 11, 2010, at 12:31 PM, Ian Clatworthy wrote:

Sometimes the fastest way to improve quality is to simply fix lots of
bugs. The primary argument against doing that is opportunity cost: could
the time be better spent on delivering new features instead? That's
never an easy call. I think your templates are great for new features.
If fixing small bugs takes too long though, then that process needs to
be improved IMO. I'd be hesitant to impose additional overhead on small
changes.

Something to keep in mind, IMO, is the great success we had with LP 3.0.  I
think there will always be grumblings when you change anything (witness
Facebook ;), but with my upstream hat on, I think LP 3.0 was an enormous
positive leap in usability.  Everyone was lazr (sorry :) focused on a common
task and we fixed tons of little bugs.  In hindsight it also seemed really
pretty agile, at least once we got going.  Let's do more of that.

-Barry


signature.asc
Description: PGP signature
___
Mailing list: https://launchpad.net/~launchpad-dev
Post to : launchpad-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp


Re: [Launchpad-dev] [RFC] Launchpad Enhancement Proposals

2010-02-11 Thread Aaron Bentley
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Jonathan Lange wrote:
 On Wed, Feb 10, 2010 at 11:49 PM, Aaron Bentley aa...@canonical.com wrote:

 As Martin put it, I meant this as a toolbox from which people can use
 what fits the situation, not as a straight jacket, nor as a set of
 hoops to jump through.

You said I'm proposing that before we begin work on _anything at all_,
we run through this checklist: bugs, refactoring, features, whatever.
You used emphatic language and underscores, so I took you literally.

Because I thought positively in ReadyToCode meant affirmatively, I
thought that all questions had to be answered yes.  That would be a
set of hoops to jump through.

Put those together, and you have a straitjacket.  If you didn't actually
mean anything at all, nor that all questions had to be answered
affirmatively, I'm happy.

 Some of your specific points have made me think more broadly. I've put
 those broader thoughts in with the answers to the specific questions.
 
 Jonathan Lange wrote:
 Ultimately, it's not going to happen unless we all refuse to make
 anything short of excellent.
 Are you sure that this is true?  Can't we start by making something
 useful, then make it good, then make it excellent?  Can we be sure that
 something is excellent before we even start coding on it?

 
 Of course we can start by making something useful, then good, then
 excellent. I hope I never implied otherwise.

I got that implication from it's not going to happen unless we all
refuse to make anything short of excellent.  Refusing to make anything
short of excellent would mean refusing to make anything merely useful or
good.

 What I'm saying is that we shouldn't _stop_ working on something until
 it's really very good. I could point to specific examples of where we
 have done this.

I'm fully behind that sentiment, and I agree we've had problems like
that.  What if we find cases where it's good and we don't know how to
make it excellent?

 1. https://dev.launchpad.net/ReadyToCode

 It's a very short list.
 Couldn't it also be seen as long?  It is actually eleven points, and
 many of them look like they would take more than a few minutes to complete.

I would still like to see a response to this.

 If you can answer every question on this list clearly, convincingly and 
 positively, then you are ready to code.
 By positively, do you mean affirmatively, not with good spirits?

 
 I think I meant a bit of both. I meant to guard against people
 answering Yes or No without qualifying it. Perhaps a better word
 would be specific.

Hmm, that's very different from the meaning I took.  I took it to mean
affirmatively, which would mean that yes answers would be required
for every item on the list.  I think convincingly already covers most
of what you mean, possibly something about justification would help.

 How can I make it clearer on the wiki page itself?

Maybe something like A rationale should be provided if the answer is
no?  And I think positively is too ambiguous to stand alone, so it
should either be explained or removed.

 Why does it make sense to generate a list of representative users /
 stakeholders for a trivial bugfix?  Why does it make sense to talk to
 them?  Do you mean vocal communication, or if not, which forms of
 communication do you mean?

 
 I would argue that the representative user for a trivial bug fix is
 the person who filed the bug. I would argue further that it's good to
 ask something of that person when you fix it. e.g. I've fixed the
 bug, can you give it a try?

It might be a good idea, but this process happens before you fix the
bug, so I don't see how it's relevant.  Could you take another stab at
answering this?  Especially the bit about forms of communication?

 What are the constraints on possible solutions?
 Why should we consider this for a trivial bugfix?  Isn't this likely to
 degenerate into justifying the obvious solution after the fact?

 
 To be honest, I've never tried, though I'd like to.

So, here's one that's fresh in my mind: bug #492275.

The fix is:
@@ -581,8 +582,13 @@
 [message.get('from')],
 'Error Creating Merge Proposal', body)
 return
- -
- -
+except BranchCreationException, e:
+body = get_error_message(
+'branch-creation-exception.txt', reason=e)
+simple_sendmail('me...@code.launchpad.net',
+[message.get('from')],
+'Error Creating Merge Proposal', body)
+return
 try:
 bmp = source.addLandingTarget(submitter, target,
   needs_review=True)

Now, to me it seems obvious that we should handle this kind of error the
way we handle other kinds of errors in the same situation.  I don't
think that it makes much sense to revisit the constraints.  If pressed,
I'd say the constraints are:

- - we must explain why their merge proposal was not created
- - we cannot do 

Re: [Launchpad-dev] [RFC] Launchpad Enhancement Proposals

2010-02-10 Thread Tom Berger
On 10 February 2010 13:22, Jonathan Lange j...@canonical.com wrote:
 Hello,

 I've been thinking a bit about how we can achieve three[1] things:
  * avoid reworking features
  * avoid working on silly features
  * make our features so good that we have annoying fanboys queueing
 outside our retail outlets on release day

 Ultimately, it's not going to happen unless we all refuse to make
 anything short of excellent. However, maybe some structure can help.
 In particular, I think a little structure around the area of defining
 features will go a long way toward achieving those three goals.

 By a coincidence that I can only explain by appealing to astrology,
 I've written three documents to help with this.

 1. https://dev.launchpad.net/ReadyToCode

 It's a very short list. I'm proposing that before we begin work on
 _anything at all_, we run through this checklist: bugs, refactoring,
 features, whatever. It might be a useful thing to use for
 pre-implementation calls.

 2. https://dev.launchpad.net/LaunchpadEnhancementProposalProcess

 If getting ready to code is actually non-trivial, then you might want
 to use this to help get there. I've tried hard to keep it as simple as
 possible.

 It's worth noting that the LEP is *absolutely not* the place where
 implementation design happens. It's where we collect requirements. I
 only grudgingly included the UI mockup section.

 In the process, I suggest that we use blueprints for keeping track of
 these proposals. I think it's time we started eating our own dogfood
 again.[2]

 3. https://dev.launchpad.net/LaunchpadEnhancementProposalTemplate

 This is a template for 2. Should be quite straightforward.

 Finally, I said this earlier in an email with smaller circulation, but
 it bears repeating:

 
 I really, really believe that big design up front is a wasteful
 practice that produces crappy software and unhappy developers. I would
 only be happy with these things becoming a part of our process if they
 were iterative and if the documents do not become ends in themselves.
 

 With that in mind, I want to know your thoughts on the whole thing.

I think this is a bloody good experiment, thanks for writing (and
thinking) this up. There's one emotional reaction I noticed erupting
as I read the process proposal: oh no, more wikis to edit?!

Perhaps some of the work we can do on Blueprint which will actually
give us value is work that will rid us of the need to edit wikis to
keep structured documents. The template you are proposing, for
example, could be very easily encoded in a form. Also there are other
document management solutions that don't make you sweat so much.

Tom

___
Mailing list: https://launchpad.net/~launchpad-dev
Post to : launchpad-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp


Re: [Launchpad-dev] [RFC] Launchpad Enhancement Proposals

2010-02-10 Thread Ian Clatworthy
Jonathan Lange wrote:
 Hello,
 
 I've been thinking a bit about how we can achieve three[1] things:
  * avoid reworking features
  * avoid working on silly features
  * make our features so good that we have annoying fanboys queueing
 outside our retail outlets on release day

In my experience, great products with annoying fanboys are the end
result of 1000s of great decisions: every label, every widget, every
workflow, every error message, etc. The primary challenge in a large
software development team is how to distribute (wise) decision making.
Ultimately, it's ideal if every software engineer gets the vision and
makes smart choices accordingly. Failing that, team leaders need to be
capable of getting it right.

I've been reading Mary  Tom's latest book on Lean SD this week. They
put a huge emphasis on managing flow: finding what's slowing you down
from delivering value faster. They also caution against introducing new
processes that solve occasional problems: it can be better to wear the
cost of rework (say) now and then than to slow down every change.

Sometimes the fastest way to improve quality is to simply fix lots of
bugs. The primary argument against doing that is opportunity cost: could
the time be better spent on delivering new features instead? That's
never an easy call. I think your templates are great for new features.
If fixing small bugs takes too long though, then that process needs to
be improved IMO. I'd be hesitant to impose additional overhead on small
changes.

 
 I really, really believe that big design up front is a wasteful
 practice that produces crappy software and unhappy developers. I would
 only be happy with these things becoming a part of our process if they
 were iterative and if the documents do not become ends in themselves.
 
 
 With that in mind, I want to know your thoughts on the whole thing.

The essential thing is to not make yourself a bottleneck. That's *very*
easy to do in a role like Product Strategist or Architect.

Also, one trick that's appropriate now and then is to write documents
that have ongoing value (e.g. end user documentation) instead of
documents that become obsolete.

HTH,
Ian C.

___
Mailing list: https://launchpad.net/~launchpad-dev
Post to : launchpad-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp


Re: [Launchpad-dev] [RFC] Launchpad Enhancement Proposals

2010-02-10 Thread Tim Penhey
I think the guts of what Aaron is getting at here is the following:

 * Do you expect _all_ questions to be answered for _every_ piece of work?
   This doesn't really work for trivial or simple bug fixes

 * Is the Launchpad Enhancement Proposal Process necessary for _every_
   enhancement?  Even minor ones?

Tim

___
Mailing list: https://launchpad.net/~launchpad-dev
Post to : launchpad-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp


Re: [Launchpad-dev] [RFC] Launchpad Enhancement Proposals

2010-02-10 Thread James Westby
On Thu, 11 Feb 2010 12:31:27 +1000, Ian Clatworthy 
ian.clatwor...@canonical.com wrote:
 Also, one trick that's appropriate now and then is to write documents
 that have ongoing value (e.g. end user documentation) instead of
 documents that become obsolete.

Indeed, I like combining specs and documentation, but I don't do enough
of it. You do the UI design by writing the documentation for the feature
despite it not existing, and where you would put a screenshot you put a
mockup. You can then add another page that explains more about what is
going on under the hood, which can act as your architectural
specification for the feature.

This means that you get the benefits of a specification, but it keeps
its value after the implementation is done, and doesn't grow out of date
like a spec will as you keep the documentation up to date as things
change over their lifetime. It also includes a user experience focused
approach as it forces you to think about how people will use it first,
and the goal of a simple to describe interface nicely meshes with your
desire to write less documentation.

There are clearly some problems though, it adds a fairly large amount to
the cost of changing direction in the middle of implementation, good
documentation doesn't always match up with what you need to think about
when designing something, we don't all make great documenters, and
rolling out a half-finished feature becomes trickier as you have to edit
the documentation so people don't get confused.

Thanks,

James

___
Mailing list: https://launchpad.net/~launchpad-dev
Post to : launchpad-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp