Pinkwino

Platforms : Cross Platform (only tested on Linux)
Language : Java
Source Code (GitHub)

About

Pinkwino is a wiki engine. You can use it as a standalone web application, but you can also embed it into other web applications.

You can see it running right here (this web page is part of a pinkwino standalone application). It is also embedded into my Family Album.

It is customisable through a groovy configuration script (think of it as interpreted java). It has a plugin system, so you can create your own special wiki components.

Changing the look and feel is easy, as it uses a template system (from struts). The entire look and feel can be changed by writing your own layout template, and accompanying css style sheet.

If you are more adventurous, you could extend Pinkwino. For example, currently all wiki pages are stored in the file system, but if you wanted to save them in a database, it would be reasonably simple to write another implementation of the Storage interface. It is also fairly easy to alter or add to the wiki syntax.

Features

  • Versioning. Every version of page is kept. You can browse previous versions, and see a "diff" of the changes.
  • Can be used as a standalone web application and embedded within another application.
  • Searchable. Stores metadata using Lucene.
  • Namespaces.
  • Automatic image manipluation. You can upload a large image, and then display a shrunken version of it. The shrunken version will automatically be updated if the original image is changed.
  • Use wiki pages for navigation as well as the content (The items on the left of this page are a separate wiki navigation page ).
  • Simple, but customisable wiki syntax.
  • Plugin system. Plugins can be written in Java, but simpler plugins can be implemented in a single jsp page.
  • Highly modular each part of the wiki engine has its own interface, and you could create a new implementation to suit your own needs. For example, I have two difference "Storage" implementations.
  • Set permissions, so that only certain users can edit/delete pages. This can be done at the page or namespace level. Authorisation can be turned on/off in the configuration script

Limitations

  • No support for arbitrary HTML - you are limited to HTML generated from the wiki markup.
  • No I18N, currently all text is in English; hard-coded into the JSP pages.
  • Pages are stored in the file system (not a database).
  • No caching. Currently wiki pages are parsed and rendered to HTML every time they are requested.
  • No WYSIWYG editor. Users muust learn the wiki markup syntax.

New Feature Ideas

  • Add a {{code ... }} syntax, which is the same as {{{ or <pre>, but adds a standard css class
  • Lists can have blank linkes within the wiki markup to make it more readable/editable.
  • Option within <pre> blocks to escape "<" to < to allow for the text "</pre>" to appear within a <pre> block (i.e. by writing it as <pre>
  • Add documentation: How to use a wiki page to hold a css page (so that styles can be added by end users).