in reply to When is a feature bloat?

Have a goal in mind and stick with it. When your module starts performing functions outside that goal, it is bloating.
Any function that is not inline with the goal of the module, but would be a nice addition belongs in a second module that inherits from the first.
A good example of this is GD. GD's goal is to provide an interface to a few primitives of image manipulation. That's ALL IT DOES. Graphing, 3D graphing, image resizing, etc etc etc, are all out in different modules.
That's my yardstick, anyway.

oakbox