Docs CMS ideas
Chris Curran
ccurran at redhat.com
Fri Jun 25 00:25:17 UTC 2010
On 06/25/2010 07:20 AM, Karsten Wade wrote:
> While I've been waiting to see how the Zikula deployment went with
> Fedora Insight, we've finally seen a better update to
> docs.fedoraproject.org by using the native Publican site building
> tools. I've waited to push forward with a CMS solution for Fedora
> Docs until we had a working solution to design against.
>
> While Publican gives us a way to build a nicely organized tree of
> content, it doesn't give other capabilities. I don't know of any
> plans to include this sort of thing in Publican natively:
>
> * Ability to trigger (re)builds from source repositories via a webUI.
>
> * Workflow control, either by group (writers, editors, publishers), or
> specific roles like that but per document (I can write this one, I
> can edit yours, and I can push hers to publish after you edit it.)
>
> * WYSIWYG editor for DocBook XML from source repository.
>
> Basically, we still have very high barriers to move from "edit stuff
> on the wiki" to "manage a full guide on DocBook XML." The main
> purpose for a CMS is to get the ability to publish and tweak
> docs.fedoraproject.org out of the hands of a very few, very busy
> people, and in to the hands of just about anyone that this team wants
> to authorize to do work there.
>
> Talking in the meeting yesterday, I threw out some ideas around this
> and agreed to bring those here. I'm still interested in helping drive
> a CMS-like project for Docs.
>
> So I'll throw out a proposal to get us started. This proposal exists
> partially because of our commitment to using Publican to publish.
> Another option is to use Publican only to generate documents, which
> are then loaded and versioned in a CMS e.g. Zikula or Drupal. Working
> under this other option would be more like the CMS experience others
> have -- you either work in the native editor, or you upload documents
> you created elsewhere.
>
> == Docs CMS ==
>
> === Terms ===
>
> * Publican is a command-line toolchain for building books as HTML,
> PDF, Epub, Text, etc. and publishing them to a static website with
> a navigation sidebar. It uses books written in DocBook XML that
> exist as installable RPM packages.
>
> * Beacon is a wysiwyg, webUI editor that has been extended to
> support DocBook XML editing.
>
> * Fedora Hosted (fh.o) is a hosting solution that is the source
> repository for Fedora Docs. Books primarily use Subversion or git
> as source control manager (SCM).
>
> * WebUI is a generic term for the web user interface that we have to
> write or configure to wrap around and perform certain functions
> for this CMS. For example, it can present a button to a person
> with publishing privileges, when pressed triggers of a Publican
> build on the backend. This webUI could be custom code written in
> Python and TurboGears, or it could be Drupal with a few custom
> modules.
>
> * A reader has the ability to read the website anonymously. No
> credentials are required.
>
> * A writer belongs to a 'doc-writers' group and also belong to the
> group associated with each document, e.g. 'gitinstall-guide'.
> Being in the 'doc-writers' group is a prerequisite that exposes
> the Beacon editor function.
>
> * An editor is the same as a writer, performing a different role in
> the process.
>
> * A publisher is a member of the 'doc-publishers' group, which gives
> the permission to trigger special functions in the webUI - build a
> doc, rebuild a doc, install a doc package, etc.
>
> === WebUI architecture ===
>
> Functions:
> 0. Read
> 1. Write/edit
> 2. Publish
>
> 0. Read
> a. Publican produces pages and navigation at docs.fp.org.
> i. These pages are static and not wrapped by the webUI.
> b. Readers use Publican's navigation to read guides.
>
> 1. Write/edit
> a. Writer clicks "Check out document for editing" (this is NOT a
> locking mechanism.)
> i. Clicking check out triggers a 'git clone' of the document
> repo.
> ii. The cloned git repo is then branched locally to the webUI
> server, for example 'git branch quaid-20100224-UUID' with a
> short, sequential UUID such as 'AA00'.
> iii. Beacon is then opened using the local file check out of the
> XML.
> iv. Beacon saves work only in the files in the cloned repo. An
> added functionality could trigger 'git commit' on save, but
> this might cause too many commits without a log message.
> v. The writer's training includes knowing to commit on a regular
> basis, in a granular fashion, when one or more edit+saves
> makes a good bundle for a commit. Clicking on "Commit
> changes" opens a log summary window, then a 'git commit -m
> "$dump_from_log_summary_window" is done on the local repo.
> vi. A writer's session should persist. When the writer returns
> and still has local changes committed but not pushed to the
> master git repo, the writer is offered those files to
> continue work on, or to checkout a different document.
> vii. When the writer is done with the writing session, the
> writer clicks a "Check in document to main repository".
> This triggers a 'git push' to the master repository.
>
> 2. Publish
> a. Publisher selects a document and version from a
> dropdown/checklist menu.
> i. This list is generated from installed packages on docs.fp.o,
> information extracted using 'rpm' commands.
> b. Publisher clicks "Rebuild and publish document."
> i. A koji scratchbuild is triggered, which grabs the latest
> source from the upstream repository and builds a package.
> ii. When the build is done, the package is installed from koji
> using yum.
> c. Publisher adds a new document to the publish list.
> i. Document must exist as package in koji already.
> ii. Publisher uses a Moksha widget to identify the meta-package
> OR a specific package name and version are supplied
> manually.
> iii. Package is installed on docs.fedoraproject.org.
> iv. Cached list of installed packages is refreshed to update
> document and version dropdown/checklist menus.
>
> <eof>
>
> - Karsten
>
Another writer and I started coding up a project to do this. The main
issue we hit was time, which is what killed it for us. This isn't a
difficult project but it would take at least 6 months of full time
development.
Chris
More information about the docs
mailing list