Greetings,

You may have noticed a large number of whitespace changes in master recently...

These were made to:
1.) Unify the indentation style used in the code.
2.) Remove tab characters used for indentation.

The indentation style is of course open for debate.  The current style is the one we've pretty much just used by default from the beginning of libmesh, and is encapsulated in the contrib/bin/reindent.sh script.  It is basically the default emacs C++ style with 0 extra offset inside namespaces.  This indentation style happens to add an extra level of indentation to lines containing curly braces, as in

  if (condition)
    {
      foo();
      bar(); 
    }

as opposed to:

  if (condition)
  {
    foo();
    bar(); 
  }


This type of code seems to be what gets re-indented most frequently... I really don't care which style we go with, as long as it's consistent throughout the library.


The use of spaces vs. tab characters for tabs is controversial in some circles.  I currently prefer spaces-only because tab characters alone are not always sufficient to properly align code.  The github viewer, where I view a lot of diffs and patches these days, doesn't seem to be easily customizable regarding tab sizes (http://stackoverflow.com/questions/8833953/how-to-change-tab-size-on-github) hence my preference for spaces only.  Below are some handy editor configuration lines for using spaces for tabs, and for highlighting errant tab characters in git diff/log (I'm not a vim user, the vim part may be wrong).

.vimrc: 
set tabstop=2
set shiftwidth=2
set expandtab

.emacs:
(setq-default indent-tabs-mode nil)

.gitconfig:
[core]
        whitespace = trailing-space,space-before-tab,tab-in-indent


Finally, I definitely feel that whitespace and indentation concerns shouldn't impede development, so there's no requirement that your commits must satisfy these requirements, but you should be aware that the tab removal and re-indentation scripts may get run periodically, creating unnecessary extra history...

--
John