Many projects have a "need information" state to report this
situation. I think adding this to the ticket state diagram [1] would
be helpful for triagers, and to developers reviewing the ticket list
and wanting to know how many tickets actually need to be looked at
before a release.
What are the thoughts of the core team on this?
Best regards,
D.
[1] http://docs.djangoproject.com/en/dev/internals/contributing/#ticket-triage
Sounds even better
D.
+1
That would be great! It would be much easier to go through the unreviewed list.
Iván
We have this on the South trac, and it helps me greatly in filtering
views to just tickets that need my attention/responses instead of just
getting confronted with "all open tickets". You can also set it up so
the default action once you're in infoneeded is to move out of it, so it
shouldn't even cause more work for responders as they have to change the
state back - it just does.
I'm +1 on adding this, but that's definitely biased by the fact that it
makes the two Tracs I use on a regular basis more similar.
Andrew
To be clear, Andrew -- are you +1 to a "Needs Info" closing condition,
or a "Needs info" ticket state?
For me, it all hinges on whether a you consider that a reported issue
should be open or closed by default. I tend towards "closed" by
default, simply because our Trac instance is already a graveyard of
old tickets. The history of Django's Trac instance doesn't suggest
that an incomplete bug report will be updated after initial reporting;
unless the reporter is a known member of the community, if a ticket
isn't complete at time of reporting, it isn't going to get any better.
To that end, I'm not sure what a Needs Info ticket state gains us. If
someone opens a ticket that doesn't contain enough useful debugging
information, we should be closing the ticket, not keeping it open for
eternity in the hope that they'll come back and provide the detail
they should have provided in the first place.
If the reporter *is* inclined to provide more information, a "needs
info" close state gives them an indication that the ball is in their
court, differentiating between closed "Invalid" (i.e., You're wrong)
and closed "WorksForMe" (i.e., can't reproduce), while keeping the
ticket out of our working list until such time as they provide the
missing details.
So; I'm +0 to a close state, -0 to a ticket state. I'm +0 because this
is already possible right now -- close "invalid" with a comment that
indicates the ticket should be reopened if the reporter can provide
more details. However, I can see that there might be a slight
advantage to communicating that with something other than a comment.
Yours,
Russ Magee %-)
Incorrect. There *is* a way for a reporter to flag that they have
followed through on feedback -- they update the 'need docs', 'needs
tests' and 'needs improvement' flags.
Example workflow:
* Alice creates a ticket, with an incomplete patch (no tests,
incorrect implementation)
* Bob reviews the patch, marks it "Accepted, needs tests, patch needs
improvement"
* Alice updates the patch, adding tests (but not changing the
implemenation). She removes the two flags.
* Charlie reviews the patch, resets the 'patch needs improvement flag'
* Alice updates the patch, fixing the implementation. She removes the
needs improvement flag.
* Daisy reviews the patch, marks it RFC.
At any point in this process, a search for tickets "Accepted & has
patch & !needs improvement & !needs docs & !needs tests" will reveal
tickets that need review of some kind. These tickets either need to be
moved to RFC, or need to have their flags set to indicate the
deficiency in the patch.
A search for tickets with "Accepted & has patch & (needs improvement |
needs tests | needs docs)" will reveal tickets that require some
action on the part of the reporter (or some other interested party).
This doesn't address the issue of people not keeping their ticket
metadata accurate. Badly tagged tickets will always fall through the
cracks. However, as I've said before, adding *more* flags doesn't fix
this problem.
The only solution I can think of for this is to provide better canned
"work that needs doing" searches -- i.e., a clearly referenced
"patches that need review" list, and a "patches that need updates"
list. This way, a reporter can check for themselves whether their
ticket will appear on a todo list.
Yours,
Russ Magee %-)
It was ticket state, not closing state (sorry about the reply lag!). I
guess it's more that I don't like closing bugs purely because they've
not got enough information - it gives the wrong impression in my mind (I
only close once I have positive affirmation that it is invalid,
worksforme, etc.)
This is, I suspect, more a relic of the way I use Trac. I'm fine with a
closing state as well, I just feel like closing tickets before we even
know what they are sends the wrong impression.
On the other hand, we want to keep the trac as cruft-free as possible,
so I suppose closing tickets is fine in that regard. The ticket state
proposal has merit in that it can be crafted so that someone replying to
a ticket in needsinfo state moves it back into a "normal" state, thus
needing the minimum level of Trac competency from the reporter, and not
presenting a rather imposing "ticket closed!!!" interface - getting to a
project's ticket and finding it closed deters me from replying a lot
more than finding it in a "needsinfo" state.
Andrew
OK... after seeing a generally positive response (even if there's some
bikeshedding about the actual implementation which I don't care much
about, any of the proposals solve *my* problem ;-) ), how can this be
moved forward? I know the process that django changes follow, but I
don't know what's the process to change process :) (or who takes the
decision)
Should I open a ticket about this proposal?
Regards,
D.
> OK... after seeing a generally positive response (even if there's some
> bikeshedding about the actual implementation which I don't care much
> about, any of the proposals solve *my* problem ;-) ), how can this be
> moved forward? I know the process that django changes follow, but I
> don't know what's the process to change process :) (or who takes the
> decision)
>
> Should I open a ticket about this proposal?
Do open a ticket, because we need documentation patches for this, in the
'contributing' page. The current page says this:
“worksforme”
Used when the ticket doesn’t contain enough detail to replicate the
original bug.
That happens to be very similar to what we are proposing for
'needsinfo', so we at least need to think about how 'worksforme' is
different.
This will also require a change to Trac, which I for one don't know how
to do (I don't see the configuration pages I would need in the Trac
admin interface).
My 2 cents on state vs resolution:
If we go for a 'needsinfo' triage state, then at some point we will need
to go and close ancient tickets which have 'needsinfo' and the original
reporter has not provided it - presumably closing as INVALID. This will
require some work to do (manual or scripted), and it may well be
incorrect - we don't *know* that the report is invalid (according to our
current definition), we just don't know enough to say it *is* valid.
That pushes me in the direction of a 'needsinfo' resolution. We just
have to remember to say 'Please re-open the ticket when the information
has been provided' - and the 're-open' action is very obvious in Trac -
more obvious than the 'Triage stage' box.
Regards,
Luke
--
"I spilled spot remover on my dog. Now he's gone." (Steven Wright)
Luke Plant || http://lukeplant.me.uk/
Done, http://code.djangoproject.com/ticket/14702
Thanks for the feedback.
Daniel
If you have the admin module ui enabled and TRAC_ADMIN permissions,
you should see an admin link to the right displaying a dashboard with
a "resolutions" link at the left where you can add ticket resolutions.
If you don't... you should, it helps a lot :)
Otherwise you'll need to add a row to a table in the trac db.
Regards,
D.
The admin UI is enabled, but there doesn't seem to be that 'resolutions'
list :-(
Hopefully not for long.
Jacob is in the process of bringing a new server online to host
djangoproject.com, and part of that upgrade will be an updated Trac
install, running Trac 0.12 rather than 0.10. Once that upgrade is in
place, it will (hopefully) be a lot easier to implement this and other
Trac changes.
Yours,
Russ Magee %-)
To date, this hasn't been formally documented. This is something that
#14401 will hopefully address.
> Unlike your example workflow, my experience is often like this:
>
> * I create a ticket and submit a patch plus passing tests (no need for
> docs if it's a bug or a promise to add them once it is reviewed and
> accepted, i.e. it passes the DDN stage).
> * The ticket stays unreviewed for days, weeks or months or it is
> marked as accepted at best, without actual feedback how to proceed,
> one way or another.
> * At some point I mark it RFC since as far as I am concerned it *is*
> ready for checkin.
> * More time passes and still nobody bothers.
>
> If I'm doing it wrong, please educate me.
You aren't doing anything wrong (that I can see), but you perhaps have
some unrealistic expectations.
You need to remember that this is a volunteer project. Nobody is paid
to work on Django. Uploading a patch doesn't automatically give you
special priority. It puts your patch on a very long list of things
that need to be done. Given infinite time, this list of things will be
done -- but we don't have infinite time, so we need to prioritize.
Yes, you have 2 tickets currently in RFC state. Assuming your RFC
self-triage isn't premature, these should get committed to trunk
before 1.3 ships.
However, stand back and take an objective look at these tickets --
neither of them are especially critical. Yes, they're bugs, and yes,
it would be nice to resolve them. But they don't cause catastrophic
data loss. They've existed as misfeatures of the ORM since before 1.0.
And we haven't been overrun with people complaining about these
issues. I don't see a great deal of reason to prioritize these two
tickets over any of other issues vying for my time.
And hence, I haven't. Instead, I've concentrated on things that needed
to be done for the alpha or beta release (new features, doctest
ports), or other more immediate Django-related activities (mailing
lists, IRC). The other core developers have made similar value
judgements, and as a result your ticket hasn't reached the top of
anyones todo list.
Once the beta is out of the way and we have a feature freeze in place,
pure bugs like the tickets you describe will have a much better chance
of being committed.
As for other tickets languishing in accepted state -- they need to be
reviewed. We need people to volunteer to do that reviewing. By a
conservative query [1], there are there are currently 352 tickets in
that state. There are also 173 completely unreviewed tickets. Without
wanting to seem completely mercenary -- why are your tickets more
deserving than the 500 others that need review attention?
We've had a number of discussions recently about ways to improve Trac
to give better visibility to "work that needs doing", and better ways
to provide feedback on what the community as a whole considers
important. However, this won't increase the amount of time that is
volunteered; the best we can hope for is a better utilization of the
limited volunteer resources at our disposal.
If you have any ideas on how to increase the amount of volunteer time
that is available to us, I'm all ears. I'm also open to any
suggestions on how to better engage the community to do the work that
needs doing. But please be realistic -- this is a volunteer project,
we can't force anyone to do anything, and the core team is already
extremely busy.
Yours,
Russ Magee %-)
Hi. This message intends to be a small nudge to reactivate
http://code.djangoproject.com/ticket/14702 which was waiting on the
trac migration.
I know this probably must be handled by a trac admin, but if I can
help in some way, I have enough experience setting up trac to help
here. Just let me know. I also can help updating
http://code.djangoproject.com/wiki/ContributingHowTo (which will be
needed for the #14401 doc update) once this change is done
Regards,
D.