1 IBM arunkumar.thondapu@in.ibm.com EclipseCon NA 2015 3/12/2015 - - PowerPoint PPT Presentation

1
SMART_READER_LITE
LIVE PREVIEW

1 IBM arunkumar.thondapu@in.ibm.com EclipseCon NA 2015 3/12/2015 - - PowerPoint PPT Presentation

Arun Thondapu Eclipse SWT Project Co-Lead Equinox (Launcher) Committer 1 IBM arunkumar.thondapu@in.ibm.com EclipseCon NA 2015 3/12/2015 Motivation Evolution of GTK+ Porting SWT to GTK+ 3 Challenges Solutions


slide-1
SLIDE 1

Arun Thondapu Eclipse SWT Project Co-Lead Equinox (Launcher) Committer IBM arunkumar.thondapu@in.ibm.com

3/12/2015 EclipseCon NA 2015

1

slide-2
SLIDE 2
  • Motivation
  • Evolution of GTK+
  • Porting SWT to GTK+ 3
  • Challenges
  • Solutions
  • Collaboration
  • WIP
  • What’s Next ??
  • Wayland support
  • Broadway, HTML 5
  • GTK+ 4
3/12/2015 EclipseCon NA 2015 2
slide-3
SLIDE 3
  • Linux vs Others
  • Significant changes in underlying windowing system (GTK+)
  • Separate API and ABI incompatible streams
  • How to be on the “bleeding edge”
  • Need parallel streams of development and maintenance
  • Open and diverse nature of Linux distributions = support for a large range of GTK+

versions

3/12/2015 EclipseCon NA 2015 3
slide-4
SLIDE 4 3/12/2015 EclipseCon NA 2015 4 "GTK+ software architecture" by Shmuel Csaba Otto Traian. Licensed under CC BY-SA 4.0 via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:GTK%2B_software_architecture.svg#mediaviewer/File:GTK%2B_software_architecture.svg
slide-5
SLIDE 5
  • Originally designed and used in the GNU Image Manipulation Program (GIMP) as

a replacement of the Motif toolkit.

  • GTK+ 2.0
  • improved text rendering using Pango
  • a new theme engine
  • improved accessibility using ATK
  • complete transition to Unicode using UTF-8 strings
  • more flexible API and new widgets
  • usage of Cairo graphics library for rendering vector graphics (since version 2.8)
3/12/2015 EclipseCon NA 2015 5
slide-6
SLIDE 6
  • GTK+ 3
  • cairo drawing throughout, GDK no longer wraps the antiquated X11 drawing API
  • modern input device handling via XInput2
  • new theming API with CSS syntax for theme configuration and animations
  • multiple backend support for GDK (including experimental support for Wayland and

HTML5)

  • integration of D-Bus support in GIO
  • use GIO for launching applications
  • new widgets, such as a switch and an application chooser
  • improved support for touch and gestures
3/12/2015 EclipseCon NA 2015 6
slide-7
SLIDE 7
  • Primary goal was a seamless user experience on a wide variety of Linux versions

irrespective of underlying versions of GTK+ shipped by them.

  • to be as backward compatible as possible
  • in contrast to most native GTK+ apps including GNOME
3/12/2015 EclipseCon NA 2015 7

libgtk-x11-2.0.so.0 libswt-pi-gtk-****.so libswt-pi3-gtk-****.so libgtk-3.so.0

slide-8
SLIDE 8
  • Do not include individual headers
  • Do not use deprecated symbols
  • Use accessor functions instead of direct access
  • Replace GDK_<keyname> with GDK_KEY_<keyname>
  • Use GIO for launching applications instead of the gdk_spawn family of functions
  • Use cairo for drawing
  • GdkGC and GdkImage are removed
  • gdk_draw family of functions are gone
  • GtkWidget “expose-event” signal has been replaced by a new “draw” signal
3/12/2015 EclipseCon NA 2015 8
slide-9
SLIDE 9
  • The modern GTK+ drawing model
3/12/2015 EclipseCon NA 2015 9
slide-10
SLIDE 10
  • Many great and diverse contributions

from community (led by Red Hat team) towards the GTK+ 3 port

  • Much more stable and usable now
  • Please continue to test, report bugs

and contribute patches!

3/12/2015 EclipseCon NA 2015 10
slide-11
SLIDE 11
  • Working on resolving most major outstanding problems before Mars
  • Bugzilla summary tags – GTK3, GTK 3.10
  • Lots more stuff being deprecated and replaced by GTK+
  • GdkColor is being replaced by GdkRGBA
  • Many enhancements as well but we may not be able to adopt right now, stability is

the major concern

  • Lack of backwards-compatibility in major updates continues to be an issue
  • Can we aggressively drop support for older versions of GTK+ 2.x?
3/12/2015 EclipseCon NA 2015 11
slide-12
SLIDE 12
  • Mars drops support for GTK+ < 2.18
  • How to find out which version of GTK+ is being used by my Eclipse or SWT

application?

  • Use the Java property org.eclipse.swt.internal.gtk.version
  • Prevent linking against GTK+ 2.x and GTK+ 3.x in the same process
  • Leads to unexpected hangs or hard-to-diagnose crashes
3/12/2015 EclipseCon NA 2015 12
slide-13
SLIDE 13
  • Eclipse Mars
  • GTK+ 3 always (assuming it is installed and available)
  • Eclipse Luna, SR1 & SR2
  • GTK+ < 3.10 => GTK3
  • GTK+ >= 3.10 => GTK2
3/12/2015 EclipseCon NA 2015 13
slide-14
SLIDE 14
  • Webkit is embedded by default on Linux but XULRunner is also supported
  • libwebkitgtk-1.0-0 vs. libwebkitgtk-3.0-0
  • libwebkitgtk-1.0-0 is not installed by default on some distros => Luna and

earlier do not have an active browser in Eclipse!

  • libwebkit2gtk-3.0-25 vs. libwebkit2gtk-4.0-37
  • XULRunner does not have a GTK+ 3 port yet…
3/12/2015 EclipseCon NA 2015 14
slide-15
SLIDE 15
  • Wayland is intended as a simpler replacement for X, easier to develop and

maintain.

  • Origins in initial effort towards X12.
  • Hardware and applications are constantly evolving, X11 extensions are unable to

fill in the gaps anymore.

  • Design and build a new display server from scratch focusing on modern platforms.
3/12/2015 EclipseCon NA 2015 15
slide-16
SLIDE 16
  • Wayland is a display protocol for a compositor to talk to its clients as well as a C

library implementation of that protocol.

  • Weston reference implementation is the only Wayland compositor as of now.
  • Eliminates needless complexity and improves performance compared to X11.
  • Smaller footprint.
  • Designed to work well with non-PC interfaces (embedded devices, tablets and phones).
  • Shipped on a number of embedded products, phones, and tablets.
  • For the desktop, GNOME and KDE ports to Wayland (and of course the protocol

itself) are currently WIP.

3/12/2015 EclipseCon NA 2015 16
slide-17
SLIDE 17 3/12/2015 EclipseCon NA 2015 17
slide-18
SLIDE 18 3/12/2015 EclipseCon NA 2015 18
slide-19
SLIDE 19 3/12/2015 EclipseCon NA 2015 19
slide-20
SLIDE 20
  • Rudimentary support available at
this stage
  • Google Summer of Code 2014
project by Joshua Barkovic 3/12/2015 EclipseCon NA 2015 20
slide-21
SLIDE 21
  • GDK Broadway backend provides support for displaying GTK+ applications in a

web browser, using HTML5 and web sockets.

  • GDK_BACKEND = broadway
  • http://127.0.0.1:8080
  • Works only with GTK3
  • Use multiple GTK+ applications in the same web browser window, by using the

Broadway server, broadwayd, that ships with GTK+.

  • broadwayd :5
  • BROADWAY_DISPLAY - Specifies the Broadway display number.
  • BROADWAY_DISPLAY=:5 gedit
3/12/2015 EclipseCon NA 2015 21
slide-22
SLIDE 22 3/12/2015 EclipseCon NA 2015 22
slide-23
SLIDE 23
  • Can SWT itself use web (HTML5) based elements to build the UI of the application

instead of the OS's native widgets?

  • Eclipse running inside a web browser?
  • Allows CSS customization of UI.
  • Eclipse integration with Orion and Flux in a browser.
3/12/2015 EclipseCon NA 2015 23
slide-24
SLIDE 24
  • Animations
  • Effects
  • Transformations
  • Event bubbling
  • No more GDK windows
  • Multimedia
3/12/2015 EclipseCon NA 2015 24
  • Scene graph
  • Improved CSS support
  • Better cross-platform story
  • Better support for application

development

  • Touch and gesture support
  • Focus on HIG
slide-25
SLIDE 25 3/12/2015 EclipseCon NA 2015 25
slide-26
SLIDE 26

“GTK+ 4 shall be as rock-stable (and hence "boring") as GTK+ 2”

3/12/2015 EclipseCon NA 2015 26
slide-27
SLIDE 27 3/12/2015 EclipseCon NA 2015 27
slide-28
SLIDE 28 3/12/2015 EclipseCon NA 2015 28
slide-29
SLIDE 29

+1 0 -1

Sign in: www.eclipsecon.org

Evaluate the sessions

3/12/2015 EclipseCon NA 2015

29