On Nov 13, 2008, at 1:14 AM, Jacques Le Roux wrote:
Maybe, as David suggested, we could enforce our rules about that (no
new features without tests).
I'm afraid this would drastically reduce contributions. Maybe it's
better to have less but more robust.
I don't believe I've ever been in favor of enforcing a rule requiring
new features to be accompanied by automated tests. In fact, I think
I've spoken/written against that a number of times.
Like you say, this may reduce contributions. The bigger issue with a
community-driven project is that people are motivated by a small
number of things:
1. what they or their clients need (strong)
2. social pressure from others in the community (semi-strong)
3. desire for recognition (fairly weak)
4. desire to create something good/new (fairly weak)
A quick note on the strength of these motivations: I'm not trying to
comment on human nature for all things that a person might do, or that
would apply to all people, but I am saying that for business-oriented
software developed in a community-driven model these seemed to be what
drive actual quantities of hours and actual refinement of what is
developed.
So, how do we get people to contribute tests? IMO it has nothing to do
with new functionality, it has everything to do with how people want
OFBiz to work for them. In short the idea is that if someone wants
something to keep working a certain way they should contribute an
automated test for it. It's really that simple, and goes to motivation
#1.
To make it a stronger motivation, we can use motivation #2 as well.
When people say "hey this doesn't work any more", or "it is important
that this always work this way" the response in the mailing lists can
always be "great, submit an automated test!".
This allows people to invest in what they care about. Of course, to
make this happen for real and not just seem like a good idea we need
the testing tools to be as easy and consistent as possible. It needs
to be easy to create tests, and it needs to be easy to run existing
tests and to review what existing tests are and do. Those aren't easy
features to implement. Because of these we've discussed using Selenium
because it is easy to record test sequenced that test everything from
the client side UI code to the database in and out. However, running
these tests and creating suite of them that can run in an automated
way that is organized by component still needs to be done. Even more
difficult, it seems right now, is that Selenium depends on some GPL/
LGPL libraries, so we can't include them all in OFBiz, which means
that either the Selenium licensing is invalid (in the case of GPL
libraries Selenium would have to also be GPL licensed) or at least it
is much more difficult to run the tests because we can't include them
in OFBiz.
-David