Issue-tracking systems are used by organizations to create, manage and resolve issues. A software development company uses issue-tracking system at the center of its development to track bugs and thereby improve the code quality and speed of development. Issues can also be reported by help desk resources in Corporations who provide help desk or service support to their customers.An issue-tracking system is used by people from cross-functional teams. Therefore it should be so simple to use that people like to use it instead of avoiding it. Yet it should flexible and configurable enough to handle complexities and scale with projects. Following is a comparison of the top most popular issue-tracking systems on the basis of core features and important factors to be considered while choosing to deploy an issue-tracking system.
Implementation Language and Backend
One of the important factors to consider while choosing an issue-tracking system is the implementation language. Choice depends on the current IT environment and the available skill-set in the organization. Most of the issue-tracking systems are implemented in either C, C++, C#, ASP, perl, php, RoR or JAVA. Bugzilla, MantisBT and Request Tracker are implemented using perl. While Trac is implemented in Python. JIRA on the other hand is implemented in JAVA. Since JAVA is the most widely used programming language, it makes sense to use a JAVA based issue-tracking system.
Issue-tracking systems require a backend database even though there are some less popular systems like org-mode and ikiwiki which support files. Database based systems are better than file based since the later may not scale well. Common database options are limited to Access, MS SQL Server and/or MySQL. Only a few issue-tracking systems like JIRA are really cross database systems. JIRA can work with MySQL, PostgreSQL, Oracle and SQL Server. While Bugzilla system requires MySQL, Oracle or PostgreSQL.
The JIRA installation package can be used with an embedded database or be connected to any database compatible with JDBC. Moreover, installation is a breeze since JIRA is implemented using Java.
The effectiveness of an issue-tracking system is in its ability to provide dynamic documentation integration/generation. The content structure should be easy to analyze and transform into other structures for distribution. Most systems like Bugzilla, Trac, Assembla, etc. provide documentation features like reports and charts, integrated document manager, reports via email notification, Wiki and RSS. JIRA offers a much wider range of documentation options. JIRA reports can be viewed via RSS, XML or HTML, or exported to Confluence (Enterprise Wiki), PDF, Excel or Word. JIRA also supports customizable charts.
JIRA can be integrated with more than a dozen of the most popular test planning systems. An issue-tracking system that integrates with test planning system will improve the consistency, organization and control of issues throughout testing process. Bugzilla has a test case management extension called Testopia. While few other systems like Trac, Redmine and Gemini provide some form of test planning integration.
Most of the popular systems have a plug-in API to support integration with other products. JIRA too has a plug-in API and an open architecture. Lots of plug-ins are available for JIRA. Therefore a plug-in can be found for any feature that is lacking in JIRA.
Many systems offer other core features like customizable workflow, custom fields and unicode support. JIRA supports many customizable workflow schemes and custom fields of many times.
Web and Email interfaces are the most common input interfaces. Bugzilla and JIRA provide other interfaces such as CLI, Desktop GUI, REST, SOAP and Mylyn. JIRA also provides Visual Studio interface via the Atlassian Visual Studio extension. Only Zentrack provides JSON/XML input interface which is not so popular.
Most of the issue-tracking systems provides various notification interfaces to notify the assigned user and the reporter of a task when any changes are made to their task. Most of them send notifications via email. While many other additionally support RSS feeds. User can track issues by subscribing to these RSS feeds. JIRA supports email as well as RSS. JIRA users can also be notified using the XIMPP protocol, originally called Jabber.
Revision Control System Integration
CVS and Subversion are the most commonly supported revision control systems. Trac, Redmine, Bugzilla and JIRA support some more popular systems such as Git, Mercurial and Perforce.
LDAP is the most commonly used authentication method in issue-tracking systems. Another authentication methid that is getting popularity is OpenID, which is supported by MantisBT, Redmine, Trac, Assembla, ikiwiki, Request Tracker and YouTrack. Bugzilla and JIRA support LDAP and Form-based authentication method. JIRA has a comparatively simpler authentication than Bugzilla (which has features for grouping users and issues)
Based on the above information and comparison, it is evident that JIRA is the best bet. JIRA is a widely used proprietary, free for non-commercial use issue-tracking system. It is licensed from Atlassian, which is well known in the open source community for offering free licenses for open source projects.