This is so good I am going to quote it here!
1) The Feature Arms Race. We're afraid of falling behind our competitors.
OK, I'd say OpenACS and .LRN don't really do this, even if we might talk about it in the community, the code isn't driven except by actual needs by at least one user.
2) We assume that if one of the leading competitors added something, it's something users will want.
This we might do, but again, usually at least one user asks for a feature before we add it.
3) We assume that potential users will buy off a checklist, and we don't want to come up short in a side-by-side feature comparison.
I think the community again, thinks a checklist is important, but lack of resources naturally limits the amount of unecessary features.
4) We have a compulsive need to add, since the idea of an upgrade that subtracts features seems counterintuitive.
This we do, can't help it.
5) New features are easier to promote than better/working versions of existing ones. Or so we think...
This we do to a great deal and its the greatest problem OpenACS/.LRN have. Always adding new before we fix old bugs. Look at the bugtracker. This includes usability, improving the UI always falls behind adding new feautres, new features never improve the user interface.