# Foswiki

Foswiki is an enterprise wiki, typically used to run a collaboration platform, knowledge base or document management system. Users can create wiki applications using the Topic Markup Language (TML), and developers can extend its functionality with plugins.
The Foswiki project was launched in October 2008 when a dispute about the future direction of TWiki could not be settled, resulting in the decision of nearly all key TWiki contributors to fork. Since then the codebases have diverged significantly. However, Foswiki continues to maintain compatibility with content written for TWiki. Foswiki stands for "free and open source" wiki to emphasize its commitment to open source software. The project is governed by the Foswiki Association e.V, a volunteer run, non-profit foundation.
The Foswiki website is seen by some as one of the more popular Perl-related websites based upon Alexa rankings of all websites in the world.

## Features

Foswiki features an open architecture programmed and implemented in the Perl and JavaScript languages and runs on standard web servers such as Apache, Nginx and lighttpd. With almost 70 contributors providing over 56,000 commits since its inception, the Foswiki team not only develops the code but also offers on-line support, including on IRC and Slack. Core features include a TinyMCE WYSIWYG editor, built-in search engine, default text database, and skinnable user interface, as well as RSS/Atom feeds, e-mail support, and database interfaces to support scalable database solutions such as MongoDB and MySQL. Additional security-related features include an auditable version control system, user authentication, an access control system, cross-site request forgery protection, and improved spam-prevention extensions.

## Extensions

Users have contributed over 300 extensions. Most of these extensions have been developed by or for corporate users, and are maintained by developers and users, as documented in the individual extension histories. Extensions have been developed to link into databases, create charts, tags, sort tables, write spreadsheets, create image gallery and slideshows, make drawings, write blogs, plot graphs, interface to many different authentication schemes, including single sign-on, track Extreme Programming projects, and others.

## Application platform

Foswiki is a structured wiki that acts as an application platform for web-based applications. Specifically it provides database-like manipulation of fields stored on pages, and offers a SQL-like query language to support the embedding reports in wiki pages.
Wiki applications are often called situational applications because they are created ad-hoc by users for very specific needs. For example, users have built Foswiki applications that include call center status boards, to-do lists, inventory systems, employee handbooks, bug trackers, blog applications, discussion forums, status reports with rollups and more.

## User interface

The user interface is customizable through use of templates, themes and CSS. It includes support for internationalization, with support for multiple character sets, UTF-8 URLs etc. The English user interface has been translated by users into Bulgarian, Chinese, Czech, Danish, Dutch, French, German, Greek, Italian, Japanese, Korean, Norwegian, Polish, Portuguese, Russian, Spanish, Swedish, Turkish and Klingon.

## Deployment

Foswiki is expected to be used primarily at the workplace as a corporate wiki to coordinate team activities, track projects, implement workflows and as an Intranet Wiki, for example in academia.
Foswiki (among other components) was used in several research programs including Data Integration Platform for Systems Biology Collaborations, an interactive data integration platform supporting collaborative research projects, based on Foswiki, Solr/Lucene, and custom helper applications.

## Implementation

Foswiki is implemented in Perl and JavaScript (using jQuery), though it can be used without JavaScript being enabled in the browser.
By default, wiki pages are stored on the server in plain text files. Everything, including meta-data such as access control settings, are version controlled using RCS. RCS is optional since an all-Perl version control system is provided. Other server-side databases, such as MongoDB, are supported through use of extensions.
Informal user reports suggest that Foswiki scales reasonably well even though it uses plain text files and no relational database to store page data, especially where load balancing and caching are used to improve performance.

## Support

Foswiki is an entirely community-driven project, and has no controlling commercial interest behind it. User support is provided by the community, via the mechanisms of IRC, Slack and the main website at https://foswiki.org/Support/WebHome. Commercial support and consultancy services in many countries can be found on the Foswiki consultant web page: https://foswiki.org/Support/WikiConsultants

## History

Foswiki started life as a fork of the TWiki project. Since the fork it has been worked on continuously by a relatively large development team. Notable developments since the fork include adoption of the jQuery JavaScript user interface framework, interfacing to the MongoDB NoSQL database, interfacing to the Solr search system, page caching and a modified editing interface.