The name Mantis and the logo of the project refer to the insect family Mantidae, known for tracking and feeding on other insects, colloquially referred to as "bugs". The name of the project is abbreviated to either MantisBT or just Mantis.
History
Kenzaburo Ito started the development of the Mantis Bug Tracking Project in 2000. In 2002, Kenzaburo was joined by Jeroen Latour, Victor Boctor, and Julian Fitzell to be the administrators, and it became a team project.[2]
Version 1.0.0 was released in February 2006.[3]
Version 1.1.0 was released in December 2007.[4]
In November 2008, after a long discussion,[5] the project switched[6] from using the Subversionrevision control tool to Git, a distributed revision control tool.
In February 2010, version 1.2.0 was released.[7]
In July 2012, the MantisBT organization on GitHub became the official repository for the Project's source code.[8]
Features
Plug-ins
An event-drivenplug-in system was introduced with the release of version 1.2.0.[9] This plug-in system allows extension of MantisBT through both officially maintained and third party plug-ins. As of November 2013, there are over 50 plug-ins available on the MantisBT-plugins organization on GitHub.
Prior to version 1.2.0, a third party plug-in system created by Vincent Debout was available to users along with a variety of different plug-ins.[10] This system was not officially supported by the MantisBT project and is incompatible with MantisBT 1.2.0 and later.
Notifications
MantisBT supports the sending of e-mail notifications upon changes being made to issues in the system. Users have the ability to specify the type of e-mails they receive and set filters to define the minimum severity of issues to receive notifications about. Users also have the ability to explicitly subscribe to issues that affect them.
RSS feeds are available for users who wish to keep track of issues that have been resolved. Additionally, MantisBT has integration with Twitter via a plugin, to allow a notification to be tweeted when an issue is resolved.
Via MantisBT's event-drivenplug-in system, it is possible to extend the built in notification support to run advanced scripts that perform additional notification actions (such as sending SMS messages or updating statuses in external project management systems).
Revision control system integration
Versions of MantisBT prior to 1.2.0 allowed for limited integration with the CVSrevision control system.[11]
With the introduction of plug-in capabilities in MantisBT 1.2.0, revision control integration was redeveloped by Amethyst Reese in the SourceIntegration plugin.
The initial release of the SourceIntegration plugin supported GitHub, GitWeb, SourceForge and WebSVN.[12]
Over time, two additional modules were added and as of November 2013, source integration is supported for the following revision control tools and web-based providers:
cgit, a web interface for Git repositories, written in C
GitHub, an open-source software hosting facility that hosts Git repositories
Gitweb, a free and open source web interface for Git repositories
HgWeb, a cgi web front-end for Mercurial repositories
SourceForge (for Subversion integration only), an open-source software hosting facility that hosts various types of software repositories
WebSVN, a free and open source web interface for Subversion repositories
RhodeCode, an OpenSource web interface to Mercurial, Git and Subversion repositories[13]
Upon committingchangesets to a source code repository, post-commit hooks within Git or Subversion can be configured to automatically notify MantisBT that changes have been made to the repository. GitHub is also capable of remotely notifying a MantisBT installation of changes to a source code repository. Another technique used for integrating MantisBT with web-based source code hosting providers is the use of a job scheduler such as cron to manually check for changes to a repository every few minutes, reporting any changes back to MantisBT.[12]
SourceIntegration allows for issues within MantisBT to be automatically resolved when a changeset message contains special strings such as "Fixes #12345", which are configurable using regular expressions. This also allows for relationships to be automatically created between changesets and corresponding issues recorded in MantisBT. Multiple issue IDs can be specified in a single changeset message, although this is commonly discouraged as it indicates the changeset doesn't have a single, clear and logical purpose.[14]
Minor features
In addition to the features mentioned above, MantisBT also has support for:[15]
This section needs to be updated. Please help update this article to reflect recent events or newly available information.(February 2022)
Development languages
MantisBT is mainly written in PHP and uses SQL to interface with databases. The web-based user interface of MantisBT is written using HTML which is styled and presented using CSS.[16] The UI also uses the jQueryclient-side JavaScript library to provide optional features such as Ajax and JSON powered dynamic page content.
Development tools and build scripts are written predominantly in Python with some Shell script and PHP.
MantisBT maintains a database upgrade path between versions by modifying the database schema incrementally.[21] During the installation of MantisBT, database schema modifications are replayed all the way back from early versions of MantisBT to reach the latest state.
Requirements
This section needs to be updated. Please help update this article to reflect recent events or newly available information.(February 2022)
As of June 2022, the stable branch of MantisBT requires PHP 7.0 or later.[20]
Several PHP extensions are required[11] to enable specific functionality or for performance reasons; the extension for the RDBMS being used (i.e. mysqli) is mandatory.
MantisBT bundles a number of dependencies with each release including:[23]
ADOdb for abstraction of support for relational database management systems
For drawing graphs of relationships between issues, GraphViz is required. MantisBT also has an alternative dependency upon the commercial JpGraph graphics library for plotting of statistics.