Following is how I would like to define feature development. I hope that by exploring the nature of feature development and its concerns, we can better choose productive constraints to impose on it and better design features such that they can be easily evolved and minimize disruptions to other features.
The following are attributes I would like features to have:
A feature in a data management system should be a simple workflow which provides value to a client. A feature's interface should never break active clients, if it has them. A feature can be deployed alongside other features in the same executable, but should be able to be trivially moved out and into a separate executable.