Thoughts about a better Quality Management process for Plasma
Martin Gräßlin
mgraesslin at kde.org
Sun Jan 13 14:50:25 UTC 2013
Hi all,
*warning* long mail! Please take time reading it. Given how long I am now
writing on it: schedule half an hour or so ;-)
I will try to formulate some thoughts on what I think might help to improve
the Quality Management in Plasma. Some ideas are based on what works well in
KWin.
First of all I want to say that I find it awesome how many mentioned Quality
in Aaron's 4.10 reflection thread. It means that we identified an area for
improvement. I think that's the most important part to actually get something
changed. And considering where we have been just a few years ago, I find it
even more awesome that we consider Quality as the issue of the release cycle.
We are complaining here on a very high scale. Yes we had regressions, but we
also fixed them in time for the release.
I think the problem with our QM process is, that we don't have a tool to
support it. Our bugtracker is (in it's current state) totally useless. Let me
just show a few stats for Plasma:
* 858 bugs (including wishlist) created since 4.9.0 tagging
** 343 are marked as resolved
*** 43 (!) are fixed - that are 5 % of all reported bugs
*** 29 are invalid
*** 222 are duplicates - a quote of 26 %
** 384 are still unconfirmed (45 %)
*** 96 of those are crash reports
** 130 of the not resolved bugs are still in component general (25 % of the
not resolved bugs)
now for comparison I show the stats of KWin:
* 432 bugs (including wishlist) created since 4.9.0 tagging
** 329 are marked as resolved
*** 87 are fixed - that are 20 % of all reported bugs
*** 28 are invalid
*** 149 are duplicates - a quote of 34 %
** 42 are still unconfirmed (9.7 %)
*** 4 of those are crash reports
** 17 of the not resolved (or needsinfo) bugs are still in component general
Two people work on the KWin bugs. Plasma gets twice the amount of bug reports
than KWin, so it would need 4 people to keep the bug tracker in a managable
state. Looking at the stats it would need 4 people triaging one bug per day to
keep it clean. That is doable!
I have two requirements for bug reports:
1. There should not be any unconfirmed bugs
2. There should not be any bugs in component general
What is an unconfirmed bug? It's a bug which has not been reproduced/verified
that it is valid! A bug report should not stay in this status for a long time.
Our users spend time to report it, so we should process them. If the user
provided the correct input, it should be possible to get the bug to status
"CONFIRMED". If the user cannot provide the necessary data to get the bug into
status CONFIRMED, it has to be set to RESOLVED WAITINGFORINFO. A bug should
never be longer than one week in status UNCONFIRMED without any action. If the
user provided input which is not sufficient: ask for more. If he cannot
provide it -> WAITINGFORINFO. Yes it sounds harsh, but you want to keep the
tracker clean.
What is a bug in component general? A bug that applies to everything of
Plasma? Impossible! There is no general. A bug in general means that it is
unknown where it belongs to. It should be moved into the best fitting
component. If it doesn't exist create a new component! But don't keep it in
general - nobody is responsible for those bugs.
Now the action items I would suggest to do:
*Re-evaluate all components for Plasma*
Let's check whether the components we have are still valid and fitting. Let's
rename what can be improved and create what makes sense to create. Maybe even
rethink whether it makes sense to split the product "plasma" into multiple
products.
*Find a maintainer for each component*
The current maintainer model of Aaron and Marco for everything doesn't scale.
We have so many people who could take over maintainership for a small
component. Whoever is maintainer of a component, should become the default
assignee for bugs in that component. No longer a one address for all assignee.
Let's make the people responsible for their components.
*Assign some "super" maintainers*
Having a maintainer for each component carries the risk of people dropping out
without being noticed and that would render the component unmaintained
(example: all the kde-workspace components currently maintained by Lubos). We
need some people who regularly check whether there is activity and poke the
right people when lots of bugs get unmanaged (hey Jimmy are you still working
on those? No? Should we get a new maintainer?). In Bugzilla talk this is
called a QA contact IIRC. Random thought: give those super maintainers the
power to pull the plug on a component if the quality decreases.
*Restrict the available version numbers*
At KWin we only allow bugs to be reported for:
* the latest beta/RC
* the last two minor versions of the current stable
* the last two minor version of the last stable
That is currently: 4.8.4, 4.8.5, 4.9.4, 4.9.5, 4.10 RC2
We won't do a release for 4.8 or 4.9 any more, so we hardly care about these
versions. There are just too many changes to properly support those versions.
I would restrict even further, but there are users out there and it's not nice
telling them that the distro they installed two months ago is already so
outdated that we don't support it. The restriction on the latest two minor
versions is to catch all the .1 bug reports we get through distro install
media, but are fixed in .2 or .3. It helps the user to tell them: look there
are bug fix releases, you might want to update.
*Close all existing bug reports*
We are currently in the process of developing Plasma 2 and porting everything
to QML. Do we really care about a bug reported for the C++ version? Do we
really care about a crash report which is for an old version and the backtrace
doesn't match the code any more? Do we really want to spend person years of
going through the bugs to confirm them? Now with the step towards Qt 5/KF
5/libplasma2/QML we have the chance to do the clear cut. We did it before
(KDesktop/Kicker). Let's do it again. I'm pretty sure our users prefer the
honesty that we won't work on it then having the bug open for so long.
I just checked and there are 811 reports open which haven't changed over the
last 365 days (and all of them are wishlist). And there are an additional 561
bugs which have not changed over the last half year (no comment, nothing).
That's all for the bugzilla part, now let's do some more general ideas I have
:-)
*Every commit should be referenced to a bug*
What is the motivation for a commit? It's either a bug fix or it is a new
feature/improvement. If it's a bug it's clear that there has to be a bug
report for it (out of experience: there is always a bug, if not: create it).
If it's a feature, it should also have a feature request in the tracker.
Create it yourself if you need to. Sounds beaurocratic, but it comes quite
handy as it allows to generate changelogs from it, allows people to easily
test new features.
*Bug fixes should come with a unit test*
Plasma so far does not have any unit tests. Why? Let's not fool ourself with
"it's UI, that's difficult to test". No it's not, because Plasma has a great
separation between UI and logic. It would not be a problem to create a unit
test for the data engines. If there is a bug do yourself the favor of creating
the test. It helps you understanding the problem and fixing it. Also remember:
we have now a Jenkins installation running the tests after each commit, so we
see when they break (currently 3 tests in kde-workspace are failing).
*New features should come with unit tests*
If you work on something new it's easy to restructure the code in a way that
it gets testable. New logic should be covered by tests. GUI is difficult,
though we could spend a GSoC on getting a test framework.
So that's it. Looking forwards to your comments on it :-)
Cheers
Martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20130113/21237d0d/attachment.sig>
More information about the Plasma-devel
mailing list