This is a tough one.
I like the idea of feats, for the ability to customize a character to differentiate or attain a particular specialization. That way, you may be a Fighter, but your feat choices enable you to be an Archer, or Sword-and-Board, or Greatsword, or whatever, and actually be slightly better at your particular schtick than someone not so specialized. It's much less cumbersome a system than to design individual classes for each archetype, while still providing a way to do simplified classes (by using a fixed feat progression) and enabling player-character specific customization.
That said, feats have been poorly and inconsistently implemented, from useless feats to "must have" feats. There shouldn't be an inherent choice between feats that add flavor and not power, and feats that only increase power -- both should exist as options, but should not be and either-or in the same mechanic. I like the idea of splitting feats into two sets that are gained separately -- one set for background/flavor/character building, and one set that addresses combat capability and other "talent"-type actions. I also like the idea of feat chains or trees (though video games can often provide bad examples, the general implementation of the Skyrim or Dragon Age "feat" trees is a good concept).
Fiddly feat approaches should be eliminated, like those that provide conditional bonuses. Feats should be either always on, or enable a specific maneuver/option. Feats should also not duplicate capabilities otherwise built into other character modules (whether skill, powers, spells,or the like).