The flexibility fetish
The other day someone pointed out to me that the introduction blurb to OSWorkflow had 8 separate mentions to how flexible it is, and how it has much flexbility. While shameful, it was with quite the sigh of relief that I realised that I hadn’t written that particular blurbage. However, it did get me thinking, what’s up with all the flexibility every project brags of?
I mean honestly, how likely is it that everything is so goddam flexible? Does it actually mean anything anymore? What’s the measure of flexibility?
Looking across any number of products, it’s rare to find one that does not try to big itself up with promises of flexibility the likes of which are seldom seen outside of freak circus shows.
Let’s have a brief browse, shall we? Below are snippets of documentation from various (very popular) java projects. I challenge you to manage to identify a single product, or even what sort of product each might be.
The above snippets are from WebWork (2.0), Struts, Tapestry, Lucene, Tomcat, and dom4j documentation (not in that order). I’d be truly stunned if anyone can match up the sentences to the product.
The whole flexibility malarky is slowly turning into a dirty I-touch-myself-in-public kind of spectacle. Enough already. Everything is flexible, flexibility is in the eye of the beholder. The word is used with such impunity that it’s lost all sense of meaning. If piles of dog droppings like Struts can use it willy-nilly, how can it possibly mean anything?
Keep in mind that too much flexibility means that your framework will become limp and flaccid, and nobody likes their pride and joy to have those properties. A wise man once said that a framework’s genius lies more in what it does not do, than in what does.
So, documentation writers everywhere, stop bragging of how flexible you are. It’s nothing to brag about, because every other little shit with a framework is also furiously waving his penis pimping his own not-so-unique brand of flexibility. If you really do buy into that shit, then for fuck’s sake, try to present some more compelling evidence than that word. You might as well start drooling foolishly and tugging at your nose proclaiming that your framework or library is ‘good, nice, and great’ for all the use that F word will bring you.
April 24th, 2004 at 6:57 pm
This probably because most open source people grows lots of wood by using “extract interface” in IDEA.
By the way, Isn’t webwork 1 flexible?
April 24th, 2004 at 7:04 pm
With luck Java will soon approach the flexibility of Perl.
April 24th, 2004 at 7:10 pm
Come, you are a tedious fool. To the purpose.
April 24th, 2004 at 7:11 pm
You should be women, and yet your beards forbid me to interpret that you are so.
April 24th, 2004 at 7:47 pm
thank goodness your nose isn’t an unmentionable
April 24th, 2004 at 8:34 pm
*phew*, I strafed that one. Prevayler documentation (http://docs.codehaus.org/display/PREVAYLER) has no mention of The Other F Word.
And, please, someone slap this ‘boxed’ with a heavy cluestick. It’s really annoying and degrading the (already poor) signal-to-noise ratio here in the comments.
April 24th, 2004 at 9:03 pm
only a few seconds of lathering googlespank by a fapster like myself has revealed the mapping of quotes to projects:
dom4j
lucene
tomcat
struts
webwork
tapestry
do you want a cigarete?
April 24th, 2004 at 10:48 pm
Googlespanker, you are a very sad person. May I suggest you go to the nearest pr0n web site and search for a life?
April 25th, 2004 at 1:23 am
He doesn’t need pr0n…he uses google to spank…duh!
April 25th, 2004 at 2:52 am
Guilty as charged! Oh, Hani, you are the Stile of Java!
April 25th, 2004 at 3:15 pm
The F. phenomenon is a consequence of GoF patterns that have become a commodity, if not overused. People tend to overengineer and add patterns when they don’t need to. The result is code that is hyper-flexible and overshoots its original goal, is unreadeable because of too many layers and levels of indirection. I was glad with the XP wave to pop this balloon, now at least there is a damping mechanism when the pattern adepts are overheating.
Strange you don’t mention Swing. Swing adepts always tout it’s extreme flexibility.
April 25th, 2004 at 7:02 pm
I engineered the most flexible framework in the world. It has one interface, called Command. It has one method, public Object execute(Object[] args). Trivial plugins integrate this framework with any functionality for Eclipse, Ant, Struts, Tapestry, Velocity, Webwork, etc etc. In a completely optional add-on jar I have 458 classes that help populate the properties of Command objects by reflection using xml files (DOM, SAX, digester, JDOM, SOAP). The framework is so flexible that you can even instantiate Command objects by hand, if you wish to resort to such prehistoric methods!
Don’t worry for all of you salivating and tugging your unmentionables, version 0.1e-7 pre alpha appearing at a codehaus dropping (er, download site) near you.
April 26th, 2004 at 4:27 am
“A wise man once said that a framework’s genius lies more in what it does not do, than in what does.”
My framework doesn’t do anything at all. Does that make me a genius?
April 26th, 2004 at 8:44 am
Yawn.
April 26th, 2004 at 11:09 am
Carlos: there’s a bot posting shakespear quotes under my name to make me look bad. Note how the person who wrote that thing is a flaming idiot for not even being close to reproducing simple shit like my sig.
April 26th, 2004 at 11:13 am
Hi Kris –
That’s nice, but I’ve forked your project and replaced the method sig with:
public List execute(List args)
Now it’s even more flexible – w00t!
April 26th, 2004 at 11:17 am
s/unmentionables/nose/
Did you all notice? He’s listening.
April 26th, 2004 at 11:37 am
Here’s how you tell if a framework is flexible. Look on the user mailing list for the following dialog:
User: Does this framework support obviously essential feature X?
Framework Developer: No, but our framework is so flexible that you could write a plugin for that in a matter of hours. It’s just that… somehow nobody has done it over the last two years.
April 26th, 2004 at 5:48 pm
My frameworks is a lot better and it was not forked, it was built from the ground up for performance and scalability:
public Object execute(Object o);
The framework is so extensible that there are lots of extension points. If you decide to use any of the other two competing frameworks you can change a config param and so the other frameworks and your application will not be tied to Lists or arrays. This is very important since this makes the framework also compatible less capable j2me profiles
April 26th, 2004 at 5:50 pm
Man… where is the edit comment button?
Hope you got the idea. This description of my framework sucks but it will be improved on the next version as I’ll start to use maven to post comments on blogs
April 27th, 2004 at 2:20 am
Looks like jroller failed the flexible framework test … Hani why didn’t you write an “Edit Comment” plugin ?
April 27th, 2004 at 9:34 am
I could write an Edit Comment plugin for JRoller… it would only take a few hours.
April 27th, 2004 at 10:53 am
Flexability is a benefit with a cost. (in maintainability)…unless it adds something for the user or a dramatic speed increase for the developer, it is usually just an exercise in mental mastication.
April 27th, 2004 at 2:48 pm
regardless of whether it’s a boxed-bot or not, those quotes are incredibly funny.
What’s all this talk of signal-to-noise ratio? These comments are 100% signal, but the signal just happens to be noise, or something.
April 27th, 2004 at 6:21 pm
How true. Unfortunately, this transcends java frameworks, and is even finding its way into small applications. I read this bile and wasn’t going to comment until I saw the following in the new iStumbler release notes:
“Release 84 completely remade iStumbler into an extensible, high performance and indispensable wireless scanning utility. Plugins provide unprecedented flexibility……blah blah blah”
WTF? Why do I need it to be flexible? I just want to know what WiFi traffic is around. Wait, I know…..I can write a plugin that detects the brain waves of self-promoting jackasses. That way I can steer clear of the area.
April 28th, 2004 at 2:39 am
Flexibility is similar to what I’ve been doing: flirting with other guys while dating with a girl in the cafe.
April 28th, 2004 at 2:42 am
I’d like to punch your clown, may I?
April 28th, 2004 at 2:59 am
I’m an incredibly flexible clown. Punch me.
April 28th, 2004 at 12:50 pm
hehe, I agree with Hani… again… something is going wrong here..
I think every product should have an F scale marked on each product. The lower the better.
R
April 29th, 2004 at 12:38 am
Flexibility is being able to date with girls while covering your gay status from the rest of the world
April 29th, 2004 at 7:42 am
You ara ALL a bunch of loozers.
April 29th, 2004 at 7:42 am
You ara ALL a bunch of loozers.
April 29th, 2004 at 8:00 am
How about venting some spleen at that vilest of all java marketing buzzwords – ‘scalability’.
October 28th, 2004 at 4:06 pm
Flexibility usually means the designers of the product couldn’t decide what the thing should do and how it should do it. I’m a busy guy. I got work to do. Give me a package that does one thing and one thing well and I will make it fit. I don’t have time to play with dozens of configuration settings.
October 29th, 2004 at 8:09 am
Flexibility usually means the designers of the product couldn’t decide what the thing should do and how it should do it. I’m a busy guy. I got work to do. Give me a package that does one thing and one thing well and I will make it fit. I don’t have time to play with dozens of configuration settings.