[Catalyst] "Catalyst - The Definitive Guide" and the
"Catalyst Cookbook"
David K Storrs
dstorrs at dstorrs.com
Thu Dec 22 17:13:10 CET 2005
On Dec 22, 2005, at 6:50 AM, Sean Davis wrote:
> Is there interest in expanding this?
Yes, definitely.
I would suggest dividing the book into two sections: quick start and
Everything There Is To Know. The quick start section should be just
that--a heavily emphasized section right at the front that says "Here
is what you need to know to have your app running and doing useful
things in 4 minutes, and doing 80% of what you need it to do in 30
minutes." The second section should be, literally, every useful and
relevant fact that we can dump in. The two sections should get equal
billing--if they miss the quick start and turn to the complete
reference first they are going to be overwhelmed and will probably
put the book down. (Metaphorically speaking, since this will be in a
browser, not on dead trees.)
> I think a challenge would be to
> continue to expand it while maintaining some generality and still
> providing
> rich code examples. Could I suggest a few "chapters"--not meant to
> be a
> full list?
>
> AJAX (or dynamic web pages, which might be more general)--would
> have to
> include information (or links) to javascript tutorials and
> documentation.
I would suggest calling it Dynamic Web Pages, with a subheader for
AJAX. I guarantee that other technologies will eventually be written
up / invented, and it makes sense to build the skeleton for them now.
> Configuration [...]
Yes.
> Logging and Debugging
I would split this into two separate chapters; while logging is often
used for debugging (and debugging often involves looking at the
logs), the two topics are not really that closely related.
> Engines and their specifics (configuration examples, for instance)
Yep.
> Model classes--these can be extremely varied and complicated or
> simple.
> Including some models beyond CDBI/DBIC examples would be useful, I
> think. I
> think many intermediate and advanced perl programmers understand the
> importance and strength of a good model. However, this is probably
> the most
> foreign concept to folks relatively new to MVC and object-oriented
> programming.
You're absolutely right about the importance of this topic. I would
suggest that the chapter get broken down as follows:
= Models
== Philosophy of Models
Here we discuss what a Model *is* in the MVC sense, what they are
used for, what the design goals are, etc. Give people the
fundamental underpinnings here, so that they have the grounding to
usefully evaluate different technologies. Any examples that we
provide in this section should be in technology-neutral pseudocode.
For example:
class Model::Suburbanite {
isa Model::HomeOwner;
has(1+) Model::Pet;
has(0+) Model::Child; # Aside: the concept of having a "model
child" is rather humorous...
}
class Model::HomeOwner {
isa Model::Adult;
has(1) Model::House; # Note: use Model::RichGuy or
Model::Landlord if you want to own multiple homes
has(0-1) children;
}
class Model::Adult {
isa Model::Person;
attrib age is >= 18;
}
class Model::Person {
attrib $age;
attrib $name;
}
class Model::Pet {
attrib $species;
attrib $name;
}
class Model::Child {
isa Model::Person;
attrib age is < 18;
}
class Model::House {
attrib $age;
attrib $name;
}
== Analysis and Comparison of the Various Model Technologies
Here we list each of the Model technologies (DBIC, CDBI, etc) that we
are going to talk about and compare and contrast them very briefly.
What are their design goals? What are their strengths and
weaknesses? How actively are they maintained? What is the best way
to get support (IRC, mailing list, etc). And so on.
== DBIC
Here we have the complete reference section for this technology.
== CDBI
Here we have the complete reference section for this technology.
== <other model technologies as desired: DBI? Tangram? Rose? etc>
Here we have the complete reference section for this technology.
> Tools--a general chapter on tools that people find useful for web
> development (like css & xhtml validators, must-have browser plugins,
> etc.)--mainly links and brief descriptions....
Yes yes yes yes! Definitely!
Also, back in the day, I started a "Background knowledge you need to
have" page on the wiki (http://dev.catalyst.perl.org/wiki/
NecessaryBackgroundKnowledge), but I think that would be a great
thing to flesh out.
> I am not a web developer, but I do
...play one on the Internet? :> Sorry, couldn't resist.
--Dks
More information about the Catalyst
mailing list