The worst kind of feature creep is the kind mandated by your own customers.
And not "we want a menu here" but "we need a transcoding mode that allows us to specify the stream PIDs directly, and if we don't get it, we're not buying".
And when a million dollars is on the line, even if nobody else will use that feature, you can't really refuse.
The best you can do in that instance is to code it (and bill it!) as a 'customization' that is maintained separately from the core code. That way code to satisfy the cranky customer doesn't have to affect (infect?) your other customers' experience.
Maintaining code branches is its own nightmare--far worse than including it in the main code, in my experience, since you have to backport all future fixes in some fashion.
Then you have to maintain the plugin interface. It is usually better to just use a hidden setting (see about:config in Firefox) to control access to these things. K.I.S.S.
The fun part is that if you are possessed by feature creep you don't know about it. I have had many a conversation where someone would say "we must ship absolute minimum of features in v1" and then turn around and argue for some favorite toy feature in the same breath. Looking back I see myself doing the same. This is one thing I wish i could undo, it would have saved us months off development time.
Makes me wonder if I am still possessed, and oblivious.
A tip I remember from somewhere goes something like "if a feature provides more value than the effort required to learn how to use it (for the average user) then its a good addition." Admittedly there's some unknowns in there.
And not "we want a menu here" but "we need a transcoding mode that allows us to specify the stream PIDs directly, and if we don't get it, we're not buying".
And when a million dollars is on the line, even if nobody else will use that feature, you can't really refuse.