\documentclass{article}
\usepackage{ulem}
\usepackage{graphicx}
\usepackage{hyperref}
\pagestyle{headings}
\begin{document}
\part{Hydra}
Hydra is the new CMS/wiki-like app being created for <a href="https://wiki.horde.org/Project/HordeWeb">Project/HordeWeb</a>

\section{Bugs}
\section{Source}
Hydra is being developed in the <a href="http://horde.org/source/git.php">Horde hatchery</a>

\section{People}
<a href="https://wiki.horde.org/ChuckHagenbuch">ChuckHagenbuch</a> is thinking about Hydra a lot.

\section{Description}
\subsection{Draft specification}
We need some sort of CMS to manage the content of the site and to make some areas user-editable like the current wiki. We may adopt an existing CMS, or we may adapt some of our own existing code. I propose that we create a new app similar to Wicked and the old Giapeto app, with the following feature list:

\begin{itemize}
\item \textbf{Must} have a solid API for plugins, external access, embedding, etc.


\item Support for different page content-types (wiki, HTML, textile)


\item a GUI HTML editor for html content pages
\begin{itemize}
\item loki and fckeditor seem most promising so far for this; I want something that supports h1-h6, p, and tables at least - no <font>, mostly semantic markup.


\end{itemize}

\item inline preview (instead of wicked's popup - can just be an overlay). only necessary for non-HTML


\item permissions like Wicked


\item implicit or explicit hierarchies based on / as a separator


\item use Horde\_Routes for URL management


\item use Rdo for data classes


\item store versions of content like wicked does


\item Good search based on Horde\_Content\_Index


\item generate feeds of edit activity across the site/sites; good storage of when and by whom content was last edited


\item hierarchical navigation of content (<a href="http://twiki.org/cgi-bin/view/Plugins/[TreePlugin](TreePlugin)\">http://twiki.org/cgi-bin/view/Plugins/[TreePlugin](TreePlugin)\textbackslash\{\}</a>)


\item support for URL shorteners (<a href="http://googlecode.blogspot.com/2011/01/google-url-shortener-gets-api.html">http://googlecode.blogspot.com/2011/01/google-url-shortener-gets-api.html</a> or built-in?)


\end{itemize}
\subsubsection{Themes}
We should have a few nice, if generic, layouts available by default. See <a href="http://www.noupe.com/wordpress/15-high-quality-premium-like-free-wordpress-themes.html">http://www.noupe.com/wordpress/15-high-quality-premium-like-free-wordpress-themes.html</a> for some potential inspiration/sources.

\begin{itemize}
\item <a href="http://en.blog.wordpress.com/2011/03/30/new-theme-basic-maths/">http://en.blog.wordpress.com/2011/03/30/new-theme-basic-maths/</a>


\item <a href="http://en.blog.wordpress.com/2011/03/25/new-theme-rusty-grunge/">http://en.blog.wordpress.com/2011/03/25/new-theme-rusty-grunge/</a>


\end{itemize}
\subsubsection{Layouts}
\begin{itemize}
\item use @ instead of \$this-> for shorthand?


\item look at rails layouts


\item <a href="http://hasin.wordpress.com/2011/03/06/page-grid-layout-designing-is-fun-with-this-12-line-parser/">http://hasin.wordpress.com/2011/03/06/page-grid-layout-designing-is-fun-with-this-12-line-parser/</a>


\item <a href="http://desandro.com/demo/masonry/docs/">http://desandro.com/demo/masonry/docs/</a>


\item <a href="http://welcome.totheinter.net/columnizer-jquery-plugin/">http://welcome.totheinter.net/columnizer-jquery-plugin/</a>


\item <a href="http://designshack.co.uk/articles/layouts/10-rock-solid-website-layout-examples">http://designshack.co.uk/articles/layouts/10-rock-solid-website-layout-examples</a>


\item <a href="http://www.readwriteweb.com/archives/google\_brings\_state-of-the-art\_dynamic\_layouts\_to.php">http://www.readwriteweb.com/archives/google\textbackslash\{\}\_brings\textbackslash\{\}\_state-of-the-art\textbackslash\{\}\_dynamic\textbackslash\{\}\_layouts\textbackslash\{\}\_to.php</a>


\end{itemize}
Page Object

Block

\begin{itemize}
\item how to return block from driver, inherit Block methods, but also inherit Rdo\_Base


\end{itemize}
Mapper! Mappers are the drivers

\subsubsection{Horde\_Text\_Transformer}
\begin{itemize}
\item text\_to\_html


\item html\_to\_text


\item wiki\_to\_html


\item wiki\_to\_?


\item textile\_to\_html


\end{itemize}
Horde\_Text\_Transformer::transform(\$text, \$from, \$to = 'html');

\begin{itemize}
\item finds the best transformer


\item if there's no exact match, sees if there's an intermediate through 'text' (i.e., textile\_to\_text goes from textile\_to\_html through html\_to\_text)


\end{itemize}
Other potential formats

Markdown:

\begin{itemize}
\item <a href="http://github.github.com/github-flavored-markdown/">http://github.github.com/github-flavored-markdown/</a>


\end{itemize}
\subsubsection{Usage Roles}
First guess

\begin{itemize}
\item (anonymous) visitors


\item (logged in or anonymous) users that interact with application widgets (shop, wiki, whatever) on the front-end website side


\item (logged in) users/editors that generate content by direct interaction with the "horde desktop" and its applications like jonah, wicked in the traditional way


\item (logged in) site operators that can edit layouts, style sheets etc


\item (logged in) hydra application admins that can add new Websites etc


\end{itemize}
chuck suggested that the "horde desktop" role should be solely a content administration role.<br />
End users should see a website that doesn't necessarily look like an application.

--Ralf Lang

\subsubsection{Old requirements list from the rampage cms project}
Steps from Giapeto:

\begin{itemize}
\item Templates have been moved into the VFS. A default template is loaded if none are present. Now we need a template manager for editing templates.


\item Simplify configuration as much as possible.


\item Allow for hosting multiple sites from one giapeto config. Need a way to differentiate. Perhaps have a small set of files that host a giapeto site? Problem is then you wouldn't be able to create them through the web.


\item Probably want to keep php4 compatibility for now


\item Need some sort of workflow


\item Versioning: At least one previous version should be kept to facilitate rollback


\item Default config should result in a reasonable site that looks like a web site, not a Horde app


\item Ease of use all over


\item Rely on Horde\_Template blocks integration, instead of "main" content area with confusing block splitting?


\item If so, need some sort of a "compositeblock" functionality to allow users to put custom content into an area without editing a template


\item Provide a standard blog template with Jonah integration?


\item How to handle user-supplied images? Not galleries - do that through Ansel - but page design images - borders, etc.


\item Should sites be able to lock themselves to a specific theme? Probably...


\item Give a theme selector widget for sites that want to allow variation


\item If possible, make the CMS link in the Horde sidebar go to an admin screen, while having /horde/giapeto/ still be the root user-facing site


\end{itemize}

\noindent\rule{\textwidth}{1pt}
CMS Suggestion: Add some native support for Horde\_Blocks or a new kind of widget. That will encourage more people to build Blocks which one can integrate into Websites.Currently you only need few lines of code but if the CMS is going to be a new app for release, this may really push Horde deployment a step forward.See also the CMS module of egroupware which allows joomla templates to be used, and easily integrates all egroupware apps (but is a bit clumsy)


\noindent\rule{\textwidth}{1pt}
The page object will glue together a grid of widgets (plain html content widgets, hydra's own menu/navigation widget, horde app

block widgets, etc) with a style, header object, footer object etc to a page which can be rendered to a complete html page or other output type.

\section{Resources}
\begin{itemize}
\item <a href="http://www.cmswatch.com/Trends/1518-A-reality-checklist-for-vendors">http://www.cmswatch.com/Trends/1518-A-reality-checklist-for-vendors</a>


\item <a href="http://blog.phpdeveloper.org/?p=101">http://blog.phpdeveloper.org/?p=101</a>


\item <a href="http://news.cnet.com/8301-13505\_3-9999197-16.html">http://news.cnet.com/8301-13505\textbackslash\{\}\_3-9999197-16.html</a>


\item <a href="http://www.readwriteweb.com/archives/will\_habari\_be\_the\_next\_wordpress.php">http://www.readwriteweb.com/archives/will\textbackslash\{\}\_habari\textbackslash\{\}\_be\textbackslash\{\}\_the\textbackslash\{\}\_next\textbackslash\{\}\_wordpress.php</a>


\item <a href="http://www.readwriteweb.com/archives/swirrl\_semantic\_web\_wiki.php">http://www.readwriteweb.com/archives/swirrl\textbackslash\{\}\_semantic\textbackslash\{\}\_web\textbackslash\{\}\_wiki.php</a>


\item <a href="http://www.readwriteweb.com/archives/groupswim\_adds\_wikis\_apis\_and\_more.php">http://www.readwriteweb.com/archives/groupswim\textbackslash\{\}\_adds\textbackslash\{\}\_wikis\textbackslash\{\}\_apis\textbackslash\{\}\_and\textbackslash\{\}\_more.php</a>


\item <a href="http://github.com/37signals/wysihat">http://github.com/37signals/wysihat</a>


\item <a href="https://apps.carleton.edu/opensource/reason/">https://apps.carleton.edu/opensource/reason/</a>


\item <a href="http://apps.carleton.edu/opensource/loki/">http://apps.carleton.edu/opensource/loki/</a>


\item <a href="http://twiki.org/cgi-bin/view/Plugins/[SearchEngineKinoSearchAddOn](SearchEngineKinoSearchAddOn)">http://twiki.org/cgi-bin/view/Plugins/[SearchEngineKinoSearchAddOn](SearchEngineKinoSearchAddOn)</a>


\item <a href="http://twiki.org/cgi-bin/view/Plugins/[CommentPlugin](CommentPlugin)">http://twiki.org/cgi-bin/view/Plugins/[CommentPlugin](CommentPlugin)</a>


\item <a href="http://twiki.org/cgi-bin/view/Plugins/[EditTablePlugin](EditTablePlugin)">http://twiki.org/cgi-bin/view/Plugins/[EditTablePlugin](EditTablePlugin)</a>


\item <a href="http://twiki.org/cgi-bin/view/Plugins/[MultiEditPlugin](MultiEditPlugin)">http://twiki.org/cgi-bin/view/Plugins/[MultiEditPlugin](MultiEditPlugin)</a>


\item <a href="http://tstarling.com/blog/2008/12/secure-web-uploads/">http://tstarling.com/blog/2008/12/secure-web-uploads/</a>


\item <a href="http://ajaxian.com/archives/roxer-simple-web-page-creation-and-editing">http://ajaxian.com/archives/roxer-simple-web-page-creation-and-editing</a>


\item <a href="http://www.concrete5.org/">http://www.concrete5.org/</a>


\item <a href="http://e107.org/">http://e107.org/</a>


\item <a href="http://en.wikipedia.org/wiki/Bricolage\_\(software\)">http://en.wikipedia.org/wiki/Bricolage\textbackslash\{\}\_\textbackslash\{\}(software\textbackslash\{\})</a>


\item <a href="http://www.hicksdesign.co.uk/journal/expression-engine-vs-textpattern">http://www.hicksdesign.co.uk/journal/expression-engine-vs-textpattern</a>


\item <a href="http://globalmoxie.com/projects/bigmedium/index.shtml?df">http://globalmoxie.com/projects/bigmedium/index.shtml?df</a>


\item <a href="http://aliro.org/">http://aliro.org/</a>


\item <a href="http://jeremy.zawodny.com/blog/archives/009883.html">http://jeremy.zawodny.com/blog/archives/009883.html</a>


\item <a href="http://tewha.net/2007/10/i-want-my-%E2%86%A9/">http://tewha.net/2007/10/i-want-my-\%E2\%86\%A9/</a>


\item <a href="http://radiantcms.org/">http://radiantcms.org/</a>


\item <a href="https://apps.carleton.edu/opensource/reason/">https://apps.carleton.edu/opensource/reason/</a>


\item <a href="http://seansperte.com/entry/an\_introduction\_to\_expression\_engine/">http://seansperte.com/entry/an\textbackslash\{\}\_introduction\textbackslash\{\}\_to\textbackslash\{\}\_expression\textbackslash\{\}\_engine/</a>


\item <a href="http://www.priebsch.de/2008/06/tdd-in-a-self-experiment/">http://www.priebsch.de/2008/06/tdd-in-a-self-experiment/</a>


\item <a href="http://www.codinghorror.com/blog/archives/001105.html">http://www.codinghorror.com/blog/archives/001105.html</a>


\item <a href="http://www.google.com/search?q=joe+clark+gruber+footnotes">http://www.google.com/search?q=joe+clark+gruber+footnotes</a>


\item <a href="http://www.ministryoftype.co.uk/words/article/quote\_unquote/">http://www.ministryoftype.co.uk/words/article/quote\textbackslash\{\}\_unquote/</a>


\item <a href="http://www.silverstripe.com/">http://www.silverstripe.com/</a>


\item <a href="http://chyrp.net/">http://chyrp.net/</a>


\item <a href="http://webworkerdaily.com/2009/02/12/tank-an-easy-way-to-build-sites-quickly/">http://webworkerdaily.com/2009/02/12/tank-an-easy-way-to-build-sites-quickly/</a>


\item <a href="http://wikkawiki.org/[HomePage](HomePage)">http://wikkawiki.org/[HomePage](HomePage)</a>


\item <a href="http://nanoc.stoneship.org/">http://nanoc.stoneship.org/</a>


\item <a href="http://webby.rubyforge.org/">http://webby.rubyforge.org/</a>


\item <a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html">http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html</a>


\item <a href="http://eligrey.com/projects/citedrag/">http://eligrey.com/projects/citedrag/</a>


\item <a href="http://www.readwriteweb.com/archives/concrete\_releases\_open-source\_cms\_to\_general\_avail.php">http://www.readwriteweb.com/archives/concrete\textbackslash\{\}\_releases\textbackslash\{\}\_open-source\textbackslash\{\}\_cms\textbackslash\{\}\_to\textbackslash\{\}\_general\textbackslash\{\}\_avail.php</a>


\item <a href="http://techportal.ibuildings.com/2009/04/23/surviving-a-plane-crash/">http://techportal.ibuildings.com/2009/04/23/surviving-a-plane-crash/</a>


\item <a href="http://webworkerdaily.com/2009/06/01/perch-an-ultra-lightweight-cms/">http://webworkerdaily.com/2009/06/01/perch-an-ultra-lightweight-cms/</a>


\item <a href="http://www.readwriteweb.com/archives/the\_codeless\_website\_four\_awesome\_tools\_for\_creati.php">http://www.readwriteweb.com/archives/the\textbackslash\{\}\_codeless\textbackslash\{\}\_website\textbackslash\{\}\_four\textbackslash\{\}\_awesome\textbackslash\{\}\_tools\textbackslash\{\}\_for\textbackslash\{\}\_creati.php</a>


\item <a href="http://about.scriblio.net/">http://about.scriblio.net/</a>


\item <a href="http://techportal.ibuildings.com/2010/03/24/book-review-silverstripe-the-complete-guide-to-cms-development/">http://techportal.ibuildings.com/2010/03/24/book-review-silverstripe-the-complete-guide-to-cms-development/</a>


\item <a href="http://www.openmotive.com/about/company-blog/country-plugin-for-expressionengine/">http://www.openmotive.com/about/company-blog/country-plugin-for-expressionengine/</a>


\item <a href="http://pgregg.com/blog/2010/11/referrer-and-comment-spammers-are-a-pita.html">http://pgregg.com/blog/2010/11/referrer-and-comment-spammers-are-a-pita.html</a>


\item <a href="http://bergie.iki.fi/blog/using\_rdfa\_to\_make\_a\_web\_page\_editable/">http://bergie.iki.fi/blog/using\textbackslash\{\}\_rdfa\textbackslash\{\}\_to\textbackslash\{\}\_make\textbackslash\{\}\_a\textbackslash\{\}\_web\textbackslash\{\}\_page\textbackslash\{\}\_editable/</a>


\item <a href="http://funkatron.com/posts/migrating-from-expressionengine-to-jekyll.html">http://funkatron.com/posts/migrating-from-expressionengine-to-jekyll.html</a>


\end{itemize}
Relevant tools/resources for web sites to integrate with/consider for inspiration:

\begin{itemize}
\item <a href="http://blog.webdistortion.com/2008/04/05/10-seo-keyword-tools-you-cant-live-without/">http://blog.webdistortion.com/2008/04/05/10-seo-keyword-tools-you-cant-live-without/</a>


\item <a href="http://www.imediaconnection.com/content/20052.asp">http://www.imediaconnection.com/content/20052.asp</a>


\item <a href="http://piwik.org/">http://piwik.org/</a>


\item <a href="http://ego-app.com/">http://ego-app.com/</a>


\item <a href="http://gridder.andreehansson.se/">http://gridder.andreehansson.se/</a>


\item <a href="http://www.blindtextgenerator.com/">http://www.blindtextgenerator.com/</a>


\end{itemize}
Content auto-tagging:

\begin{itemize}
\item <a href="http://www.readwriteweb.com/hack/2011/05/tagger.php">http://www.readwriteweb.com/hack/2011/05/tagger.php</a>


\end{itemize}
Show authorship in google search results:

\begin{itemize}
\item <a href="http://www.google.com/support/webmasters/bin/answer.py?answer=1229920">http://www.google.com/support/webmasters/bin/answer.py?answer=1229920</a>


\item <a href="http://smarterware.org/8291">http://smarterware.org/8291</a>


\end{itemize}

\noindent\rule{\textwidth}{1pt}
Back to the <a href="https://wiki.horde.org/Project">Project List</a>

\end{document}
