[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