20+ million N900 application downloads from extras

It seems extras is on fire. I tried to check extras download count regularly for the last few days, to catch when it hits 20 million, and now it suddenly jumped to 

20 899 827 

downloads. 

You can stare at the statistics at maemo.org download page

This is also a reminder that you should really move your application to proper extras, instead of letting it gather dust at extras-devel. You might be surprised how quickly you can score downloads by having the application in extras; it appears quite a few Maemo users actually follow the recommendation not to enable extras-devel unless they know what they are doing.

Nokia’s developer offering refreshed

I’m sure you have seen the news already, and they are indeed big. To begin with, individuals can now be Ovi Store publishers. It will still cost you 50€ to register but once you’ve done that there are no more costs for you, Nokia will take care of all the signing costs for you. I’m sure many individual developers, students and hobbyists are getting now the answer they’ve been waiting for. Yes, developing for Symbian is possible and profitable for you as well.

But that’s not all. To sell good applications you need good development tools, and the final release of the Nokia Qt SDK 1.0 is just that. One tool, one application and UI framework, one source code and capability to build apps for both Maemo 5 and Symbian/S60 (starting with S60 3.1).

 

Nokia Qt SDK Final

 

 

The SDK includes the final release of the Nokia Smart Installer for Symbian, a tool designed to ease the distribution of Qt based applications to devices which do not have yet Qt libraries built-in. See below the installer in action.

 

 

Speaking of the Smart Installer, there is something you should know :)

The SDK was packaged with a slightly older version of the Smart Installer, so if you are using the offline installer you should make sure to query for SDK updates using the maintenance tool from SDK’s application group in Windows’ Start menu. By doing so you will be able to fetch the up-to-date version of the Nokia Smart Installer for Symbian.

 

Smart Installer Update

If you have used the online installer for the SDK then you already have the latest smart installer build, no need for an update check yet.

And that’s the end of my status report in this post. I’d like to hear what you think of these news, either here or on Twitter.

 

Nokia’s developer offering refreshed

I’m sure you have seen the news already, and they are indeed big. To begin with, individuals can now be Ovi Store publishers. It will still cost you 50€ to register but once you’ve done that there are no more costs for you, Nokia will take care of all the signing costs for you. I’m sure many individual developers, students and hobbyists are getting now the answer they’ve been waiting for. Yes, developing for Symbian is possible and profitable for you as well.

But that’s not all. To sell good applications you need good development tools, and the final release of the Nokia Qt SDK 1.0 is just that. One tool, one application and UI framework, one source code and capability to build apps for both Maemo 5 and Symbian/S60 (starting with S60 3.1).

 

Nokia Qt SDK Final

 

 

The SDK includes the final release of the Nokia Smart Installer for Symbian, a tool designed to ease the distribution of Qt based applications to devices which do not have yet Qt libraries built-in. See below the installer in action.

 

 

Speaking of the Smart Installer, there is something you should know :)

The SDK was packaged with a slightly older version of the Smart Installer, so if you are using the offline installer you should make sure to query for SDK updates using the maintenance tool from SDK’s application group in Windows’ Start menu. By doing so you will be able to fetch the up-to-date version of the Nokia Smart Installer for Symbian.

 

Smart Installer Update

If you have used the online installer for the SDK then you already have the latest smart installer build, no need for an update check yet.

And that’s the end of my status report in this post. I’d like to hear what you think of these news, either here or on Twitter.

 

Get the Nokia Qt SDK v1.0 RC

The release candidate version of the Nokia Qt SDK v1.0 is now available for download on Forum Nokia.

 

Qt SDK RC

No major features in this release but a lot of bug fixes, improvements and some component upgrades as well. For a listing of the change log, including bug fixes, see the announcement in the Qt Labs blog.

You can find more information about SDK’s features (and known issues) and for a Getting started tutorial please visit SDK’s pages on the new improved Forum Nokia web site. For more frequently updated content see SDK’s wiki page.

Download link: Nokia Qt SDK

Note: If you have Nokia Qt SDK v1.0 Beta already installed, please remove the Beta first or install in a new location.

We are of course welcoming your feedback about this product. The Forum Nokia Discussion Board is open for your comments and you can report new bugs (or check the status of the old ones) in the Qt Bug Tracker.

Get the Nokia Qt SDK v1.0 RC

The release candidate version of the Nokia Qt SDK v1.0 is now available for download on Forum Nokia.

 

Qt SDK RC

No major features in this release but a lot of bug fixes, improvements and some component upgrades as well. For a listing of the change log, including bug fixes, see the announcement in the Qt Labs blog.

You can find more information about SDK’s features (and known issues) and for a Getting started tutorial please visit SDK’s pages on the new improved Forum Nokia web site. For more frequently updated content see SDK’s wiki page.

Download link: Nokia Qt SDK

Note: If you have Nokia Qt SDK v1.0 Beta already installed, please remove the Beta first or install in a new location.

We are of course welcoming your feedback about this product. The Forum Nokia Discussion Board is open for your comments and you can report new bugs (or check the status of the old ones) in the Qt Bug Tracker.

Easy to use SMS and Messaging API to Maemo 5

TpSession, simplified Maemo5  Messaging API

There has been numerous questions and requests from developers about how to send and receive SMS with Maemo 5. There was even lot of rumours that  the API is not public. I decided to do something for issue, find out  non documented API’s and write examples how to do SMS. After starting work, i soon noticed that there is nothing secret, everything needed was already documented and it was possible to do with documented API’s but it was just a complicated and time consuming task that needs deep understanding how Telepathy Framework works. Writing just an example code expanded to project write simple to use API that allows SMS sending with just couple of lines code.

Memo Telephony and Messaging API is based on Telepathy framework . Telepathy supports many protocols, for example Cellular, SIP, IRC, GoogleTalk, Skype about you just name it. The good thing in Telepathy is also that it separates client and protocol implementations. New client protocols can be added dynamically to system. For example, in Maemo 5, you can just install IRC, Skype or many other protocols with application installer without needing any change to client applications using these services. Clients and elements implementing protocols, called as connection managers are communicating with Dbus. There is no need to link protocols to applications or no need applicatins to support protocol plugins. Telepathy allown also multiple client applications co-exist simultaneously.

Telepathy supports Python, Glib or Qt API . My decision to go wiith Telepathy-Qt4 was clear, Qt is the toolkit in Maemo that has the future. It should be first choice to anyone starts new Maemo applications today. 

After I started my Simplification API project, i got involved QtMobility port for Maemo 5. Qt Mobility is full cross platform framework that covers much more than just SMS and messaging. It supports also as example system information, sensors, location, contacts, configuration variable storage, multimedia etc. QtMobility shoud be mumber one choice to access these system services, it has continuity and it is already fully cross platform. QtMobility early Beta or Technology preview for Maemo 5 will be released very soon but it has very limited functionality in SMS/messaging area and there is not yet telephony API at all. It will have full functionality and API set in the near future.  I ended using my TpSession library implementing SMS/IM Functionality for Maemo 5 for QtMobility.

I decided to go on publishing  my TpSession as it is, stand alone library because there is immediate need for it and it allows easy to access to full Telepathy-Qt4 feature. TpSession is community supported API, it is not part of official Maemo content. It is available from Extras-dev repository or you can just take source, link it statically to you code or even use it as "copy and paste" example code how to use Telepathy-Qt4. Teletaphy-Qt4 is also in extras-devel and it will be part of Maemo 6.

How simple is TpSesison

If you just want send a SMS, two lines are needed

TpSession* tps =new TpSession("ring",true);
tps->sendMessageToAddress("ring",”+555666777”,”Telepathy session is for you”);

If you should also receive one, you need just connect one Signal-Slot pair and handle signal 

connect(tps,SIGNAL(messageReceived(const Tp::ReceivedMessage &,TpSessionAccount *)),
            SLOT(onMessageReceived(const Tp::ReceivedMessage &,TpSessionAccount *)));

..

void TestProg::onMessageReceived(const Tp::ReceivedMessage &msg,TpSessionAccount *acc)
{
  qDebug() << "MessageReceived " << msg.text() << "from " << msg.sender()->id();
}

With TpSession you can do also many other things like get indication of incoming call, fetch list of your contacts from IM services, check their presence status etc.

TpSession is at the monent early 0.1.2 version, it works but there is work to do. It is Open, Open Source LGPL project. If you wold like to see new fearteres on it, you can join the project and contribute code.

 

 

 

 

 

 

 

Hildonized applications for Maemo 5 with Qt4.5.3 and Qt4.6

Implementing User interface that looks and feels like Native Maemo 5 Hildon UI needs more than just basic features like Input method or Hildon styles.  In Maemo version before Maemo 5 this basic set was sufficient and most of User Interface was implemented with stantard widgets familiar from desktop.

Maemo Qt follows same path. Qt for Maemo 4 had just this minimun Maemo feature set, Input method, Maemo Menus and Maemo Styles. Maemo 5 had complete UI style renewal. All UI is now finger operable. UI Design has been very successful in this goal. I don’t remember when I last time used stylus with M900 despite it has been a long time main devive for my daily use.

The basic widget set from desktop with minimum Maemo additions is no longer sufficient for good Hildonized UI for Maemo 5. The first Maemo 5 Qt released February 2009 was about direct Maemo 4 Qt port for Maemo 5 Alpha SDK. Following releases added more and more Maemo 5 specific UI components. New Maemo 5 app menus, finger scrollable areas, stacked windows, some widgets needed more modifications than was possible to do with just applying style.

Qt 4.5.3 for Maemo 5 with this enhanged Maemo 5 support was relased as beta together with Maemo 5 SDK 1.0 version just before Maemo Summit 2009. Technology preview version of Qt4.6 for Maemo 5 as released about same time. The 4.6 version was in this time just pre-alpha version with just minimum Maemo support, just like Qt4.5.3 was in February.

Now Maemo Qt4.5.3 is settling up for it’s final version for PR1.1 release and Qt4.6 is soon ready it’s first alha release.

Before this Q4.6 pre-alpha release it was not possible to make any porting guide how to implement Hildonized applications and how nsure maximum portability from 4.5.3 to 4.6. My Maemo Summit 2009 presentation just introduced basic elements needed to implement Hildon style UI with Qt4.5.3. For Maemo Developer days in Copenhagen in November,  I had enhanced version of this presentation with many coding examples but porting guide to Qt4.6 was still missin because some important API’s for 4.6 was not yet written.

After Qt4.6 pre alpha became available, I updated document to current version, now it shows API’s with example code so that it works with both Maemo Qt4.5.3 and Qt4.6.  You can find download here maemo_qt_devday_2009_1.2.pdf and dialogtest2.tgz

Short summary: To make Qt Application compatible with Maemu 5 UI you need redesign some parts of UI. Input method and Hildon styles takes care that basic functionality works. In Maemo 5, there is no more hierarchical menus but app menus that can be used with finger. You just need to design flat menu layout with few items that they fit on screen. Menus do not add any new API, you just need to remember to make flat menus. Dialogs should be made as finger scrolled list, not desktop style forms. Remember also that Hildonized widgets are much larger than desktop counterparts. Finger scroll API differs little bit between 4.5.3 and 4.6. You should put one line of code inside #ifdef Q_WS_MAEMO_5 to make your code compatible with both versions.  Stacked windows are other key element in Hildon UI. Qt4.5.3 used Multiple QMainWindow instances to create automatically stacked windows. In Qt4.6 you need explicitly set Stacked window atribute. Once again, one line #ifdef solves the problem. My example program is made so that it compiles and works with both Qt versions.

You can safely install Qt4.5.3 and Qt4.6 to same Scratchbox target and in same device. To compile for 4.5.3, just qmake;make and compile for 4.6 /opt/qt4-maemo5/bin/qmake;make .

Happy hacking with Qt!

Build without an SDK, test without a device

How many SDKs do I need? Which SDK is best for me?

For a newcomer to the Symbian development world those are among the first questions asked. There are many S60 SDKs on offer, some with feature packs and plugins, some with compiler specific binaries and on top of that many plug-ins. Quite a lot to handle and figure out and nobody likes having all possible SDKs installed.

So what will happen now that Qt is added to the picture? I can design my app using Qt for Windows (or Linux, or Mac) and, according to the "code once, compile anywhere" promise I should be able now to compile this application for Symbian and Maemo devices, with minimal changes. But that means that now I need to install at least one Symbian SDK for building, or a Maemo one, and I should have at least one smartphone for testing. Or do I?

Yes, probably one will have an SDK installed and use its emulator for testing some really complicated solutions, with Symbian components part of the design. And yes, nothing can really replace hand-on-testing. But for simple use cases and for getting started trials one possible solution could be building and testing in the cloud. What you need is an IDE plugin, web hosted SDK and build tools and Forum Nokia’s Remote Device Access solution, all mixed together in a rather simple build, deploy and test solution.

Here’s a live demo (boring parts speeded-up a bit) of such a solution:

 

 

So, what do you think? Do you like the idea? Would you use it for your projects?