Flyspray on cloud

1-click AWS Deployment    1-click Azure Deployment


Flyspray is a straightforward, web-based bug tracking system for supporting with software development. While Trac has global WikiFormatting and a focus on integration, FlySpray is a steadfast bug tracking system. FlySpray is written in PHP and shares many resemblances with Trac’s ticket system, in specific the way a ticket or task is displayed. They have some advanced features compared to Trac, like ticket dependencies ,multi-project support, tracking ticket etc. Flyspray’s development stalled in 2013, but restarted in 2015 with the promise to deliver version 1.0 in April-June 2015. Flyspray is an advanced bug tracking system that allows software development teams, open source software projects, and other teams to manage development progress, issue reports, feature development, and other project tasks. Written against the popular LAMP stack, and including support for email and Jabber (XMPP) notifications, Flyspray is an ideal solution for teams that want an easy to use and manage issue tracking system with advanced features.
Installing PrerequisitesPermalink
If you’re running Debian or Ubuntu systems, ensure that your system’s package repository is up to date, that all installed packages have been upgraded with the latest bug fixes and security patches with the following command sequence. Additionally, install all prerequisite packages by issuing these commands:apt-get update
apt-get upgrade
apt-get install unzip libgv-php5
On CentOS and Fedora systems issue the following command to ensure your system’s packages up to date, and that all required dependencies are installed:rpm -Uvh
yum update
yum install unzip graphviz graphiz-php
For the purpose of this guide we will assume that you have virtual hosting configured for the domain with all publicly accessible resources located in the document root /srv/www/ Furthermore, in this document you will install Flyspray in this document root. Modify all of the instructions below to agree with the architecture of your deployment.Install FlysprayPermalink
This document contains specific instructions for installing version of Flyspray. Check the upstream to confirm that is the most recent stable release of Flyspray. By installing the latest version you may be able to prevent falling victim to known vulnerabilities or bugs with older versions of the software. Issue the following sequence of commands to download, extract, move the Flyspray files to your web servers’ document root, and properly configure file permissions:

mkdir -p /srv/www/
mkdir -p /srv/www/
cd /srv/www/
mv /srv/www/
touch flyspray.conf.php
chmod 777 flyspray.conf.php cache/ attachments/
Now visit in your web browser, and follow the setup procedure provided by Flyspray’s web based interface. When the setup process has completed, issue the following commands to remove the setup files and reset permissions:

rm -rf /srv/www/
chmod 755 /srv/www/
You have now successfully deployed Flyspray.

Monitor for Software Updates and Security NoticesPermalink
When running software compiled or installed directly from sources provided by upstream developers, you are responsible for monitoring updates, bug fixes, and security issues. After becoming aware of releases and potential issues, update your software to resolve flaws and prevent possible system compromise. Monitoring releases and maintaining up to date versions of all software is crucial for the security and integrity of a system.

Please monitor the following mailing lists and bug databases to ensure that you are aware of all updates to the software and can upgrade appropriately or apply patches and recompile as needed:

1.Flyspray Project Mailing List Information
2.Flyspray Project Bug Tracker

When upstream sources offer new releases, repeat the instructions for installing Flyspray software as needed. These practices are crucial for the ongoing security and functioning of your system.

Project Level Configuration
Many Flyspray settings are managed at the Project level. To reach these settings, show the project you wish to manage, then click the Manage Project link on the menubar. You will arrive at a screen similar to the image shown below.project optionsField descriptions
Most options should be self-explanatory. More complicated ones are explained here.General
Default Category Owner
The user who gets notified when a new task is opened __if__ the category used for the task has no owner. Category owners are defined in the Category list for the project. This field can be left empty; if the category has no owner and there is no default owner, then no notification is sent.
Introductory Message
The text shown at the top of each project page. You could use it to show guidelines for bug submission, or simply for a Message Of The Day (MOTD).
Default task description
The default text for new tasks.
Allow anyone to view this project
Everyone (including anonymous users) can see this project. Without this permission, unauthorized users do not even get to see that the project exists. This setting allows everyone to see the project, but not the tasks in that project. Viewing of tasks is controlled by project/global permissions.
Allow anonymous users to see tasks
All users view tasks of this project without any further permissions.
Allow anonymous users to open tasks
Allows anonymous users to open new tasks in this project. Disabling this option means that only registered users with the “open new task” permission can open tasks.
Look at understanding permissions to find out more.Look and Feel
The colour scheme and layout for this project. See Themes.
Default entry page
You to choose which view is displayed when opening a project. Tasklist and roadmap should be clear, “top level view” is a little summary for the project, also called “overview”.
Email address & Jabber ID
Where you can enter addresses to be notified when a task changes, and the events that trigger a notification. Any address put in these fields will be notified when a new task opens, is modified, comments/files added, tasks closing etc. If you want more than one address, separate them with a semicolon. This feature could be useful for a mailing list, or to ensure someone in particular is notified when they’re not the default category owner.
Notification types
Define exactly which events generate a notification. Use the usual Ctrl and Shift combinations to select multiple types.If a user is already on the notification list to a task, their address will not be added again to the each notification sent out.
Themes While many web applications depend upon complex templating to achieve different visual styles, Flyspray uses CSS standard to achieve different layouts and colours. Almost anything can be achieved using CSS, just look at the CSS Zen Garden for examples and inspiration.

Project Lists
Lists are those dropdown list items that you see on the task details page, and the new task page. They allow you to classify your tasks further by specifying things like Task Type, Category, etc. You can also search for tasks, using content of Lists as search criteria. There are six project-level lists – Task Types, Task Statuses, Resolutions, Categories, Operating Systems and Versions.

Although the name of each of these lists is pre-defined, the items in the list are entirely up to you. If you want to use versions called Apple, Orange and Banana you can.

These lists give you a lot of flexibility. For example, if you design products for many different customers, you might use a project for each customer, and use categories to represent the different widgets you designed for each customer.

Lists can also be edited at global level (across all projects). Members of the global Admin group can do this in the Administrator’s Toolbox. The dropdown box shown on the task details page will contain the items from the global list and the project list. Use the global list for common items which apply to all projects, and the project list for items specific to this project.

Shown at the bottom of this page is the Categories list editor for the Flyspray project. You can reach the Categories editor by selecting your project, clicking the Projects link in the admin menu, then Categories from the Project sub-menu.

Name is what appears in the dropdown list itself.
Order determines the order in which the names appear in the list. When you have list items defined at both global and project level, it is these numbers that are used for the sorting (lowest first) so if you want the global items to appear last, start numbering them from (say) 100 and use low numbers in your project-specific items. This field is not used for Categories.

Show determines if the category name should be shown in the list. Some categories may not be used by your project anymore, so you might like to hide them from view. Existing tasks using that list item will not change, as you haven’t deleted the list item from the database, you are merely not showing it. When you edit a task, list items that are not shown will not appear in the categories dropdown list, so the category for that task will change if you save it.
Delete allows you delete unused list items. If any task (whether open or closed) is using that item, the delete box will be greyed out. You can only delete items which have never been used.

There are a few fields which apply only to the Categories list.

Owner This user will be notified when a new task is opened in that category. If no owner is defined here, the project Default Category Owner will be notified instead.

Sub-categories You will notice that some lines are indented with arrows at the left of them. This is peculiar to Categories, and means that it is a subcategory of the left-aligned category above it. For example, the Translations category has sub-categories of Français, Español, Italiano, Deutsch and Polski. If a subcategory has no owner, then the parent category owner will be notified. If the parent category has no owner, then notifications go to the Default Category Owner, set in the Project Preferences.

category list

Adding New List Items
To add a new category, use the form at the bottom of the page. You can enter the name, order, select the category owner and if it is a sub-category.The other lists (Task Types, Resolutions, Operating Systems and Versions) are similar to Categories, with the only difference being that there are no sub-items for those lists.

Deleting List Items
Flyspray only allows deleting of list items if they haven’t been referenced in any tasks. If a task refers to a list item and you delete it, there will be a blank field where that list item used to be. Additionally, accurate reporting becomes next to impossible. If you haven’t referred to a list item in any tasks, then a “delete” checkbox will appear next to that list item. To delete that item, tick the checkbox and click Update.


The default Flyspray theme is ‘CleanFS’. It has a basic layout with a colour scheme that won’t hurt your eyes.

CleanFS theme

Creating your own theme

If you really would like to create your own full theme , copy the /themes/CleanFs directory to /themes/YourThemeName. From there, open /themes/YourThemeName/theme.css and start editing.

Before starting hacking your own full theme, ask peterdd how to easiest modify a custom_*.css file to get the effect you want

An alternative way is to stay with the CleanFS theme, make a copy of CleanFS/theme.css and replace ‘theme.css’ in CleanFS/templates/header.tpl with your customized theme.css filename. This way the template files in CleanFS stay upgradable and you must only check if the default CleanFS/theme.css contains some logic changes like pure CSS tabs or CSS toggles. Maintaining different theme directory structures is too much work.Keep in mind to use tpl_form() instead of just ‘<form action…>’ for any database-changing html form, because this takes care of adding the anticsrf-token for you. Also db changing ajax requests must send the right token.

When you have a lot of tasks on your Flyspray, you may have trouble locating a certain task by visual scanning alone. This is where you may find the Search functionality useful.

In the CleanFS theme (default), you will see a search bar similar to the image below when you expand advanced.


From here you can enter some search terms, and select different options to narrow your search criteria. Click Search to send your search to Flyspray for processing. The page will reload with a new tasklist matching your search criteria.

Search criteria

All fields are straightforward with a couple of exceptions that might need a little clarifying.

The search string is evaluated case insensitive. For the search text input some input character have special meaning:

’+’ works as placeholder for whitespace. Example: ‘open+source’ finds ‘open source’, but not ‘open closed source’.

’%’ works as placeholder for multiple characters. Example: ‘fly%ray’ finds ‘flyspray’ or ‘flypray’.

‘_’ works as placeholder for one character. Example: ‘fly_pray’ finds ‘flyspray’.


This field defaults to “All open tasks”, and as such, will return all tasks that are not marked “closed”. This means that they may have any status, as long as they are still marked “open”. Another option is “all statuses”, meaning that Flyspray will return all tasks regardless of whether they are open or closed. It is a good idea to search the tasklist using the “all statuses” option before opening a new bug report or feature request. Your bug may have been already fixed, or your feature request already implemented, and the tasks closed.

Viewing Task Details
Viewing a task’s details is easy, if the Project Manager has assigned you the right permissions. Simply click a task in the task list, or enter the task id into the Show Task box and press enter. You will be taken to a screen similar to the one below.
Sufficient permissions are in place if you
• opened the task anonymously and access the task with the task token included in the URL, or
• you are the creator of the task (not anonymous), or
• you are assigned to the task, or
• you have the global or at least project level view_tasks permission and the task is not private, or
• you are the project manager.

Also, you must be able to view a project to be able to view its task. Being able to view a project and being able to see tasks of a project are different permissions

Task View

If you are a member of a group with the Create Attachments permission, you will see a file dialog beneath the Add Comment text area. You are then able to attach a file to your comment, using the comment text as a description of what you are attaching. If you want to attach more than one file, click the Select More Files button to show another file dialog. You can attach unlimited files to each comment.
Typical problems
If there is no “Attachment” dialog…
• Check that “W” and “X” permissions exist for the attachment’s directory.
• Make sure ‘index.html’ file exists in ‘attachments’ (It must be writable by the webserv

Related Tasks
Sometimes tasks are related to other tasks, but aren’t dependent upon them. You might like to add these relations purely for information. It might help the developer understand where his task fits into the whole project. To get to the Related Tasks tab, simply click its heading in the tab group. Related tasks will be displayed, as well as a form to add a new related task. To add a new related task, you must be a group with permission to modify that task. Enter a task id into the text field, and click Add. Note that Flyspray does no sanity checking when you add a related task. You can add any task, including the one you are currently looking at (or even one that doesn’t exist!). Sometimes we just leave it up to the user to think about what they are doing.
In the Related Tasks tab there are currently also tasks listed who are duplicates of the current task.
Currently you can mark a task as duplicate of another task only when closing this task. Select ‘Duplicate’ from the reason dropdown list and input the FS#ID of the task you want reference.

Sometimes you need to know what is happening with a task, even if you’re not the one currently working on it. That is where notifications are helpful. To receive a notification when a task has been modified or had something added to it, click the Watch this task button beneath a task’s details. Later if you decide that you no longer want to be notified about changes to a particular task, click the Stop watching this task button.

The Notifications Tab
This paragraph describes functionality that can only be accessed by the Project Manager or a member of the global Admin group.
Notification Tab
Shown is a list of users who are currently “watching” this task. When anything changes in the task (task details modified, comments or attachments added etc), Flyspray sends out a short notification message to each person on the list, letting them know what the changes or additions are. Notifications are sent using email or Jabber instant messaging, using the email/jabber address in each user’s profile. Usually each user can choose their preferred method of notification, but it can be over-ridden in the global options dialog. Users should ensure that the notification addresses in their profile are correct, as Flyspray will not complain if they are wrong.

To add a user to the notification list for a task start typing there name in the ‘Add user to this list’ field, and click the Add button. To remove a user, click the Remove link next to their name.
• Notifications are by default not sent to the user making the change. The user already knows what action they made, so Flyspray doesn’t fill their inbox with information they already know. This behavior can be changed by the user on his profile page.
• Notifications are always sent to the person who has been assigned the task, regardless of whether they are on the task’s notification list or not.

Technical Information
Adding to notification list: The dropdown list for adding users to the notification list does not contain every user registered on your Flyspray installation. The list only contains users who are members of your Project groups, as well as users in global groups defined as “can be assigned tasks” in the global options. This is done by the ListUsers () function, in includes/
Database tables: Users to be notified are listed in the {$dbprefix}_notifications table.
Standard Notification Triggers: These are the times when a notification is sent to those on a task’s notification list:
• Task details changed
• Task closed
• Task re-opened
• Dependency added
• Dependency removed
• Comment added (adding a note if any files were attached)
• Related task added
• Taken ownership (user assigned a task to themself)
• New assignee. If a user is assigned a task, so they need to know.
Special Notification Triggers:
• New task opened (category owner is notified)
• Someone requested a Project Manager to action something on a certain task. These notifications are sent to everyone in the project who is in a group with the Manage Project permission.
• Project Manager denied request. If a PM denies the above request, everyone on the notification list receives the notification.
• Sending a confirmation code for a new user signup.
• Sending a user a “magic URL” so that they can change their password.



FLYspray is an uncomplicated, web-based bug tracking system written in PHP for assisting with software development. It was originally conceived when the Psi Jabber client project couldn’t find a bug tracker that suited their needs, and has been made available for everyone to use for their own projects.

Event log

All Projects


Default Project

Task Status


Flyspray is released under the GNU Lesser General Public License Version 2.1.

User Management: Enrollment and details

User Management

Only Administrators have the ability to manage other users. This means that you need to be a member of the global Admin group in order to do anything described on this page for other users, although you can edit some of your own details. This page describes how to edit user’s details. If you are searching for information on changing user’s permissions, please visit the Group Permissions page.

Editing User Details

To edit a user’s details, click Admin Toolbox from the menubar to take you to the Administrator’s Toolbox. From there, click Users and Groups to get to the group manager, type the username in the Edit user box and click Edit. The user you want to edit may be in any of the global groups shown. Flyspray does not yet have a “user search” tool, so you will need to know the username of the user you want to edit. Auto-completion will help you, as long as you know the first few letters of the username.

.There are a number of fields that you can modify. Email Address is only required if the user wants to receive notifications by email. Jabber ID is only required if the user wants to receive notifications in their Jabber client. Note: You are required to fill in the Real Name field, and at least one of the Email Address and Jabber ID fields, otherwise Flyspray will not save the changes.

Notify Type is how the user wishes to receive notifications about changes to tasks they watch. Flyspray doesn’t perform a sanity check on this field. If you select Email, but haven’t entered an email address, then the user won’t receive their email notifications!

Date Format is a personalised way of viewing the various dates shown in Flyspray. If you don’t like the default date format, you can enter characters that make Flyspray change it. The same applies for Detailed Date Format, which is shown in other parts of Flyspray (eg. the task details page).

  • Flyspray 0.9.8 and newer versions use the PHP strftime function instead, which is more flexible and supports locale-specific dates, but which uses different format strings.

Users without Admin permissions cannot edit the next two fields – Global Group and Account Enabled. Unchecking the Account Enabled box will disable the user’s account, and immediately log them out. Learn about global groups on the global groups page.

To change a user’s password, simply type a new one into the Change Password field, and the same one again into the Confirm Password field.

When you have finished editing, click the Update Details button to save your changes.

Adding a new user

If a user cannot create a new account, you might like to create one for them. Navigate to the Users and Groups manager as described above, and click Register New User. The same rules described above in Editing User Details also apply when adding a new user. You must fill in all fields, but you can fill in either Email Address or Jabber ID. Note: Be careful which global group you put the user in. The default global group is Admin.

Understanding Permissions
Flyspray allows you to set permissions on a “global” level and on a per-project level. There are many relatively fine-grained permissions that can be set, for example “View comments”, and “Assign others’ tasks to self”.

As is customary in many online systems, to avoid setting these for every individual user, instead permissions are set for groups of users. Some default groups are provided, and you can add your own.

Functions for this area are accessed through the Users and Groups panel.

For global groups: Admin Toolbox -> Users and Groups.

For project groups, select the project and then Manage Project -> User Groups.

Groups pertain either to the global level and their permissions apply globally, or they pertain to a single project, and apply just to that project.

As you might have concluded, groups are not completely general. You cannot create a group that provides privileges for two specific projects, but of course you could create similar groups in each project. Instead it is perhaps better to think of “groups” as more like global and project “roles”.

Once a group is available, you can add existing users to the group: Select Edit user, then select a group. A user can only be a member of one global group, and one group in each project.

You can edit the exact permissions that a group provides using the Edit Group feature, which presents a dialog like this:

Project Group Permissions

Project Group Permissions

This same editability is available for global and project groups, through their respective Users and Groups panel.

How permissions are combined
Flyspray combines the permissions that a user has at each level by OR-ing them together. If either level permits the user to do something, then permission is granted. Conversely, to deny permission to do something, the user’s permissions in both their global and project groups must be set to “NO”.

This probably leads to two main ways of using the groups and permissions apparatus:

Global Only: Set all permissions using global groups, ignore project groups: this would be good where there’s no pressing need for some users to have different permissions for different projects.

Minimal global defaults + specific permissions using groups: In this case, the most important permissions are set via groups, and most permissions at the global level are set to “NO”. This would suit the situation where there are distinct groups of users dealing primarily with their own projects, with reduced or no need to access other projects’ data.



Major Features Of Flyspray

Dependency graphs
• Activity Bars for projects and user activity
• Comments
• Roadmaps (‘milestones’, ‘versions’)
• Powerful permission system with customizable global and project based roles
• Filter and export of tasks as CSV for example usage by spreadsheet programs
• optional Single Sign-on using OAuth2 (Facebook, Google, ..)

    • Web-based, platform-independent
    • Multiple database support, currently MySQL and PGSQL
    • Easy installation
    • Easy to use
    • Multiple projects
    • ‘Watching’ tasks, with notification of changes
    • Comprehensive task history
    • File attachments
    • CSS Themes
    • Advanced search features (though easy to use)
    • Atom/RSS feeds
    • Two syntax options for task descriptions and more (Dokuwiki / plain text)
    • Voting for tasks
    • Dependency graphs

And there is much more cool stuff in the works…



Installing Flyspray with Softaculous in cPanel


Flyspray on cloud

Related Posts