GES

GES (GStreamer Editing Services) is a cross-platform library that sits
on top of GStreamer and
Non-Linear Engine. GES simplifies the
creation of multimedia editing applications. Basically, GES is a
complete SDK for making a video
editor (but not only that).

Traditionally, Pitivi was a user interface and a homemade video editing
“core” (or “backend”) that interacted directly with
GNonLin. Starting in version
0.91, Pitivi's core has been replaced by GES. This
means that Pitivi is mostly only a user interface on top of GES.
Starting in version 0.95, GNonLin has been replaced
by Non-Linear Engine to improve stability.

GES does not aim at serving the needs of Pitivi only: we are building
the platform of the future and breaking the cycle of failed projects.
Indeed, other applications are already using GES or migrating to it.

“Pitivi is one of the 'generous' projects that develops not just an
editor, but a set of libraries to implement editors. [Applications
built on top of those libraries] are not really re-inventing the
wheel, they can piggyback on top of the work that these folks are
doing, and then implement UI features that they care about the
most.”
— Bassam Kurdali, director of Elephants
Dream and
Tube.﻿

In addition to the fact that GES encourages code reuse among audio/video
editing software, here are some concrete advantages that we've noticed
while porting Pitivi to GES:

It solves many architectural issues of the past.

It vastly simplifies Pitivi development:

More than 20 000 lines of code have been removed from Pitivi as
a result

A big
cleanup
of the Pitivi codebase was done in early 2011, significantly
reducing the amount of modules/files to deal with.

No more confusion between the UI and backend parts

Much less GStreamer knowledge is required to contribute to
Pitivi itself.

It has much better performance.

Further reading for contributors:

See the Architecture page for a visual
overview of the relationship between Pitivi, GES, Non-Linear Engine
and other components.

Read the GES API reference
documentation
if you need to interact with GES. This documentation can also be
found locally in the “docs/libs/html/” subdirectory of your GES git
checkout.