"And we get (portability|customization|context-sensitive help|...) ForFree
In other words: we're going to implement something cool, even though really we don't need it enough to justify working on it. Because the cost of implementation and maintenance is hidden, it looks like we got it for free. If it works, then I look good for magically achieving extra functionality; if it fails, no-one outside the project will know why.
See also: YouArentGonnaNeedIt
But you can get open source software ForFree. YouAintGonnaNeedIt? (*Rushes over to MicroSoft*)
My dictionary designates "for free" nonstandard. Standard English used to demand "for nothing" or simply "free". Even in England, this usage appears to have become increasingly standard in recent years, despite the apparent lack of any advantage to it.
Sometimes features really can arise for free, but they only seem to work out well as an emergent property. Be very scared if a manager-person plans on getting something ForFree
How can you plan to get something for free? Doesn't planning immediately imply resources were allocated somewhere? Maybe the cost is bundled with something else--because they are the same thing
--but it's not like the feature is going to fall out of the sky. Unless you're Chicken Little. -- SunirShah
You can sometimes
get something ForFree
when the design is open enough. Take for example the Wiki I'm setting up. I wanted to use the Wiki as a kind of el-cheapo database with simple workflow features. Specifically, I wanted a way that I could attribute Wiki pages with who should read the page.
I thought of modifying the code to support a drop-down list and a notification scheme. But then I realized that Wiki already
has this feature! If you want to notify someone to read a page, you insert the person's WikiName
with "Hey" slapped in front. Then the next time that person logs on, they can simply go to the "HeyJohnDoe
" page, click the title for backlinks, and presto-- there are all the pages John Doe should look at. When they complete the task on the page, they can then remove the link.
The essential principle here is building systems so that the people who use them can invent new ways to use the system. In the case of Wiki, that comes ForFree
because of the simple linking semantics and the powerful ability to search for backlinks. In the case of a text editor like emacs, building the editor out of a bunch of simple functions and invoking them with a programming language gives you macro scripting and other related features ForFree
(or at least really, really
Capture these qualities in your own software, and you may find you get something ForFree
. -- JohnPassaniti
Note that this is not really ForFree: you spent time researching it to figure out the best way to do it, and you have to document the process so that the users of your wiki will follow the conventions. It may not require changes to the software, but this feature is not without cost.
This still isn't really ForFree
. You've planned to make the system open, so the expense for the feature you get is bundled with the expense of open design. They are the same thing,
in other words. But, ForFree
could mean, and this is how I use it when talking to management, our design was so good/over-the-top (depending on your perspective) that we got a feature we didn't expect. -- SunirShah
The derisive use of ForFree
doesn't apply to "happy accidents" where nice features appeared without being planned. Rather, it is used for the case where management/developers identify a feature and decide that it has to be part of the delivered system, but then do not allocate any resources toward developing, testing, or maintaining that feature. This is generally based upon a belief that the feature (a) already exists or (b) would be so trivial to add that the cost is essentially zero. Such a thing is never truly without cost. --KrisJohnson
I would like to add that ForFree
usually seems to be connected to large third party libraries / middleware. For example: lets use J2EE and get transactions ForFree,
- the cost of the J2EE server
- the cost of learning J2EE, as opposed to learning about the client's problem
- the cost(via duplication) of J2EE itself -- how many different classes does an EJB for a given abstraction require? For each EJB you have to serialize the settings and jar everything up? What's the cost of automating this, either through an IDE or a self written build tool?
Enviroment always CostsSomething?
. The fancier the enviroment, the more it will probably cost.
One should remember that ThereAintNoSuchThingAsaFreeLunch
. -- GeraldoXexeo