Hymes's theory of communicative competence was a definition of what a speaker needs to know in order to be communicatively competent in a speech community. In Hymes's view, a person who acquires communicative competence acquires both knowledge and ability for language use with respect to
1. whether (and to what degree) something is formally possible;
2. whether (and to what degree) something is feasible in virtue of the means of implementation available;
3. whether (and to what degree) something is appropriate (adequate, happy, successful) in relation to a context in which it is used and evaluated;
4. whether (and to what degree) something is in fact done, actually performed, and what its doing entails.
This theory of what knowing a language entails offers a much more comprehensive view than Chomsky's view of competence, which deals primarily with abstract grammatical knowledge.