PmWiki

Last updated
PmWiki
Original author(s) Patrick R. Michaud [1]
Developer(s) PmWiki community
Initial releaseJanuary 2002;22 years ago (2002-01) [2]
Stable release
2.3.32 [3] / 2024-03-24 [±]
Preview release
SVN only / nightly
Repository
Operating system Cross-platform
Platform PHP
Type Wiki
License GNU General Public License
Website www.pmwiki.org

PmWiki is a wiki-based [4] content management system designed for a collaborative creation and maintenance of websites. [5]

Contents

It is free software written in PHP, [6] licensed under the terms of the GNU General Public License.

Design focus

The PmWiki philosophy [7] favors writers over readers, aiming to make it easy to author documents, even if the document types are limited. It supports collaborative maintenance of websites, with a number of built-in tools for access control, delegation, monitoring, review, and for reverting edits. One of the design goals being easy maintenance, PmWiki is configurable and extensible, allowing the core to be updated independently from, while staying backwards-compatible with, any local customization.

Besides the usual collaborative features such as content management and knowledge base, PmWiki has been used [8] by companies or groups as an internal communication platform [9] with task management and meeting archives. [10] It is also used by university and research teams. [11]

The PmWiki wiki markup shares similarities with MediaWiki (used by Wikipedia) and has a some features not found in other wiki engines. [4] The PmWiki markup engine is customizable, and markup rules can be added, replaced or removed, and it can support other markup languages. As an example, the Creole specifications can be enabled. [12] The edit form, since version 2.3.0, can have syntax highlighting enabled for its own wiki markup dialect. [13] [14]

PmWiki functionality and features can be extended through add-ons called "recipes" with more than 1000 recipes published in the PmWiki Cookbook. [15]

Features

Content storage

PmWiki uses regular text files to store content. Each page of the wiki is stored in its own file on the web server. By default pages are stored in 8-bit or UTF-8 encoding, with page text, metadata, and revision history in the same file. According to the author, "For the standard operations (view, edit, page revisions), holding the information in flat files is clearly faster than accessing them in a database..." [16]

The storage class is extensible, allowing add-ons to enable other storage systems and formats. For example, with add-ons, a website can use SQLite or MySQL databases, or XML files for storage.

PmWiki supports "attachments" (uploads: images or other files) to its wiki pages. The attachments can be versioned. [17] There are PmWiki add-ons allowing easier management of the uploaded files, e.g. deletion or thumbnail/gallery creation. [18]

Wiki structure

Wiki pages are contained within namespaces, called "wiki groups". [19] Multiple namespaces can be used, and each namespace can have its own configuration options, add-ons, access control, skin, styles, sidebar (menu), the language of the content, and interface. [20]

Hierarchically, every page is contained in a namespace. It is possible to display and navigate through pages in a tree-like structure with a "wiki trail". [21] Through recipes, it is possible to have a flat structure (no wiki groups), multiple nested groups, or sub-pages.

Special namespaces are "PmWiki", Site, SiteAdmin, and Category which contain the documentation and some configuration templates.

Markup

The PmWiki markup shares similarities with MediaWiki. Here is a sample of commonly used markup rules. [22]

Links are usually wrapped in double brackets, optionally with link text:

[[Other page]], [[Page|link text]], [[Page|+]] (shows the page title), [[Page#anchor|Link text]] https://example.com/path/, mailto:mailbox@example.com (plain links) [[https://example.com/path/|Link text]] Wikipedia:Wiki_software (InterMap links) 

It is possible to enable internal links for CamelCase words without brackets, and add-ons can enable other link markups like @Page.

Headings are preceded with exclamation marks:

! Top-level heading (<h1>) !! Second-level heading ... !!!!!! Sixth-level heading 

It is possible to enable an automated table of contents coming with the PmWiki core, or install one among several Table of contents add-ons. [23]

Lists are prefixed by "*" (bulleted) and "#" (numbered) and can be nested:

* List item * List item ** Nested item  # Ordered list # Another item ** Nested bulleted item 

Directives for listing pages and attachments, and including pages and templates:

(:pagelist group=Cookbook order=-time count=20:)  (:attachlist name=*.jpg:)  (:include AnotherPage#fromanchor#toanchor:)  (:include MyTemplate variable=value othervariable="Some value":) 

Other page directives allow setting the page title, description, and keywords, disabling layout sections like sidebars or footers, creating tables, or defining page text variables. Add-ons allow for extra functionality.

Inline markup:

'''Bold''', ''italic'', @@code (fixed-width)@@, %classname%CSS styled text%%, [-small text-], [+large text+], {+inserted+}, {-deleted-},  '^superscript^', '_subscript_', [@ code block, possibly with syntax highlighting @] 

Other markup rules can be enabled through recipes (add-ons).

HTML is not available for the edit form out of the box, but it is possible to enable selected tags through add-ons.

Skin templates

PmWiki offers a skin template scheme that makes it possible to change the look and feel of the wiki or website with a high degree of flexibility in both functionality and appearance. [24]

Since version 2.3.30, the core responsive skin can have a dark theme enabled. The dark mode functions are available for reuse by custom skins. [25]

Access control

PmWiki permits users and administrators to establish password protection for individual pages, groups of pages, or the entire site. For example, defined zones may be established to enable collaborative work by certain groups, such as in a company intranet. [26]

Password protection can be applied to reading, editing, uploading to, and changing passwords for the restricted zone. The out-of-the-box installation uses "shared passwords" rather than login names, but a built-in option can enable a sophisticated user/group-based access control system on pages, groups of pages or the whole wiki.

PmWiki can use passwords from config files, special wiki pages, and .htpasswd/.htgroup files. There are also user-based authorization possibilities and authentication via various external sources (e.g. LDAP, forum databases, etc.).

Customization

PmWiki follows a design philosophy [7] with the main objectives of ease of installation, maintainability, and keeping non-required features out of the core distribution of the software. This design encourages customization with a wide selection of custom extensions, known as "recipes" available from the PmWiki Cookbook. [15] Creating and maintaining extensions and custom installations is easy thanks to a number of well documented hooks in the wiki engine.

System requirements

Recent PmWiki releases require a web server that can run PHP version 5.4 or more recent. PmWiki can be deployed to standard hosting providers, or locally. There is a "recipe" to allow running PmWiki "Standalone", with the PHP built-in webserver, for example from a USB flash drive. [27]

Books and articles about PmWiki

The following books analyse PmWiki, have dedicated chapters or sections, compare it with other wiki and CMS software:

PmWiki has been featured in a number of printed and online magazines including Inc Magazine , [9] Linux Gazette, [10] PCMag , [28] LXer, [29] Framasoft, [30] Linuxfr. [31]

The page PmWiki References [32] lists publications about PmWiki in various languages.

See also

Related Research Articles

<span class="mw-page-title-main">Plug-in (computing)</span> Software component that adds a specific feature to an existing software application

In computing, a plug-in is a software component that adds a specific feature to an existing computer program. When a program supports plug-ins, it enables customization.

<span class="mw-page-title-main">Text editor</span> Computer software used to edit plain text documents

A text editor is a type of computer program that edits plain text. Such programs are sometimes known as "notepad" software. Text editors are provided with operating systems and software development packages, and can be used to change files such as configuration files, documentation files and programming language source code.

<span class="mw-page-title-main">Wiki</span> Type of website that visitors can edit

A wiki is a form of online hypertext publication that is collaboratively edited and managed by its own audience directly through a web browser. A typical wiki contains multiple pages for the subjects or scope of the project, and could be either open to the public or limited to use within an organization for maintaining its internal knowledge base.

<span class="mw-page-title-main">Wiki software</span> Software to run a collaborative wiki (Including private wiki)

Wiki software is collaborative software that runs a wiki, which allows the users to create and collaboratively edit pages or entries via a web browser. A wiki system is usually a web application that runs on one or more web servers. The content, including previous revisions, is usually stored in either a file system or a database. Wikis are a type of web content management system, and the most commonly supported off-the-shelf software that web hosting facilities offer.

XUL, which stands for XML User Interface Language, is a user interface markup language developed by Mozilla. XUL is an XML dialect for writing graphical user interfaces, enabling developers to write user interface elements in a manner similar to web pages.

TWiki is a Perl-based structured wiki application, typically used to run a collaboration platform, knowledge or document management system, a knowledge base, or team portal. Users can create wiki pages using the TWiki Markup Language, and developers can extend wiki application functionality with plugins.

<span class="mw-page-title-main">MediaWiki</span> Free and open-source wiki software

MediaWiki is a free and open-source wiki software originally developed by Magnus Manske for use on Wikipedia on January 25, 2002, and further improved by Lee Daniel Crocker, after which it has been coordinated by the Wikimedia Foundation. It powers several wiki hosting websites across the Internet, as well as most websites hosted by the Foundation including Wikipedia, Wiktionary, Wikimedia Commons, Wikiquote, Meta-Wiki and Wikidata, which define a large part of the set requirements for the software. MediaWiki is written in the PHP programming language and stores all text content into a database. The software is optimized to efficiently handle large projects, which can have terabytes of content and hundreds of thousands of views per second. Because Wikipedia is one of the world's largest and most visited websites, achieving scalability through multiple layers of caching and database replication has been a major concern for developers. Another major aspect of MediaWiki is its internationalization; its interface is available in more than 400 languages. The software has more than 1,000 configuration settings and more than 1,800 extensions available for enabling various features to be added or changed. Besides its usage on Wikimedia sites, MediaWiki has been used as a knowledge management and content management system on websites such as Fandom, wikiHow and major internal installations like Intellipedia and Diplopedia.

Extensible Application Markup Language is a declarative XML-based language developed by Microsoft for initializing structured values and objects. It is available under Microsoft's Open Specification Promise.

<span class="mw-page-title-main">DokuWiki</span> Wiki software

DokuWiki is an open source wiki application licensed under GPLv2 and written in the PHP programming language. It works on plain text files and thus does not need a database. Its syntax is similar to the one used by MediaWiki. It is often recommended as a more lightweight, easier to customize alternative to MediaWiki. The 'Doku' in DokuWiki is short for Dokumentation which in German means documentation.

The following tables compare general and technical information for many wiki software packages.

A web content management system is a software content management system (CMS) specifically for web content. It provides website authoring, collaboration, and administration tools that help users with little knowledge of web programming languages or markup languages create and manage website content. A WCMS provides the foundation for collaboration, providing users the ability to manage documents and output for multiple author editing and participation. Most systems use a content repository or a database to store page content, metadata, and other information assets the system needs.

<span class="mw-page-title-main">TiddlyWiki</span> Wiki software

TiddlyWiki is a personal wiki and a non-linear notebook for organising and sharing complex information. It is an open-source single page application wiki in the form of a single HTML file that includes CSS, JavaScript, embedded files such as images, and the text content. It is designed to be easy to customize and re-shape depending on application. It facilitates re-use of content by dividing it into small pieces called Tiddlers.

Microformats (μF) are a set of defined HTML classes created to serve as consistent and descriptive metadata about an element, designating it as representing a certain type of data. They allow software to process the information reliably by having set classes refer to a specific type of data rather than being arbitrary.

A semantic wiki is a wiki that has an underlying model of the knowledge described in its pages. Regular, or syntactic, wikis have structured text and untyped hyperlinks. Semantic wikis, on the other hand, provide the ability to capture or identify information about the data within pages, and the relationships between pages, in ways that can be queried or exported like a database through semantic queries.

HCL Connections is a Web 2.0 enterprise social software application developed originally by IBM and acquired by HCL Technologies in July 2019. Connections is an enterprise-collaboration platform which aims to helps teams work more efficiently. Connections is part of HCL collaboration suite which also includes Notes / Domino, Sametime, Portal and Connections.

<span class="mw-page-title-main">History of wikis</span> History of wiki collaborative platforms

The history of wikis began in 1994, when Ward Cunningham gave the name "WikiWikiWeb" to the knowledge base, which ran on his company's website at c2.com, and the wiki software that powered it. The wiki went public in March 1995, the date used in anniversary celebrations of the wiki's origins. c2.com is thus the first true wiki, or a website with pages and links that can be easily edited via the browser, with a reliable version history for each page. He chose "WikiWikiWeb" as the name based on his memories of the "Wiki Wiki Shuttle" at Honolulu International Airport, and because "wiki" is the Hawaiian word for "quick".

Confluence is a web-based corporate wiki developed by Australian software company Atlassian. Atlassian wrote Confluence in the Java programming language and first published it in 2004. Confluence Standalone comes with a built-in Tomcat web server and hsql database, and also supports other databases.

WIKINDX is a free bibliographic and quotations/notes management and article authoring system designed either for single use and multi-user collaborative use across the internet. WIKINDX falls within the category of reference management software, but also provides functionality to write notes and entire papers.

<span class="mw-page-title-main">Org-mode</span> Open source mode for GNU Emacs

Org Mode is a mode for document editing, formatting, and organizing within the free software text editor GNU Emacs and its derivatives, designed for notes, planning, and authoring. The name is used to encompass plain text files that include simple marks to indicate levels of a hierarchy, and an editor with functions that can read the markup and manipulate hierarchy elements.

References

  1. Dr. Patrick Michaud. About Page
  2. PmWiki version 0.1 (tgz archive) has its most recent file from Jan 08, 2002. The PmWiki-Users Mailing list exist since August 2002.
  3. "Release Notes". pmwiki.org. Retrieved 2024-03-24.
  4. 1 2 WikiMatrix / PmWiki Features - Compare Them All, WikiMatrix. Cosmo Code, 22 Nov. 2005. Web. 30 Nov. 2011.
  5. PmWiki home page
  6. "PmWiki - DreamHost." DreamHost. New Dream Network, LLC, 7 July 2005. Web. 30 Nov. 2011. Archived 2016-05-14 at the Wayback Machine
  7. 1 2 PmWiki philosophy
  8. PmWiki Users
  9. 1 2 The End of E-Mail, article by Darren Dahl, published in Inc. Magazine, February 2006, page 41
  10. 1 2 PmWiki - Wiki the Painless Way, article by Raj Shekhar, Linux Gazette magazine, May 2005
  11. "PmWiki: wiki simple" (in French). Archived from the original on 2022-05-25. (article in PLUME, an association promoting useful, accessible, and economic software in higher education and research)
  12. "PmWiki - Cookbook / Creole". pmwiki.org.
  13. "PmWiki Release notes, version 2.3.0".
  14. "PmWiki Cookbook / PmSyntax".
  15. 1 2 "PmWiki Cookbook".
  16. "PmWiki Design - Flat File Advantages" . Retrieved 2019-01-09.
  17. "Uploads administration".
  18. "Cookbook / Attachments/Uploads".
  19. "PmWiki / WikiGroup".
  20. "PmWiki / Local customizations".
  21. "PmWiki / WikiTrails".
  22. "PmWiki Basic Editing" . Retrieved 2023-08-16.
  23. "PmWiki / Table of contents".
  24. "PmWiki / Skins".
  25. "Cookbook / DarkColorScheme".
  26. "PmWiki / Password administration".
  27. "PmWiki - Cookbook / Standalone". pmwiki.org.
  28. Working Together With Wikis, article by Anil Hemrajani, August 3, 2005, scanned pages on Google Books
  29. Organizing Information, article by Ian MacGregor, July 8, 2007
  30. PmWiki, September 2004, December 2010 (French)
  31. Sortie de PmWiki 2.2.29, article by Lucas Bonnet, July 2011 (French)
  32. "PmWiki | PmWiki / References". www.pmwiki.org.