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, 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.
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 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, 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 and the main website.
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.