Platform, framework, productΒΆ
I thought about writing a blog entry about the terms platform, framework and product. I smelled a difference between platform and framework. Just then Paul Everitt wrote about it :-) And he basically used platform and framework interchangeably.
They still don't sound the same.
- A product is something tangible. You download firefox-the-browser and run it. You buy Omnigroup's Omni outliner and run it.
- A framework is something that doesn't run out of the box. A set of
tools, a set of conventions, loads of parts, some glue. Do an "svn up" of
zope.*and you get a heaping load of stuff, but you won't install it on your granddad's computer. - A platform is something you can build upon. That you can tweak. Examples? Read on for my main point:
Isn't a platform something orthagonal to the product/framework distinction? I'd call the zope.* framework a platform that you can build on. And I'd call the omni outliner product a platform as Ethan Schoonhover build an entirely different application (kgtd ) on top of that with the build-in applescript possibilities.
- You can build on plone and you can tweak it. Does that mean that plone-the-product should be a framework instead? Does that mean it needs to be disassembled and scattered to the four winds? Taken apart just for valuable parts? No. It is a strength to have a nicely packaged windows product-like installer.
- Plone 3.0 was programmed cleanly using all zope3's component architecture's
possibilities. That means loads of little bits and pieces (
plone.*) that are useful in zope3's framework. That plone wants to be a nicely packaged product doesn't mean that we should do it all in one monolithic whole. We're allowed to use a perfect framework if we can, right?
In summary: Plone is a product. Plone is a platform. It is not a framework. It uses the zope3 framework and is gladly splitting up a lot behind-the-scenes stuff into framework-friendly modules. It is a platform that you can build on that's already useful out-of-the-box.
Tags: plone
- a framework is something that calls your code
- a library is something that your code calls
- a platform is either a collection of libraries,
a collection of frameworks, or some combination
of the two
- an application is what the end user sees,
and is independent of what it's build on
So I think that's consistent with what you're saying.