qt-project.org and Qt 5

5,017 views

Published on

Presented at FOSDEM 2012 on 2012-02-05

Published in: Technology, Art & Photos
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,017
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
101
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide
  • Gerrit makes contribution much easier than pure Git before (codereview.qt-project.org) Everyone (internal and external) is using the same process
  • Fair Not important where you work or who you are or how much money you have. But it ’ s all about what you do! Transparent Nokia committed to being transparent about it ’ s work What you see is what you get. All discussions are out in the open: roadmap, reviews, feature requests, bugs. !!! Code that ’ s not visible doesn ’ t exist for the project (if you want to build anything commercial on top of Qt, it ’ s OK, but it doesn ’ t matter to Qt Project as long as it is not visible) Inclusive Everybody ’ s welcome. Tasks: tiny or large contributions - everything is welcome (patch, bug fix, wiki, documentation, localisation, etc.) Meritocratic Who you are depends on what you do Who does the most in the project has the most say (it ’ s not a democracy!)
  • Increased Stability Scrutiny, Public testing. More people/eyes looking at the code. New code review tool (Gerrit) with CI system integrated. Avoids regressions as long as good auto test coverage. Time based releases & releasable master code line Richer Releases More contributors & contributions Nokia can ’ t do everything although Nokia is still doing a lot with 200+ Qt developers Two big contributions within two days of Qt Project starting: DirectFB backend for Qt5 and QStandardPath (standard locations on different platforms) Increased visibility Open roadmaps and decision making You can find out exactly what is going on - nothing hidden. Make Qt fit your needs You can influence the direction of where Qt goes. More opportunities for Qt experts New business and job opportunities
  • Contributors: everyone can contribute Approvers: gatekeepers who decide whether something goes into Qt or not more experience with Qt can decide whether a contribution fits the direction/vision of the project, coding style OK, contribution improves Qt Maintainers: Have responsibility for a submodule like QtCore, QtGui, QtNetwork, QtDeclarative Have power to make decisions in their area of the code Webkit only has contributors and approvers, because they develop against open standard. But: we are free to choose our APIs, decide whether an API is OK and fits with Qt vision, where does the API belong Chief Maintainer (Lars Knoll): Resolves conflicts if maintainers can ’ t agree
  • Gerrit makes contribution much easier than pure Git before (codereview.qt-project.org) Everyone (internal and external) is using the same process
  • Talk about our strategy of getting next billion people to Internet with mobile phones On N9, you can already write apps for next-billion devices Nokia is still employing more than 200 Qt developers and hiring Qt is used on 100M+ Symbian phones for writing apps Talk about who uses Qt (key accounts: automotive, home media, IP comms)
  • Released in mid December 2011 QtQuick 1.1: pinch area, right-to-left scripts, split-screen virtual keyboards, (shader effects) Performance: threaded OpenGL (buffer swap, texture uploading, Qt painter in separate thread), http requests for downloads now multi-threaded, file systems (Windows, Symbian, Linux) HTML5: new Webkit version (2.2), HTML5 elements: audio, video, canvas; multi-touch, web storage, application storage, Web SQL, CSS animations Lighthouse/QPA: makes it easier to port Qt to new platforms, best examples: DirectFB, Android, iOS
  • Whole ecosystem = desktop, mobile, embedded State-of-the-art UIs = QWidget is not quite up to the task any more; were created before OpenGL became into wide use; e.g., animations difficult and time-consuming Modular = More and smaller libraries for more flexibility and smaller footprint Qt 4.x compatibility = porting QtMediaHub (8000 loc QML, 10000 loc C++) took less than half a day, much smoother than Qt3 to Qt4 Qt 5 consists of largely the same code as Qt 4.8 and Qt Mobility 1.2, which is arranged in a simpler and more modular way. Combining Qt Mobility and Qt ” proper ” like this makes the solution a lot easier to understand. Also the universally cross-platform parts are easier to identify. Modularity ensures a smaller footprint This starting point ensures source code compatiblity with Qt 4 – in 99% of cases In the functional side, the all-new graphics stack optimized for Qt Quick makes Qt a modern toolkit for all target segments
  • Qt Quick 2 Compatible with Qt Quick 1.1 State of the art V8 JavaScript engine All-new Graphics stack: Accelerate the whole UI Smooth UI driven by the vertical blank signal Accelerated text rendering Open GL shader effects with a convenient API New structure: Modularity Qt Essentials and Qt Add-Ons 10 new Qt Quick features: Particle System Organically animate a large number of visual particles with variations such as turbulence, velocity and frequency Target applications: games and multimedia applications Canvas API Draw arbitrary shapes in QML Target applications: Stock app with graphs Multi-touch element TouchArea element provides raw multi touch data (x, y) Drag and Drop In-process drag and drop support Custom easing curve Letting the developer assign exact influence values to customize the speed of animation Module API Loading arbitrary functionalities into QML. Module API is either QObjects or QJSValue Locale API Providing same features as in C++ QLocale API Path animation Animating visual elements along a path View/Model improvements Making it easy to group items within a view without affecting the model View transitions Enable animated transition when item is move or added to a view
  • Qt Quick 2 Compatible with Qt Quick 1.1 State of the art V8 JavaScript engine All-new Graphics stack: Accelerate the whole UI Smooth UI driven by the vertical blank signal Accelerated text rendering Open GL shader effects with a convenient API New structure: Modularity Qt Essentials and Qt Add-Ons 10 new Qt Quick features: Particle System Organically animate a large number of visual particles with variations such as turbulence, velocity and frequency Target applications: games and multimedia applications Canvas API Draw arbitrary shapes in QML Target applications: Stock app with graphs Multi-touch element TouchArea element provides raw multi touch data (x, y) Drag and Drop In-process drag and drop support Custom easing curve Letting the developer assign exact influence values to customize the speed of animation Module API Loading arbitrary functionalities into QML. Module API is either QObjects or QJSValue Locale API Providing same features as in C++ QLocale API Path animation Animating visual elements along a path View/Model improvements Making it easy to group items within a view without affecting the model View transitions Enable animated transition when item is move or added to a view
  • Qt 5 release includes a holistic end-to-end tested package No more separate Qt Mobility Qt Essentials Modules that are available on all platforms What most app developers need for their daily work Binary compatibility required Tools Qt Creator – Cross-platform IDE Build tools Internationalization Qt Add-Ons Modules that provide additional value on specific environments No binary compatibility required Complementary tools
  • Explain why QtWidgets is an add-on: it is not on every platform in future, makes less sense on embedded and mobile devices
  • mention embedded devices that can use Direct FB for surface management and software rasterizer for user interfaces => perfect for digital TV use casesMesa llvmpipe multi-threaded SW rasterizer, for both embedded and desktopIn general , there are 3 ways to get Open GL for WindowsOpenGL drivers from the display adapter vendorGoogle’s ANGLE project: OpenGL on DirectXMesa llvmpipe
  • Time-based releases: Equally unfair to everybody ;) If you don’t finish your feature in time, you won’t get it in. But, you have a new chance with a new release in short time.Integrated OpenGL rendererSolutions for OpenGL on WindowsTransparent switching between HW and SW renderingProcessor architectures:MIPS little-endianQt 5.0: x86 (IA-32), x86-64, ARM
  • Gerrit makes contribution much easier than pure Git before (codereview.qt-project.org) Everyone (internal and external) is using the same process
  • qt-project.org and Qt 5

    1. 1. © 2012 Nokia Qt Project and Qt 5 Lars Knoll, Qt Chief Maintainer Thiago Macieira, Qt Core Maintainer FOSDEM, Brussels February 5th, 2012
    2. 2. © 2012 Nokia Qt Project live for 3 months!
    3. 3. © 2012 Nokia Qt Project Fair Transparent Inclusive Meritocratic
    4. 4. © 2012 Nokia Benefits of Qt Project Richer releases Increased stability More opportunities for Qt experts Increased visibility to the future of Qt You can make Qt fit your needs Broader Qt Ecosystem
    5. 5. © 2012 Nokia Project Roles
    6. 6. © 2012 Nokia Some Numbers <ul><li>Since launch of Qt Project (3 months) </li></ul><ul><ul><li>~1000 new accounts </li></ul></ul><ul><ul><li>>7000 merged commits </li></ul></ul><ul><ul><li>~30% non Nokia contributions on qtbase </li></ul></ul><ul><ul><li>>10% non Nokia contributions on qt-creator </li></ul></ul><ul><ul><li>Top contributors: Nokia, Many individuals, Digia, KDAB, Accenture, Collabora, KDE, Moji Mobile, Woboq </li></ul></ul>
    7. 7. Weekly commits to Qt Qt-project launched
    8. 8. Non Nokia commits Qt-project launched
    9. 9. © 2012 Nokia &
    10. 10. © 2012 Nokia Qt 4.8 - What is in the box? <ul><li>Qt Quick 1.1 </li></ul><ul><li>Performance Improvements </li></ul><ul><li>New HTML5 features </li></ul><ul><li>Easier porting to new platforms </li></ul>
    11. 11. © 2012 Nokia Qt 5
    12. 12. © 2012 Nokia Qt 5 - Goals <ul><li>Works for whole ecosystem </li></ul><ul><li>State-of-the-art UIs </li></ul><ul><li>Modular </li></ul><ul><li>Small footprint </li></ul><ul><li>Compatible with Qt 4.x </li></ul>
    13. 13. © 2012 Nokia What is new in Qt 5.0? <ul><li>Qt Quick 2 </li></ul><ul><li>New structure </li></ul><ul><li>New graphics stack </li></ul><ul><li>All platforms use QPA and share more code </li></ul>
    14. 14. © 2012 Nokia A taste of new features… <ul><li>JSON support </li></ul><ul><li>Mimetype support </li></ul><ul><li>Performance improvements </li></ul><ul><li>QStandardPaths </li></ul><ul><li>XCB instead of Xlib </li></ul><ul><li>QRegex based on PCRE </li></ul><ul><li>New Signal/Slot connection mechanism </li></ul><ul><li>C++11 support </li></ul><ul><li>WebKit2 architecture in QtWebKit </li></ul><ul><li>V8 as JS engine </li></ul><ul><li>… </li></ul>
    15. 15. © 2012 Nokia Structure of Qt 5 SDK Platforms Linux Wayland X11 Windows Mac OS X Qt Essentials Tools Qt Add-Ons Your Platform ...
    16. 16. Essential
    17. 17. Add-On Modules
    18. 18. © 2012 Nokia Scope of Qt 5 <ul><li>Combines modules of Qt 4 and Qt Mobility </li></ul><ul><li>Qt Essentials </li></ul><ul><ul><li>Modules available on all platforms </li></ul></ul><ul><ul><li>Functionality most commonly used in applications </li></ul></ul><ul><ul><li>Binary compatible through Qt 5 series </li></ul></ul><ul><ul><li>QML, Webkit, OpenGL, multimedia, location, maps, etc. </li></ul></ul><ul><li>Qt Add-on Modules </li></ul><ul><ul><li>Modules used in specific contexts only </li></ul></ul><ul><ul><li>Widgets, many former Qt 4 and Qt Mobility modules, QML components, 3D, graphical effects, etc. </li></ul></ul>
    19. 19. © 2012 Nokia New Graphics Stack <ul><li>Qt 5 supports two rendering paradigms </li></ul><ul><ul><li>Software rasterizer/QPainter: used by QWidgets </li></ul></ul><ul><ul><li>OpenGL (ES): used by Qt Quick 2 </li></ul></ul><ul><li>QPainter </li></ul><ul><ul><li>Optimised for many years </li></ul></ul><ul><li>Qt Quick 2 is built and optimized for OpenGL </li></ul><ul><ul><li>Even SW rasterization can give great performance </li></ul></ul>
    20. 20. © 2012 Nokia Qt 5.0 Platforms <ul><li>Reference platforms: </li></ul><ul><ul><li>Windows </li></ul></ul><ul><ul><li>Mac OS X </li></ul></ul><ul><ul><li>Linux/X11 </li></ul></ul><ul><ul><li>Linux/Wayland </li></ul></ul><ul><li>Other platforms expected as well </li></ul><ul><ul><li>Direct FB backend contributed right after Qt Project launch </li></ul></ul><ul><ul><li>Android and iOS ports actively being worked on </li></ul></ul><ul><ul><li>QNX port </li></ul></ul>
    21. 21. © 2012 Nokia Qt 5.0 Milestones <ul><li>Feature frozen </li></ul><ul><li>Alpha beginning of March </li></ul><ul><li>Beta in early spring (April) </li></ul><ul><li>Done in 1st half 2012 </li></ul>
    22. 22. © 2012 Nokia Migrating from Qt 4 to Qt 5 <ul><li>Compatible with Qt 4 with very few exceptions </li></ul><ul><li>Qt Widgets are supported in Qt 5 </li></ul><ul><li>Doesn ’ t require migration to Qt Quick </li></ul><ul><li>Doesn ’ t require OpenGL </li></ul><ul><li>Doesn ’ t require JavaScript </li></ul>
    23. 23. © 2012 Nokia After Qt 5.0 <ul><li>Time based release schedule </li></ul><ul><ul><li>2 feature releases per year </li></ul></ul><ul><li>Possible focus areas </li></ul><ul><ul><li>Full Desktop support in Qt Quick </li></ul></ul><ul><ul><li>Integrated Software OpenGL renderer </li></ul></ul><ul><ul><li>Continue to evolve the WebKit2 based Qt WebKit </li></ul></ul><ul><ul><li>More processor architectures for JavaScript </li></ul></ul>
    24. 24. © 2012 Nokia Summary <ul><li>Qt Project </li></ul><ul><ul><li>Fully open and transparent </li></ul></ul><ul><ul><li>Join us to drive Qt forward </li></ul></ul><ul><ul><li>Fully backed by Nokia </li></ul></ul><ul><li>Qt 4.8 </li></ul><ul><ul><li>Released in mid December 2011 </li></ul></ul><ul><ul><li>Supported for a long time </li></ul></ul><ul><li>Qt 5 </li></ul><ul><ul><li>Adapts Qt to a changing world </li></ul></ul><ul><ul><li>Very easy transition from Qt 4 </li></ul></ul><ul><ul><li>QWidgets still fully supported </li></ul></ul><ul><ul><li>QML offers innovative ways to build UIs </li></ul></ul>
    25. 25. © 2012 Nokia Thank you!

    ×