Here are my thoughts:
Experimental driven development is an important part of verifying api,
however multi threaded multicore hardware doesn't lend itself to
experimental development, because there is no way to confirm the
repeatability of the experiment or that the experiment ensures the
absence of errors, simply because there are many possible paths of
execution through the hardware and each test run may test a different path.
Until new tools are developed to make experimental development more
practical in a multi threaded multicore hardware environment, it needs
to be supplemented with theory driven development. In this case the
theory is the JMM, the code is audited manually to confirm it complies
with the JMM. Concurrency in practise is a good guide to follow if you
want JMM compliant code.
The elephant in the room is, River is multi threaded and modern hardware
is multi core.
Patricia is 100% correct, I'm developing using a more theory driven
approach.
But this is creating unrest with people who are experimental driven;
where are the tests that prove my changes are correct?
The real question is, where next?
Regards,
Peter.