Dave, the argument that Fusebox "doesn't solve any real problems" is a very
interesting perspective, and one I haven't really heard before.  I can't say
I agree with it, but I certainly see it's validity.  In fact, it's probably
one of the more valid arguments "against" Fusebox that I've heard, and
certainly one that can't be relegated to the "he/she just doesn't know
enough about Fusebox" category.

This is a long email, and I've taken way more time than I should have to
carefully craft a cohesive response.  I've attempted to keep my pro-Fusebox
bias out of the picture, with purely objective references to it.  I suspect
that both "sides" could use this effectively as an argument for themselves,
but hopefully intelligence will overcome petty differences, and this will
provide a solid description of Fusebox from one who intimately understands
it's inner workings, but isn't trying to push it on the world.

------------------------------------------------------------------------

In my mind, Fusebox isn't trying to solve an explicit problem.  I see
Fusebox as two different things that are bound together to some degree.
First is a set of conventions, and second is the framework code itself.

The conventions are rather arbitrary, as conventions tend to be.  However,
while the widespread use of Fusebox doesn't make those conventions any more
valid that another set, it does make them more meaningful, since conventions
are only useful if a significant population uses them (not much of a
convention otherwise).  If developer X understands and uses Fusebox
conventions for development, he'll a bit of trouble going to a new company
that uses different conventions.  However, the odds of that new company also
using Fusebox conventions is far greater than if he'd been using conventions
unique to him or his old company.  In any Fusebox app, if you see a file
that starts with "dsp_" you instantly know that it has very little logic, if
any, and outputs something to the client, usually HTML.  You might use "d_"
prefixes, maybe it's a directory for display template, I don't know, so I'd
have to learn them if I took over your app.  If we're both using Fusebox,
that bump, however inconsequential it is, would not exist.

I group XFAs in the conventions section, because you can certainly write an
app that makes full use of the Fusebox framework without using a single XFA.
That's a blunder, but absolutely doable.  As the list has shown today, there
are a bunch of different options, and if Fusebox didn't have the concept of
XFAs built into it, I'd find another way to do the same thing.  Eventually
though, enough Fusebox users would probably start doing it the same way that
it'd get incorporated into the Fusebox conventions, which is how we got to
where we are now anyway.

In my opinion, these shared conventions are probably the more valuable.
They have existed across versions of Fusebox, and I find I use them even
when I'm not doing Fusebox work (on existing, non-FB sites, for example).
They make my job easier, because I never have to think about how to do
certain tasks, I just do them the same way I always do.  Yes, any
conventions would fit this bill, but I have a better chance of someone else
understanding Fusebox conventions than something I've created for my own
use.

Fusedocs are also a convention, although one that probably is less prevalent
than the others.  Documentation exists in many formats, and everyone can
pretty much read every format.  However, Fusedocs are reasonably unique in
that they are also machine readable, because they are entirely XML.  That
allows an enormous number of tools to be written to help the developer.
Steve Nelson has written several, I wrote something akin to the javadoc
utility (generates HTML documentation), and there are others out there.

Secondly, the framework.  Like the conventions, the framework enforces
discipline on the coder, except at an organizational level.  Simply using
conventions at this level would certainly work, but it helps (at least for
me) to have something there to ensure I'm following the right path.
Maintaining that discipline without any checks would be a daunting task.
Keeping those conventions in place, especially over the course of an
application's lifecycle, is difficult, because there are no large jumps,
it's a series of small changes, which may slowly and imperceptibly gravitate
from the original conventions.

The framework also provides a very raw form of documentation for the
application.  I can look at the circuit list of an Fusebox app (a single
file), and get a reasonable idea about what the app does, and how it's
structured.  That's nothing that properly maintained external documentation
can't accomplish, but if the code itself gives you the road map, there's
nothing to get out of sync.  If I need a finer grained look at the app, I
can start opening circuit definition files (fbx_Switch or circuit.xml) and
see exactly how the different modules flow within and between themselves.
This is still a very small set of files from the app, and I have a very
complete picture of how the entire app is laid out, and how the pieces fit
together to form a consistent whole.  If that's still not enough detail, I
can start opening up single code files (fuses) and see how they work. Each
one has comments explaining what it does, what variables it depends on, and
what variables it generates, so I don't have to look through code, I can
read prose.

When I go back to old apps I haven't touched in a while, having that roadmap
is infinitely valuable.  I can easily get to exactly the code I need, and
make my changes without having to remember how the rest of the app works.

Now, you can certainly say that the "roadmap" aspect of Fusebox could easily
be duplicated with a non-Fusebox framework, or no framework at all.  But if
there is already a tool that takes care of all the administrative
bookkeeping in dealing with making that roadmap also the functional driver
for your app, why not use it?  I don't think that it's a coincidence that
Struts is the definitive JSP/Servlets framework and that it uses an XML
configuration file that declaratively controls the application's flow.  I
don't see it as a coincidence that FB4 has gone down this same road.  It's
fantastic, once you start using it, because it abstracts application flow
from application processing.  In other words the flow of the application is
statically dictated by an architect, rather than being controlled by
programming that is indistinguishable from, and perhaps even intermixed
with, the application itself.

------------------------------------------------------------------------

cheers,
barneyb

---
Barney Boisvert, Senior Development Engineer
AudienceCentral
[EMAIL PROTECTED]
voice : 360.756.8080 x12
fax   : 360.647.5351

www.audiencecentral.com


> -----Original Message-----
> From: Dave Watts [mailto:[EMAIL PROTECTED]
> Sent: Thursday, July 17, 2003 4:34 PM
> To: CF-Talk
> Subject: RE: Cons to Fusebox
>
>
> > I'm right with you Michael.  I've heard from plenty of folks
> > just itching for a chance to rip on Fusebox (or any topic at
> > all, actually).  But when it comes to actually delivering a
> > superior solution, folks tend to fall suspiciously silent...
> >
> > I would switch from Fusebox to something else in 5 seconds if
> > someone could present a truly superior alternative.  Thus far
> > (and I've been looking for years), no one's actually delivered.
>
> Perhaps you're looking for the wrong thing. What is the problem that is
> solved by Fusebox? My complaint with it, my argument against it
> if you will,
> is that it doesn't solve any real problems that I've seen with web
> application development. If there's no problem, how can anyone present a
> solution to that problem?
>
> My solution, such as it is, simply requires a judicious application of
> common sense. The reason that I like CF better than any other web
> application development language I've seen - Java, ASP.NET, whatever - is
> that it is strikingly simple. It allows me to do the typical
> tasks in a web
> application without even having to think about syntax or complexity. I've
> worked with CF applications large and small, and still, as long as I can
> understand the data model and the intent of the application from an
> end-user's perspective, I can easily read the CFML code and figure out
> what's going on. That's the least of my problems.
>
> Now, I won't go so far as to say "Fusebox is bad", because
> honestly, I don't
> really think it's bad. I just don't think that it makes any difference, in
> the vast majority of applications in which it's used. I don't
> think it makes
> it easier for developers to move to new projects, any more than say,
> variable naming conventions do. As with variable naming conventions, it's
> hard to make an argument that it's bad, but it's just as hard to make the
> counterargument that it's good - conventions are just that, nothing more.
>
> Dave Watts, CTO, Fig Leaf Software
> http://www.figleaf.com/
> voice: (202) 797-5496
> fax: (202) 797-5444
>
> 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4
Subscription: 
http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=4
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq

Get the mailserver that powers this list at 
http://www.coolfusion.com

                                Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
                                

Reply via email to