---
title: "Tuleap 16.0 (oct. 2024)"
slug: "tuleap-16-0"
updated: 2026-03-05T09:28:37Z
published: 2026-03-05T09:28:37Z
canonical: "help.tuleap.com/tuleap-16-0"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://help.tuleap.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tuleap 16.0 (oct. 2024)

## Why Tuleap 16?

Tuleap 16 is more than just an update; it’s a significant advancement in project management. Whether you’re leading complex projects, coordinating multiple teams, or striving to deliver on time, Tuleap 16 has the tools you need to succeed.

## What’s new in Tuleap 16?

Explore the cutting-edge features that make Tuleap 16 a must-have for any project manager:

- Streamlined Templates: Standardize and accelerate your project setup with new export and import capabilities.
- Seamless Program Management: Coordinate multiple projects with ease, leveraging hybrid methodologies to keep your teams aligned.
- Powerful Super Tracker: Centralize your data and gain deeper insights into your project’s performance.

## Cross-Tracker Search complete

This is a major milestone for Tuleap, the ability to search across Trackers and across projects is now complete. Tuleap 16.0 closes the circle with the support of `ORDER BY` in Tuleap Query Language (TQL) to… well, sort data.

![A Tuleap project dashboard with a cross tracker search widget and a complete TQL query](https://www.tuleap.org/wp-content/uploads/2024/10/dashboard-fs8.png)*Cross tracker search with a complete TQL query* 

Let’s take the 16.0 landmark opportunity to recap what we’ve been cooking for you since the beginning of 2024.

### How ducks figure out how to compare apples to oranges

Long time users of Tuleap already know that Cross-Tracker Search. It’s been there for a while but was limited due to the lowest common element between Trackers. Tuleap Trackers are highly configurable. For example, on the same project, you might find “User stories”, “Bugs”, “Requirements”, “Vendors” or even “Cake recipes”.

It’s all fun and games until someone wants to “see everything that is open in my project” or “who worked on what last week”. The challenge is determining how to compare different types of items.

In order to address this need, we first focused on compare, search and display elements that are always present in trackers: the artifact id, who created it, the last updated date, etc.

Then, we leveraged equivalence relations defined with [Semantics](https://docs.tuleap.org/user-guide/trackers/administration/configuration/semantics.html). For instance “Recipe title” (for Cake recipes) and “Company name” (for Vendors) can be compared if tracker admins defined “Title” semantic on them. But defining semantics for everything is too much of a hurdle.

So the third step was to provide a lightweight way to have those equivalence relations. The concept is known as “Duck-typing”. Let’s take an example with our Cake Recipes and Vendors. They share a date field named “Last review date”. Same name, same type, even if there is no “last review date” semantic, we can assume it’s the same thing. This is called duck-typing: when fields share the same name and compatible types, they can be compared.

### Full Tuleap Query Language syntax

Those three concept (always there fields, semantics and duck-typed fields) can be used in the three parts of the query:

- SELECT: list the fields you want to see
- WHERE: filter what you want to see
- ORDER BY: sort the result

In those three parts, you can use `@name` syntax to make reference to semantic or an always there field and `name` (without @) for a duck-typed fields. For instance:

```plaintext
SELECT @title, @status, last_review_date FROM @project = 'self' WHERE @status = OPEN() ORDER BY @last_update_date DESC
```

- `@title` and `@status` are semantics
- `last_review_date` is a duck typed field
- `@last_update_date` is an always there field

In addition to fields, TQL allows to define which trackers should be taken into account with `FROM` part. You can specify project wide constraints like `FROM @project.name IN (...)` or `FROM @project.category = '...'` and you can specify which tracker you want to see.

### Example of queries

A project wants to show everything that is currently open within the workspace

```plaintext
SELECT @pretty_title, @status, @last_update_date FROM @project = "self" WHERE @status = OPEN() ORDER BY @last_update_date DESC
```

A team wants a dashboard with all tickets assigned to the user who see the page:

```plaintext
SELECT @pretty_title, @status, @last_update_by FROM @project = "self" WHERE @status = OPEN() AND @assigned_to = MYSELF() ORDER BY @last_update_date DESC
```

An organization that does help desk ticketing with Tuleap, each customer has its own dedicated project (tagged “Type::HelpDesk”). The support team want to see which ticket has not been acknowledged yet.

```plaintext
SELECT @pretty_title, @status, @last_update_by, category, severity FROM @project.category = 'Type::HelpDesk' AND @tracker.name = "request" WHERE @status = OPEN() AND ack_time = "" ORDER BY @last_update_date DESC
```

You can find [more examples in the documentation](https://docs.tuleap.org/user-guide/tql/cross-tracker-search.html#examples).

### Built from the trenches

Thanks to our monthly deliveries, we received meaningful feedback from early adopters. This allowed to fine-tune the search behavior. One of the most requested features was to get better indications when something goes wrong with a query. You now have more precise error messages:

![Cross tracker search query displays the error message](https://www.tuleap.org/wp-content/uploads/2024/10/errors-fs8.png)*Message showing where the error is located in the query* 

[Documentation](https://docs.tuleap.org/user-guide/tql.html) was completely rebuilt to clearly separate the various TQL flavors:

![TQL page in Tuleap documentation](https://www.tuleap.org/wp-content/uploads/2024/10/doc-fs8.png)*TQL page in Tuleap documentation* 

And we even published a [flavor of Prism JS library](https://www.npmjs.com/package/@tuleap/prism-language-tql) for syntax highlighting of TQL language. Of course this lib is used internally so tql queries are properly highlighted everywhere you can write markdown.

![](https://www.tuleap.org/wp-content/uploads/2024/10/tql-code-fs8.png)

![](https://www.tuleap.org/wp-content/uploads/2024/10/tql-render-fs8-fs8.png)

### Is that all ?

When Cross-Tracker Search was bootstrapped and even when we resumed the work on it at the beginning of the year, the goal was to provide a way for advanced users to build complex dashboards. Along the way we discovered that way more users have needs related to Cross-Tracker searches. Writing TQL from scratch for those users might too difficult so we are going to work on easing access to queries, on templates and graphical selection of fields.

Cross-Tracker Search is complete, it’s only the beginning for SuperTableau !

## Bugs and requests

During the 16.0 release cycle, [45 requests implemented](https://tuleap.net/frs/release/242/release-notes#!/linked-artifacts). Bugs and security fixes were already back-ported on Tuleap Enterprise builds. You will find below a detailed list of fixes. The most notable ones are in bold.

### Security

- [#39736](https://tuleap.net/plugins/tracker/?aid=39736&amp;from_aid=37898) Permissions are incorrectly verified for project administrators in the cross tracker search widget – [CVE-2024-47766](https://github.com/Enalean/tuleap/security/advisories/GHSA-qfrh-fv84-93hx) – Moderate
- [#39728](https://tuleap.net/plugins/tracker/?aid=39728&amp;from_aid=37898) Trackers are listed in the quick add actions of the backlog without any permissions check – [CVE-2024-47767](https://github.com/Enalean/tuleap/security/advisories/GHSA-j342-v27q-329v) – Moderate
- [#39686](https://tuleap.net/plugins/tracker/?aid=39686&amp;from_aid=37898) Permissions are not properly checked for email notifications in trackers – [CVE-2024-46988](https://github.com/Enalean/tuleap/security/advisories/GHSA-g76g-hc92-96xw) – Moderate
- [#39689](https://tuleap.net/plugins/tracker/?aid=39689&amp;from_aid=37898) XSS in the HTML mail content of the cross reference field – [CVE-2024-46980](https://github.com/Enalean/tuleap/security/advisories/GHSA-9fc9-47h6-82jj) – Moderate

### Tracker

- [#39695](https://tuleap.net/plugins/tracker/?aid=39695) Inconsistent display of last update date
- [#39701](https://tuleap.net/plugins/tracker/?aid=39701&amp;from_aid=37898) Broken artifact creation from artifact modal link field

### Kanban

- [#39735](https://tuleap.net/plugins/tracker/?aid=39735&amp;from_aid=37898) kanban card fields sould respect artifact display

### Program management

- [#39352](https://tuleap.net/plugins/tracker/?aid=39352&amp;from_aid=37898) Program add to top backlog post-action should ignore Teams

### Document generator

- [#39730](https://tuleap.net/plugins/tracker/?aid=39730&amp;from_aid=37898) tables width in ttm docx generation

### Git & Pull Requests

- [#39719](https://tuleap.net/plugins/tracker/?aid=39719&amp;from_aid=37898) Lack of whitespace between date and Created by in PR homepage
- [#39699](https://tuleap.net/plugins/tracker/?aid=39699&amp;from_aid=37898) Support for windows-1250 encoding in git view
- [#39691](https://tuleap.net/plugins/tracker/?aid=39691&amp;from_aid=37898) Cannot merge PR via the web UI
- [#39690](https://tuleap.net/plugins/tracker/?aid=39690&amp;from_aid=37898) Git: 2.46.0 -> 2.46.1

### Jira

- [#39707](https://tuleap.net/plugins/tracker/?aid=39707&amp;from_aid=37898) [JIRA Import] Can’t import next gen ticket
- [#39694](https://tuleap.net/plugins/tracker/?aid=39694&amp;from_aid=37898) Jira import leads to missing changesets when change are within the same second
- [#39709](https://tuleap.net/plugins/tracker/?aid=39709) Jira issues should be imported in the same order of their creation

### Performances

- [#39752](https://tuleap.net/plugins/tracker/?aid=39752&amp;from_aid=37898) Lazy loading of avatars

### Project administration

- [#31559](https://tuleap.net/plugins/tracker/?aid=31559&amp;from_aid=378983) Accentuated characters count 2 in project name

### Docker images

- [#39717](https://tuleap.net/plugins/tracker/?aid=39717&amp;from_aid=37898) Create /var/lib/codendi symlink in containers

  

Un Tracker est un outil de suivi d'un type d'information qui permet de créer, gérer et suivre un ensemble d'artifacts partageant une même nature.

Dans l'écosystème Tuleap, un artifact est l'unité de base pour suivre le travail. C'est un élément géré dans un "tracker", et englobe tout ce que vous pourriez traditionnellement appeler un "ticket", une "tâche", un "bug", une "exigence", etc.
