Daisy: WYSIWYG Wiki for PDF Books

If you need the collaborative aspects of a Wiki combined with DITA's modular topics and publishing capabilities, then DAISY might just be the system you need--and it's free. DAISY provides WYSIWYG editing for Wiki pages that can be combined to publish books, either in a PDF or as a single HTML page.

Daisy may be the most unheralded publishing system on the planet. When I was doing a preliminary evaluation of CMS systems, I went to their web site. All I saw was "wiki and web content management". There was nothing that made me sit up and take notice, so I moved on. Then I went to 2008 DITA/CMS Conference.

As chance would have it, the session I was planning to attend was rescheduled, so I stepped into a presentation on Wikis given by Peter Dykstra of MetaphorX Information Design. I came away from that session with a whole new appreciation for Daisy. This post contains the list of features and benefits that should by rights be prominently displayed on the Daisy site. Here are the preliminary attention-grabbers. Daisy main features include:

  • Wiki system that lets you publish books
  • Integrated WYSIWYG editor
  • Single-page HTML and PDF outputs
With Daisy, you get a Java-based system built around a MySQL database that:
  • Lets users add comments to the Wiki pages.
  • Allows multimedia attachments.
  • Allows for document variants (useful for multiple languages and product/version variations, for example).

Daisy's Book Definitions give you the moral equivalent of DITA maps. But the story gets even better: 

  • Wiki pages edited in Daisy are called "documents".
  • The basic document type is SimpleDocument.
  • Several other kinds are pre-defined.
  • But you can also add your own.

Being a good DITA-head, Peter just naturally added a document type called "Topic". He then took advantage of some additional features:

  • Daisy "fields" are the equivalent of DITA metadata parameters.
  • Many fields are pre-defined--as, for example, "product".
  • But you can also add your own.

So Peter created a TopicType field, specifying values of "Concept", "Reference", and "Procedure". He now had a "DITA-lite" system he could use for modular documentation.

To make it easier to use, he created templates for each of the three types that provided guidelines for writing the different kinds of topics.

Authors aren't restricted. They can add put anything they want into a topic, despite its type. The guidelines provide suggestions, but don't ensure that the resulting content is truly reusable. As Erik Hennum commented in another session, "You can do object-oriented programming in C, too. Java just makes it so much easier that people actually do it without superhuman self-discipline." On the other hand, given the ability to readily refactor information, get everything "just right" at the outset is less of an issue, so there are many shades of gray in this area.

At this point, I was thinking that surely you would be missing other important DITA features like transclusions and conditionals, but Peter assured us that Daisy had us covered in those areas, as well:

  • Compound (multi-part) documents allow for content transclusions
  • Variables can also be defined and used
  • Conditional text is also supposed to be possible using role-based access rights where, for example, you specify "product=X".

 I don't have enough information to know for sure how well those things work, but the potential for doing "interesting things" certainly seems to be there.

Some questions remain to be answered about how the system works:

  • How easy is it to customize the headers and footers in the final HTML and PDFs? How good are the PDFs?
  • Can you get an email notification when a page changes?
  • Is there a search capability? How good is it?
  • How do you export documents to external publication systems?
    (For example, a separate web site.)
Then, of course, there are several advantages of DITA that you don't get, with such a system:
  • Really strict schema controls (which can be a blessing or a curse)
  • A boatload of semantic tags (Ditto. For blessings, see The Value of Semantic Tags)
  • Output formats like troff and help
  • Specializations like those DITA has for learning and training
  • Conversion tools for importing information from other formats

Another possible option for WYSIWYG editing of DITA documents is DITAStorm. (See the Conference Highlights) That option runs right at $400 per user (minus quantity discounts). In return, you get an authoring environment that accommodates the full rigor of DITA. But if that isn't what you need, then Daisy just might be the authoring and production environment for you.


Daisy provides a browser-based WYSIWYG editing environment that can readily be used for modular documentation, all for the low, low price of free.  Daisy doesn't provide all of DITA's capabilities, but it provides enough that it just might be worth a serious look.

Such a system provides a useful vehicle for collaborative editing in a way that allows for some level of modular reuse, as described in Wikis, Docs, and the Reuse Proposition.

It's possible that it could also be used to enable collaboration scenarios like those described in Enabling Online Design and Decision-Making Discussions. The Book Definition could record the structure of the conversation, with individual topics containing the proposals and arguments that comprise the discussion, complete with transclusions, when needed.


 Web Resources

Other Posts


Thanks for the feedback on the presentation (and on Daisy). Glad you liked Daisy -- from your questions it's clear I failed to mention a few basic things. I also didn't go very far under the hood -- in some ways I was just scratching the surface. (A Dita-Head! Really! This was one of the only presentations at the conference NOT about Dita -- I've been using topics since long before Dita.)

[1. How easy is it to customize the headers and footers in the final HTML and PDFs?]

Fairly easy to customize formats using XSL/CSS (if you know XSL/CSS). You also have access to a published XML document model, and one step deeper, a Publisher extension which gives access to anything in the repository any time you send a request. You have to dig a little to find the stylesheets, but that's all without any Java. You can also write JavaScript extensions (say forms controllers) -- Daisy has document commenting built in but the comments I showed were an extension which stored my comments as separate Daisy documents.

[2. How good are the PDFs?]

The PDFs are prety good and have gotten better, though not on a par with high-end commercial systems (Antenna House, Xy, etc). But it's possible to modify the PDF output via stylesheets, and the Books feature has quite an involved property-setting UI that I didn't mention. I believe it's using the Apache FOP project, which has gotten an lot better (at least it feels better in Daisy). The thing I like most about the whole project is that the complexity is designed so it doesn't get in the way if you don't need it. All this power is under the hood, and I was up and running with a basic install in an hour or two.

[3.Can you get an email notification when a page changes?]

Yes, built in.

[4. Is there a search capability? How good is it?]

Can't believe I didn't show this; it's quite good full text search using Apache Lucene. It indexes all Daisy docs, plus all attachments which happen to be Office docs, text, or pdfs (not sure about Open Office). This complements the faceted browser which I think I did show; I've also seen a nice customization by Outerthought where they combine these.

[5. How do you export documents to external publication systems? (For example, a separate web site.)]

The Books feature is really a batch-oriented export. For example you can get one-page html or segmented html; Steven Noels at Outerthought suggested this might be a way to export DITA (if you write proper topics, of course). PS - Daisy is built using Cocoon and is used to host the Cocoon project's Web site; I'm not involved in that but I believe it's staged to the site using Cocoon's batch publishing capability.

I just installed this for a client doing tech publishing to replace Frame (their idea) and they love it. 'It's a pleasure to use' - one writer. Direct online review process (compared to commenting on PDF) cut 4 days review time to half a day for one SME.

My sense is this is a good examplar of Open Source -- it's a little techie but a has solid, well-thought-out architecture and features and no fluff.

Posted by Peter Dykstra on April 15, 2008 at 07:43 AM PDT #

Many thanks for the additional info, Peter. It's a great addition to the post.

You did show the "faceted browser", which lets users browse by information type to see all concept topics, for example.

You mentioned the CSS formatting, as well. I neglected to mention that, but was most interested in the ability to easily customize the look you want by adjusting CSS styles--especially for the PDF!

I wasn't quite clear about you would go about setting headers and footers, though. Do you use XSL transforms for that? [Note: To tend to call them "transform" to distinguish them from CSS "stylesheets".

Also: How does your comment capability functionally different from the one that's built in? (I get that you store them separately. What impact does that have on processing or usage?)

And thanks again for a great talk.

Posted by Eric Armstrong on April 15, 2008 at 08:27 AM PDT #

My pleasure!

Re/ customizing document formats -- Daisy lets you set up document-type-specific 'styling' files using xsl (to select and sequence content) and css (to position and format it). You can do that for a document type or globally in the skin, and apply each skin for the entire installation and at the Daisy 'site' level. (Of course to define a skin you only need to specify the differences from the default.)

Actually the pdf styles are controlled not by css (can't do that yet) by a set of (largely parameterized) xsl stylesheets (ok, transforms, except in this case they do behave more like stylesheets) which feed an xsl-fo transform.

Re/ comments: Daisy's commenting feature allows adding multiple levels of public as well as comments to a document out of the box. They are closely associated with the document (I think they're even stored with it). The comments feature I showed was written as a Daisy 'extension' in JavaScript; it simply stores a single comment as a Daisy document. A customized controller script presents and processes the comment form (using Cocoon Forms, which I believe the Daisy guys contributed to Apache). Metadata associates it with the 'commented' document - so you can query them, report on them, etc., independently, like any other Daisy doc in the repository. For example you could do things like have a blogging entry with a list of comments about it.

Posted by Peter Dykstra on April 15, 2008 at 09:12 AM PDT #

Hi Peter & Eric,

Learing about Diasy from your posts is a boon to me.

We were looking for ways to manage content re-use, single-source multi-output, for our SOA preject, where our in-house solutions were not enough to handle these. Then after some study and research, we thought of implementing DITA, and I was feeling lost as I dont have knowledge in XML and even our tech team was finiding difficult to setup the DITA-OT.

Now, after reading your post and a bit of hands on with Daisy online Demo.. I feel that Daisy wiki would help us to get started on re-use and single-source stratergies. Is there any help available for Daisy Wiki?


Posted by VaishVijay on April 22, 2008 at 05:01 PM PDT #


Glad you liked Daisy. Daisy's documentation site (cocoondev.org/daisy, then 'Daisy 2.2 documentation') is pretty extensive. Though it mixes in material for authors/users, administrators and developers, which can make it hard to find things, it does give a lot of info that supports use of the basic Wiki features. There is not a basic intro to the Wiki, as far as I know.

Depending on your meaning of 'help' you may also be interested in getting help directly from people. Info on the site will tell you how you can get onto the mailing list, which will let you ask questions of the Daisy community and also search the history of questions (many of these are fairly specific technical issues, but if you have a specific question getting started and can't find answers in the doc people will probably be willing to help out). For more extensive help you can also purchase support from Outerthought, or from a company like MetaphorX (my company, listed above).

One bit of advice -- if you are downloading Daisy from Sourceforge, pick the version that includes Java and MySQL, even if you already have both of those -- it uses a Windows installer, which makes the install process much easier. (I have had best luck installing MySQL first using the MySQL install, and then telling Daisy to use the existing copy of MySQL.) Best of luck! (PS - I don't monitor this blog but am available via MetaphorX, listed above in Eric's original entry.

Posted by Peter Dykstra on April 25, 2008 at 09:52 PM PDT #

Interesting to read that somebody else found Daisy by virtue of it's PDF publishing. We were looking for a simple wysiwyg wiki for writing internal documentation for a small IT outfit. Publishing to PDF was vital since that's essentially our disaster plan. We write everything to the wiki, and every so often output the whole lot on PDF and save it on a laptop.

Should the worst ever happen, as well as all our backups and management tools, we have documentation for the whole network readily available. Daisy might not be perfect, but it's close enough for us.

Posted by Ross Smith on October 16, 2008 at 01:28 AM PDT #

Post a Comment:
  • HTML Syntax: NOT allowed

« July 2016