Based on what information, can we identify something as a software development framework? For example the Wikipedia article of 'software framework' claims it should include support programs, compilers, code libraries, etc. But there are some companies I know of which call a code library 'framework'!

What should a certain development environment contain to be considered as a 'framework'?

closed as not constructive by gnat, Blrfl, Oded, Walter, EL Yusubov Dec 12 '12 at 13:21

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.

  • The question is too vague. The wikipedia article precisely describes what a framework is, and how it differs from libraries. – dagnelies Dec 12 '12 at 9:25
  • 3
    @arnaud: well, the Wikipedia article is not clear enough and lacks examples. The answer by Jörg W Mittag is much more illustrative. – Arseni Mourzenko Dec 12 '12 at 12:37
  • a doubt is know as doubt always... thanks for asking this question :) – agpt Dec 25 '13 at 9:27

The thing that distinguishes a framework from a library is inversion of control: you call a library, but you don't call a framework – a framework calls you.

Or to put it another way: when you write an application using a library, you write the application and leave "holes" in it for the boring details which you then "fill" using a library. (Such a boring detail might be "how to sort a list"; you won't write code for that, you'll just call the library's sort routine.)

When you write an application using a framework, the framework already provides the application for you and just leaves holes in it for the interesting details which you then have to fill out.

  • 1
    +1. But what about the following case: you call a method which does some complicated computing over some data, and sends the results to you in a bunch of events; once received, you post-process and display this data in a specific way. Is this a library or a framework, given that both computing and post-processing are interesting? – Arseni Mourzenko Dec 12 '12 at 12:31

Not the answer you're looking for? Browse other questions tagged or ask your own question.