Feature #7711

Port the OpenPGP applet to GTK+ 3

Added by intrigeri 2014-08-01 09:56:57 . Updated 2016-11-05 14:22:53 .

Status:
Resolved
Priority:
Normal
Assignee:
Category:
Target version:
Start date:
2014-08-01
Due date:
% Done:

100%

Feature Branch:
nodens:feature/7711-Gtk3
Type of work:
Code
Blueprint:

Starter:
1
Affected tool:
OpenPGP Applet
Deliverable for:

Description

The code currently lives at https://git-tails.immerda.ch/nodens/openpgp-applet/. Work should be done in the master branch first. Updating the upstream metadata (dependencies in META.yml and/or Makefile.PL, etc.) would be appreciated. Testing on current Debian stable and unstable is important.


Subtasks


Related issues

Blocks Tails - Bug #8310: Convert OpenPGP Applet into a proper GNOME Shell extension In Progress 2016-11-16
Blocks Tails - Bug #5967: Tails OpenPGP applet should not empty the clipboard after a bad decryption passphrase was entered Resolved
Blocked by Tails - Feature #10190: Install OpenPGP Applet from Debian Resolved 2016-03-16
Blocks Tails - Feature #11899: Upgrade OpenPGP applet to 1.0 Resolved 2016-11-05

History

#1 Updated by intrigeri 2014-08-01 09:57:22

  • related to Feature #6507: Package our OpenPGP applet for Debian and maintain it there added

#2 Updated by nodens 2015-01-03 21:53:14

I had a quick look, so I thought I’ll post a few notes here :

It’s definitely not a s/Gtk2/Gtk3.

there are a few potential caveats / things to be careful about :

  • needs to package Gtk3::SimpleList (dh-make-perl works so probably trival)
  • clipboard management seems a bit different in gtk3. On the plus side, maybe we don’t need xclip.
  • needs to check the utf8 strings issues (are strings encoded or not by perl-gtk3 ?)

(not sure about the easy tag. the clipboard management differences are bugging me, but it may be just that I’m unfamiliar with gtk or UI development in general).

#3 Updated by intrigeri 2015-01-04 13:30:30

> * needs to package Gtk3::SimpleList (dh-make-perl works so probably trival)

If there’s no ITP nor RFP, please file one. Please “X-Debbugs-Cc: debian-perl@lists.debian.org”, as it should be team-maintained. If you want to give it a try yourself, starting point will be http://pkg-perl.alioth.debian.org/.

> (not sure about the easy tag. the clipboard management differences are bugging me, but it may be just that I’m unfamiliar with gtk or UI development in general).

Flagging a task “Easy” doesn’t mean it’s easy in its own area of expertise, but rather that it’s suitable for people who haven’t a deep knowledge of Tails. I think this ticket matches the criteria we have defined for “Easy” code tasks.

#4 Updated by BitingBird 2015-01-04 17:39:17

  • Affected tool set to OpenPGP Applet

#5 Updated by nodens 2015-08-18 12:20:43

  • related to deleted (Feature #6507: Package our OpenPGP applet for Debian and maintain it there)

#6 Updated by nodens 2015-10-06 14:02:44

  • % Done changed from 0 to 20

I did some progress on this, visible on the feature/7711-Gtk3 branch.

What works:

  • app launches without error,
  • menus (action and right-click, some changes where needed in the code to make the action menu work, see 913921b2f6300f828523602cbc2dfce40d2b3950)
  • getting content of primary and secondary clipboards and change the icon accordingly

What doesn’t:

  • encrypt / sign
  • decrypt / verify
    Apparently due to a similar issue with function call on both (missing args):
    Gtk3::Clipboard::set_text: passed too few parameters (expected 3, got 2) at ./bin/openpgp-applet line 331.

    It’s probably trivial, didn’t look into it yet.
  • errors while browsing available keys :
    *** unhandled exception in callback:
    ***   Can't locate object method "get_indices" via package "6" (perhaps you forgot to load "6"?) at ./bin/openpgp-applet line 443.
    ***  ignoring at /usr/share/perl5/Gtk3.pm line 767.
    

    The culprit is Gtk3::SimpleList, apparently. It doesn’t seem to work exactly the same as the Gtk2 counterpart.
    The key listing code may need to be rewritten; in that case, there will be an opportunity to rework the UI a bit to show user IDs in the list and not using a tooltip. Maybe something looking more like seahorse ?
    I’ll ping -dev and -ux if that is indeed the case.

Cheers !

#7 Updated by nodens 2015-10-17 06:05:43

Encrypt/Decrypt are fixed (still need to test all cases).

#8 Updated by nodens 2016-07-04 11:02:32

  • Status changed from Confirmed to In Progress

#9 Updated by nodens 2016-07-04 11:02:50

  • Assignee set to nodens

#10 Updated by intrigeri 2016-08-29 00:58:05

  • Subject changed from Port the OpenPGP applet to GTK3 to Port the OpenPGP applet to GTK+ 3

Hi nodens! Can you please update the status? In particular, what’s the status wrt. Gtk3::SimpleList? Did we gain a dependency on it?

(Rationale: as part of porting Tails to Stretch, due to many issues with TopIcons, I’m very tempted to do Bug #8310, but if I do that work based on the GTK+ 2 branch it might be a bit painful to merge with the work you’ve been doing on this ticket. So I’d like to help completing the port to GTK+ 3 as soon as possible. But of course I don’t want to duplicate possibly unfinished work that might be on your hard drive only :)

#11 Updated by intrigeri 2016-08-29 02:56:19

  • Feature Branch set to nodens:feature/7711-Gtk3

I’ve pushed a few bugfixes to your branch (and one change to master).

I’ve disabled public key encryption/signing locally (by commenting out use Gtk3::SimpleList and the inclusion of $msignencrypt in the actions menu), and all other functionality seems to work fine for me :)

Then I’ve imported Gtk3::SimpleList locally, and public key crypto operations seem to work fine!

So it seems to me that we just need to decide how to ship Gtk3::SimpleList and then we’re good to go. I think we can I’m going to upload Gtk3::SimpleList to Debian and be done with it.

Any other blocker?

#12 Updated by intrigeri 2016-08-29 02:57:03

  • Description updated

#13 Updated by intrigeri 2016-08-29 03:40:37

  • blocks Bug #8310: Convert OpenPGP Applet into a proper GNOME Shell extension added

#14 Updated by intrigeri 2016-08-29 05:11:06

intrigeri wrote:
> So it seems to me that we just need to decide how to ship Gtk3::SimpleList and then we’re good to go. I think we can I’m going to upload Gtk3::SimpleList to Debian and be done with it.

https://ftp-master.debian.org/new/libgtk3-simplelist-perl_0.15-1.html

#15 Updated by intrigeri 2016-08-29 23:52:26

intrigeri wrote:
> intrigeri wrote:
> > So it seems to me that we just need to decide how to ship Gtk3::SimpleList and then we’re good to go. I think we can I’m going to upload Gtk3::SimpleList to Debian and be done with it.
>
> https://ftp-master.debian.org/new/libgtk3-simplelist-perl_0.15-1.html

It’s now in sid https://tracker.debian.org/pkg/libgtk3-simplelist-perl :)

#16 Updated by nodens 2016-08-30 02:20:21

  • Assignee changed from nodens to intrigeri
  • QA Check set to Info Needed

OK, works for me. I’d still like to get rid of SimpleList, because of the maintenance problem it might cause in the future (very quick port upstream, never updated, a bit buggy because a bit different in places than the gtk2 version…), I created another issue (Feature #11746) for this since it means non-trivial changes in the code and probably looks.

Thanks !

I’ll have a look and merge it if that’s ok for you.

I guess now it’s in sid there is only the debian packaging to update. As an upstream, I guess it’s time for us to release a 1.0 version now that we switched to GTK 3 (yay !), what do you think ?

Cheers,

nodens

#17 Updated by intrigeri 2016-08-30 02:41:45

> I’ll have a look and merge it if that’s ok for you.

ACK

> As an upstream, I guess it’s time for us to release a 1.0 version now that we switched to GTK 3 (yay !), what do you think ?

ACK :)

And then I can happily disrupt the 1.0 stability promise with Bug #8310 (huge refactoring in the works there).

#18 Updated by nodens 2016-08-30 02:46:57

  • Assignee changed from intrigeri to nodens
  • QA Check changed from Info Needed to Ready for QA

:) I’ll try to do that this week, at worst next Monday.

#19 Updated by nodens 2016-09-09 07:37:31

  • related to Bug #5967: Tails OpenPGP applet should not empty the clipboard after a bad decryption passphrase was entered added

#20 Updated by nodens 2016-09-09 07:40:06

  • Status changed from In Progress to Fix committed
  • QA Check changed from Ready for QA to Pass

Merged in master on my repository, thanks !

As a bonus this seems to have fixed Bug #5967.

Cheers !

nodens

#21 Updated by nodens 2016-09-09 07:46:16

  • related to deleted (Bug #5967: Tails OpenPGP applet should not empty the clipboard after a bad decryption passphrase was entered)

#22 Updated by nodens 2016-09-09 07:46:35

  • blocks Bug #5967: Tails OpenPGP applet should not empty the clipboard after a bad decryption passphrase was entered added

#23 Updated by nodens 2016-09-09 07:48:17

#24 Updated by intrigeri 2016-09-10 04:23:54

So, next step is to do a new upstream release and get it into Debian, right?

#25 Updated by nodens 2016-09-13 06:12:51

  • Assignee changed from nodens to intrigeri
  • % Done changed from 20 to 80
  • QA Check changed from Pass to Info Needed

Exactly.

Before tagging the release, I wanted to check old bugs that could have seen a change since we both switched to GTK3 and gpg2 and make sure we have up-to-date translations.

I’m done with the first part, so we only need to integrate the up-to-date translations from Transifex (Feature #11793). Once this is done, I suggest we create a branch release/1.0 to prepare the release. Whoever reviews&merge it can tag the release.

FWIW my notes for a new Release:

  • update translations:
    • dzil msg-scan
    • get up-to-date translations
    • dzil msg-merge
    • commit the updated translations
  • prepare release
    • bump versions + copyright year if needed in dist.ini + bin/openpgp-applet
  • build release:
    • dzil build
    • dzil test
    • if everything OK, release branch can be merged to master, reviewed, ans the release tagged
    • mv OpenPGP_Applet-$VERSION.tar.gz ../ (and push it to the alioth page along with changelog and signature)
  • clean local repository
    • git clean -fdx

#26 Updated by nodens 2016-09-13 06:13:44

  • Assignee changed from intrigeri to nodens
  • QA Check changed from Info Needed to Pass

#27 Updated by intrigeri 2016-09-24 05:45:46

  • QA Check changed from Pass to Dev Needed

> Whoever reviews&merge it can tag the release.

Done! Pushed the tag. I’ll let you handle the Debian part (and I can sponsor the upload if needed, but please try to find someone else on #debian-perl first).

> FWIW my notes for a new Release:

Maybe add them to a RELEASE document in the Git tree?

#28 Updated by intrigeri 2016-09-24 05:48:00

  • Assignee changed from nodens to intrigeri

Also, wrt. release timing: Tails 2.7 will use the same frozen APT snapshots as 2.6, so it’ll stick to openpgp-applet 0.9.1. And we have quite some time to get this into jessie-backports in time for 2.8 (whose freeze should be ~early December).

#29 Updated by intrigeri 2016-11-05 14:06:30

#30 Updated by intrigeri 2016-11-05 14:22:53

  • Status changed from Fix committed to Resolved
  • Assignee deleted (intrigeri)
  • % Done changed from 80 to 100
  • QA Check deleted (Dev Needed)

intrigeri wrote:
> Maybe add them to a RELEASE document in the Git tree?

I’m marking this as resolved, and will track the next steps on Feature #11899, but still: ping about the above :)