Docs CMS ideas

Karsten Wade kwade at redhat.com
Thu Jun 24 21:20:06 UTC 2010


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
-- 
name:  Karsten 'quaid' Wade, Sr. Community Gardener
team:                Red Hat Community Architecture 
uri:               http://TheOpenSourceWay.org/wiki
gpg:                                       AD0E0C41
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.fedoraproject.org/pipermail/docs/attachments/20100624/3e0e1c47/attachment.bin 


More information about the docs mailing list