[go: nahoru, domu]

Jump to content

Mantis Bug Tracker: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m →‎Requirements: Graph (mathematics) is now a disambiguation link; please fix., replaced: graphsgraphs{{dn|{{subst:DATE}}}} using AWB
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5) (Whoop whoop pull up - 18382
 
(41 intermediate revisions by 29 users not shown)
Line 1: Line 1:
{{Short description|Bug tracking system}}
{{Use mdy dates|date=July 2012}}
{{Use mdy dates|date=July 2012}}
{{Infobox Software
{{Infobox software
| name = Mantis Bug Tracker <!-- This is the name used to transclude the {{Latest stable software release/Mantis Bug Tracker}} and {{Latest preview software release/Mantis Bug Tracker}} version templates -->
| name = Mantis Bug Tracker <!-- This is the name used to transclude the {{Latest stable software release/Mantis Bug Tracker}} and {{Latest preview software release/Mantis Bug Tracker}} version templates -->
| logo = [[File:MantisBT logo (2012).png]]
| logo = MantisBT logo (2012).png
| screenshot = [[File:Mantis screen shot.jpg|300px]]
| screenshot =
| caption = MantisBT Actual Working Mode Screen Shot
| caption =
| collapsible = yes
| collapsible =
| author =
| author = Kenzaburo Ito
| developer = Various ([[Open source]] contributors)
| developer = Various ([[Open-source software|Open-source]] contributors)
| released = {{Start date and age|2000}}
| released = {{Start date and age|2000}}
| latest release version = {{Latest stable software release/Mantis Bug Tracker}}
| latest release version = {{Latest stable software release/Mantis Bug Tracker}}
Line 16: Line 17:
| genre = [[Bug tracking system]]
| genre = [[Bug tracking system]]
| license = [[GNU General Public License]] version 2
| license = [[GNU General Public License]] version 2
| website = {{URL|//www.mantisbt.org/}}
| website = {{URL|https://www.mantisbt.org/}}
| programming language = [[PHP]]
| programming language = [[PHP]]
| status = Active
}}
}}
'''Mantis Bug Tracker''' is a [[Free and open source software|free and open source]], [[World Wide Web|web-based]] [[bug tracking system]] released under the terms of the [[GNU General Public License]] version 2. The most common use of MantisBT is to track [[Software bug|software defects]]. However, MantisBT is often configured by users to serve as a more generic [[issue tracking system]] and [[Project management software|project management tool]].
'''Mantis Bug Tracker''' is a [[Free and open source software|free and open source]], [[World Wide Web|web-based]] [[bug tracking system]]. The most common use of MantisBT is to track [[Software bug|software defects]]. However, MantisBT is often configured by users to serve as a more generic [[issue tracking system]] and [[Project management software|project management tool]].


The name '''Mantis''' and the [[logo]] of the project refer to the [[Mantidae]] family of [[insect]]s, known for the tracking of and feeding on other insects, [[Colloquialism|colloquially]] referred to as "bugs". The name of the project is typically abbreviated to either '''MantisBT''' or just '''Mantis'''.
The name '''Mantis''' and the [[logo]] of the project refer to the [[insect]] family [[Mantidae]], known for tracking and feeding on other insects, [[Colloquialism|colloquially]] referred to as "bugs". The name of the project is typically abbreviated to either '''MantisBT''' or just '''Mantis'''.


==History==
==History==
Kenzaburo Ito started 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.<ref>{{cite web|url=https://github.com/mantisbt/mantisbt/blob/7dc0af27345d59ded6829f7687e41b959c19965f/docbook/Admin_Guide/en-US/About.xml#L123}}</ref>
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.<ref>{{cite web|url=https://github.com/mantisbt/mantisbt/blob/7dc0af27345d59ded6829f7687e41b959c19965f/docbook/Admin_Guide/en-US/About.xml#L123|title=team of MantisBT. This marks a new era in MantisBT lifetime where it is now a team project.|website=[[GitHub]]|date=November 19, 2021}}</ref>
Version 1.0.0 was released in February 2006.<ref>{{cite web|url=https://sourceforge.net/p/mantisbt/mailman/message/701285/ |title=Mantis 1.0.0 (stable) Released |work=MantisBT announcements mailing list |publisher=SourceForge.net |date=February 4, 2006 }}</ref>
Version 1.0.0 was released in February 2006.<ref>{{cite web|url=https://sourceforge.net/p/mantisbt/mailman/message/701285/ |title=Mantis 1.0.0 (stable) Released |work=MantisBT announcements mailing list |publisher=SourceForge.net |date=February 4, 2006 }}</ref>
Version 1.1.0 was released in December 2007.<ref>{{cite web|url=//www.mantisbt.org/blog/?p=21 |title=Mantis 1.1.0 Released |work=Mantis Bug Tracker Blog |publisher=Mantisbt.org |date=December 20, 2007 }}</ref>
Version 1.1.0 was released in December 2007.<ref>{{cite web|url=//www.mantisbt.org/blog/?p=21 |title=Mantis 1.1.0 Released |work=Mantis Bug Tracker Blog |publisher=Mantisbt.org |date=December 20, 2007 }}</ref>
In November 2008, after a long discussion,<ref>{{cite web|url=https://sourceforge.net/p/mantisbt/mailman/message/20713906/| title=Moving from SVN to Git |work=Mantisbt-dev mailing list |publisher=Sourceforge.net| date=November 4, 2008}}</ref> the project switched<ref>{{cite web|url=https://github.com/mantisbt/mantisbt/commit/3dc1e8439ff7cdf87404b412b710fcda6325a26e |title=First MantisBT Git commit |publisher=Github.com |author=John Reese |date=November 10, 2008 }}</ref> from using the [[Subversion (software)|Subversion]] [[revision control]] tool to [[Git (software)|Git]], a distributed revision control tool.
In November 2008, after a long discussion,<ref>{{cite web|url=https://sourceforge.net/p/mantisbt/mailman/message/20713906/| title=Moving from SVN to Git |work=Mantisbt-dev mailing list |publisher=Sourceforge.net| date=November 4, 2008}}</ref> the project switched<ref>{{cite web|url=https://github.com/mantisbt/mantisbt/commit/3dc1e8439ff7cdf87404b412b710fcda6325a26e |title=First MantisBT Git commit |publisher=Github.com |author=Amethyst Reese |date=November 10, 2008 }}</ref> from using the [[Subversion (software)|Subversion]] [[revision control]] tool to [[Git (software)|Git]], a distributed revision control tool.
In February 2010, version 1.2.0 was released.<ref>{{cite web| url=//www.mantisbt.org/blog/?p=76 |title=MantisBT 1.2.0 Released |work=Mantis Bug Tracker Blog |publisher=Mantisbt.org |date=February 22, 2010 }}</ref>
In February 2010, version 1.2.0 was released.<ref>{{cite web| url=//www.mantisbt.org/blog/?p=76 |title=MantisBT 1.2.0 Released |work=Mantis Bug Tracker Blog |publisher=Mantisbt.org |date=February 22, 2010 }}</ref>
In July 2012, the MantisBT organization on [[GitHub]] became the official repository for the Project's source code.<ref>{{cite web|url=https://sourceforge.net/p/mantisbt/mailman/message/27788020/ |title=MantisBT Moving to Github |work=MantisBT announcements mailing list |publisher=SourceForge.net |date=July 12, 2011 }}</ref>
In July 2012, the MantisBT organization on [[GitHub]] became the official repository for the Project's source code.<ref>{{cite web|url=https://sourceforge.net/p/mantisbt/mailman/message/27788020/ |title=MantisBT Moving to Github |work=MantisBT announcements mailing list |publisher=SourceForge.net |date=July 12, 2011 }}</ref>
Line 35: Line 35:


===Plug-ins===
===Plug-ins===
An [[Event-driven programming|event-driven]] [[Plug-in (computing)|plug-in]] system was introduced with the release of [[Software versioning|version]] 1.2.0.<ref>{{cite web|url=//www.mantisbt.org/blog/?p=56 |title=MantisBT 1.2.0rc1 Release Candidate 1 |work=Mantis Bug Tracker Blog |publisher=Mantisbt.org |date=June 23, 2009}}</ref> 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.
An [[Event-driven programming|event-driven]] [[Plug-in (computing)|plug-in]] system was introduced with the release of [https://www.youtube.com/watch?v=xvPiZyx0cDc version] 1.2.0.<ref>{{cite web|url=//www.mantisbt.org/blog/?p=56 |title=MantisBT 1.2.0rc1 Release Candidate 1 |work=Mantis Bug Tracker Blog |publisher=Mantisbt.org |date=June 23, 2009}}</ref> 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.<ref>{{cite web|url=http://deboutv.free.fr/mantis/ |title=Mantis bugtracker plugins |publisher=Deboutv.free.fr |accessdate=July 14, 2010}}</ref> This system was not officially supported by the MantisBT project and is incompatible with MantisBT 1.2.0 and later.
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.<ref>{{cite web|url=http://deboutv.free.fr/mantis/ |title=Mantis bugtracker plugins |publisher=Deboutv.free.fr |accessdate=July 14, 2010}}</ref> This system was not officially supported by the MantisBT project and is incompatible with MantisBT 1.2.0 and later.
Line 47: Line 47:


===Revision control system integration===
===Revision control system integration===
[[Software versioning|Versions]] of MantisBT prior to 1.2.0 allowed for limited [[System integration|integration]] with the [[Concurrent Versions System|CVS]] [[revision control]] system.<ref name="AdminGuide">{{Cite web| title=Mantis Bug Tracker Administration Guide |url=//www.mantisbt.org/docs/master-1.2.x/en/administration_guide/ |accessdate=November 11, 2013}}</ref>
[[Software versioning|Versions]] of MantisBT prior to 1.2.0 allowed for limited [[System integration|integration]] with the [[Concurrent Versions System|CVS]] [[revision control]] system.<ref name="AdminGuide">{{Cite web | title=Mantis Bug Tracker Administration Guide | url=//www.mantisbt.org/docs/master-1.2.x/en/administration_guide/ | accessdate=November 11, 2013 | archive-url=https://web.archive.org/web/20131202171650/http://www.mantisbt.org/docs/master-1.2.x/en/administration_guide/ | archive-date=December 2, 2013 | url-status=dead }}</ref>
With the introduction of [[Plug-in (computing)|plug-in]] capabilities in MantisBT 1.2.0, revision control integration was redeveloped by John Reese in the SourceIntegration plugin.
With the introduction of [[Plug-in (computing)|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.<ref name="john-reese-source-control-intial-release-announcement">{{cite web |url=http://noswap.com/blog/integrating-git-svn-with-mantisbt |title=Integrating Git and SVN with the Mantis Bug Tracker |publisher=NoSwap.com |last=Reese| first=John |date=January 7, 2009 |accessdate=November 11, 2013}}</ref>
The initial release of the SourceIntegration plugin supported [[GitHub]], GitWeb, [[SourceForge]] and WebSVN.<ref name="amethyst-reese-source-control-intial-release-announcement">{{cite web |url=http://noswap.com/blog/integrating-git-svn-with-mantisbt |title=Integrating Git and SVN with the Mantis Bug Tracker |publisher=NoSwap.com |last=Reese| first=Amethyst |date=January 7, 2009 |accessdate=November 11, 2013}}</ref>
Over time, two additional modules were added and as of November 2013, source integration is supported for the following revision control tools and [[Web application|web-based]] providers:
Over time, two additional modules were added and as of November 2013, source integration is supported for the following revision control tools and [[Web application|web-based]] providers:
* cgit, a web interface for Git repositories, written in [[C (programming language)|C]]
* cgit, a web interface for Git repositories, written in [[C (programming language)|C]]
Line 58: Line 58:
* [[SourceForge]] (for Subversion integration only), an open-source software hosting facility that hosts various types of software 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 (software)|Subversion]] repositories
* WebSVN, a free and open source web interface for [[Subversion (software)|Subversion]] repositories
* [[RhodeCode]], a proprietary web interface to Mercurial and Git repositories<ref>http://tononlabview.blogspot.fr/2011/07/connecting-mantis-with-rhodecode.html</ref>
* [[RhodeCode]], an OpenSource web interface to Mercurial, Git and Subversion repositories<ref>{{Cite web|url=http://tononlabview.blogspot.fr/2011/07/connecting-mantis-with-rhodecode.html|title = Ton on LabVIEW: Connecting Mantis with Rhodecode|date = July 6, 2011}}</ref>


Upon [[Commit (data management)|committing]] [[changeset]]s 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.<ref name="john-reese-source-control-intial-release-announcement" />
Upon [[Commit (data management)|committing]] [[changeset]]s 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.<ref name="amethyst-reese-source-control-intial-release-announcement" />


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 expression]]s. This also allows for [[Entity-relationship model|relationships]] to be automatically created between changesets and corresponding issues recorded in MantisBT. Multiple issue [[Identification (information)|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.<ref>{{Cite web| title=Subversion Best Practices |url=http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html |accessdate=August 22, 2012}}</ref>
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 expression]]s. This also allows for [[Entity-relationship model|relationships]] to be automatically created between changesets and corresponding issues recorded in MantisBT. Multiple issue [[Identification (information)|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.<ref>{{Cite web| title=Subversion Best Practices |url=http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html |accessdate=August 22, 2012}}</ref>
Line 73: Line 73:
* Graphing of relationships between issues
* Graphing of relationships between issues
* Sponsorship of issues
* Sponsorship of issues
* [[Wiki]] documentation integration for [[DokuWiki]], [[MediaWiki]], [[TWiki]], [[WikkaWiki]] and [[XWiki]]
* [[Wiki]] documentation integration for [[DokuWiki]], [[MediaWiki]], [[TWiki]], WackoWiki, WikkaWiki and [[XWiki]]
* News
* News
* Project Management & TimeTracking with CodevTT.
* Project Management and TimeTracking with CodevTT.
* Localised dozens of languages on [[translatewiki.net]].
* Localised dozens of languages on [[translatewiki.net]].


==Technical design==
==Technical design==
{{Update|section|date=February 2022}}


===Development languages===
===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 [[Cascading Style Sheets|CSS]].<ref>{{cite web |url=http://www.ohloh.net/p/mantis/analyses/latest/languages_summary |title=Languages |publisher=Ohloh.net |accessdate=November 12, 2013}}</ref> The UI also uses the [[jQuery]] [[client-side JavaScript]] library to provide optional features such as [[Ajax (programming)|Ajax]] and [[JSON]] powered dynamic page content.
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 [[Cascading Style Sheets|CSS]].<ref>{{cite web |url=http://www.ohloh.net/p/mantis/analyses/latest/languages_summary |title=Languages |publisher=Ohloh.net |accessdate=November 12, 2013 |archive-date=December 8, 2013 |archive-url=https://web.archive.org/web/20131208170737/http://www.ohloh.net/p/mantis/analyses/latest/languages_summary |url-status=dead }}</ref> The UI also uses the [[jQuery]] [[client-side JavaScript]] library to provide optional features such as [[Ajax (programming)|Ajax]] and [[JSON]] powered dynamic page content.


Development tools and build scripts are written predominantly in [[Python (programming language)|Python]] with some [[Shell script]] and [[PHP]].
Development tools and build scripts are written predominantly in [[Python (programming language)|Python]] with some [[Shell script]] and [[PHP]].
Line 89: Line 90:


===Database storage===
===Database storage===
Data is stored in a [[relational database management system]] by means of the [[ADOdb]] database [[Abstraction (computer science)|abstraction]] [[Library (computing)|library]]. MantisBT supports [[MySQL]]. Support for other databases ( [[MySQL]], [[PostgreSQL]], [[Microsoft SQL Server|Microsoft SQL]], [[Oracle Database|Oracle]] ) is known to be problematic. The development team are looking to fix this for the 2.0 release.<ref name="AdminGuide" />
Data is stored in a [[relational database management system]] by means of the [[ADOdb]] database [[Abstraction (computer science)|abstraction]] [[Library (computing)|library]]. MantisBT supports [[MySQL]], [[MariaDB]] and [[PostgreSQL]]. It has experimental support for [[Microsoft SQL Server|Microsoft SQL]] and [[Oracle Database|Oracle]].<ref name="requirements">{{Cite web |title=Admin Guide |url=https://mantisbt.org/docs/master/en-US/Admin_Guide/html-desktop/#admin.install.requirements |access-date=2022-06-07 |website=mantisbt.org}}</ref>


MantisBT maintains a database upgrade path between [[Software versioning|versions]] by modifying the [[database schema]] incrementally.<ref>{{cite web |url=https://github.com/mantisbt/mantisbt/blob/master/admin/schema.php |title=MantisBT source code - admin/schema.php |publisher=GitHub.com |accessdate=November 12, 2013}}</ref> During the installation of MantisBT, database schema modifications are replayed all the way back from early versions of MantisBT to reach the latest state.
MantisBT maintains a database upgrade path between [[Software versioning|versions]] by modifying the [[database schema]] incrementally.<ref>{{cite web |url=https://github.com/mantisbt/mantisbt/blob/master/admin/schema.php |title=MantisBT source code - admin/schema.php |publisher=GitHub.com |accessdate=November 12, 2013}}</ref> 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==
==Requirements==
{{Update|section|date=February 2022}}
MantisBT requires a configured [[web server]], the [[PHP]] programming language interpreter and a [[Relational Database Management System|relational database management system]] supported by MantisBT<ref name="AdminGuide" /> and [[ADOdb]].<ref>{{cite web|url=http://phplens.com/lens/adodb/docs-adodb.htm#drivers |title=ADODB Manual |publisher=Phplens.com |accessdate=November 12, 2013}}</ref>
MantisBT requires a configured [[web server]], the [[PHP]] programming language interpreter and a [[Relational Database Management System|relational database management system]] supported by MantisBT<ref name="AdminGuide" /> and [[ADOdb]].<ref>{{cite web|url=http://phplens.com/lens/adodb/docs-adodb.htm#drivers |title=ADODB Manual |publisher=Phplens.com |accessdate=November 12, 2013}}</ref>


The stable branch of MantisBT ([[Software versioning|version]] numbers within 1.2.x) requires PHP 5.1.0 or later. For the development branch (1.3.x), the minimum PHP version is 5.3.2.<ref>{{cite web|url=//www.mantisbt.org/requirements.php |title=Mantis Bug Tracker &#124; Requirements |publisher=Mantisbt.org |accessdate=November 12, 2013}}</ref>
As of June 2022, the stable branch of MantisBT requires PHP 7.0 or later.<ref name="requirements" />


Several PHP [[Software extension|extensions]] are required<ref name="AdminGuide" /> to enable specific functionality or for performance reasons; the extension for the RDBMS being used (i.e. ''mysqli'') is mandatory.
Several PHP [[Software extension|extensions]] are required<ref name="AdminGuide" /> to enable specific functionality or for performance reasons; the extension for the RDBMS being used (i.e. ''mysqli'') is mandatory.
Line 110: Line 112:
* PHP UTF-8 [[wrapper library]] for [[Internationalization and localization|internationalization]] support in absence of PHP's mb_string extension
* PHP UTF-8 [[wrapper library]] for [[Internationalization and localization|internationalization]] support in absence of PHP's mb_string extension


For drawing [[Graph (mathematics)|graphs]]{{dn|date=January 2016}} of relationships between issues, [[GraphViz]] is required. MantisBT also has an alternative dependency upon the commercial JpGraph graphics library for plotting of statistics.
For drawing [[Graph (discrete mathematics)|graphs]] of relationships between issues, [[GraphViz]] is required. MantisBT also has an alternative dependency upon the commercial JpGraph graphics library for plotting of statistics.


== See also ==
== See also ==
{{Portal|Free software}}
{{Portal|Free and open-source software}}
* [[Comparison of issue-tracking systems]]
* [[Comparison of issue-tracking systems]]


Line 120: Line 122:


==External links==
==External links==
*{{Official website|//www.mantisbt.org/}}
*{{Official website|https://www.mantisbt.org/}}


{{Bug tracking systems}}
{{Bug tracking systems}}
Line 126: Line 128:
[[Category:Free project management software]]
[[Category:Free project management software]]
[[Category:Bug and issue tracking software]]
[[Category:Bug and issue tracking software]]
[[Category:PHP software]]

Latest revision as of 15:11, 27 March 2024

Mantis Bug Tracker
Original author(s)Kenzaburo Ito
Developer(s)Various (Open-source contributors)
Initial release2000; 24 years ago (2000)
Stable release
2.26.2[1] Edit this on Wikidata (2024-05-12) [±]
Preview release
2.25.0-dev (February 23, 2021; 3 years ago (2021-02-23)) [±]
Repository
Written inPHP
Operating systemCross-platform
Available in49 languages
List of languages
Afrikaans, Amharic, Arabic, Arabic (Egyptian), Breton, Bulgarian, Catalan, Chinese (Simplified), Chinese (Traditional), Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, Galician, German, Greek, Hebrew, Hungarian, Icelandic, Italian, Japanese, Korean, Latvian, Lithuanian, Macedonian, Norwegian (Bokmål), Norwegian (Nynorsk), Occitan, Polish, Portuguese (Standard), Portuguese (Brazilian), Ripuarian, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swiss German, Swedish, Tagalog, Turkish, Ukrainian, Urdu, Volapuk
TypeBug tracking system
LicenseGNU General Public License version 2
Websitewww.mantisbt.org

Mantis Bug Tracker is a free and open source, web-based bug tracking system. The most common use of MantisBT is to track software defects. However, MantisBT is often configured by users to serve as a more generic issue tracking system and project management tool.

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 typically abbreviated to either MantisBT or just Mantis.

History[edit]

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 Subversion revision 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[edit]

Plug-ins[edit]

An event-driven plug-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[edit]

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-driven plug-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[edit]

Versions of MantisBT prior to 1.2.0 allowed for limited integration with the CVS revision 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 committing changesets 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[edit]

In addition to the features mentioned above, MantisBT also has support for:[15]

Technical design[edit]

Development languages[edit]

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 jQuery client-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's codebase dates back to a time when PHP's support for object-oriented programming principles was in its infancy.[17] As of version 1.2.0, the majority of the MantisBT codebase still uses procedural programming principles, however some sections have been converted to make use of PHP 5's new object model.[18][19]

Database storage[edit]

Data is stored in a relational database management system by means of the ADOdb database abstraction library. MantisBT supports MySQL, MariaDB and PostgreSQL. It has experimental support for Microsoft SQL and Oracle.[20]

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[edit]

MantisBT requires a configured web server, the PHP programming language interpreter and a relational database management system supported by MantisBT[11] and ADOdb.[22]

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]

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.

See also[edit]

References[edit]

  1. ^ "Release 2.26.2". May 12, 2024. Retrieved May 23, 2024.
  2. ^ "team of MantisBT. This marks a new era in MantisBT lifetime where it is now a team project". GitHub. November 19, 2021.
  3. ^ "Mantis 1.0.0 (stable) Released". MantisBT announcements mailing list. SourceForge.net. February 4, 2006.
  4. ^ "Mantis 1.1.0 Released". Mantis Bug Tracker Blog. Mantisbt.org. December 20, 2007.
  5. ^ "Moving from SVN to Git". Mantisbt-dev mailing list. Sourceforge.net. November 4, 2008.
  6. ^ Amethyst Reese (November 10, 2008). "First MantisBT Git commit". Github.com.
  7. ^ "MantisBT 1.2.0 Released". Mantis Bug Tracker Blog. Mantisbt.org. February 22, 2010.
  8. ^ "MantisBT Moving to Github". MantisBT announcements mailing list. SourceForge.net. July 12, 2011.
  9. ^ "MantisBT 1.2.0rc1 Release Candidate 1". Mantis Bug Tracker Blog. Mantisbt.org. June 23, 2009.
  10. ^ "Mantis bugtracker plugins". Deboutv.free.fr. Retrieved July 14, 2010.
  11. ^ a b c d e "Mantis Bug Tracker Administration Guide". Archived from the original on December 2, 2013. Retrieved November 11, 2013.
  12. ^ a b Reese, Amethyst (January 7, 2009). "Integrating Git and SVN with the Mantis Bug Tracker". NoSwap.com. Retrieved November 11, 2013.
  13. ^ "Ton on LabVIEW: Connecting Mantis with Rhodecode". July 6, 2011.
  14. ^ "Subversion Best Practices". Retrieved August 22, 2012.
  15. ^ "Mantis Feature List". MantisBT wiki. Mantisbt.org. September 25, 2012. Retrieved November 11, 2013.
  16. ^ "Languages". Ohloh.net. Archived from the original on December 8, 2013. Retrieved November 12, 2013.
  17. ^ "History of PHP". PHP.net. November 8, 2013. Retrieved November 12, 2013.
  18. ^ "MantisBT source code". GitHub.com. June 11, 2009.
  19. ^ "MantisBT source code". GitHub.com. February 6, 2008.
  20. ^ a b "Admin Guide". mantisbt.org. Retrieved June 7, 2022.
  21. ^ "MantisBT source code - admin/schema.php". GitHub.com. Retrieved November 12, 2013.
  22. ^ "ADODB Manual". Phplens.com. Retrieved November 12, 2013.
  23. ^ "MantisBT source code - library/README.libs". GitHub.com. Retrieved November 12, 2013.

External links[edit]