A quick opinion based on my experience. One definition of "quality" is that it is "fitness for its intended purpose". But that definition is less than satisfactory, since it just leads to the question, "Whose intended purpose?" The users? But users don't all have the same purpose or agree with each other. A specification for the feature? But specifications can have errors?
"Defects" in the broadest sense are introduced into a software application at various stages: -- They can be added during requirements analysis, if we misunderstand what users needs or how they will use the product, or if this analysis is incomplete. -- They can be added during specification and design phases if the design does not meet the requirements -- They can be added during implementation, if the code does not implement the design and meet the specified requirements. Now this is somewhat an abstract model, since in reality these "phases" are not distinct. They overlap and might be done concurrently, by one or more people. But it is a useful model to keep in mind. So in terms of Bugzilla, when do we call something a DEFECT and when do we call it a FEATURE or ENHANCEMENT? Generally: if it is a defect in the implementation, then it is a DEFECT. So if it is clear from documentation, from the user interface, from common sense even, that a feature should work in a certain way, and it doesn't, then this is a DEFECT. So all crashes, hangs, "wrong answers", etc., are DEFECT's. A FEATURE/ENHANCEMENT on the other hand would be something where our requirements gathering or specification missed something. It is where we implemented what we intended, but some users wish we had included additional functionality. Finally, there are some grey areas. For example, an overarching goal of OpenOffice is to support the world's languages, linguistic conventions like Right-to-Left languages, multiple OS platforms, to be interoperable and conformant with the standards we support, like ODF, HTML, etc. So I treat an error in these areas as a DEFECT, even if it originated at requirements or design phase for that particular feature. Regards, -Rob