[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