<<

open source

Editor: Christof Ebert ■ Alcatel ■ [email protected]

Using in Software Development

Panagiotis Louridas

In only a few years, wikis have become one of the most popular tool shells imaginable based on open source software. You can find them just about everywhere that demands effective col- laboration and at a low budget. has certainly enhanced their pop- ularity, but they also have a place in -based applications such as defect tracking, re- quirements management, test-case management, and project portals. Panagiotis Louridas describes essentials and nicely distinguishes a variety of types. You’ll find something useful, I’m sure. —Christof Ebert

y 1995, , a promi- What is a wiki? nent member of the design patterns A wiki is actually two things: community, was experimenting with a environment to promote the ■ a program that makes it exceptionally easy exchange of the community’s ideas. for anybody to edit Web pages and B ■ The environment was based on the a philosophy regarding how users should then-popular Apple Hyper- go about that editing. Card application. That applica- tion worked well for individual Generally, Web pages are written in HTML. users, but Cunningham was While it’s not difficult to learn HTML, non- looking for a Web-based imple- tend to shy away from it. Even mentation. On 25 March 1995, programmers find it easier to edit text than he posted the Web’s first-ever structured HTML, where linking between wiki, calling it “the simplest pages requires attention to things such as ad- online that could pos- dresses and anchors. When many people edit sibly work.” the same Web site, you must also pay attention Wiki means “quick” in to how these people collaborate. Hawaiian. To describe the technology powering In a wiki, users write simple text following his Web site, Cunningham chose the name a small number of conventions. The system WikiWikiWeb, primarily because he found it creates the necessary links automatically, so more interesting than saying “quick Web.” editors have much less to worry Also, Hawaiian words are doubled for empha- about. Wikis, however, move beyond offering sis, and Cunningham wanted to stress that his practical help to adopting a particular philos- program was very quick. Moreover, as we will ophy on who can edit material and under see, wikis use doublings as formatting markers. what circumstances. Specifically, just about Finally, he wanted an unusual word for an un- any system user can edit a page written by any usual technology. The fact is, both the technol- other user. ogy and the word have stuck with us ever since, This might seem like a recipe for chaos, but creating new forms of and knowl- it turns out not to be—primarily because edits edge sharing on the Web and empowering many are visible to all. So if somebody abuses his or people to contribute to online content. her editing rights, another person will edit the

88 IEEE SOFTWARE Published by the IEEE Computer Society 0740-7459/06/$20.00 © 2006 IEEE OPEN SOURCE inappropriate edit. We can witness how such a system works in practice by visiting Wikipedia (http://en.wikipedia. org), whose English version counts 965,042 articles as I write this—proba- bly more than a million by the time you read it. The vast majority of articles are of very high quality. There are many ways to implement a wiki, so we now have a multitude of wiki engines at our disposal—more than 200 at this time. All follow the same fundamental principles, but they differ in both the underlying technology and the assumptions about how they’ll be used. Here, plurality is strength, and somebody wishing to create a wiki is really spoiled for choice.

Editing a wiki Figure 1 shows the current Wiki- WikiWeb front page (http://c2.com/ Figure 1. WikiWikiWeb front page. cgi/wiki). Apart from its content, the page includes a set of links for edit- ing it. (Figure 1 doesn’t show the links; they’re at the bottom of the page. Also, depending on the wiki engine, the edit- ing links might look like tabs, and the terminology might differ from what I use here.) Clicking on the edit link opens the wiki page’s source text. To edit the text, we write in a human language that fol- lows a few wiki conventions. For exam- ple, to end a paragraph, we use a blank line (double enter). We use doubled sin- gle-quotes for emphasis (usually italics) and tripled single-quotes for strong em- phasis (usually bold). Putting an in a line’s first column creates a bulleted item in a list; more create deeper indenting. Some wikis offer edit- ing tools like spell checkers and pre- viewers that make life even easier. Figure 2 shows the edit text for the Figure 2. WikiWikiWeb edit page. page in figure 1. After we’re done editing, we click much by itself. It must be linked to matically creates a link to the named on the save link (or another mechanism other pages. When we edit our text in page. If the page doesn’t already exist, with similar wording). This makes our the wiki, a joined capitalized word we can click on the link and the wiki changes permanent, and all users of the (LikeThisOne) is a link to a page of that engine will take us to a blank page to wiki will see our edited material from name. Again, the convention changes fill in. now on. This being a wiki, they can depending on the wiki engine; for ex- Wikis are very well documented. In also edit it themselves. This leads to a ample, it can be the name of the page fact, they’re usually documented in their live document, something between a surrounded by double square brackets own wikis. Learning the full conven- mailing list and a Web site. ([[Like This One]]). When we save a tions for formatting and editing is sim- Of course, no Web page is worth page that uses a convention, it auto- ply a matter of going through the wiki

March/April 2006 IEEE SOFTWARE 89 OPEN SOURCE

input from many participants, who Additional Resources on Wikis might not agree. Setting meeting agen- das and keeping minutes are good ex- The Wiki Way: Quick Collaboration on the Web, by Bo Leuf and Ward Cun- amples. Many projects use wikis for ningham (Addison-Wesley Longman, 2001), is the primary reference on wikis, these tasks. In fact, you can use the cowritten by the creator of the original wiki. same wiki for both these tasks—first Wiki: Web Collaboration, by Anja Ebersbach, Markus Glaser, and Richard to set the agenda, then to capture the Heigl (Springer, 2005), describes the wiki philosophy, presents the main fea- minutes. This is much more practical tures, demonstrates MediaWiki and TWiki, and shows how to use wikis as pro- than the usual procedure of circulat- ject management tools. ing e-mails soliciting input and com- Ward Cunningham’s Artima interview (www.artima.com/intv/wiki.html) is an ments and then trying to merge every- engaging firsthand account of the ideas behind wikis. body’s views. The Wiki Design Principles are available in WikiWikiWeb at http://c2.com/ Moving one step further in func- cgi/wiki?WikiDesignPrinciples. WikiWikiWeb also includes an annotated list of tionality, some platforms are available more than 230 wiki engines (at the time of this writing): http://c2.com/cgi/ that build on wikis and offer many ad- wiki?WikiEngines. ditional content management and proj- A site comparing different wiki engines, from which I gleaned the material in ect management goodies. The goodies table 1, is available at www.wikimatrix.org. range from RSS feeds and to sur- The 2005 International Symposium on Wikis, which took place 16–18 Octo- veys, polls, and issue trackers. ber 2005 in San Diego, included presentations on various uses and aspects of wikis. The proceedings and discussions are available at www.wikisym.org. Rolling out a wiki For those who insist on doing every- thing by hand, you can roll out a cus- tom-made wiki that fits a project’s re- help pages. To assist novices, wikis At the simplest level, you can use quirements exactly. Given that a wiki is usually come with a sandbox—a place wikis as a project documentation repos- a Web-based application, you’ll just in the wiki where edits aren’t perma- itory. You can upload all documenta- have to write some server code to ac- nent, so everybody can experiment at tion to a wiki and link source code to cept and record users’ edit requests. their ease. it. This is straightforward if the devel- The original WikiWikiWeb engine oper team uses a sys- was a CGI application written in . Using wikis in software tem that publishes code to the Web (see Today wikis are written in anything development “Version Control,” IEEE Software, from Java to Ruby, Perl, PHP, ASP, and No single correct way exists for us- Jan./Feb. 2006, pp. 104–107). Using a so on. At the minimalistic end of the ing a wiki in software development (nor wiki as a static documentation reposi- spectrum, it’s possible to create a wiki in any other activity, for that matter). tory, however, is missing too much of using only Unix shell commands and Wikis are especially useful in distrib- what it has to offer. It’s a lot better to tools. There’s probably not much rea- uted projects: many teams around the use a wiki to produce, rather than son to do that, however, as a Bourne world use them to organize, track, and merely store, a project’s documenta- shell wiki is already available, written publish their work. Their flexibility tion. In this way, everybody from the in /bin/sh and plain awk. The wiki is frees a project manager from fretting project team can contribute, and up- called wikish and is available at http:// about getting everything exactly right dates are easy. wikish.do.homeunix.org. from the beginning. A wiki can and Wikis are especially useful as discus- Most developers opt to use one of should change to respond to the proj- sion media. It’s true that development the popular wiki engines, such as Media- ect’s needs as they arise. discussions can occur in mailing lists, as Wiki (www..org) or TWiki While wikis are always easy to they currently do in umpteen projects (http://twiki.org). TWiki is a structured change, wiki engines usually incorpo- around the globe. A wiki offers comple- wiki, meaning that it aims at combin- rate comprehensive versioning and mentary advantages. It places each dis- ing the -wheeling wiki attitude with change control for their content. Any- cussion item in its context, which can be a database application’s benefits. It al- one is welcome to edit pages, but the easier to grasp than it is in a conven- lows easy reporting and the creation of wiki keeps all changes in a history file. tional mail thread. Moreover, newcom- workflows and access control. Pages In this way, everybody can check what ers usually find wikis more user-friendly can include forms, so you can use a has changed, who changed it, and when. than mail archives. Because they’re basi- TWiki-based wiki for issue tracking or This is a powerful disincentive for on- cally a free-form medium, wikis work for building other wiki applications. line and abuse. It’s also pos- well in exploratory situations. While MediaWiki lacks such features, sible to revert to earlier versions of Part of the drudgery of project it’s becoming more and more popular wiki pages. management is the tasks that require as a project cooperation platform be-

90 IEEE SOFTWARE www.computer.org/software OPEN SOURCE

Table 1 Wiki engine comparison Feature Wiki engines wikish MoinMoin MediaWiki TWiki UseMod Programming language sh, awk Python PHP Perl Perl Java Page preview No Yes Yes Yes Yes Yes Page revisions Unlimited Unlimited Unlimited Unlimited Unlimited Unlimited Access control lists No Yes No Yes No Yes Math formulas No Plug-in Yes Plug-in No No Syntax highlighting No Yes No Plug-in No Yes Tables Yes Yes Yes Yes Yes Yes notifications No Yes Yes Yes Yes Yes Conflict management None Detection, locking Detection Detection, locking Detection Detection WYSIWYG No No No Plug-in No Yes Search No Full text Full text Full text Full text Full text PDF export No No No Plug-in No Yes Data storage Text files Text files MySQL Text files Text files HSQL (included), MySQL, PostgreSQL, Oracle cause it’s simple to use, familiar fit the situation. Then again, it might Panagiotis Louridas is a grid software engineer at (thanks to its use in Wikipedia), and at- make sense to actually nurture these the Greek Research and Technology Network and a researcher at the Eltrun Software Engineering and Security research group tractive to many users in its look and attributes. of the Athens University of Economics and . Contact him feel—an important factor. at louridas@{grnet,aueb}.gr. Confluence is a proprietary wiki- based platform from (www. atlassian.com/software/confluence), which is also available for free for open source projects. Confluence structures content in different spaces, allowing multiple linked wikis. It offers space and page-level security restrictions. It can search in different content, such as pages, blogs, MS Word and MS Excel files, and PDF documents. It integrates IEEE Distributed Systems Online brings you well with Atlassian’s Jira issue-tracking peer-reviewed articles, detailed tutorials, expert-managed system and with email. A commercial license for a team of 25 costs about topic areas, and diverse departments covering the latest US$1,200. news and developments in this fast-growing field. Table 1 compares some features of some representative wiki engines. Log on for free access to such topic areas as Grid Computing • Mobile & Pervasive ore important than the particular Cluster Computing • Security • Peer-to-Peer M wiki implementation, however, is being sure that a wiki really fits and More! in the culture of the project or organi- To receive monthly zation. A wiki gives a voice to every- updates, email body in the project, delegates control, [email protected] and promotes cooperation based on trust that people will do the right thing. It requires tolerance and openness. http://dsonline.computer.org If these don’t hold, a wiki might not

March/April 2006 IEEE SOFTWARE 91 Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.