Linux.com

Feature: Collaboration

Using a wiki for FOSS application documentation

By Drew Ames on May 09, 2008 (9:00:00 AM)

Share    Print    Comments   

For a lot of programmers, writing an application is fun, but writing its manual is not. Adding new features, refining the product, and responding to users' input are all more rewarding than writing instructions on how to use the software. However, good documentation is necessary to have happy, informed users who can contribute meaningfully to future development. A few months ago, Gilbert Ashley, the author of src2pkg (Slackware's "magic package maker") invited me and two other people to help him manage the user documentation for his program. The process we used to create the src2pkg wiki may be a useful example for other free and open source software (FOSS) application developers.

Software documentation projects differ in scope, scale, and goals, but all must address a few basic items. Getting a project like this off on the right foot requires some planning and a few decisions to determine

  • who you want to produce and edit the documentation,
  • what tools you will use to create and maintain it,
  • what information you need to present, and how you want it presented.

Building a team

These decisions are relatively easy, but still require discussion and concurrence from the people involved. Practically speaking, seeking concurrence means agreeing to try something (an outline for the site, for example) with the understanding that things can be modified as the documentation evolves. The point is that the documentation does not have to be perfectly planned before you can start working.

Try to have a cross-section of your community -- both developers and end users -- working on your documentation to ensure that it is relevant to all users. Seek out, and specifically invite, non-developers to help. Determining who would produce documentation for src2pkg was relatively easy. Gilbert Ashley, src2pkg's author, is a regular contributor at LinuxQuestions.org, where he answers questions from users of his program. He invited three of us who regularly interacted with him in the Slackware forum to help him.

By design or chance, the three of us represented different types of users. I am firmly at the end-user end of the spectrum, while the other two are far more advanced users who have commented on development issues with src2pkg. Our respective skills led to a natural division of labor. My previous experience organizing and editing technical documentation naturally put me in the same role for this project. Another contributor with Web hosting experience, Piete Sartain, offered to host wiki software on a Web server and configure it. Agreeing on a division of labor, or at least volunteering for certain focus areas, breaks the overall project into smaller, more manageable tasks.

We had to decide whether to allow open contributions or restrict contributions to a known list of contributors. We decided to initially limit the number of contributors while we worked to set up the site, but may open up contributions in the future. Another option would be for the site administrator to create accounts for those who express an interest in contributing. That way the site is less likely to suffer from wiki spam, and monitoring the quality of contributions is easier. This solution works for our project because src2pkg is a relatively small application with a discrete set of uses. Setting up a wiki for an entire Linux distribution would require a different approach because of the much larger set of topics.

Choosing the tool

Using a wiki to create and maintain the documentation was pretty much a foregone conclusion; the question was which wiki package we should use. Wiki software allows people to directly edit Web pages and keeps track of the changes people make. Over the past several years, wikis have emerged as the preferred way for people spread all over the world to collaborate on a single document or Web site.

The decision we had to make was whether to use MediaWiki, the software used for Wikipedia (among others), or DokuWiki. We tried both. Initially, MediaWiki had a more familiar feel and looked more professional. The markup it uses is pretty intuitive -- inserting and formatting text went quickly. After getting most of the text into the MediaWiki version of the site, I moved it to the DokuWiki version and reformatted it. The editing toolbar in DokuWiki is slightly more comprehensive and easier to use than MediaWiki's, and editing text was marginally easier.

However, our reasons for choosing DokuWiki went beyond its editing interface. We found DokuWiki is more readily customized and, at the same time, easier to administer. DokuWiki, through a plugin called "nstoc," generates tables of contents based on subdirectories, which was just what we needed to have our master table of contents update each time we made a change. MediaWiki seemed to lack that feature, or it was not easily implemented. Furthermore, unlike with MediaWiki, features intended for more open collaboration, such as discussion pages, are not implemented as core features in DokuWiki. This seeming disadvantage was actually an advantage for our project because we had a small group of authors with password-protected access.

Creating and organizing the content

Our challenge with src2pkg was consolidating and organizing existing documentation and then adding to it where needed. Regardless of whether you are starting from scratch or looking to improve existing documentation, it is worthwhile to create an outline for the site. Outlines are not just the roadmap for your wiki, they are also the most essential tool for collaboration. To get started, I created an initial outline just two levels deep and emailed it to the other collaborators. After a few cycles of email comments we had a working outline that was three levels deep and ready to be filled out. The initial outline work was done without much reference to the existing documentation. We users and developers were hashing out the concepts that we wanted to present, the important details supporting those concepts, and the order to present them in. We were able to concur on the working outline quickly, which facilitated the remaining work on the src2pkg wiki.

The next task was to comb through the existing documentation and fit its text into the working outline. It was during this process that we did most of our work comparing MediaWiki and DokuWiki, learning about formatting and other features as we went. The working outline proved remarkably robust, needing no changes at the first two levels, and only the addition of a few headers at the third level. The actual work often involved taking two adjacent paragraphs and moving them to different major sections of the wiki. The result so far is a more organized presentation of the information one needs to run src2pkg and take advantage of all of its features.

Some work still needs to be done. The text needs further editing for consistency in style, grammar, spelling, and formatting. More importantly, some subsections still need to be written. Another advantage of having an outline is that headings with no text below them are easy to find. Follow-up email to fellow contributors can help coordinate who will write which missing section.

A final challenge is staying up-to-date. It is important for the developer to provide a changelog and even a "changes and hints" text file with each update so that the people working on the documentation can update it accordingly.

Conclusion

A documentation project, even one with a small scope, takes a lot of work. Wiki software makes collaborating on a project over the Internet more efficient, but there is no substitute for time spent at a keyboard actually working with text.

Projects like this tend to be most successful when everyone involved feels like they are doing 80% of the work. The best way to stimulate collaboration and involve other people is to do a lot of work yourself and then ask people to improve it. Beyond hard work, though, ensure the success of your software documentation by selecting a good team of people who represent a cross-section of your users, choosing a wiki package that meets your needs, and developing a good outline to organize your content.

Drew Ames is a transportation planner in Harrisburg, Penn.

Share    Print    Comments   

Comments

on Using a wiki for FOSS application documentation

Note: Comments are owned by the poster. We are not responsible for their content.

Using a wiki for FOSS application documentation

Posted by: Anonymous [ip: 143.166.255.41] on May 09, 2008 04:28 PM
When I started putting together the documentation for <a href="http://appsnap.gentrance.com">AppSnap</a>, I came up with a similar idea. I used <a href="http://www.tiddlywiki.com">TiddlyWiki</a>, which is a single file Javascript based Wiki engine. The result is a single HTML file that is bundled along with the app as the documentation as well as the official website for AppSnap easily maintained in source control.

There are some disadvantages to this approach such as having one perspective (official website in AppSnap's case) dominate over the other. The advantage is that the time spent in expansion and maintenance is much much lower, allowing for more time to be spent on development.

This approach is especially helpful for projects just starting out and can be enhanced once the project is established and more resources are available.

#

wiki makes sense

Posted by: Anonymous [ip: 66.114.78.90] on May 10, 2008 05:40 PM
For an open source project run by volunteers, using a wiki for documentation just makes sense. It doesn't even have to look like a wiki, and it doesn't have to be editable by the general public. We did the web site for <a href="http://www.citadel.org">Citadel</a> using DokuWiki, after finding Joomla a bit too cumbersome for the task. DokuWiki was very easy to customize -- we were even able to convert our Joomla theme with about an hour of template editing.

Wiki editing controls do not appear unless you're logged in, and only the developers and site maintainers are allowed to log in. But we're very, very diligent about one thing: whenever someone asks a good question in the support forum, we add another wiki page documenting the answer. By doing this, we've ended up with a Knowledge Base for the program. And if you ask me, that's more comprehensive than a "FAQ" -- let's face it, the FAQ's for most open source projects aren't made up of actual questions that were asked -- they're more like a README written in question-and-answer format.

#

Using a wiki for FOSS application documentation

Posted by: Aurora on May 11, 2008 10:47 PM
Wikis are a great medium for documentation, collaboration and customer support. Whether an intranet for assisting the development team, marketing team or customer support, or Internet for customers and the public, a wiki system provides a way to communicate in real time so that everyone is looking at the same material.

With respect to existing wiki software, we have searched and researched and used many different wiki applications. Unfortunately some of the oldest and most popular wiki systems can provide a steep learning curve and provide an impediment to real collaboration by non-technical types.

We used MediaWiki to develop several intranet and Internet wikis for development, sales and customer service and found great reluctance to collaborate via the wiki due to the perception that the wiki is not like other software that they use. MediaWiki has it's own language and commands. Extensions while plentiful provide complicated and esoteric functions. There is no standardization of the extension interface and installation and use of some extensions is puzzling for all but developers.

Other wiki options do not use a database to store information which can bog down searching and data access as the size of the wiki grows. This can also interfere with SEO and information access.

We have started to use Deki Wiki, a Web 2.0 wiki, which unlike some alternative wikis is MySQL based and WYSIWYG. This application is easy to use for everyone because of the application interface. Templates can be created by novices and use of extensions are standardized and are point and click functional. The best feature of Deki Wiki is that it is fully interactive with the Internet. Using mashups, extensions and functions to bring content in real time from anywhere on the Internet. One of our uses is to provide documentation and collaboration for our software development staff which is far flung across the country. The source code can be uploaded to Deki Wiki and appear automatically on a wiki page with syntax checking. Change the source file to the latest version and the page content changes automatically. Import content from Google's, Yahoo's or Amazon's applications in real time without programming. Import media, maps, math functions, graphics, etc. with provided functions and extensions. There is a powerful DekiScript language for more advanced programming capabilities. In addition to the WYSIWYG interface, there is a drag and drop Desktop Connector interface for uploading files and content pages created on the desktop.

Deki Wiki allows user to upload and attach files and content to pages and allows searching of the database and all attachments simultaneously. The latest version has added support for OpenSearch which is being a standard being backed by Google, Yahoo, Amazon and Mozilla but this does not limit other search engines. Prior versions of pages or changed pages are archived and can be restored easily by authorized users.

Soon to be the new platform for Mozilla Developer Center (MozDev) Deki Wiki provides the only polyglot wiki support. You need not load 15 different wiki instances to support 15 different languages. One wiki install handles all supported languages. The number is 15 now and growing. Deki Wiki supports a full control panel for administering users, interface, visual appearance (skins), and permissions. You can create user groups and restrict specific pages to only those users who need to see them. You can restrict access to pages under development and then change the permissions when they pages are ready for primetime.

This brings up yet another distinct plus for Deki Wiki. There is an active full time development staff which has been releasing new versions with hundreds of enhancements every few months. Version 8.05, code name Jay Cooke, was just released on May 6, 2008 and the next release is tentatively scheduled for July 2008.

Before you stop reading because you think that this is hype for a commercial application, Deki Wiki is released under GPL2 from SourceForge or at OpenGarden.org. In addition to MindTouch, which provides paid support for commercial clients, there is a fast growing Deki Wiki community.

Deki Wiki will run on Linux, Sun or Windows. There is a VM image for easy implementation or source available for standard installations.

Using Deki Wiki you can bring the wiki experience to anyone who can use a word processor. Deki Wiki supports talk pages and comments on each content page. Authentication is provided to Drupal, HTTP, LDAP (Active directory, OpenLDAP, Novell eDirectory, etc.), Joomla, and WordPress for easy integration with your other existing applications or systems. A full stand alone local authentication system is also provided.



[Modified by: Aurora on May 12, 2008 01:40 AM]

#

Using a wiki for FOSS application documentation

Posted by: Anonymous [ip: 70.91.34.61] on May 12, 2008 06:56 PM
I'm glad to see that so many options exist for people wanting to use wikis for user documentation, although that last post _does_ seem more like an advertisement than a comment.

#

Using a wiki for FOSS application documentation

Posted by: Anonymous [ip: 62.49.242.3] on May 14, 2008 01:47 PM
Searching for a Wiki at the moment for my office - MoinMoin is coming out on top because of good attachment support - about out of the box and with add-ons( associated attachments listed at the footer of a page). Only personal 'drawback' is it is python based and I was trying to standardise on php.

Many major projects use MoinMoin including fedora and ubuntu.

#


 
Tableless layout Validate XHTML 1.0 Strict Validate CSS Powered by Xaraya