[bounty] Backport Geary 0.4.1 to Ubuntu 12.04 (Precise Pangolin) / elementary Luna
---- Reported by jim@yorba.org 2013-11-07 16:07:00 -0800 ----
Original Redmine bug id: 7676
Original URL: http://redmine.yorba.org/issues/7676
Searchable id: yorba-bug-7676
Original author: Jim Nelson
Original description:
We have had a number of requests from users to backport Geary 0.4 to Ubuntu
12.04 and [elementary](http://elementaryos.org/) Luna (which is itself a
flavor of 12.04). This is not a trivial task, as the libraries Geary depends
on have significantly improved since 12.04, in particular WebKitGTK. Also,
Geary 0.4.1 now relies on libraries unavailable in 12.04.
This task is being offered on Bountysource.com at
https://www.bountysource.com/issues/1070853-backport-geary-0-4-1-to-
ubuntu-12-04-precise-pangolin-elementary-luna Anyone can take on this work --
even a group of people can take this on. If they meet all the stipulations
listed below, they will collect the bounty. Whomever accepts the task there
should let us know on this ticket they are beginning work. They should also
use this ticket to ask the Geary developers questions about the process.
(Note that Geary 0.4.1 has not yet been released, although it should in one
week's time. The changes between 0.4.0 and 0.4.1 are mild; see our [Geary
0.4.1 Roadmap](http://redmine.yorba.org/versions/43) for more information.)
In order to receive the bounty, the following requirements must be met:
* The backported binary version of Geary must be available on a public [Launchpad](https://launchpad.net/) PPA. Any user of Precise Pangolin (12.04) and elementary Luna should be able to subscribe to the PPA and download and install Geary 0.4.1.
* The backport PPA may rely on other Launchpad PPAs for build and/or runtime software. For example, the [Vala PPA](https://launchpad.net/~vala-team/+archive/ppa) may be used to build with the latest version of Vala and install on the user's system the latest Gee 0.8 runtime library. However, **the end-user should not have to manually install any other software in order to install and run Geary** (i.e. installing Geary from your Launchpad PPA should be the only step they need to take).
* The backported version should have all the functionality available in 0.4.1, including system keyring support and Unity notifications.
* The backport does _not_ have to fix bug regressions caused by using older software versions.
* All code must be available on a public source code control repository (i.e. Launchpad, github, etc.) We suggest hosting it on Launchpad itself to ease creating the PPA, but that's not a requirement.
There is some latitude we're willing to allow. For example, some of the GTK
widgets and styling in Geary 0.4.1 may not be available in GTK 3.4 (the
version available in 12.04). The basic requirement is that all of Geary's
functionality is roughly available. Please ask all questions on this ticket.
Some details we know will have to be addressed by whomever backports Geary to
12.04/Luna:
* Precise offers versions of Vala and Gee that are too old for 0.4.1. As mentioned above, the backport may use the latest versions from the Vala PPA
* Some work will need to be done to get Geary working with WebKitGTK 1.8 and GTK 3.4, the versions available on Precise
* libsecret is not available for Precise, so keyring managment will need to be reverted to gnome-keyring (see c7618b3c)
* Geary 0.4.1 uses libmessaging-menu for Unity notifications. The backport will need to use libindicate (see 3198df0d)
* Also see this page for information on how to get Geary 0.4 to build on Precise. Note that this should only be used for reference; the bounty will **not** be rewarded if the user has to build and install newer versions of software or themes, modify their configuration, etc.
* There may be other work not specified here
Note that Yorba may or may not merge the backported code into our master.
We'll evaluate that when the final branch is ready.
---- Additional Comments From geary-maint@gnome.bugs 2013-11-11 12:21:00 -0800 ----
### History
####
#1
Updated by Jim Nelson 14 days ago
* **Description** updated (diff)
####
#2
Updated by Jim Nelson 14 days ago
* **Description** updated (diff)
####
#3
Updated by Tom Beckmann 12 days ago
I hope I'm doing the commenting right, it is quite confusing here...
So, I started backporting and got geary to compile without any further
modifications to my 12.04. The vala team ppa would be required and I added
granite as a dependency for the button which spawns a menu. As far as I know,
granite is also available in the default 12.04 repo.
One question about the implementation, in gtk+-3.4 forcing buttons to show an
image is apparently not possible, so the toolbar looks quite weird, just a
bunch of empty buttons. Would it be fine to replace your toolbar button groups
with simple separators and standard toolbuttons to make this work again?
- tom95
####
#4
Updated by Jim Nelson 12 days ago
That would be fine. My general recommendation is to do as little surgery as
possible to make this work; it would be nice if this branch could be
maintained to track with changes and updates to our master, but that's not a
requirement for the bounty.
####
#5
Updated by Tom Beckmann 11 days ago
Making the symbolic icons work was quite an adventure, I had to backport an
internal function from gtk because of scaling issues (or I just did something
**very** wrong), but it seems to work fine now. http://imagebin.org/276490
Still I'd say it might look better if we used non-symbolic icons in 12.04,
they'd work much better with the old plain toolbar style. Also there are some
icons missing. But that decision would be up to you.
I pushed my code to
https://code.launchpad.net/~tombeckmann/geary/backport-1204 now, it'd be great
if someone could compile it with the newer package versions once and tell me
whether I broke anything or if it still works fine. I know of two small items
where I'll still have to work on and then I'll have to check to make sure
everything still works as expected. It would be awesome if a more experienced
geary user could give it a shot too, I'm rarely using geary, so I can't tell
if I'm missing parts that are more hidden.
####
#6
Updated by Jim Nelson 10 days ago
Notes on your branch:
* Preserving the symbolic icons is not a requirement, and if it's easier to go back to the "normal" icons, that would be fine.
* Your branch requires Granite to compile. This is perfectly acceptable but is not a requirement for elementary Luna support.
* When I attempted to compile on a somewhat-clean 12.04 environment, I get this error:
pill-toolbar.vala:83:2: error: too few arguments to function 'granite_widgets_tool_button_with_menu_new'
Is it possible you have a newer version of Granite installed?
In any event, to get this far in the compilation process is a positive sign. I
hope you keep at it!
####
#7
Updated by Tom Beckmann 10 days ago
I just pushed an update, I wasn't sure which version was in the 12.04 repos. I
hope that'll fix it, otherwise I'll see how I can get myself a clean 12.04 to
test it.
On the symbolic icons, using non-symbolic ones would require a lot more #if
HAVE_... in the code, as I'd have to change every icon name. Currently I can
basically just modify the places where they are loaded, which makes about two
or three #ifs. So the question would be, do you prefer aesthetics over code
cleanness? You can see in the screenshot it doesn't look all that great at the
moment, but it's the shortest solution, code change wise. From my side both
are fine, I'd rather tend to go for the non-symbolic ones.
####
#8
Updated by Jim Nelson 10 days ago
I've asked Tom to investigate if he can keep the symbolic icons. If it's
difficult or requires too much hackery, reverting to non-symbolic will be
acceptable.
--- Bug imported by chaz@yorba.org 2013-11-21 20:23 UTC ---
This bug was previously known as _bug_ 7676 at http://redmine.yorba.org/show_bug.cgi?id=7676
Unknown version " in product geary.
Setting version to "!unspecified".
Unknown milestone "unknown in product geary.
Setting to default milestone for this product, "---".
Setting qa contact to the default for this product.
This bug either had no qa contact or an invalid one.
Resolution set on an open status.
Dropping resolution