Where should the line be drawn between maintenance and new features?
The Oxford English Dictionary defines maintenance as:
(7.a) The action of keeping something in working order, in repair, etc.; the keeping up of a building, institution, body of troops, etc., by providing means for equipment, etc.; the state or fact of being so kept up; means or provision for upkeep.
I'm working with a client-server application and maintaining the client. In line with the definition, I would expect to perform:
- Bug fixing
- API Adaptations (minor changes necessary for the client to continue to work with the server)
- Optimization for identified performance problems
I would not expect to perform:
- New development (adding new functionality)
The Wikipedia Software Maintenance page references corrective, adaptive, perfective, and preventative maintenance, which seem to fall in line with what I'd expect, but the client-server nature complicates matters.
EDIT: With standalone applications that have no dependencies, if the software works it should continue to work. With client-server applications, the client may break when the server changes. Although this does not change the definition of maintenance it implies that there are more opportunities and occasions when changes to the client application will be necessary.
If two parties are to agree on a maintenance contract, a mutual understanding of what qualifies and maintenance and what qualifies as new features must be met, hence the question.