|Think about Loose Coupling|
Re^3: Tiny Frameworksby Ovid (Cardinal)
|on Sep 30, 2007 at 12:49 UTC||Need Help??|
In that link, you wrote (other folks might want to read it for context):
Before I start to talk about framework, I would like to make sure that nobody smell Ovid's class as framework, as if anyone would thought that way. If that is framework, we have all drowned in the sea of frameworks already. Thanks god, not many people are as ignorant as Ovid, and has the guts to call their classes frameworks.
When you (or someone) wrote that, you forgot one thing: to define a framework. Nowhere in your short rant did you provide something which should have been obvious. You see, I defined a framework. What probably surprises many people is that something that small can be a framework (I knew there would be people who jumped at that bait and I'm afraid you're the fish on my hoook). Many people have this silly notion that frameworks have to be huge. They don't. The sooner you get over this misconception, the better. Do you have this strange notion that a framework must have at least 297,173 lines of code and a core of at least 13 developers?
A framework is a merely general solution to a complex problem. By creating said solution, you can gain the benefit of a standard, predictable approach to a problem. The problem space I chose to attack was some difficulties with the Perl 5 language and I created a tiny framework whic attempted to address this. Sure, it's going to be startling to be people who are used to assuming that you must have X number of lines of code to call yourself a framework. Of course, there are also lots of programmers out there who think you have to have an IDE to be a professional programmer.
Or if you want, we can get down to a more specific definition of a software framework:
A software framework is a reusable design for a software system (or subsystem). This is expressed as a set of abstract classes and the way their instances collaborate for a specific type of software.12 Software frameworks can be object-oriented designs. Although designs don't have to be implemented in an object-oriented language, they usually are. 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 application programming interface (API).
Hmm, let's see: I have provided one abstract class (a set with only one member is still a set). An abstract class isn't enough to be a framework, but my code definitely meets the core criteria of a reusable design for a software system. In fact, it's clearly a general solution to a common problem with a standard API exposed. There are other bits (helper scripts and so on) which people often expect in a framework, but they're certainly not required. Wow, my code meets the definition of a framework! Imagine that, Ovid did his homework. Surprising, eh?
So, if you care to rebut this, please start by providing your definition of a framework. No definition, no rebuttal. Mind you, if you do post a definition, please provide either a source for that definition or why you think your definition is appropriate.