This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

3.0 release notes items

Major changes in GNOME 3.0, to be mentioned in the release notes. Please make a list here when we reach feature freeze.

Please note that this does not need to be pretty. It's just a list that will be used to make the actual release notes. In fact, if it's too pretty, people will link to it and complain that it's not perfect.

See also the advice about the schedule and translation.

/!\ Attention: Press/reviewers: This is a work in progress. Items aren't checked for correctness. Statements may be completely wrong. Very large changes could be forgotten. Please wait until the final release notes are done. This page will not contain everything that will be in the final release notes.

How-to

Major changes are those that:

{i} Provide this information:

Be as descriptive as you like.

What's new for users

Core Desktop

New look

Desktop shell

I'm not sure whether it makes sense to describe this in terms of 'features' or key advantages. Let's start with a brainstorm list of both and see how it pans out. AllanDay

Features

Selling points

Redesigned system settings

gnome-panel in fallback mode

It probably makes sense to describe some of the changes, so people using the fallback mode to keep a GNOME 2.x feeling know about them.

Applications

Nautilus

Cheese

Epiphany

Evince

Totem

Evolution

Empathy

gedit

Eye of GNOME

What's new for administrators

What's new for developers

Massive cleanup and consolidation

Smaller, more consolidated platform.

Depreciation of obsoleted dependencies: libdbus, libglade, libunique, (most of) libsexy, libgnome(ui) (useful functionality partially moved to gtk+ or gnome-desktop), libgnomeprint(ui), libbonobo(ui)

Advantages: simpler platform, quicker and easier to use.

Cairo drawing throughout

GDK no longer wraps the antiquated X11 drawing API; we’ve made a clean break and exclusively rely on cairo for all our drawing needs now. This has also enabled us to remove several other X11-centric concepts such as GCs, colormaps and pixmaps. The hero who did most of this work is Benjamin Otte (Red Hat).

Advantages: more portable, cleaner code, faster - can optimise around Cairo.

Modern input device handling

With GTK+ 3.0, XInput2 is used if available, allowing for:

Improved theming

GTK+ 3.0 sports a new theming infrastructure, the benefits are:

Better layouts

More flexible geometry management, with support for height-for-width, for both widgets and cell renderers. After an initial SoC project by Mathias Hasselmann, this feature was finally brought over the finish line by Tristan Van Berkom (Openismus), who is also maintaining glade and keeping it up-to-date for GTK+ 3.

Multiple backend support for GDK

With GTK+ 2.x, you had to recompile your application to have it work with a different GDK backend, since GDK backends were separate libraries. In 3.0, multiple GDK backends can be built into a single library and selected at runtime.

This will make it much easier to move from e.g. X11 to Wayland or from Quartz to X11.

Advantages: future proof - we're ready for the future. Enhances portability.

The GDK drawing API was mapped very closely to the core X drawing API which was invented 20 years ago. This posed a lot of issues when trying to port GTK to other platforms like Microsoft Windows, Apple’s Quartz rendering engine or OpenGL.

With GTK+3, GDK has been mapped to the Cairo API. Cairo is a modern 2D graphics library which supports bezier curves, antialiasing, translucent drawables, antialiased clipping and masking and resolution independence, all of which were not available in the GDK API.

This big refactoring has clear consequences:

- Better performace: In a lot of cases this was not even possible in the past or very complex due to the mentioned quirkiness of the old drawing operations. With Cairo there is room for optimization.

- Easier to port of GTK+ to other platforms: Previous backends, like the Apple’s Quartz backend, has been improved, the obsolete DirectFB backend has been removed and the experimental Wayland and Broadway/HTML5 backends has been introduced, and they will likely land in a future release.

- GDK has now been refactored to properly separate the backends from the generic “core” GDK code. It is now possible to compile multiple backends into the GDK library. This means the same GTK+ application can be run on multiple backends without recompilation.

Sources: http://blogs.gnome.org/otte/2010/07/27/rendering-cleanup/ http://blogs.gnome.org/kris/2010/12/29/gdk-3-0-on-mac-os-x/ http://hoegsberg.blogspot.com/2011/01/multiple-backends-for-gtk.html

Easy application support

With the integration of D-Bus support in GIO, we could finally add a GtkApplication class that handles a lot of the platform integration aspects of writing an application, such as keeping track of open windows, ensuring uniqueness, exporting actions, etc. This is still a bit of a work in progress, and will be expanded during the 3.x cycle. What we have now is there mainly thanks to the effort of Colin Walters (Red Hat) and Ryan Lortie (Codethink)

Advantages: makes creating applications faster and easier.

New widgets, improved stock UIs

GtkSwitch, GtkAppChooser, GtkGrid http://library.gnome.org/devel/gtk/2.99/switch.png http://library.gnome.org/devel/gtk/2.99/appchooserdialog.png

Of course, there’s some new widgets as well, such as a switch and an application chooser.

New settings framework

DConf: super fast, simple and logical API. GSettings: allows you to bind an object property to a setting "magically".

Much more developer-friendly configuration management system - a much better API than GConf [better as in simplified?]

You can bind class properties to configuration settings with very little code

GObject Introspection

Up to date, first class bindings, all the time.

With GObject Introspection you will able to to access to the GNOME technologies with the language of your choice.

Historically in GNOME, the core platform has been binding-friendly, but there are several details not captured in the C+GObject layer that bindings have needed. The introspection project solves this by putting all of the metadata inside the GObject library itself, using annotations in the comments. This will lead to less duplicate work from binding authors, and a more reliable experience for binding consumers.

Additionally, because the introspection build process will occur inside the GObject libraries themselves, a goal is to encourage GObject authors to consider shaping their APIs to be more binding friendly from the start, rather than as an afterthought.

Other

- first-class dbus support in GIO: GDBus [can this be read as consolidation around dbus?] - good networking support in GIO (including TLS, proxy support, etc) - configuration support in GIO: GSettings, with support for easy binding to properties

Anjuta

Developer documentation

gnome-panel & applets

Cheese

What's new for accessibility users

mousetweaks

Regressions

Plans for the next release


2024-10-23 11:50