We have time to iterate this though, not like I want to ship 0.9.0 tomorrow!

Maybe we should do a poll to see how many of our users are using released versions of libMesh.  I would say it is nearly zero.  I know of over a hundred who are exclusively using the SVN version of libMesh: our users.

With that in mind, we should take steps all along the way that allow the SVN version of libMesh to be used.  Stating that "they can download nightlies" or "we have time until 0.9.0" doesn't do justice to the reality that many people are using the library right out of the repo.

There seems to be a trend here lately where libMesh devs are continuing to push for users to not use the repo version of libMesh.  This is exactly the wrong direction... and it goes against what the rest of the scientific library community is moving toward.

With MOOSE we don't have releases _at all_.  All of our users use the "trunk" version of our code.  Our development process is called Continuous Integration (CI: http://en.wikipedia.org/wiki/Continuous_integration ).  It has been working beautifully for over four years.  In this development mode, every change to MOOSE is immediately integrated with all of our user's codes.  No one is ever "out of sync" and there is no "integration" or "upgrading" ever to be done.  This is all powered through a robust and thorough testing system that ensures that every application (of which there are now 20+) built using MOOSE continues to function through every change to MOOSE.

We recently (like two weeks ago) had an external software quality audit where a team of people came in and examined every part of our software development cycle.  Not only did we pass with flying colors and were granted NQA1 status (which means MOOSE can be used to create software that is used is the design of nuclear reactors) but the software quality team was blown away by the continuous development path we use.

If you want to do some reading on the use of continuous integration (or nearly continuous) in scientific software development you can look at some of the papers by Roscoe Bartlett ( http://www.ornl.gov/~8vt/publications.html ).  For instance:


I'm not advocating everything he says... but the core ideas of "integrate early and often" are important in scientific software development... especially when that development entails intimately tying your code to a software framework.

With these ideas in mind we should be striving to make the repo version of libMesh as accessible and simple to deal with as possible.  We should encourage our users to use it.  We should encourage our users to update _daily_ and we should work to make sure that what we do in the repo is not disruptive to that.

I am straight up frustrated with the state of the repo at the moment.