Issue trackers get chosen by developers and paid for by everyone. For an engineering firm whose project managers, site staff and accountants all need to log time against tasks, a per-seat tracker charges most for the people who use it least. This post follows a project office weighing Jira Cloud against self-hosted Redmine on MassiveGRID PaaS, which is built on Virtuozzo Application Platform, formerly Jelastic.

The firm is a structural-engineering practice we will call Cordwainer Engineering: 60 staff, 25 of them engineers who live in the tracker, 35 who log time and check schedules. The Redmine package deploys Redmine on a Ruby on Rails application server with a MariaDB or PostgreSQL database and persistent storage for attachments.

What each tool is good at

Jira is the agile tracker: boards, sprints, a huge marketplace, deep integration with the rest of Atlassian's suite, and a hosted service that needs no administration. Redmine is the project tracker: multiple projects with sub-projects, roles per project, issue trackers with custom fields, Gantt charts and calendars built in, time tracking built in, a wiki and forums per project, and repository browsing for Git and Subversion. It is written in Ruby on Rails, GPL-licensed, and has been maintained continuously since 2006.

Cordwainer's work is projects with deadlines, drawings as attachments, hours billed to clients, and a Gantt chart the partners look at on Monday. That is Redmine's home ground. Sprints and boards are not how a structural-engineering firm works, and the project office said so in the evaluation.

The cost comparison, honestly

Jira Cloud is billed per user per month on tiers, and the tier with the permission schemes and audit log a client-facing firm wants is not the cheapest one. Sixty users is a meaningful monthly sum, and the 35 time-loggers pay the same rate as the 25 engineers. Redmine has no licence; the environment is a Ruby node, a database node and storage, billed per cloudlet-hour. The project office's spreadsheet showed the Redmine environment at well under a tenth of the Jira line before discounts, but the office lead wrote the deciding argument differently: with Redmine, adding the accountant costs nothing, so everyone who should be in the system will be.

NeedJira CloudSelf-hosted Redmine on PaaS
Multi-project hierarchy with per-project rolesProjects, permission schemesNative, including sub-projects and inherited members
Gantt chart and calendarVia plans or marketplace appsBuilt in
Time tracking and billable hoursBasic, or marketplace appsBuilt in, with activities and reports
Agile boards and sprintsCore strengthVia plugins, less polished
Git and Subversion browsingVia integrationsBuilt in, linked to issues by commit message
Data locationAtlassian's regionsLondon or Frankfurt, chosen by the firm
Cost modelPer user per monthEnvironment per cloudlet-hour

Running Redmine on the platform

Redmine is a Rails application, and Rails applications are simple to run once someone has bundled the gems and configured the application server, which the package does. The Ruby node runs Redmine behind its application server; the database node holds issues, time entries and wiki pages; attachments (drawings, in Cordwainer's case, which are large) live on persistent storage with snapshots. The office lead's IT contractor set three things: the Let's Encrypt certificate for projects.cordwainer.example, LDAP authentication against the firm's directory (Redmine supports it natively), and the Database Backup/Restore add-on nightly to a backup storage node, with the attachments directory archived to the same node by a scheduled job.

Email is the other half of a tracker. Redmine sends notifications through the firm's SMTP relay and can receive email to create or update issues; the contractor configured the outgoing side and left incoming email for later.

Two plugins made the difference for Cordwainer: a checklist plugin for drawing-review steps, and an agile board plugin for the two software-minded engineers who wanted one. Plugins are installed by copying them into the plugins directory over SFTP, running bundle install and the plugin migration from the platform's Web SSH console, and restarting the node. The contractor did each install first on a clone of the environment, because a Rails plugin that fails its migration is a bad thing to discover on production. Repository browsing points at the firm's GitLab server on the same PaaS account, over the internal network; a commit message containing an issue number links the commit to the issue.

Sizing and cost

Sixty users is light for Redmine. The Ruby node idles at 4 cloudlets and rises to 10 or 12 when the Monday Gantt is rendered for a 400-issue project (a cloudlet is 128 MiB of RAM plus 400 MHz of CPU); the database node sits at 4 to 6. Across a month the environment averages about 12 cloudlets an hour, about $29 before discounts at MassiveGRID's published $0.003372 per cloudlet-hour, plus disk for the drawings. The attachments disk is the larger number, and the platform's storage grows from the dashboard when the alert says so.

Twelve months later

All 60 staff are in Redmine, including the accountant, who exports time entries monthly for invoicing. The Gantt chart is projected on the Monday meeting screen. Two Redmine minor upgrades were applied by cloning, upgrading the clone and repeating on production, each in an evening. The project office's review noted one regret, that the mobile experience is a responsive web page rather than a native app, and one surprise, that the per-project wiki had quietly replaced a shared drive folder nobody could find anything in.

Frequently Asked Questions

Can Redmine import our Jira projects?

There is no official importer, but Redmine's REST API and CSV import handle issues, and community scripts migrate Jira exports including comments and attachments. Run the import into a clone first, review the field mapping, then repeat into production.

Does Redmine support single sign-on?

LDAP authentication is built in. SAML and OpenID Connect are available through plugins. Most firms with a directory use LDAP directly, as Cordwainer did.

How does Redmine compare with the qdPM package also in the marketplace?

qdPM is a lighter PHP project manager suited to small teams and freelancers. Redmine has a much larger feature set, plugin ecosystem and permission model, and is the better fit for a firm with dozens of projects and roles.

Everyone in the tracker, nobody on a seat licence

The Redmine package deploys Redmine with its Ruby server and database in one click on MassiveGRID PaaS, in London, Frankfurt, New York or Singapore, billed per cloudlet-hour. Free 14-day trial, no credit card.

Redmine on MassiveGRID PaaS

Further Reading