SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
sandroandrade@kde.org
@andradesandro
Sandro Andrade
Architecting Qt Mobile Applications
Frameworks, Code Generators and Beyond
Akademy 2017
whoami
whoami
whoami
whoami
What is this talk about?
What is this talk about?
What is this talk about?
●
Qt offers a stable UI framework for cross-
platform mobile applications development
●
Large and complex Qt mobile applications
still lack some architectural-level support
●
A lot of functionalities are recurrent and
amenable to automatic code generation
What is this talk about?
●
Some Qt disabilities in mobile development:
– Lack of high-level frameworks delivering
modular and reusable architectural solutions for
mobile apps
– KDE Frameworks 5 is likely to be cumbersome
and/or introduce unwanted dependencies
– Lack of high-level reusable UI components (KDE
Kirigami to the rescue)
What is this talk about?
●
Some Qt disabilities in mobile development:
– No built-in support for JSON-based RESTful
communication (lack of a JSONListModel)
– No built-in support for disconnected operations
(with automatic sync upon reconnected)
– No built-in cross-platform support for receiving
push notifications
– Issues with deployment of read-write files across
platforms
What is this talk about?
●
We’ve been working on some mobile Qt
development projects at IFBA over the last
1.5 years
●
Such Qt disabilities has motivated us to
investigate to which extent such problems
can be alleviated with the use of well-
thought architectures and effective tooling
Introducing Meg
=
+
Meg
A lean dynamic QML-based
architecture for Qt
cross-platform mobile
applications
A code generator which
Enables the productive
creation of modular
RESTful servers and
Qt mobile applications
Introducing Meg
●
Implemented as a Ruby Thor-based CLI
●
Templates are specified in Embedded RuBy
(ERB)
●
Generators are modular (Thor with modules)
●
Provides a JSONListModel QML object
●
Automatic download of Google Material Icons
Introducing Meg
●
Currently available templates:
●
Sinatra RESTful server with modular architecture
(sinatra-server)
●
Ruby Sinatra RESTful service plug-in (sinatra-service-
plugin)
●
Simple Qt mobile app with plugin-based architecture
(simple-app)
●
Qt mobile RESTful app with plugin-based architecture
(restful-app)
●
Qt mobile RESTful client plug-in (restful-client-plugin)
Meg – quick demo
●
Installing meg:
– git clone https://github.com/sandroandrade/meg.git
– install ruby
– run ‘gem install bundler’
– Run ‘bundle install’
– CLI is in ‘./bin/meg’
Meg – quick demo
●
Creating a simple Qt plugin-based mobile
app:
– ./bin/meg new SimpleApp -t simple-app
●
Creating some plug-ins:
– ./bin/meg generate plugin students -t basic-plugin -a
simpleapp/
– ./bin/meg generate plugin teachers -t basic-plugin -a
simpleapp/
Meg – quick demo
●
Creating a modular Sinatra RESTful server:
– ./bin/meg new myserver -t sinatra-server
●
Creating some plug-ins:
– ./bin/meg generate plugin Conference -t sinatra-service-
plugin -a myserver/ acronym:string name:string
city:string country:string venue:string start_date:datetime
end_date:datetime
– ./bin/meg generate plugin Speaker -t sinatra-service-
plugin -a myserver/ name:string affiliation:string
shortbio:string
Meg – quick demo
●
Running the server:
– run ‘rake db:migrate’
– populate database with some data
– start the server: ‘ruby myserver.rb’
●
Checking the services:
– curl http://localhost:4567/conferences | python -m
json.tool
– curl http://localhost:4567/speakers | python -m json.tool
Meg – quick demo
●
Creating a mobile Qt RESTful client:
– ./bin/meg new MyApp -t restful-app
●
Creating the RESTful client plug-ins:
– ./bin/meg generate plugin conferences -t restful-client-
plugin -a myapp -i name -c action/ic_speaker_notes
acronym:string name:string city:string venue:string
start_date:datetime end_date:datetime
– ./bin/meg generate plugin speakers -t restful-client-plugin
-a myapp -i name -c action/ic_record_voice_over
name:string affiliation:string shortbio:string
Meg – quick demo
●
Qt RESTful client:
Meg – quick demo
●
Future work:
– Add templates for full CRUD support
– Add template for kirigami-based UI
workflows
– Support relationships between models
– Support push notification
●
Try it! Contributions welcome!
Questions?

Mais conteúdo relacionado

Mais procurados

[OSSummitEU2017]Ten Llayers of Linux Container Security
[OSSummitEU2017]Ten Llayers of Linux Container Security[OSSummitEU2017]Ten Llayers of Linux Container Security
[OSSummitEU2017]Ten Llayers of Linux Container SecurityDaniel Oh
 
It's a Breeze to develop Apache Airflow (Apache Con Berlin)
It's a Breeze to develop Apache Airflow (Apache Con Berlin)It's a Breeze to develop Apache Airflow (Apache Con Berlin)
It's a Breeze to develop Apache Airflow (Apache Con Berlin)Jarek Potiuk
 
Workflows using Git GitHub | Edureka
Workflows using Git GitHub | EdurekaWorkflows using Git GitHub | Edureka
Workflows using Git GitHub | EdurekaEdureka!
 
Paris Container Day 2016 : Cloud de conteneurs, conteneurs dans le cloud, str...
Paris Container Day 2016 : Cloud de conteneurs, conteneurs dans le cloud, str...Paris Container Day 2016 : Cloud de conteneurs, conteneurs dans le cloud, str...
Paris Container Day 2016 : Cloud de conteneurs, conteneurs dans le cloud, str...Publicis Sapient Engineering
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CIColCh
 
Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)Igalia
 
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincitOy
 
QtDD13 - Qt Creator plugins - Tobias Hunger
QtDD13 - Qt Creator plugins - Tobias Hunger QtDD13 - Qt Creator plugins - Tobias Hunger
QtDD13 - Qt Creator plugins - Tobias Hunger Robert-Emmanuel Mayssat
 
Gitflow - Clouddictive
Gitflow   - ClouddictiveGitflow   - Clouddictive
Gitflow - ClouddictiveClouddictive
 
Paris Container Day 2016 : Deep dive dc-os ci-cd (Mesosphere & Container Solu...
Paris Container Day 2016 : Deep dive dc-os ci-cd (Mesosphere & Container Solu...Paris Container Day 2016 : Deep dive dc-os ci-cd (Mesosphere & Container Solu...
Paris Container Day 2016 : Deep dive dc-os ci-cd (Mesosphere & Container Solu...Publicis Sapient Engineering
 
Docker for tooling
Docker for toolingDocker for tooling
Docker for toolingRafael Gomes
 
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...Nico Meisenzahl
 
Sep Nasiri "Upwork PHP Architecture"
Sep Nasiri "Upwork PHP Architecture"Sep Nasiri "Upwork PHP Architecture"
Sep Nasiri "Upwork PHP Architecture"Fwdays
 
Kubernetes CRI containerd integration by Lantao Liu (Google)
Kubernetes CRI containerd integration by Lantao Liu (Google)Kubernetes CRI containerd integration by Lantao Liu (Google)
Kubernetes CRI containerd integration by Lantao Liu (Google)Docker, Inc.
 
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4Igalia
 

Mais procurados (20)

Qt5.pptx
Qt5.pptxQt5.pptx
Qt5.pptx
 
[OSSummitEU2017]Ten Llayers of Linux Container Security
[OSSummitEU2017]Ten Llayers of Linux Container Security[OSSummitEU2017]Ten Llayers of Linux Container Security
[OSSummitEU2017]Ten Llayers of Linux Container Security
 
It's a Breeze to develop Apache Airflow (Apache Con Berlin)
It's a Breeze to develop Apache Airflow (Apache Con Berlin)It's a Breeze to develop Apache Airflow (Apache Con Berlin)
It's a Breeze to develop Apache Airflow (Apache Con Berlin)
 
Workflows using Git GitHub | Edureka
Workflows using Git GitHub | EdurekaWorkflows using Git GitHub | Edureka
Workflows using Git GitHub | Edureka
 
Paris Container Day 2016 : Cloud de conteneurs, conteneurs dans le cloud, str...
Paris Container Day 2016 : Cloud de conteneurs, conteneurs dans le cloud, str...Paris Container Day 2016 : Cloud de conteneurs, conteneurs dans le cloud, str...
Paris Container Day 2016 : Cloud de conteneurs, conteneurs dans le cloud, str...
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CI
 
Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)
 
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
 
Report portal
Report portalReport portal
Report portal
 
Platform SDK Update
Platform SDK UpdatePlatform SDK Update
Platform SDK Update
 
QtDD13 - Qt Creator plugins - Tobias Hunger
QtDD13 - Qt Creator plugins - Tobias Hunger QtDD13 - Qt Creator plugins - Tobias Hunger
QtDD13 - Qt Creator plugins - Tobias Hunger
 
Gitflow - Clouddictive
Gitflow   - ClouddictiveGitflow   - Clouddictive
Gitflow - Clouddictive
 
Paris Container Day 2016 : Deep dive dc-os ci-cd (Mesosphere & Container Solu...
Paris Container Day 2016 : Deep dive dc-os ci-cd (Mesosphere & Container Solu...Paris Container Day 2016 : Deep dive dc-os ci-cd (Mesosphere & Container Solu...
Paris Container Day 2016 : Deep dive dc-os ci-cd (Mesosphere & Container Solu...
 
Docker for tooling
Docker for toolingDocker for tooling
Docker for tooling
 
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
 
Docker off the grid
Docker off the gridDocker off the grid
Docker off the grid
 
Sep Nasiri "Upwork PHP Architecture"
Sep Nasiri "Upwork PHP Architecture"Sep Nasiri "Upwork PHP Architecture"
Sep Nasiri "Upwork PHP Architecture"
 
Kubernetes CRI containerd integration by Lantao Liu (Google)
Kubernetes CRI containerd integration by Lantao Liu (Google)Kubernetes CRI containerd integration by Lantao Liu (Google)
Kubernetes CRI containerd integration by Lantao Liu (Google)
 
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
 
版本控制Git
版本控制Git版本控制Git
版本控制Git
 

Semelhante a Architecting Qt Mobile Applications: Frameworks, Code Generators and Beyond

Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Nokia
 
IBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt IntegrationIBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt Integrationgjuljo
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)firenze-gtug
 
Gwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca TosiGwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca Tosifirenze-gtug
 
Android Services Skill Sprint
Android Services Skill SprintAndroid Services Skill Sprint
Android Services Skill SprintJim McKeeth
 
Not my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructureNot my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructureYshay Yaacobi
 
Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017Johan Thelin
 
Nugwc k8s session-16-march-2021
Nugwc k8s session-16-march-2021Nugwc k8s session-16-march-2021
Nugwc k8s session-16-march-2021Avanti Patil
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraLINAGORA
 
Introduction Flutter for Create Multiplatform Apps
Introduction Flutter for Create Multiplatform AppsIntroduction Flutter for Create Multiplatform Apps
Introduction Flutter for Create Multiplatform AppsYatno Sudar
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...Heiko Voigt
 
Rohit Yadav - Modern UI for CloudStack
Rohit Yadav - Modern UI for CloudStackRohit Yadav - Modern UI for CloudStack
Rohit Yadav - Modern UI for CloudStackShapeBlue
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...Igalia
 
Serverless java
Serverless   javaServerless   java
Serverless javaVishwas N
 
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...Andreas Jakl
 

Semelhante a Architecting Qt Mobile Applications: Frameworks, Code Generators and Beyond (20)

Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
 
Meet Qt
Meet QtMeet Qt
Meet Qt
 
Qt quick (qml)
Qt quick (qml)Qt quick (qml)
Qt quick (qml)
 
了解 Qt
了解 Qt了解 Qt
了解 Qt
 
IBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt IntegrationIBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt Integration
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)
 
Gwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca TosiGwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca Tosi
 
Android Services Skill Sprint
Android Services Skill SprintAndroid Services Skill Sprint
Android Services Skill Sprint
 
Not my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructureNot my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructure
 
Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017
 
Nugwc k8s session-16-march-2021
Nugwc k8s session-16-march-2021Nugwc k8s session-16-march-2021
Nugwc k8s session-16-march-2021
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
 
Introduction Flutter for Create Multiplatform Apps
Introduction Flutter for Create Multiplatform AppsIntroduction Flutter for Create Multiplatform Apps
Introduction Flutter for Create Multiplatform Apps
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
 
Qt
QtQt
Qt
 
Treinamento Qt básico - aula I
Treinamento Qt básico - aula ITreinamento Qt básico - aula I
Treinamento Qt básico - aula I
 
Rohit Yadav - Modern UI for CloudStack
Rohit Yadav - Modern UI for CloudStackRohit Yadav - Modern UI for CloudStack
Rohit Yadav - Modern UI for CloudStack
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
 
Serverless java
Serverless   javaServerless   java
Serverless java
 
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
 

Mais de Sandro Andrade

O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoT
O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoTO Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoT
O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoTSandro Andrade
 
Painel "Software Livre, Conhecimento Livre e Mídias Digitais" - II Seminário ...
Painel "Software Livre, Conhecimento Livre e Mídias Digitais" - II Seminário ...Painel "Software Livre, Conhecimento Livre e Mídias Digitais" - II Seminário ...
Painel "Software Livre, Conhecimento Livre e Mídias Digitais" - II Seminário ...Sandro Andrade
 
Práticas de Agilidade e QA na Comunidade KDE
Práticas de Agilidade e QA na Comunidade KDEPráticas de Agilidade e QA na Comunidade KDE
Práticas de Agilidade e QA na Comunidade KDESandro Andrade
 
Software Livre e Novas Formas de Trabalho - InfoUNEB 2016
Software Livre e Novas Formas de Trabalho - InfoUNEB 2016Software Livre e Novas Formas de Trabalho - InfoUNEB 2016
Software Livre e Novas Formas de Trabalho - InfoUNEB 2016Sandro Andrade
 
Minuet - the KDE approach to music education
Minuet - the KDE approach to music educationMinuet - the KDE approach to music education
Minuet - the KDE approach to music educationSandro Andrade
 
Desenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com QtDesenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com QtSandro Andrade
 
QtModeling - bringing metamodeling features into the KDE world
QtModeling - bringing metamodeling features into the KDE worldQtModeling - bringing metamodeling features into the KDE world
QtModeling - bringing metamodeling features into the KDE worldSandro Andrade
 
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...Sandro Andrade
 
Do Search-Based Approaches Improve the Design of Self-Adaptive Systems ? A Co...
Do Search-Based Approaches Improve the Design of Self-Adaptive Systems ? A Co...Do Search-Based Approaches Improve the Design of Self-Adaptive Systems ? A Co...
Do Search-Based Approaches Improve the Design of Self-Adaptive Systems ? A Co...Sandro Andrade
 
Arquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigDataArquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigDataSandro Andrade
 
Apresentação no 4o Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 201...
Apresentação no 4o Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 201...Apresentação no 4o Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 201...
Apresentação no 4o Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 201...Sandro Andrade
 
Palestra do FISL15: QtModeling: Metamodelagem e Model-Driven Software Enginee...
Palestra do FISL15: QtModeling: Metamodelagem e Model-Driven Software Enginee...Palestra do FISL15: QtModeling: Metamodelagem e Model-Driven Software Enginee...
Palestra do FISL15: QtModeling: Metamodelagem e Model-Driven Software Enginee...Sandro Andrade
 
KDE de 2008 a 2018: Retrospectivas e Perspectivas Técnicas e Sociais
KDE de 2008 a 2018: Retrospectivas e Perspectivas Técnicas e SociaisKDE de 2008 a 2018: Retrospectivas e Perspectivas Técnicas e Sociais
KDE de 2008 a 2018: Retrospectivas e Perspectivas Técnicas e SociaisSandro Andrade
 
Desenvolvendo Widgets QML para o KDE Plasma
Desenvolvendo Widgets QML para o KDE PlasmaDesenvolvendo Widgets QML para o KDE Plasma
Desenvolvendo Widgets QML para o KDE PlasmaSandro Andrade
 
SASO2013 - PechaKucha version
SASO2013 - PechaKucha versionSASO2013 - PechaKucha version
SASO2013 - PechaKucha versionSandro Andrade
 
Architectural Design Spaces for Feedback Control in Self-Adaptive Systems Con...
Architectural Design Spaces for Feedback Control in Self-Adaptive Systems Con...Architectural Design Spaces for Feedback Control in Self-Adaptive Systems Con...
Architectural Design Spaces for Feedback Control in Self-Adaptive Systems Con...Sandro Andrade
 

Mais de Sandro Andrade (17)

O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoT
O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoTO Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoT
O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoT
 
Painel "Software Livre, Conhecimento Livre e Mídias Digitais" - II Seminário ...
Painel "Software Livre, Conhecimento Livre e Mídias Digitais" - II Seminário ...Painel "Software Livre, Conhecimento Livre e Mídias Digitais" - II Seminário ...
Painel "Software Livre, Conhecimento Livre e Mídias Digitais" - II Seminário ...
 
Práticas de Agilidade e QA na Comunidade KDE
Práticas de Agilidade e QA na Comunidade KDEPráticas de Agilidade e QA na Comunidade KDE
Práticas de Agilidade e QA na Comunidade KDE
 
Software Livre e Novas Formas de Trabalho - InfoUNEB 2016
Software Livre e Novas Formas de Trabalho - InfoUNEB 2016Software Livre e Novas Formas de Trabalho - InfoUNEB 2016
Software Livre e Novas Formas de Trabalho - InfoUNEB 2016
 
Minuet - the KDE approach to music education
Minuet - the KDE approach to music educationMinuet - the KDE approach to music education
Minuet - the KDE approach to music education
 
Desenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com QtDesenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com Qt
 
O KDE no mundo
O KDE no mundoO KDE no mundo
O KDE no mundo
 
QtModeling - bringing metamodeling features into the KDE world
QtModeling - bringing metamodeling features into the KDE worldQtModeling - bringing metamodeling features into the KDE world
QtModeling - bringing metamodeling features into the KDE world
 
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...
 
Do Search-Based Approaches Improve the Design of Self-Adaptive Systems ? A Co...
Do Search-Based Approaches Improve the Design of Self-Adaptive Systems ? A Co...Do Search-Based Approaches Improve the Design of Self-Adaptive Systems ? A Co...
Do Search-Based Approaches Improve the Design of Self-Adaptive Systems ? A Co...
 
Arquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigDataArquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigData
 
Apresentação no 4o Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 201...
Apresentação no 4o Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 201...Apresentação no 4o Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 201...
Apresentação no 4o Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 201...
 
Palestra do FISL15: QtModeling: Metamodelagem e Model-Driven Software Enginee...
Palestra do FISL15: QtModeling: Metamodelagem e Model-Driven Software Enginee...Palestra do FISL15: QtModeling: Metamodelagem e Model-Driven Software Enginee...
Palestra do FISL15: QtModeling: Metamodelagem e Model-Driven Software Enginee...
 
KDE de 2008 a 2018: Retrospectivas e Perspectivas Técnicas e Sociais
KDE de 2008 a 2018: Retrospectivas e Perspectivas Técnicas e SociaisKDE de 2008 a 2018: Retrospectivas e Perspectivas Técnicas e Sociais
KDE de 2008 a 2018: Retrospectivas e Perspectivas Técnicas e Sociais
 
Desenvolvendo Widgets QML para o KDE Plasma
Desenvolvendo Widgets QML para o KDE PlasmaDesenvolvendo Widgets QML para o KDE Plasma
Desenvolvendo Widgets QML para o KDE Plasma
 
SASO2013 - PechaKucha version
SASO2013 - PechaKucha versionSASO2013 - PechaKucha version
SASO2013 - PechaKucha version
 
Architectural Design Spaces for Feedback Control in Self-Adaptive Systems Con...
Architectural Design Spaces for Feedback Control in Self-Adaptive Systems Con...Architectural Design Spaces for Feedback Control in Self-Adaptive Systems Con...
Architectural Design Spaces for Feedback Control in Self-Adaptive Systems Con...
 

Último

%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile EnvironmentVictorSzoltysek
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...masabamasaba
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 

Último (20)

%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 

Architecting Qt Mobile Applications: Frameworks, Code Generators and Beyond

  • 1. sandroandrade@kde.org @andradesandro Sandro Andrade Architecting Qt Mobile Applications Frameworks, Code Generators and Beyond Akademy 2017
  • 4. What is this talk about?
  • 5. What is this talk about?
  • 6. What is this talk about? ● Qt offers a stable UI framework for cross- platform mobile applications development ● Large and complex Qt mobile applications still lack some architectural-level support ● A lot of functionalities are recurrent and amenable to automatic code generation
  • 7. What is this talk about? ● Some Qt disabilities in mobile development: – Lack of high-level frameworks delivering modular and reusable architectural solutions for mobile apps – KDE Frameworks 5 is likely to be cumbersome and/or introduce unwanted dependencies – Lack of high-level reusable UI components (KDE Kirigami to the rescue)
  • 8. What is this talk about? ● Some Qt disabilities in mobile development: – No built-in support for JSON-based RESTful communication (lack of a JSONListModel) – No built-in support for disconnected operations (with automatic sync upon reconnected) – No built-in cross-platform support for receiving push notifications – Issues with deployment of read-write files across platforms
  • 9. What is this talk about? ● We’ve been working on some mobile Qt development projects at IFBA over the last 1.5 years ● Such Qt disabilities has motivated us to investigate to which extent such problems can be alleviated with the use of well- thought architectures and effective tooling
  • 10. Introducing Meg = + Meg A lean dynamic QML-based architecture for Qt cross-platform mobile applications A code generator which Enables the productive creation of modular RESTful servers and Qt mobile applications
  • 11. Introducing Meg ● Implemented as a Ruby Thor-based CLI ● Templates are specified in Embedded RuBy (ERB) ● Generators are modular (Thor with modules) ● Provides a JSONListModel QML object ● Automatic download of Google Material Icons
  • 12. Introducing Meg ● Currently available templates: ● Sinatra RESTful server with modular architecture (sinatra-server) ● Ruby Sinatra RESTful service plug-in (sinatra-service- plugin) ● Simple Qt mobile app with plugin-based architecture (simple-app) ● Qt mobile RESTful app with plugin-based architecture (restful-app) ● Qt mobile RESTful client plug-in (restful-client-plugin)
  • 13. Meg – quick demo ● Installing meg: – git clone https://github.com/sandroandrade/meg.git – install ruby – run ‘gem install bundler’ – Run ‘bundle install’ – CLI is in ‘./bin/meg’
  • 14. Meg – quick demo ● Creating a simple Qt plugin-based mobile app: – ./bin/meg new SimpleApp -t simple-app ● Creating some plug-ins: – ./bin/meg generate plugin students -t basic-plugin -a simpleapp/ – ./bin/meg generate plugin teachers -t basic-plugin -a simpleapp/
  • 15. Meg – quick demo ● Creating a modular Sinatra RESTful server: – ./bin/meg new myserver -t sinatra-server ● Creating some plug-ins: – ./bin/meg generate plugin Conference -t sinatra-service- plugin -a myserver/ acronym:string name:string city:string country:string venue:string start_date:datetime end_date:datetime – ./bin/meg generate plugin Speaker -t sinatra-service- plugin -a myserver/ name:string affiliation:string shortbio:string
  • 16. Meg – quick demo ● Running the server: – run ‘rake db:migrate’ – populate database with some data – start the server: ‘ruby myserver.rb’ ● Checking the services: – curl http://localhost:4567/conferences | python -m json.tool – curl http://localhost:4567/speakers | python -m json.tool
  • 17. Meg – quick demo ● Creating a mobile Qt RESTful client: – ./bin/meg new MyApp -t restful-app ● Creating the RESTful client plug-ins: – ./bin/meg generate plugin conferences -t restful-client- plugin -a myapp -i name -c action/ic_speaker_notes acronym:string name:string city:string venue:string start_date:datetime end_date:datetime – ./bin/meg generate plugin speakers -t restful-client-plugin -a myapp -i name -c action/ic_record_voice_over name:string affiliation:string shortbio:string
  • 18. Meg – quick demo ● Qt RESTful client:
  • 19. Meg – quick demo ● Future work: – Add templates for full CRUD support – Add template for kirigami-based UI workflows – Support relationships between models – Support push notification ● Try it! Contributions welcome!