Post by Michael GrahamHowever, what we are suggesting is quite different from what
CGI::Application::Dispatch currently does. It's similar in spirit, but
in implementation, there are lots of little details that differ.
Let me ask the same question I put out earlier. Why not? Mark put out
his and I addressed how his issues could be addressed in that
framework. I don't see what you mean or why such a path is so
necessary.
Post by Michael GrahamI'm worried that the documentation becomes very confusing because the
old terminology and new terminolgy are similar, even though the
%TABLE is used to map specific URLs to specific modules.
@DISPATCH is a new system for mapping URL-rules to specific modules.
A user familiar with the old system will understand this. A new user
will be totally confused.
I don't agree with adding @DISPATH and a new system for mapping
though. That is an artificial distinction IMHO. TABLE contains a
reference to a hash in the current implementation. It would be trivial
to check what type of reference is in there and act accordingly. This
way backwards compatibility is maintained and users used to the old
way can keep using it.
Post by Michael GrahamAnd you can't leave the old behaviour undocumented, because people are
still using it and they'll want to look up stuff in the docs.
Of course not. As I've illustrated you can support both with little
disruption or modification to the code. Granted its not ideally how it
would be done if we were building from the ground up, but I think
reinventing the wheel is a worse thing(tm).
Post by Michael Graham* Use a different namespace for the new system (e.g. CA::URLMaps,
CA::Routes, CA::Launcher, CA::StartMeUp etc.)
If the community is serious about taking some cues from Rails then
adding more similar, but different options is not advisable.
Post by Michael Graham* Put all the old docs in CA::Dispatch::COMPAT.pod, but leave all the
old features turned on for backwards compatiblity.
Once again, I don't see why this would be necessary. Adding a note in
the documentation stating the array reference is the preference and
were the hash reference came from should be sufficient.
Post by Michael Graham* Do something as Rob suggests with a pluggable dispatch architecture.
In this case CA::Dispatch would probably become
CA::Plugin::Dispatch, anyway.
This doesn't work for me for a number of reasons. Not every
application will have multiple instance scripts/app modules for one.
This adds a complexity with little value also. As David Heinemeier
Hansson has been known to say "flexibility is overrated." I have agree
based on my experience -- I'd gladly take one simple way of doing
things then being able to do it however I want.
Rather then just look at the documentation and APIs to Rails I started
reading some of the philosophy and "zen" behind Rails and found an
interesting passage from DHH
that I wanted to put out into this conversation. When asked why is
Rails so popular he replied...
"Rails is opinionated software. It eschews placing the old ideals of
software in a primary position. One of those ideals is flexibility—the
notion that we should try to accommodate as many approaches as
possible, that we shouldn't pass judgement on one form of development
over another. Well, Rails does, and I believe that's why it works."
"With Rails, you trade flexibility at the infrastructure level to gain
flexibility at the application level. If you are happy to work along
the golden path that I've embedded in Rails, you gain an immense
reward in terms of productivity that allows you to do more, sooner,
and better at the application level."
The entire interview is here if you are interested in reading it all:
http://www.oreillynet.com/pub/a/network/2005/08/30/ruby-rails-david-heinemeier-hansson.html)
This is the biggest point I think Cataylst misses that I'm rather
disappointed in it. (Hence I'm here having this conversation and not
somewhere else using Catayst.) If we learn anything from the mistakes
of others my hope is that it is this.
<tim/>
--
Timothy Appnel
http://www.timaoutlou