I normally do lots of little releases rather than large big ones, but this
+ release involved lots of little touches all over the entire code base. It
+ now has a ton of features and should have the best Rails support yet. It's
+ even got GemPlugins to a leve that anyone can use it. Read the
+ news for the full scoop.
+
diff --git a/doc/site/src/docs/gem_plugin.page b/doc/site/src/docs/gem_plugin.page
index 346f7b72..40586bf0 100644
--- a/doc/site/src/docs/gem_plugin.page
+++ b/doc/site/src/docs/gem_plugin.page
@@ -17,6 +17,57 @@ new commands.
such as "mongrel_rails dostuff". Handlers and
Filters are on their way.
+h2. Why Plugins for Mongrel?
+
+If you've ever used other systems that have plugins you'll find there are
+several painful parts to writing your own plugin:
+
+* You don't have their developer tools so it takes forever to get started.
+* You don't know how to structure the project or even where to start.
+* Once you get it built you have to figure out how to register and install it.
+* When you want to update it you have to somehow get the update out to users.
+* You have to manage dependencies between your plugin and other plugins.
+* Including and using your own resources (images, html files, etc.) or config files
+ is really painful. Not sure why this is but it's really annoying.
+
+Most people solve many of the problems by the "sourdough method". They
+take a plugin that currently works, copy it, and base their plugin
+on the prototype. This works great until you want to do something
+original or until you find out the original author did something wrong.
+
+GemPlugin solves this problem by relying on the regular RubyGems
+package management system to give you:
+
+* A simple way to package, distribute, manage, and update your Mongrel plugins.
+* Dynamic loading based on the gem dependencies and not on specific configurations.
+* Segregated extensions for Mongrel in case you want a different license than LGPL.
+* All the capabilities of RubyGems. GemPlugin doesn't mess with them at all.
+* A little generator that starts your project off right similar to how Rails generators work.
+* The ability to package resources (images, configs, etc.) with your gem and then load them
+ dynamically no matter where the gem eventually gets installed.
+
+In the end GemPlugins are just RubyGems that get loaded a special way
+so they are activated right away. The only extra thing is a bit of
+"magic" that puts plugins into a nice little namespace outside of
+the usual Ruby module and class hierarchy.
+
+The advantage for Mongrel is that people can write their own
+plugins and distribute them easily without anything more complex
+than what all Ruby developers already have: RubyGems.
+
+h2. How They Work
+
+Mongrel plugins (a.k.a. GemPlugins) are really very simple. Basically
+when you use the GemPlugin API you tell it what kind of dependencies
+will trigger a gem to be loaded. GemPlugin then goes through all of
+the installed gems and loads any that meet the dependency description.
+Then your plugin just registers itself in the right "plugin category"
+and everything starts working. The user of your plugin won't have to
+do too much unless you want to give them additional configuration.
+
+The best way to understand this is to actually build a plugin
+and watch it work.
+
h2. Your First Plugin
diff --git a/doc/site/src/faq.page b/doc/site/src/faq.page
index 1c55d509..9bcab425 100644
--- a/doc/site/src/faq.page
+++ b/doc/site/src/faq.page
@@ -83,7 +83,7 @@ h3. Q: How did you make this site?
The site was actually incredibly easy to create. I simply went to "OSWD":http://openwebdesign.org/
and found a design that fit what I wanted for the site. I then went to "Flickr":http://flickr.com/
and found pictures of various animals that were licensed under the
-"Creative Commons":http://openwebdesign.org/ license. Once I chopped the images up, worked them
+"Creative Commons":http://creativecommons.org/ license. Once I chopped the images up, worked them
into the design structure, and wrote an initial set of content I was done.
The tool I use to generate the site is called "webgen":http://webgen.rubyforge.org/ which
diff --git a/doc/site/src/images/config_tool_snap.png b/doc/site/src/images/config_tool_snap.png
new file mode 100644
index 0000000000000000000000000000000000000000..05e1b143b6c14dd2163030c34a4aac5e722f6301
GIT binary patch
literal 38023
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