2011-12-30

HelloWorld for Nemo Mobile using QtSDK

You can use QtSDK 1.1.4 for developing apps to Nemo Mobile. I just wrote HelloWorld-tutorial at Nemo-wiki. Since I could not attach images to wiki text, I'm adding them here with brief descriptions.

Create a new project

Type for your new app should be:

Your project should have both Harmattan and Simulator target:

Run in simulator

Select Qt Simulator as target:

And run.

In the simulator, select N9 as skin and make sure that Harmattan components are active:

Restart simulator and you app should run.

Run in device

Select Harmattan as active target for the project on the left sidebar

And then just follow the rest of the instructions from wiki under: "Running on device".

2011-12-29

HeliumReborn for Nemo

Lately, I've been using some time to port Helium Mobile -browser on top Qt Quick Components on Nemo Mobile. There was few reasons for this, but main reason was to get virtual keyboard to work better with the app.

I started first from the existing codebase and tried to modify it. It was somewhat difficult as the existing codebase included (some) support for Maemo5, Symbian, and MeeGo. Quite quickly I decided that it would probably be easier to start from fresh project and only add what I needed. This proved to be good approach and now after about 5 days of work I have something that I'm happy with. Virtual keyboard really does work better with the new codebase and I think application UI looks nicer now. Also, the code now uses booster, which should help startup a bit. New code includes all the stuff that Helium has had and even a bit more. I'm calling the new version of the app HeliumReborn.

QtSDK 1.1.4 is really what made this rapid change possible. It now includes Harmattan Qt Quick Componts in the Qt Simulator. This meant that I could quickly experiment with the desktop how my changes work (since we have the same components in Nemo). The components worked pretty much the same way on real devices (both on N950 with Nemo and N9 with Harmattan) and I could ran the same arm binaries in both!

My target is to push the stuff back to Helium upstream project and then update Helium in the Nemo. However, this might take some time. In the meanwhile you can test this out if you have a device with Nemo Mobile. To install it open terminal application and then install with the following steps:

1) Change to root (password is "meego") with command:
su

1) Add my repository (the following should just one one line):
zypper addrepo http://repo.pub.meego.com/home:/vesku/CE_MW_MTF_armv7hl/ veskus_helium

3) And finally install with:
zypper install heliumreborn

HeliumReborn is now installed in the application grid (in the second page). The old Helium browser is still in the shortcuts bar.

In case you are interested about the sources of HeliumReborn, they are available here until I get the changes properly upstreamed.

2011-12-02

Helping Nemo Mobile

Nemo Mobile has progressed nicely for the last weeks. We now have most of the needed infrastructure in place for the project and the quality is improving. One of the most important infrastructure improvements was that the project now has a proper bugzilla in place at https://bugs.nemomobile.org/.

We have a small group of very active people contributing to the project. There is also a bigger group of people that is interested about Nemo and perhaps trying out images, but not yet contributing much. Contributions to project have always been welcome, but contributing has not been so easy, because a lot basic things have been missing both in project infrastructure and releases. Since the basics are now in place, I think now the project would be ready to grow. We would really like to see more contributions.

There are many areas where Nemo needs help. One of the easiest things to do is just testing the images and filing bugs to Nemo Bugzilla. It is really important that more people start filing bugs, since the development team is small and cannot test all that needs to be tested. Project is not yet using bugzilla to track all new stuff to be developed, but project is moving to that direction. So if there is an improvement idea or new feature you would like to see, feel free to file it to bugzilla.

Nemo-wiki needs a lot of improving. Currently, wiki just gives minimal information what Nemo Mobile is all about. Wiki should contain a lot more information like detailed documenting how to install Nemo for various devices, how to develop for it, what Nemo images contain, where is upstream projects of various components, how to file bugs, how to contribute code, and a lot more. Even small things like fixing the language helps, since many of the wiki-contributors (like me) do not speak English as our native language. It is a wiki, so anyone can edit. Registration is required, because we have had some problems with spamming.

One way of contributing is building or porting new apps for Nemo. In my opinion, easiest way to develop an application for Nemo is to use Qt SDK and develop an application using Qt Components targeting N9. Harmattan developer documentation is in big parts valid also for Nemo development. In many cases even the same binaries work in both on N9 with Harmattan and N900/N950 with Nemo Mobile. Nemo is so compatible with Harmattan, because both use the same compiler, both target the same ARM instruction set (ARMv7 hard float), and the most relevant libraries of recommended public Harmattan API are also included in Nemo. So if your application uses OpenGL ES, Qt, Qt Mobility, Qt Quick and Nokia MeeGo Qt Components it is quite likely that it runs on both.

Other options for application development is either to use community OBS or to use MeeGo SDK 1.2. The OBS is the way you can use any library that Nemo has and you can be sure that your app is binary compatible, since OBS is what is used for building the packages in Nemo. Only problem is that using it requires quite a lot of learning and it is not really optimized tool for application development. MeeGo SDK would otherwise be good, but it does not include support for Nokia MeeGo Qt Components, which are needed for UI development.

Fixing bugs in Nemo releases can be challenging, but it is also very interesting. You will learn a lot on how Nemo works while fixing bugs. This is a big topic, worthy of its own blog post some day. In short, if you have an idea how to fix a bug, and you have some knowledge of OBS, feel free to assign a bug to yourself and try to fix it. You will need to know how to work with OBS to make and get your fix included in Nemo. Nemo packages are built in community OBS. Project structure is explained in the Nemo-wiki. It would be also good idea to notify people on #nemomobile (@freenode) IRC-channel that you have started working on the bug. They will have good ideas where to start and how to proceed. (I am usually there under nick: veskuh).

There is also plenty of other things where help is needed and all contributions are welcome!