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".


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:

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.


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!


A Brief History of Nemo Mobile

I've been working on open source MeeGo for about year. When I first got involved in MeeGo most of the people developing it were either Nokia or Intel employees. This meant that even though bugs and source code was open, a lot of the communications and decision making happened behind closed doors. Sometimes there were business reasons for this, but many times it just happened due to old bad habits.

Last spring we formed MeeGo Developer Edition for N900 -project from Nokia's people that were contributing to open source software in MeeGo. Since company's strategy had changed there was no longer business reasons for secrets. We wanted to work in fully open way. We decided to have all the meetings in the public IRC, have the discussions in IRC, promote contributions from community, and be as responsive as possible in public bugzilla. We wanted to have community involved.

I have to admit that it was hard at first to get rid of old bad habits. I had gotten used to the ways in you communicate within big corporation. It took some time, but I got used to using IRC, wikis, bugzilla, and mailing-lists as main communication channels. In fact, now it feels quite good that all the information is out there and anyone with good ideas can improve the stuff we have done and are planning to do.

In the summer community was participating in the project more and more. Our new attitude must have played a big part. Project was now more easily approachable. Contributions happened in all around the project. People were testing the releases and filing bugs, fixing bugs, developing apps, maintaining wiki's, and many other things. This was one of the reasons why we decided to rename the Developer Edition to Community Edition.

In the fall it was time for Nokia's project managers to step down from the driver's seat. We opened the governance. Community proposed members for steering group and based on merit's of candidates they were appointed. I got a seat as Nokia representative, since the company is still supporting the activity.

After Intel's Tizen news the steering group decided that it would be better to find a new name for the project, and to make sure that the community can work on the project even without big corporations backing up meego.com. Steering group chose name from proposals in the mailing list. Nemo Mobile was born.

We have now been working on Nemo for almost two months. We had to do quite big changes in the beginning so that project could be developed independently from MeeGo.com. We did a lot of changes on infrastructure. We also rebased Nemo on top of a small meego-dervived base distribution called Mer. The most disruptive changes should now be behind and we can again concentrate on how to improve system so that real users will see benefit.

Now the progress is becoming visible again. Latest release contains a lot of good stuff: SMS, Dialer, and People apps are again included, Flickr and maps are promising new apps, and I really like the Darko theme you can now choose from theme control panel. I see increased interest toward the project. There are also new people contributing to the project. After some rougher times things are starting to look good again.