According to Wikipedia, a software framework is (emphasis mine):
A software framework is a re-usable design for a software system (or subsystem). A software framework may include support programs, code libraries, a scripting language, or other software to help develop and glue together the different components of a software project. Various parts of the framework may be exposed through an API.
I don't think that this is a great definition, but at its core, a software framework seems to be a system which factors out some of the common components of an application and allows developers to focus on the application logic. It appears that people strongly disagree with me. BrowserUK stated:
(IMO) the key element of a framework is that it provides the structure of an application and leaves the application programmer to fill in the details of the specific application.
This sounds suspiciously close to my definition, but as far as I can tell, the key point is that most people feel that frameworks are targeted at specific types of applications (Web sites, ORMs like Hibernate), rather than at general types of applications. By this distinction, Stevan Little's excellent Moose distribution is not a framework, even though I see it as a "Perl 6 OO framework for Perl 5". Because it's general-purpose, it doesn't get to call itself a framework. Never mind it is a "reusable design for a software system", it doesn't get to belong to the framework club.
In the Perlmonks thread I linked to earlier, tye made a distinction between "application framework" and "library framework", though he didn't see the latter as being a useful term. I think I'm inclined to agree with him on that now. Though part of me balks at saying "general purpose code is not allowed to be a framework", I think I'll bow to consensus and agree that I was wrong. Oops.