KNOW HOW MoinMoin

Building with MoinMoin Wiki Creative Group Writing

The members of a project team can profit from collecting their ideas, or any loose ends, in a central repository. Wikis are tailor-made for this task.

BY HEIKE JURZIK

ay before content manage- ment systems started to Wappear for website manage- ment, Wikis provided a kind of “open door” to HTML pages, allowing any visi- tor to click and edit the HTML content. Wiki is the abbreviation for WikiWiki- Web – “wiki wiki” is derived from Hawaiian and means “quick” or “quickly”. And the open authoring sys- restored at any time, should a page be MySQL, Oracle, or PostgreSQL. The soft- tem certainly is quick. The MoinMoin deleted or damaged by mistake. Also, ware then uses this data to create the Wiki engine is one of the better-known wikis allow you to assign special access public HTML pages. implementations of this technology. controls that can restrict editing to regis- Besides taking a look at the original Users can click to launch the embed- tered users, if required. wiki, you might like to visit what is cur- ded editor and access the content and The first wiki website was published rently the biggest wiki on the Web, the structure of the page they want to mod- by Ward Cunningham in 1995, and it is Wikipedia [3], which offers innumerable ify. Typically, an Edit link is provided to still online [1]. At the time, Cunningham articles on pages in multiple languages. make things easier. wrote an email message saying that he It is an example of how well information In contrast to “real” HTML, which had programmed a new kind of database can be organized with a wiki. uses format tags, wikis have a special “I’ve put up a new database on my web If you are thinking of running a wiki syntax that needs only a few simple for- server(…). It’s a web of people, projects yourself, you will be spoilt for choice of matting commands. and patterns accessed through a cgi-bin software – there are over 100 different The wiki web page version control sys- script.” [2]. wiki engines [4], most of which are tems ensure that older versions can be This meant opening up his HTML Open Source. In this article we will be pages to the general public. The foot of looking at the MoinMoin engine, and GLOSSARY each wiki page contains a link that takes introducing its syntax. CGI:CGI is the abbreviation for Common users to the editor where they can add Gateway Interface. It provides an interface to, or modify, pages. Fortunately, there is Pre-Flight Check between external programs,or scripts,and no need to write HTML code to do so. Before we launch into the wiki installa- the web server.While HTML pages are static, Cunningham wanted to make things eas- tion, let’s first ensure that a few other CGIs allow for content generation at runtime. Programs in the web server’s “cgi-bin”direc- ier for the authors and so chose a services are running on your machine. tory are run automatically by the server simpler syntax. These include Apache [5], for example. when requested by a browser. For example, The Wiki engine stores the content Most current distributions include pack- CGI scripts process the input from forms on input either as ASCII text, or externally ages with versions 1 and 2 of the web HTML pages. using a relational database such as server. You will not normally need to

52 April 2004 www.linux-magazine.com MoinMoin Wiki KNOW HOW

Figure 1: Good morning – MoinMoin shortly after take off. Figure 2: Using MoinMoin as a template. compile the sources manually. Moin- huhnix:/moin-1.1 # egrep "^UserU ScriptAlias /mywiki "/usr/localU Moin [6] is a Wiki based on the Python |^Group" /etc/httpd/httpd.conf /share/moin/mywiki/moin.cgi" [7] scripting language. Make sure that User wwwrun Python is installed on your machine, by Group nogroup You only need the first line once in the typing python -V, and if not, install the configuration file; the second line is Python packages from your distribu- Red Hat Linux users will need to parse required for each wiki instance on the tion’s installation CDs. /etc/httpd/conf/httpd.conf instead, and server – make sure you change the name Linux uses /etc/apache/httpd. and path. Avoid calling your wiki wiki if MoinMoin Sources conf. you can, as this can cause name conflicts The MoinMoin sources can be down- Now change to the moin directory (cd with internal software components. loaded from the project homepage. Type /usr/share/moin/ or cd /usr/local/share/ Finally, re-launch the web server tar xzvf moin-1.1.tar.gz to unpack the moin/) to create a new Wiki instance: (/etc/init.d/apache2 restart for Apache 2, archive, then change to the new direc- /etc/init.d/apache restart for Apache 1, tory created by this process (cd mkdir mywiki and /etc/init.d/httpd restart for Red Hat moin-1.1) and assume root privileges. cp -r data mywiki Linux). If you then access the URL Python can help you install the software. cp cgi-bin/* mywiki http://localhost/mywiki/ with your brow- The command is as follows: chown -R wwwrun.nogroup mywiki ser, you should see the wiki welcome chmod a+rx mywiki/*.cgi page (see Figure 1). huhnix:/moin-1.1 # python setupU .py install --record=install.log Debian users will need to change the IDs Sandbox running install in the chown line to www-data.www- When you are trying out your new wiki, running build data, and Red Hat Linux users to apache. it makes sense to take your first steps in running build_py apache. The two entries then creating build need to be added to the Table 1: MoinMoin Syntax creating build/lib Apache configuration file (this Wiki Syntax HTML Syntax Displays as creating build/lib/MoinMoin is /etc/httpd/httpd.conf for "italics" italics italics [...] Apache 1 and /etc/apache2/ "'bold'" bold bold httpd.conf for Apache 2 on ##comment comment<--> not displayed as output The --record=install.log parameter Suse Linux, /etc/apache/httpd. [[BR]]
hard newline writes an overview of the steps to the conf for Debian, and /etc/ New line

Paragraph install.log file. The next step is to dis- httpd/conf/httpd.conf for Red = Heading =

Heading

Heading cover the user and group IDs that your Hat Linux): == Subheading ==

Subheading

Subheading Apache server uses. You can grep the === Level 3 ===

Level 3

Level 3 Apache configuration file to find these Alias /wiki/ U ==== Level 4 ====

Level 4

Level 4 values. On Suse Linux 8.2, for example, "/usr/share/moin/U ===== Level 5 =====
Level 5
Level 5 —- (four dashes)
horizontal line type the following: htdocs/"

www.linux-magazine.com April 2004 53 KNOW HOW MoinMoin Wiki

the so-called sandbox, tent directly from the which you can access server. Normal users are via a link on the wel- not allowed to delete come page (http://local pages, unless you explic- host/mywiki/WikiSand itly allow them to do so Box). Click on the Edit in the configuration file, this page link to open a /usr/share/moin/ window within the win- mywiki/moin_config.py. dow. Most formatting Should you require this, commands are intuitive add the following line: and you will soon dis- cover that you have allowed_actions=U mastered them. Table 1 ['DeletePage'] provides on overview of the most important com- This displays a Delete mands. Page link to visitors of There are different the wiki site. If a user techniques for creating clicks on the link, Moin- links. To refer to an Moin ask them to con- external page on the Figure 3: Using your own logo. firm and then enter a Web, simply supply the reason for this action. URL, but make sure that you include the warning sign. A table with the avail- To prevent pages disappearing mysteri- http://. For example, http://www. able smileys and a note on how to ously, the software saves backup copies linux-magazine.com is a valid reference, produce them is available at http:// of deleted pages in /usr/share/moin/ but not www.linux-magazine.com. localhost/mywiki/HelpOnSmileys. mywiki/data/backup/. If you want to You can use straight brackets to /usr/share/moin/htdocs/img/ contains check on recent developments, you can provide an additional description of the miscellaneous images, such as the Moin- click on RecentChanges at the top of any link – [http://www.linux-magazine.com Moin logo, moinmoin.gif. If you want to page to see where people are currently Linux Magazine homepage]. This would use your own logo or image (see Figure working. be written as Linux Magazine man with the “Moin, Moin!” sign, sim- on individual user account based access Homepage in HTML. ply save the image file in /usr/share/ privileges, and this feature is already Internal links to wiki pages use the so- moin/htdocs/img/ and the edit the /usr/ available in the 1.1 version along with called “CamelCase” notation with a share/moin/mywiki/moin_config.py file. ACL support. capital letter at the start of, and some- The entry will need to read: Wikis basically do not provide security where inside the word. For example, you – this is something all administrators could easily use LinuxMagazine as a link logo_url = url_prefix + '/imgU should be aware of. If you run an open to the page http://localhost/mywiki/ /Your_Imagefile' wiki on the Web, you are practically ask- LinuxMagazine. ing for graffiti. If this does not currently exist, Moin- This allows you to reflect corporate, or However, a wiki on your Intranet can Moin will help you create it (see Figure organizational, identity when designing be a useful thing. The ease of use, and 2). Incidentally, if you add the Moin- a wiki site for a project or your organiza- the fact that users do not need an Moin: prefix to an internal link, the wiki tion’s Intranet. account on the web server to edit a page, engine will create a link to the official Use the /usr/share/moin/mywiki/moin mean that a makes a lot of MoinMoin wiki. Thus, the following _config.py file to edit the name of your sense for non-technical users. ■ link, MoinMoin:LinuxMagazine, would wiki instance. To do so, replace the take you to the following page http:// default value, which is represented by INFO purl.net/wiki/moin/LinuxMagazine. the sitename variable, with your choice [1] WikiWikiWeb:http://c2.com/cgi/wiki of name, as in sitename = ‘Brainstorm- Under the Hood ing Special Issue. This will display the [2] Email announcement:http://c2.com/ wiki/mail-history.txt /usr/share/moin/htdocs/img/ contains a name as a heading in your browser. number of GIF-formatted image files [3] Wikipedia:http://en.wikipedia.org/ which the wiki uses. These include all Open Wikis, Open Doors? [4] Wiki engines:http://c2.com/cgi/ kinds of smileys (emoticons). The wiki Wiki administrators have a few impor- wiki?WikiEngines software uses these images if certain tant tasks to take care of, such as [5] Apache:http://www.apache.org character strings appear in the text. The maintaining the pages. Pages are located [6] MoinMoin:http://moin.sourceforge.net wiki also adds a few symbols of its own, in the wiki’s data/text/ subdirectory. You [7] Python:http://www.python.org such as the Python logo on each page, or can use the rm command to delete con-

54 April 2004 www.linux-magazine.com