[MIR] ptyxis

Bug #2108942 reported by Jeremy Bícha
16
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ptyxis (Ubuntu)
Fix Released
Undecided
Unassigned
ubuntu-meta (Ubuntu)
Fix Released
High
Unassigned

Bug Description

[Availability]
The package ptyxis is already in Ubuntu universe.
The package ptyxis build for the architectures it is designed to work on.
It currently builds and works for all Ubuntu architectures except for i386 where it is not needed.
Link to package https://launchpad.net/ubuntu/+source/ptyxis

[Rationale]
- The package ptyxis is required in Ubuntu main for modernizing Ubuntu Desktop's terminal
- The package ptyxis will generally be useful for a large part of our user base
- Package ptyxis covers the same use case as gnome-terminal, but is better because [below], thereby we want to replace it.
+ Simpler preferences dialog but still full of features
+ Improved theming
+ Uses gtk4 (gnome-terminal will eventually switch to gtk4)
+ Part of the GNOME ecosystem. GNOME's default terminal is currently GNOME Console which isn't really suitable for us (too few features that we care about). I think GNOME will eventually switch to Ptyxis as the default terminal because both gnome-terminal and gnome-console aren't ideal for GNOME. Fedora Workstation switched from gnome-terminal to Ptyxis in 2024.

- There is no other/better way to solve this that is already in main or should go universe->main instead of this.

- The binary packages ptyxis needs to be in main to achieve Ubuntu Desktop's goal of modernizing the pre-installed terminal app
- All binary packages built by ptyxis need to be in main (there is only one binary package)

- The package ptyxis is required in Ubuntu main no later than August 14 due to Ubuntu 25.10 Feature Freeze. We want early feedback in 25.10 before 26.04 LTS.

[Security]
- No CVEs/security issues in this software in the past
+ https://security-tracker.debian.org/tracker/source-package/ptyxis

- no `suid` or `sgid` binaries
- no executables in `/sbin` and `/usr/sbin`

- Package does not install services, timers or recurring jobs
There is only the basic gapplication service used by most modern GTK3 or GTK4 apps.

- Packages does not open privileged ports (ports < 1024).
- Package does not expose any external endpoints
- Packages does not contain extensions to security-sensitive software (filters, scanners, plugins, UI skins, ...)

[Quality assurance - function/usage]
- The package works well right after install
* There is a significant usability bug, LP: #2083705, that we expect to be able to fix with an upload of the bash package in May

[Quality assurance - maintenance]
- The package is maintained well in Debian/Ubuntu/Upstream and does not have too many, long-term & critical, open bugs
- Ubuntu https://bugs.launchpad.net/ubuntu/+source/ptyxis/
- Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=ptyxis
- Upstream https://gitlab.gnome.org/chergert/ptyxis/-/issues

[Quality assurance - testing]
- The package does not run a test at build time because none have been created for this app because it is a GUI app for command line interaction.

- The package does not run an autopkgtest because there isn't really a framework to test GUI apps

- The package can not be well tested at build or autopkgtest time because it is only a GUI app. To make up for that:
+ We have created a manual test plan:
https://wiki.ubuntu.com/DesktopTeam/TestPlans/Terminal
+ We will execute that test plan on uploads regularly (when uploading new major releases of ptyxis to Ubuntu and before every ptyxis SRU)

[Quality assurance - packaging]
- debian/watch is present and works
- debian/control defines a correct Maintainer field

- This package does not yield massive lintian Warnings, Errors
- Please link to a recent build log of the package
https://launchpad.net/ubuntu/+source/ptyxis/48.1-1
- Please attach the full output you have got from `lintian --pedantic` as an extra post to this bug.
- Lintian overrides are not present

- This package does not rely on obsolete or about to be demoted packages.
- This package has no python2 or GTK2 dependencies

- The package will be installed by default, but does not ask debconf questions

- Packaging and build is easy, link to debian/rules
https://salsa.debian.org/gnome-team/ptyxis/-/blob/debian/latest/debian/rules

[UI standards]
- Application is end-user facing, Translation is present, via standard intltool/gettext or similar build and runtime internationalization system

https://translations.launchpad.net/ubuntu/plucky/+source/ptyxis/+pots/ptyxis

- End-user applications that ships a standard conformant desktop file
https://salsa.debian.org/gnome-team/ptyxis/-/blob/debian/latest/data/org.gnome.Ptyxis.desktop.in.in

[Dependencies]
- No further depends or recommends dependencies that are not yet in main

[Standards compliance]
- This package correctly follows FHS and Debian Policy

[Maintenance/Owner]
- The owning team will be Desktop Packages and I have their acknowledgement for that commitment
- The future owning team is not yet subscribed, but will subscribe to the package before promotion

- This does not use static builds
- This does not use vendored code
- This package is not rust based

- The package has been built within the last 3 months in the archive
- Build link on launchpad:
https://launchpad.net/ubuntu/+source/ptyxis/48.1-1

[Background information]
The Package description explains the package well
Upstream Name is ptyxis
Link to upstream project https://gitlab.gnome.org/chergert/ptyxis
Link to upstream homepage
https://devsuite.app/ptyxis/

The maintainer of Ptyxis is the same maintainer as gnome-builder, gnome-text-editor, and sysprof. See https://devsuite.app/

The app was originally named Prompt
https://blogs.gnome.org/chergert/2023/12/14/prompt/

Once ptyxis is accepted into Ubuntu main, we will apply a build option to change the user visible branding from Ptyxis to Terminal. We will demote gnome-terminal to universe.

It is possible to create custom profiles in gnome-terminal. We will not provide any migration for those profiles. People can either re-create those profiles in Ptyxis or install gnome-terminal from universe and continue to use gnome-terminal.

Tags: sec-6210
Jeremy Bícha (jbicha)
Changed in ptyxis (Ubuntu):
status: New → Incomplete
Jeremy Bícha (jbicha)
description: updated
Revision history for this message
Jeremy Bícha (jbicha) wrote :

W: ptyxis: changelog-distribution-does-not-match-changes-file unstable != plucky [usr/share/doc/ptyxis/changelog.Debian.gz:1]
W: ptyxis changes: distribution-and-changes-mismatch plucky unstable
I: ptyxis: hardening-no-fortify-functions [usr/libexec/ptyxis-agent]
I: ptyxis source: out-of-date-standards-version 4.7.0 (released 2024-04-07) (current is 4.7.2)
I: ptyxis source: repackaged-source-not-advertised [debian/copyright]

https://lintian.debian.org/tags/hardening-no-fortify-functions.html admits that there are false positives for this Lintian warning. We do enable all hardening flags in debian/rules.

We exclude the screenshots (using debian/copyright Files-Excluded) in our "orig" tarballs. The screenshots need to be stored online somewhere and the upstream git repo was chosen. The screenshots are referenced in the AppStream metadata and the project README but aren't needed by the distro package itself. It doesn't feel worth using a repack suffix version number just for this.

Debian Policy 4.7.1 was only released in February and we haven't updated that metadata field in most of our packages yet.

Jeremy Bícha (jbicha)
description: updated
Jeremy Bícha (jbicha)
Changed in ptyxis (Ubuntu):
status: Incomplete → New
Revision history for this message
Christian Ehrhardt (paelzer) wrote :
Download full text (5.2 KiB)

Review for Source Package: ptyxis

[Summary]
MIR team ACK under the nont gating constraint to please have a look at
the recommended TODOs.

This does need a security review, so I'll assign ubuntu-security

List of specific binary packages to be promoted to main: ptyxis
Specific binary packages built, but NOT to be promoted to main: n/a

Required TODOs:
- n/a

Recommended TODOs:
- #1 There is (so far AFAICS) no appamor for any terminal. And one might argue
     that the terminal is just rendering between user and the shell. But in
     return should that not make it easy to create one? Not a requirement but
     having a look if it is possible would be great if this is meant to be the
     primary for the next LTS.
- #2 The package should get a team bug subscriber before being promoted
- #3 very low prio, the build log is full of "substitution variable ... unused, but is defined"
     I doubt that is a problem, but just have a look and ensure this isn't an oversight.

[Rationale, Duplication and Ownership]
- There is no other package in main providing the same functionality. Sure
  there are other terminals but it was outlined in the report why this one
  is requested. I understand and agree that this does not mean gnome-terminal
  would immediately go to universe. It should once think it can but in this case
  I think it does not "have to".
- A team is committed to own long term maintenance of this package => Desktop
- The rationale given in the report seems valid and useful for Ubuntu

[Dependencies]
OK:
- no other Dependencies to MIR due to this
  none of the dependencies (Depends
  and Recommends) that are present after build are not in main
- no -dev/-debug/-doc packages that need exclusion
- No dependencies in main that are only superficially tested requiring
  more tests now.

Problems: None

[Embedded sources and static linking]
OK:
- no embedded source present
- no static linking
- does not have unexpected Built-Using entries
- not a go package, no extra constraints to consider in that regard
- not a rust package, no extra constraints to consider in that regard

Problems: None

[Security]
OK:
- history of CVEs does not look concerning
- does not run a daemon as root
- does not use webkit1,2
- does not use lib*v8 directly
- does not parse data formats (files [images, video, audio,
  xml, json, asn.1], network packets, structures, ...) from
  an untrusted source.
- does not expose any external endpoint (port/socket/... or similar)
- does not process arbitrary web content
- does not use centralized online accounts
- does not integrate arbitrary javascript into the desktop
- does not deal with system authentication (eg, pam), etc)
- does not deal with security attestation (secure boot, tpm, signatures)
- does not deal with cryptography (en-/decryption, certificates,
  signing, ...)

Problems:
- one could say it parses text and control characters, not sure if that
  counts as for that it will mostly use the same libs the other terminals
  use (not part of ptyxis itself)
- this makes appropriate (for its exposure) use of established risk
  mitigation features. To be clear, AFAICS there is none so it it is
  debatable. One might say the actu...

Read more...

Changed in ptyxis (Ubuntu):
assignee: nobody → Ubuntu Security Team (ubuntu-security)
tags: added: sec-6210
Revision history for this message
Sudhakar Verma (sudhackar) wrote :

Here's the bug.md

Security team ACK for promoting ptyxis to main. Its a good terminal emulator
candidate to replace GNOME Terminal.

Changed in ptyxis (Ubuntu):
assignee: Ubuntu Security Team (ubuntu-security) → nobody
Changed in ptyxis (Ubuntu):
status: New → Fix Committed
Revision history for this message
Christian Ehrhardt (paelzer) wrote :

No required tasks to overcome, security also approved, showing up in component mismatches.
Thereby all is ready to be promoted

Single version, nothing waiting in proposed:

$ rmadison -u ubuntu -s questing,questing-proposed ptyxis
 ptyxis | 48.5-1 | questing/universe | source, amd64, arm64, armhf, ppc64el, riscv64, s390x

Promoting

$ ./change-override --component main --suite questing --source-and-binary ptyxis
Override component to main
ptyxis 48.5-1 in questing: universe/misc -> main
ptyxis 48.5-1 in questing amd64: universe/gnome/optional/100% -> main
ptyxis 48.5-1 in questing arm64: universe/gnome/optional/100% -> main
ptyxis 48.5-1 in questing armhf: universe/gnome/optional/100% -> main
ptyxis 48.5-1 in questing ppc64el: universe/gnome/optional/100% -> main
ptyxis 48.5-1 in questing riscv64: universe/gnome/optional/100% -> main
ptyxis 48.5-1 in questing s390x: universe/gnome/optional/100% -> main
Override [y|N]? y
7 publications overridden.

Changed in ptyxis (Ubuntu):
status: Fix Committed → Fix Released
Revision history for this message
Alessandro Astone (aleasto) wrote :

Attaching debdiff for updating ubuntu-meta accordingly. This is generated by ./update.

Changed in ubuntu-meta (Ubuntu):
status: New → In Progress
assignee: nobody → Alessandro Astone (aleasto)
milestone: none → ubuntu-25.10-feature-freeze
importance: Undecided → High
Revision history for this message
Alessandro Astone (aleasto) wrote :

Julian already updated ubuntu-meta: https://launchpad.net/ubuntu/+source/ubuntu-meta/1.557

Changed in ubuntu-meta (Ubuntu):
status: In Progress → Fix Released
assignee: Alessandro Astone (aleasto) → nobody
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Bug attachments

Remote bug watches

Bug watches keep track of this bug in other bug trackers.