The problem is that there's no one right answer. Amazon needs a relational database and a MVC framework for their site, because it's gigantic and has to be organized to handle humongous amounts of data efficiently. Joe's Cafe needs a single HTML page that gives the store's hours and a picture of Joe with his mom. My site has a few dynamic elements and only a few pages, but enough pages where typing "include('header.php');" in every page is an inconvenience. I think where many frameworks fail is they assume that your site requires a certain (usually high) level of functionality. As it is, to get a site running on Rails, for instance, you have to: 1) modify the config/database.yml with your login info (you want a DB, right? of course!) 2) modify the conifg/routes.rb file to route your special URLs properly (you want to route things all over hell's half-acre, right? of course!) 3) add views/layouts/default.rhtml for the default site layout 4) add a controller in controllers/ (you have your BSCS and understand OO design patterns, right? of course!) 5) add respective model in models/ (which must relate to table of pluralized name in the DB) 6) add respective view directory in views/ 7) for every page you want, add its method to the controller (even if just a stub) and its rhtml file to its directory in views/ I wouldn't know all this if I hadn't read a lot of documentation, as everyone does, when getting started with Rails. Also, by default, I believe the Pages controller is always there, which routes requests for pages from the pages table in the DB. What a mess! Alternatively, you could modify rails distro in the following way: 1) have a "sample:" header in config/database.yml and no "production:", "development:" or "testing:". If these are not present when the application starts, assume that the application does not use the DB. 2) modify config/routes.rb to make sure that URLs will route sanely and intuitively according to the directory structure of the views/default/ dir 3) package Rails with a DefaultController with nothing but a method_missing method to render whatever view from the views/default/ dir is requested. 4) create a symlink called "myPages" in the app's root dir to the views/default/ dir. Now, to get the app running on a clean install of Rails, I do the following: 1) add my layout to /views/layouts/default.rhtml 2) type "hello world!" in myPages/index.rhtml ... and voila my site has content. Why don't they do this?!