Software quality does not necessarily increase with functionality: that there is a point where less functionality (“worse”) is a preferable option (“better”) in terms of practicality and usability. Software that is limited, but simple to use, may be more appealing to the user and market than the reverse. – Wikipedia
Good tool has following characteristics:
From the point of view of development, additional features:
Best way for a software, as i see it - start with minimal viable product, and develop extra wrapping only after core validation. Extra wrapping should never stand in the way of core functionality. Users must be able to use core functionality in the same way despite the number of additional features.
Good implementation of such pattern - plugin architecture. If you want extra - you enable extra.