×
Namespaces

Variants
Actions
(Difference between revisions)

Wordpress developer story

From Nokia Developer Wiki
Jump to: navigation, search
tasala (Talk | contribs)
(Developer story: Wordpress Qt application for Nokia devices)
hamishwillee (Talk | contribs)
m (Text replace - "Category:MeeGo" to "Category:MeeGo Harmattan")
 
(21 intermediate revisions by 5 users not shown)
Line 1: Line 1:
= Developer story: Wordpress Qt application for Nokia devices =
+
{{ArticleMetaData <!-- v1.2 -->
 +
|sourcecode= <!-- Link to example source code e.g. [[Media:The Code Example ZIP.zip]] -->
 +
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 +
|devices= <!-- Devices tested against - e.g. ''devices=Nokia 6131 NFC, Nokia C7-00'') -->
 +
|sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Qt SDK 1.1.4]) -->
 +
|platform= <!-- Compatible platforms - e.g. Symbian^1 and later, Qt 4.6 and later -->
 +
|devicecompatability= <!-- Compatible devices e.g.: All* (must have internal GPS) -->
 +
|dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 -->
 +
|signing= <!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer -->
 +
|capabilities= <!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. -->
 +
|keywords= <!-- APIs, classes and methods (e.g. QSystemScreenSaver, QList, CBase -->
 +
|language= <!-- Language category code for non-English topics - e.g. Lang-Chinese -->
 +
|translated-by= <!-- [[User:XXXX]] -->
 +
|translated-from-title= <!-- Title only -->
 +
|translated-from-id= <!-- Id of translated revision -->
 +
|review-by= <!-- After re-review: [[User:username]] -->
 +
|review-timestamp= <!-- After re-review: YYYYMMDD -->
 +
|update-by= <!-- After significant update: [[User:username]]-->
 +
|update-timestamp= <!-- After significant update: YYYYMMDD -->
 +
|creationdate= 20100426
 +
|author= [[User:Jros]]
 +
}}
 +
[[Category:Porting]][[Category:Qt]][[Category:Qt Quick]][[Category:Case Study]]
 +
This article describes the Wordpress porting story from iPhone to Qt on Nokia devices.
  
''This article describes the porting story from iPhone to Qt on Nokia devices''
+
[[File:wordpress nokia screenshot.png|thumb|Wordpress for Nokia devices was ported from an iPhone application]]
  
[[File:wordpress_nokia_screenshot.png|thumb|Wordpress for Nokia devices was ported from an iPhone application]]
+
Wordpress is the number-one open-source blogging tool, used on millions of sites by tens of millions of people every day. A Wordpress application for Nokia devices is being developed on Qt technology to provide support for both Symbian and Maemo™ platforms.
  
[[File:wordpress_nokia_akos.jpg|left|frame|Antti Kosonen]] Wordpress is the number-one open-source blogging tool, used on millions of sites by tens of millions of people every day. A Wordpress application for Nokia devices is being developed on Qt technology to provide support for both S60 and Maemo™ platforms.
+
[[File:wordpress nokia akos.jpg|Antti Kosonen]]  
  
 
Antti Kosonen from the Wordpress Nokia app development group has participated in development since December 2009 — right from the very first line of code. The basis for development has been the iPhone application that is now being ported to Qt.  
 
Antti Kosonen from the Wordpress Nokia app development group has participated in development since December 2009 — right from the very first line of code. The basis for development has been the iPhone application that is now being ported to Qt.  
Line 11: Line 34:
 
Antti summarises the open-source development project in two different phases:  
 
Antti summarises the open-source development project in two different phases:  
  
‘To make a long story short, it is easy to keep the original structure of the applicationwhen porting from iPhone to Qt. You can directly rewrite the core code to Qt just by looking at the original source’.  
+
‘To make a long story short, it is easy to keep the original structure of the application when porting from iPhone to Qt. You can directly rewrite the core code to Qt just by looking at the original source’.  
  
 
He continues, ‘But the user interface framework for iPhone is so device-specific that a complete rewrite has been the only solution. This means that the main efforts needed for porting are focused on the UI’.  
 
He continues, ‘But the user interface framework for iPhone is so device-specific that a complete rewrite has been the only solution. This means that the main efforts needed for porting are focused on the UI’.  
Line 18: Line 41:
 
   
 
   
 
The Wordpress Qt application for Nokia devices is created by using standard UI widgets on top of the graphics view. Despite the need for a rewrite, Antti has been surprised at how fast the UI development has been with Qt.
 
The Wordpress Qt application for Nokia devices is created by using standard UI widgets on top of the graphics view. Despite the need for a rewrite, Antti has been surprised at how fast the UI development has been with Qt.
 +
 +
[[File:wordpress quote 2.png|right]]
  
 
‘Compared to many other platforms, tweaking of the UI is incredibly quick. You can set values, launch it on the desktop, and, if it looks good, add to the device style sheet and deploy for verification’.  
 
‘Compared to many other platforms, tweaking of the UI is incredibly quick. You can set values, launch it on the desktop, and, if it looks good, add to the device style sheet and deploy for verification’.  
  
[[File:wordpress_nokia_stats.png|thumb|The stats view was developed completely on the desktop without debugging on the device]]
+
[[File:wordpress nokia stats.png|thumb|The stats view was developed completely on the desktop without debugging on the device]]
  
 
A great example of this Qt tool chain is the stats view of the Wordpress app. This view was developed entirely without debugging it on the device. It was developed to scale properly on different sizes and fine-tuned with platform-specific style sheets only at the very end.  
 
A great example of this Qt tool chain is the stats view of the Wordpress app. This view was developed entirely without debugging it on the device. It was developed to scale properly on different sizes and fine-tuned with platform-specific style sheets only at the very end.  
Line 35: Line 60:
 
‘But there will always be platform-specific issues, too’, Antti continues. ‘For example, the softkey menu in S60 has no similar implementation in Maemo, so it needed to be replaced with its own button in non-S60 environments. This is, of course, related to how strongly you are willing to adapt to the platform's default user experience’.  
 
‘But there will always be platform-specific issues, too’, Antti continues. ‘For example, the softkey menu in S60 has no similar implementation in Maemo, so it needed to be replaced with its own button in non-S60 environments. This is, of course, related to how strongly you are willing to adapt to the platform's default user experience’.  
  
[[File:wordpress_nokia_app_design.jpg|thumb|Good application design reduces the effort needed for porting]]
+
[[File:wordpress nokia app design.jpg|thumb|Good application design reduces the effort needed for porting]]
  
 
Because of the differences in target platforms, such as screen size and input methods, application design has a major role in the efforts required for creating cross-platform deliveries. Simple UI design can reduce the workload noticeably.  
 
Because of the differences in target platforms, such as screen size and input methods, application design has a major role in the efforts required for creating cross-platform deliveries. Simple UI design can reduce the workload noticeably.  
  
‘Now that we are implementing a fullscreen mode for the application, the softkey issue no longer applies, and there will be one less if-def in the source’.  
+
‘Now that we are implementing a full-screen mode for the application, the softkey issue no longer applies, and there will be one less if-def in the source’.  
  
 
'''Custom solutions'''
 
'''Custom solutions'''
Line 48: Line 73:
  
 
‘We are still working on the issue, but were able to make it smoother by limiting the thumbnail rendering only to visible images. I hope to solve [the problem] without native implementation, because of the risk of increasing deployment complexity’.  
 
‘We are still working on the issue, but were able to make it smoother by limiting the thumbnail rendering only to visible images. I hope to solve [the problem] without native implementation, because of the risk of increasing deployment complexity’.  
 +
 +
[[File:wordpress quote 1.png|right]]
  
 
Still, native code might be the appropriate solution for some issues.  
 
Still, native code might be the appropriate solution for some issues.  
  
‘When we were running the first versions on devices, there was an issue raised with S60 3rd Edition, Feature Pack 1 devices. They kept asking for an internet access point for every network request’, Antti explains.  
+
‘When we were running the first versions on devices, there was an issue raised with S60 3rd Edition, Feature Pack 1 devices. They kept asking for an Internet access point for every network request’, Antti explains.  
  
 
‘We implemented an S60 native functionality to provide a solution to this. It is used only for S60 3rd Edition, FP1 devices, and it works just great’.  
 
‘We implemented an S60 native functionality to provide a solution to this. It is used only for S60 3rd Edition, FP1 devices, and it works just great’.  
  
'''Benefitting from the built-in features'''
+
'''Benefiting from the built-in features'''
  
Although there are no plans for localised versions of the Wordpress application for Nokia devices, the source already includes support for it. Each of the strings has been described in the code with a simple object, to enable listings of language-dependent strings inside the project. The listing results in an XML file, very similar to one in Xcode.  
+
Although there are no plans for localized versions of the Wordpress application for Nokia devices, the source already includes support for it. Each of the strings has been described in the code with a simple object, to enable listings of language-dependent strings inside the project. The listing results in an XML file, very similar to one in Xcode.  
  
 
In general, Antti has been happy with the maturity of Qt.  
 
In general, Antti has been happy with the maturity of Qt.  
Line 65: Line 92:
 
----
 
----
  
Read more on the developer's blog at http://dev.nokia.wordpress.org or take a tour and compare source codes at http://nokia.trac.wordpress.org (Nokia-device source) and http://iphone.trac.wordpress.org (iPhone source)
+
Read more on the developer's blog at http://nokiadev.wordpress.com/ or take a tour and compare source codes at http://nokia.trac.wordpress.org (Nokia-device source) and http://ios.trac.wordpress.org/ (iPhone source)
 +
 
 +
----
 +
----
 +
To proceed with porting, check the full porting offering (from iOS/iPhone, Android and Windows Phone) available at http://www.developer.nokia.com/Porting, including
 +
* API Mapping tool: http://www.developer.nokia.com/Develop/Porting/API_Mapping/
 +
* Porting to Qt (from iOS/iPhone, Android and Windows Phone) library: http://www.developer.nokia.com/Resources/Library/Porting_to_Qt/
 +
* Porting code examples: http://www.developer.nokia.com/Develop/Porting/Code_examples/
 +
* Developer experience videos: http://www.developer.nokia.com/Develop/Porting/Videos/
 +
 
 +
<br>
 +
See also [http://www.developer.nokia.com/Resources/Library/Symbian_Design_Guidelines/ Symbian Design Guidelines] and [http://www.developer.nokia.com/Resources/Library/Design_and_UX/ Nokia Developer Design and User Experience Library] for ideas on how to achieve the best possible user experience when porting your application for Nokia devices.
 +
 
 +
 
 +
----
 +
Copyright © 2010 Nokia Corporation. All rights reserved.
 +
Nokia, Nokia Developer, and Maemo are registered trademarks of Nokia Corporation. Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. Apple, iPhone, iPod and MacBook are trademarks or registered trademarks of Apple Inc. Android is a trademark of Google Inc. Other product and company names mentioned herein may be trademarks or trade names of their respective owners.[[Category:MeeGo Harmattan]] [[Category:Symbian]]

Latest revision as of 13:58, 13 June 2012

Article Metadata
Compatibility
Platform(s):
Symbian
Article
Created: User:Jros (26 Apr 2010)
Last edited: hamishwillee (13 Jun 2012)

This article describes the Wordpress porting story from iPhone to Qt on Nokia devices.

Wordpress for Nokia devices was ported from an iPhone application

Wordpress is the number-one open-source blogging tool, used on millions of sites by tens of millions of people every day. A Wordpress application for Nokia devices is being developed on Qt technology to provide support for both Symbian and Maemo™ platforms.

Antti Kosonen

Antti Kosonen from the Wordpress Nokia app development group has participated in development since December 2009 — right from the very first line of code. The basis for development has been the iPhone application that is now being ported to Qt.

Antti summarises the open-source development project in two different phases:

‘To make a long story short, it is easy to keep the original structure of the application when porting from iPhone to Qt. You can directly rewrite the core code to Qt just by looking at the original source’.

He continues, ‘But the user interface framework for iPhone is so device-specific that a complete rewrite has been the only solution. This means that the main efforts needed for porting are focused on the UI’.

Rapid UI development

The Wordpress Qt application for Nokia devices is created by using standard UI widgets on top of the graphics view. Despite the need for a rewrite, Antti has been surprised at how fast the UI development has been with Qt.

Wordpress quote 2.png

‘Compared to many other platforms, tweaking of the UI is incredibly quick. You can set values, launch it on the desktop, and, if it looks good, add to the device style sheet and deploy for verification’.

The stats view was developed completely on the desktop without debugging on the device

A great example of this Qt tool chain is the stats view of the Wordpress app. This view was developed entirely without debugging it on the device. It was developed to scale properly on different sizes and fine-tuned with platform-specific style sheets only at the very end.

‘Tools are excellent for this purpose’, says Antti. ‘We were able to develop UI views from mock up to end product using only Qt Creator’.

Minimizing if-defs

The Wordpress application is developed with maximum compatibility in mind. According to Antti, the amount of if-defs in the source are kept as low as possible.

‘Yes, Qt is cross-platform to some extent’, he says. ‘As long as classes and functions start with the letter Q, they will most probably work on any device.

‘But there will always be platform-specific issues, too’, Antti continues. ‘For example, the softkey menu in S60 has no similar implementation in Maemo, so it needed to be replaced with its own button in non-S60 environments. This is, of course, related to how strongly you are willing to adapt to the platform's default user experience’.

Good application design reduces the effort needed for porting

Because of the differences in target platforms, such as screen size and input methods, application design has a major role in the efforts required for creating cross-platform deliveries. Simple UI design can reduce the workload noticeably.

‘Now that we are implementing a full-screen mode for the application, the softkey issue no longer applies, and there will be one less if-def in the source’.

Custom solutions

One of the single most difficult challenges for Antti in the Wordpress Nokia app project has been the issue of the thumbnail grid. The original feature was developed with the iPhone native framework, but Qt on Symbian does not currently provide similar features to fetch image thumbnails.

‘We faced the fact that rendering of each image thumbnail takes 0.2 seconds. That does not sound like too much for a single image, but 100 images will cause a poor user experience’, Antti notes.

‘We are still working on the issue, but were able to make it smoother by limiting the thumbnail rendering only to visible images. I hope to solve [the problem] without native implementation, because of the risk of increasing deployment complexity’.

Wordpress quote 1.png

Still, native code might be the appropriate solution for some issues.

‘When we were running the first versions on devices, there was an issue raised with S60 3rd Edition, Feature Pack 1 devices. They kept asking for an Internet access point for every network request’, Antti explains.

‘We implemented an S60 native functionality to provide a solution to this. It is used only for S60 3rd Edition, FP1 devices, and it works just great’.

Benefiting from the built-in features

Although there are no plans for localized versions of the Wordpress application for Nokia devices, the source already includes support for it. Each of the strings has been described in the code with a simple object, to enable listings of language-dependent strings inside the project. The listing results in an XML file, very similar to one in Xcode.

In general, Antti has been happy with the maturity of Qt.

‘Developing applications for Qt is fun’, he says. ‘The language is straightforward and easy to adapt to’.


Read more on the developer's blog at http://nokiadev.wordpress.com/ or take a tour and compare source codes at http://nokia.trac.wordpress.org (Nokia-device source) and http://ios.trac.wordpress.org/ (iPhone source)



To proceed with porting, check the full porting offering (from iOS/iPhone, Android and Windows Phone) available at http://www.developer.nokia.com/Porting, including


See also Symbian Design Guidelines and Nokia Developer Design and User Experience Library for ideas on how to achieve the best possible user experience when porting your application for Nokia devices.



Copyright © 2010 Nokia Corporation. All rights reserved. Nokia, Nokia Developer, and Maemo are registered trademarks of Nokia Corporation. Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. Apple, iPhone, iPod and MacBook are trademarks or registered trademarks of Apple Inc. Android is a trademark of Google Inc. Other product and company names mentioned herein may be trademarks or trade names of their respective owners.

This page was last modified on 13 June 2012, at 13:58.
201 page views in the last 30 days.