Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster...

22
Qt Project – 2 years later Thiago Macieira, Qt Core Maintainer Edinburgh, Oct 2013

Transcript of Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster...

Page 1: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

Qt Project –2 years later

Thiago Macieira, Qt Core MaintainerEdinburgh, Oct 2013

Page 2: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

2

Who am I?

● Software Architect at Intel’s Open Source Technology Center (OTC) since 2011

‒ Living in Portland, Oregon

● Maintainer of two modules in the Qt Project

‒ QtCore and QtDBus

● MBA and double degree in Engineering

● Previously, led the “Qt Open Governance” project

‒ Ended with the creation of the Qt Project

Page 3: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

The Qt Project celebrated 2 years on October 22

http://qt-project.org

Page 4: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

4

A little bit of history

1994 1996 1998 2000 2002 2004 2006 2008 2010 2012 2013Tro

lltech

founded

Qt 1.0

Qt 2.0

Qt 3.0

Qt 4.0

Qt 5.0Qt 2

.2.0 – GPLv2

Qt 4.3.4 – G

PLv3

Qt 4.5.0 – LGPLv2

Daily tarballsCopyright assignment

Git repositoryLicensing

Access to development version:Contributions:

Thiago starts

worki

ng on Qt

Page 5: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

5

Motivations

● Desire to really be an open project

‒ MeeGo

● Fix problems with the 2009 Contribution Model

● Fix problems with the development workflow

Page 6: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

6

Fixing the earlier problems

● Continuous Integration was slow and cumbersome

● Bad commits stayed on forever

● Review system was ad-hoc

‒ Using pastebins

● Some rights were reserved to Nokia engineers

● Legal IP scanning was in the way

Page 7: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

7

Desire / goals

● One workflow for everyone, regardless of employer

‒ Merit-based open project

● Fast, reliable CI that stopped bad commits

● Co-exist with the commercial businesses

Page 8: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

8

The Qt Project is born

● Independent foundation owns the servers

● CI-controlled branches in Git

● Review system using Gerrit

● Meritocratic approval of contributions

● Decisions on mailing lists

Page 9: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

9

Principles

Fair Transparent

Inclusive Meritocratic

Page 10: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

10

Qt Project CIQt ProjectApproverWho: Contributors

How it works

Code

Review

Improve

Approve Test

Done

Page 11: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

11

Branching model

Page 12: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

12

The good: what we’ve achieved

● First major Qt release in 7 years*

● Two feature releases – Qt 4.8 (Dec/2011) and Qt 5.1 (June/2013)

● 5 feature releases of Qt Creator (2.4 through 2.8)

● A lot of patch releases, alphas, betas, release candidates and other “Qt Labs” projects

*: Qt 5.0 beat E17 and the end of the world by two days!

Page 13: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

13

The good: the community

● Live, vibrant community

● Active IRC channels and mailing lists

● Three Qt Contributor Summit events

Last in July 2013, with 200 participants

● Qt Developer Days for Qt users sold out in the past 2 years

Page 14: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

14

Some other numbers

48900 commits approved ● 68900 commits submitted

Average: 656.2 / week

● By 592 different email addresses

● Some 120 different companies

Qt 570%

Qt 45%

Qt Creator22%

Other3%

Average: 465.7 commits / week

Page 15: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

15

Qt Project* top employers – 2011-10-24 to 2013-10-20

*: Qt 5 and Qt Creator only

Page 16: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

16

Qt Project* top authors – 2011-10-24 to 2013-10-20

*: Qt 5 and Qt Creator only

ChristmasChristmasEaster

Easter

Qt 5.0 feature freeze

Nokia strategychange Summer

Page 17: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

17

The bad: what we had to survive

● Loss of the main project sponsor in May 2012

● Loss of 25% of the contributors in Aug 2012

● Loss of marketing team

● Delay of Qt 5.0 until the end of 2012

‒ Some modules abandoned

● WebKit / Blink split

Page 18: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

18

The ugly: oops...

● We added a new JavaScript engine in Qt 5.0

● We had three different engines for 5.0

● We added a very efficient scene graph for 5.0

● We replaced that JavaScript engine in Qt 5.2

● We now have four JavaScript engines

● We replaced the scene graph with a better one in 5.2

Page 19: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

19

Addons

● New area for modules with specific uses

‒ Experimental technology

‒ Restricted use-cases

● Hosted by the Qt Project

‒ Great way to attract new contributors!

Page 20: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

20

Reasons for success of the project

● Everyone treated fairly, based on merit only

● Decisions based on technical quality of the code

‒ Hierarchy only for breaking stalemates

● Yearly contributor summits for face-to-face discussions

‒ Breaks the ice!

Page 21: Qt Project – 2 years later · 21 Qt 5.2 Main features: ‒ New V4 engine in QML 2 ‒ Even faster scene graph in Qt Quick 2 ‒ Full support* for Android and iOS And working very

21

Qt 5.2

● Main features:

‒ New V4 engine in QML 2‒ Even faster scene graph in Qt Quick 2‒ Full support* for Android and iOS

And working very well on Android without Dalvik too‒ Qt Quick Controls‒ New modules: Bluetooth, NFC, Positioning, platform-specific extras‒ And a lot more (command line parser FTW!)

*: excluding QtWebKitl

Beta released today!