In this report, algorithms for spectral unmixing are organized into taxonomies and their performance is then compared. Our motivation is to collectively organize and relate algorithms in order to assess the current state-of-the-art in the field and to facilitate objective comparisons between methods. The hyperspectral sensing community is populated by investigators with disparate scientific backgrounds and efforts in spectral unmixing developed within disparate communities have inevitably led to duplication. This report is intended to remove ambiguity and redundancy by using a standard vocabulary, and clearly summarize what has and has not been done. As will be evident, the framework for the taxonomies derives its organization from the fundamental, philosophical assumptions imposed on the problem, rather than the common calculations they perform, or the similar outputs they might yield. The taxonomies are supplemented by a comparison of unmixing performance using techniques that typify the approaches of wide classes of algorithms.