Showing posts with label Maemo. Show all posts
Showing posts with label Maemo. Show all posts

Ovi Store Requirements vs. Extras Testing QA

If you want to publish your applications on Ovi Store for Maemo 5, you have to fulfill certain criteria for the package to be accepted. The technical ones are listed in the document Maemo™ 5 Applications: Ovi Store Entry Requirements. Here are some problematic entries that were not clear to me in the beginning (coming from Extras QA and a Debian-based background):

  • The file must be named myapplication_1_0_1.deb (for an application that is called "myapplication"). Interesting factoid: The version number must include three digits (one can interpret that as "no less and no more"). That's different from the Debian standard naming of myapplication_X_armel.deb (where "X" can be any format version number, and "armel" specifies the target architecture). So if you have packaged your application, make sure to rename the file after upload.
  • The relation of the file size of /opt compared to the files in /usr must be greater than 1:80. Here's an example from That Rabbit Game: /usr contains two files: The icon (7kB) and the .desktop file (128b) and /opt contains one file: The binary (658kB). However, the difference between these two is not a factor of over 80 when compared with "du -sh" (depending on the filesystem settings).

With that said the structure of the testing criteria in that document is very clear and (apart from some problems with the detailed specs), everything is understandable, well thought-out and can be tested by following the instructions in the document. Some of these could be use to "formalize" the Extras-Testing QA checklist here on Maemo.org or at least provide an easy-to-follow guide for carrying out the basic tests.

New packages in Extras-Testing: gPodder 2.12, TV out control widget

gPodder 2.12 "The Odyssey of Flight 33" has been released, which is purely a bugfix release for those of you who found an empty podcast list after skipping a gPodder version during upgrades (this release fixes both the initial problem and tries to recover databases for which migration has failed). The updated package is also available in Diablo Extras already for N8x0 users. Please test and vote for gPodder 2.12-1 in Extras-Testing!

A new desktop widget written by Ville Syrjäl has been packaged for Extras. TV out control lets you control advanced features of the N900's TV out such as aspect ratio and scaling - those settings are not accessible from the official control panel applet, which is closed source (vote for that bug if you'd like to see it open sourced and improved through the Community SSU). Please test and vote for the TV out control widget in Extras-Testing!

New tutorial: PySide/QML on MeeGo

In addition to my old PySide tutorials, there is now a proper PDF guide for PySide development on MeeGo available. Except for packaging, all steps apply to Maemo as well, and this is the document that includes the first gPodder QML UI code example (the final gPodder QML UI will be totally different and "much cooler", though).

As part of the new year's cleanup, I also dug out the old MTF UI demo of gPodder and put its source online here - for third party applications, QML is now the preferred UI over MeeGo Touch, so this might not be of much use for you now, but maybe somebody can put it to good use.

That Rabbit Game 1.2 is now available for Maemo 5

I've blogged about it already, and even showed some code during an Interview at Nokia World, but there have not been any releases of That Rabbit Game so far, mostly due to Ovi Store QA not understanding what Optification means and requesting that the version number of the application appears somewhere in the app UI (after 15 days in QA). I've made the requested changes, added scoring and pushed new releases (of version 1.2) for both Symbian and Maemo 5 to Ovi QA.

Until the game gets published on Ovi, I decided to release packages on the website so you can download and enjoy the game right away - and maybe even provide some feedback. Please don't mirror/redistribute the packages, but link directly to the website. Download That Rabbit Game for Maemo 5!

Controls are via accelerometer (to tilt the rabbit head left/right) and via touchscreen (tap to flap your wings - the longer you tap, the harder the wings flap). The goal is to lose 10 coins in 90 seconds by getting shot 10 times. After that, the next goal is to lose the 10 coins in as little time as possible. Yes, you control the rabbit head, and not the crosshairs.

Updates and changes will be announced via @thatrabbitgame on Twitter, so follow it and tell your friends. Enjoy!

The Qt promise and what Maemo 5 needs

(tl;dr: Nokia should provide updated Qt packages as official SSU for Maemo 5.) Before I start, here are some facts (correct me if I'm wrong):

  • The N900 runs the Maemo 5 operating system
  • Maemo 5 received some updates (the latest one being PR1.3)
  • We don't really expect PR1.4 to come out any time soon, if at all
  • The MeeGo Handset images from meego.com are inferior to Maemo 5 and not a replacement (and never will be)
  • The MeeGo operating system on the first Nokia MeeGo handset will have a proprietary UX and proprietary apps, and won't be available for the N900

In summary, it means: We are stuck with Maemo 5 on the N900. And that is a good thing! Lots of useful apps, a helpful community (if you subtract the trolls) and a polished OS. Sure, there's room for improvement, and lots of open bugs that should be fixed, but that's another issue (which will ideally be solved by open sourcing closed components with bugs that Nokia isn't interested in fixing anymore and by the Community SSU). This one is about Qt.

Two days ago, an e-mail was sent to maemo-community, proposing a "community service pack", which basically is a big pile of workarounds. Read my response for some initial thoughts.

When Qt arrived on Maemo 5, the promise was two-fold:

  • Write your apps in Qt and you're ready for MeeGo (apps written now will run on the platform released in the future)
  • Maemo 5 gets Qt support, so MeeGo apps will run on the N900 (apps written in the future will run on the platform released now)

It turns out that the first one will probably hold true (surely with QML, maybe even with QWidget), while the second one is doubtful, as Maemo 5 has only got Qt 4.7.0 through the official channels (PR1.3), with no real official update in sight. If you use QML, use QtQuickCompat as workaround ("Qt Qml plugin that reregisters all “Qt 4.7” types in the “QtQuick 1.0” namespace … useful if you’re forced to stay with 4.7.0 (e.g. on N900), but still want to use the new namespace.").

There is also a real bug (yes, a bug!) in Qt 4.7.0 on the N900, and the fix isn't released as update - it's a new package: libqt4-bearer-hotfix ("This is a hotfix for the broken ICD package in Qt 4.7.0. It can be removed once Qt mobility 1.1 is released."). Now, the proposed "Community service pack" would combine all these fixes into a single dependendable metapackage (yes, a new one). It becomes the "Unbreak my Qt" feature that every app developer has to depend on and specify in the packaging.

This is wrong! No developer targetting MeeGo who has not heard about Maemo 5 will go through all those ugly workarounds and spend a week fixing things up for Maemo 5 just so that the app works. Now imagine what would happen if the first MeeGo device also introduces such kludges once it falls out of its support life cycle. Or what if the problems on Symbian are similar, and developers have to special-case things there. Not only for Symbian^3, but also for S60v5? Fragmentation.

How to avoid fragmentation? Simple: Provide Qt as a "feature" with a quicker release cycle that can be updated every month if need be. Provide Qt updates also for operating systems that don't get updates for the OS anymore. Here's my proposal:

  • Provide SSU updates for Maemo 5 for Qt (and Qt Mobility) through official channels (that's the important part here!)
  • A new Qt (and Qt Mobility) release should be available on all platforms (Maemo 5, S60v5, Symbian^3, MeeGo) at the same time through official (end-user approved) channels
  • Apps targetting stores and repositories (Maemo Extras, Ovi Store, MeeGo Apps/Downloads) should be able to depend on the latest Qt (and Qt Mobility) version

Without that, you'll get fragmentation similar to Android: The 1.5, 1.6, 2.1 versions are similar to Qt 4.6, Qt 4.7.0 and Qt 4.7.1 (for example). Again, you don't need to update the OS, just update the framework - through official channels!

PySide/QML tutorials online, workshop next Sunday

To get myself accustomed to PySide UI development using Qt Quick (aka QML) and to check out what works already and what does not, I've experimented with creating some common elements that I'd use in an application (i.e. a QML version of gPodder - a blingy demo already exists) and decided to share my experiences and results as tutorials.

Here are all the tutorials in their current state:

Screenshots are available on Flickr:

I'd like to get some feedback on whether or not the tutorials worked for you and were helpful and what else you would like to see. You can try out all the examples on your N900 today! Just install python-pyside and python-qtmobility (for the last example) from Extras-Devel and copy the examples from the Wiki. The usual disclaimers for software in Extras-Devel apply.

In related news, there will be a PySide/QML workshop at the December meeting of the Python User Group Austria, so if you happen to be in or around Vienna on Sunday, 2010-12-12, stop by at the Metalab and meet fellow Pythonistas.

gPodder 2.10 for Maemo 4 and Maemo 5 released

As promised last week, a new release of gPodder is out. The package for Maemo 5 is already in Extras-Testing, so test it and vote for it. The package for Maemo 4 has already been uploaded to the autobuilder and should be available shortly.

This new release brings yet another round of UI improvements, and it also incorporates the feedback that I got at the MeeGo Conference:

  • Expose "Pause subscription" in UI
  • Multi-delete in episode lists (Maemo bug 5182)
  • Setting for episode auto-delete on startup
  • Custom episode list model (faster loading)

You can find a detailed ChangeLog at gpodder.org/changelog/2.10.

If you are not yet a user of gPodder, why not take the opportunity to try it out? You could subscribe to the MeeGo Conference 2010 Video Podcast (Yahoo Pipe) and (re-)watch the sessions on your device. Of course, audio and video podcasts are supported as well, as are YouTube user channels and Soundcloud users.

Maemo 5 app UIs: {The,A} big picture

Sooner or later it will be necessary to create a QML UI for gPodder if it is to integrate nicely with devices on which Qt is the "native" toolkit for third party apps. At the moment, the reusable UI elements that can be used with QML (Qt Components) have not yet been officially released (the Git repository is available on Gitorious, though), and there are no UI style guidelines for Harmattan out (yet?). I'm also not able to locate UI style guidelines for QML apps on Symbian^3, and there are only a few small sample QML apps out right now.

Let's look at what we have on Maemo 5 right now. Here's a simplified overview of the current Maemo 5 UI of gPodder:

You can also check out the full-size image (~ 3.5 MB).

The UI follows the Maemo 5 Style Guide where it makes sense and tries to come up with better solutions where the Style Guide does not have a definitive answer. I'd like to hear your opinion about the current UX of gPodder and how these concepts can be translated into a QML app that integrates nicely with "future" UIs (Harmattan, S^3). The new-style episode list that can be seen in this picture will be made available with the next release that will be out Really Soon Now™.

Please test: MaePad 1.9, MaePadWeb 2.1, Trophae 6

Version 1.9 of MaePad is out, with a new translation into Catalan, updated Finnish (thanks to Marko Vertainen) and German translations, a "No items" indicator in empty checklists and full auto-rotation support (detailed changelog).

The File Transfers application seemingly does some weird things to "Open file" dialogs in other apps (not only MaePad, but reportedly also Xournal), so MaePad now conflicts with it until the problem is fixed (this means you can't have both "File Transfers" and "MaePad" installed at the same time). Test and vote for MaePad 1.9 in Extras-Testing!

Also new is MaePadWeb 2.1, which adds a missing dependency on python-simplejson. The app worked fine for me since the initial release, so I'm also promoting it to Testing now. Test and vote for MaePadWeb 2.1 in Extras-Testing!

And as a third release this week, I noticed that Trophae, the PS3 Trophy Viewer app, didn't get its newest release (6) uploaded to Fremantle Extras-Devel for two months, so I've re-uploaded it, and also put it up for testing. And even though the code is lame, it's now published in a Git repository if you want to hack on it. Test and vote for Trophae 6 in Extras-Testing!

A new release of your favourite podcatcher is coming in the next few days. There is still time to submit updated translations :)

gPodder 2.8 for Maemo 5: Notifications and MAFW integration

It's been some time since the last gPodder release, and I've been busy adding some nifty features to make the best use of the on-board facilities of Maemo 5. As already mentioned in a previous post, this new version comes with built-in notification support. After installation, you might have to re-start hildon-home (or your device) for the changes to become effective. That's what you will get when new episodes are found:

The other and more "invisible" change is that gPodder now listens to MAFW and also talks to it at times. MAFW is the backend of the Media Player application, and you profit in two ways from this integration:

  • The last playback position and duration of an episode are displayed in gPodder and synchronized to gpodder.net
  • Playback can be resumed even with the Media Player application

This means that users of the normal Media Player application will benefit from all the goodies that were previously only available in combination with Panucci. Combined with the new notifications, this makes for yet another great release with even better integration into the Maemo 5 environment.

gPodder 2.8 is now available from Extras-Testing, so please test, review and vote on the package.

Desktop notification support in gPodder

Three days ago, Maemo bug 11130 was filed: It complains about gPodder stealing focus when it has finished checking for new episodes in the background. This is true, and I've been bitten by this annoyance several times already, so I decided to finally have a look into the SMS/IM/Phone-style notifications (the "yellow" bubble that merges into your task switcher after some time). Thankfully, Daniel Would (of Witter fame) has published his research results some months ago already, so getting up and running was easy from that point. Here are the results so far:

One problem that I still have not figured out how to fix (even after digging in the hildon-home source tree) is how to attach such a notification to the a given window (or application) instead of having it appear as separate "window" in the task switcher (see the second screenshot). Can somebody in the know give me a hint? On the other hand, the callback for clicking on the notification works fine already and opens the new episodes dialog.

A related change that also prevents gPodder from stealing focus was to replace the progress indicator dialog with a HildonBanner - it might not look so good without a progress bar, but it makes gPodder less intrusive when the user interacts with other applications.

headphoned 1.9 for the N900 is now in Extras-Testing

The beloved Headphone Daemon, who usually sleeps in the darker corners of your N900 and makes sure that you do not embarrass yourself in front of other passengers or pedestrians with whatever kind of experimental music you happen to listen to when the headphones are accidentally unplugged (also known as public transport situations) got a small facelift (also known as code change).

A few changes that have accumulated over the last few months have now been packed up into the shiny new 1.9 release:

  • Support for libplayback / whitelisting (by Faheem Pervez)
  • Support for pausing Martin Grimme's MediaBox
  • Detect headphoned disconnect during active calls and send pause command after the hangup

The last one in this list might be of special interest to some of you who have complained about headphoned not working when the headphones are unplugged during a call. This won't happen now, as headphoned now monitors the call status via D-Bus and keeps track of active calls. When the headphones are unplugged while a call is active, the pause signal will not only be sent right away, but also a second time when the call gets disconnected. This work for all types of voice calls, and should work for video calls as well (untested).

During the summer holidays, I have had less time to do more development and releases, but things are starting to move slowly again - expect new releases of packages like gPodder and MaePad in the upcoming weeks. I'd also love to port gPodder to Harmattan and add a fancy new MeeGo Touch UI on top of it (in March I said that Maemo 6/MeeGo is for later this year - which might be very soon now), so you can all enjoy your favourite podcatcher with the usual native UI support. Let's hope that the Harmattan SDK and/or Harmattan developer images get released for the N900 soon (and then the Python bindings soon afterwards - the PyMaemo team was very fast in previous release cycles), so the community developers have enough time preparing their apps for the next big release.

For now, please test and enjoy this new headphoned release, and don't forget to vote for and comment on the package once you have verified the new release from Extras-Testing.

gPodder 2.5 "easter egg": Diablo UI on Fremantle

As you probably already know, all gPodder versions (Linux Desktop, Maemo 4 and Maemo 5) use the same codebase, and as Python is an interpreted language, the choice of which UI to run can be made at run time (you could do this for compiled languages, too, but it's easier for interpreted ones). In current versions of gPodder, this happens by using command-line arguments. gpodder alone will start the Desktop version (which does not work on Maemo for obvious reasons - an "auto-detect" feature might be implemented in the future). On Maemo 5, you will usually want to use gpodder --fremantle, which will start the Maemo 5 UI as you know it (that's also the command that gets executed when gPodder is started from its application icon). On Maemo 4, the command is gpodder --maemo.

If you are a gPodder/Maemo old-timer, you might still remember the "good old days" of two-panel, stylus-based podcast goodness with multiple selections, the funky context menu and the thick toolbar on your N8x0. Ever wondered how that would feel on the N900? Try it out! Simply run gpodder --maemo in X Terminal and give your podcasts a little retro interaction (the database and downloads are the same in both versions and are therefore shared).

Try it out - it might come in handy if you are a stylus cowboy or have really small fingers (or a big N900 and normal-sized fingers...). Also, give the multiple-selection feature in the episode list a try. All you need is gPodder version 2.5, as it contains some compatibility fixes to make the Diablo version not be totally unusable on Fremantle.

SketchyAetch, gPodder/Qt and living in the present

After the very interesting Nokia Mobile Developers Forum in Hagenberg on Friday and Saturday (Petri Niemi did several interesting Qt introductory talks), I decided to play a bit with QGraphicsView again and this time try to come up with an app that actually does something: SketchyAetch!

Having not done much with C++ for several months, the GCC error messages (at least for C++) are still kind of cryptic. The fact that code gets pre-processed by moc does not help here, as the error messages might appear in a different location than where the real error/typo is. It should not be too difficult to get around these issues after some practice, and from that point on, getting things done (in C++) with the Qt libraries should be nice.

Already-drawn lines will fade away when you shake your device just like you would expect. The package is available in Extras-Devel.

Now something for the Qt fanboys out there: If you're running gPodder 2.3 on your device, you can try

   python -m gpodder.qtui

for a PoC "yes we could use Qt for the UI layer". This is not something that we will be working on in the near future (after all, the Hildon-based Maemo 5 UI is perfectly fine and "native" and it will get some more fine-tuning with the next release), but it shows that it won't be too difficult to do a DirectUI GUI for gPodder on top of the existing podcast client for M6/MG. We probably get around to implementing a DirectUI GUI for gPodder later this year when it's time to think about "Maemo 6" support.

Looking back how strange the gPodder Fremantle UI looked back in June 2009 (and how much changed in both the Framework and gPodder until the first Fremantle version was released), there's no rush in switching to Qt or DirectUI (at least for existing applications). I just hope that good Python bindings will be available for DirectUI/Qt when it's time to support the new UI, but I'm sure the PyMaemo team will do a great job just as they did with Hildon/Fremantle.

Maemo 5 is very polished these days, and I expect it to be even more mature when PR1.2 is out. It's also nice to see the Qt bits fall in place, DirectUI widget demos being made available, and MADDE becoming integrated with QtCreator, so the tooling support is ready when it's time to write M6/MeeGo apps. Maemo 6/MeeGo is for later this year, now it's time to enjoy Maemo 5, the N900 and all the great open source apps :)

MeeGo wishlist

Because all the cool kids blog about it these days..

If any of these specifications/standards do not meet the requirements, please work with freedesktop.org or other related institutions to get your extensions discussed, fixed and then integrated into the relevant specifications.

People will still develop mobile UIs specifically for whatever device will come along in the future, but porting from/to "mainstream" Desktop Linux should be as easy as possible.

There's a lot of awesome open source Linux/UNIX (GUI) software out there, it just needs some UI love to be usable on mobile devices. Don't make it harder than it should be.

(And with that I mean that it's easier to relayout a GTK+, FLTK, wxWidgets, Swing or Tk UI than to port everything to "the one true toolkit".)

This is especially true since open source developers usually develop in their free time, and porting an app to a new toolkit/environment is something that can't be done in two afternoons. Relayouting UIs can be done in that time.

Adding paradigm-shifting cool new UIs will still work without breaking backwards-compatibility and without restricting developers to one language/toolkit.

Oh, and Mer solves most of these issues by basing itself on a "standard" Desktop distro and only changing stuff that's really necessary.

headphoned, Metalab Talk, App Forum and gPodder updates

Due to popular demand, the Headphone Daemon is now available for Fremantle and the N900, too. A package is in Extras-Devel and should be available for QA testing in Extras-Testing soon. There is also a discussion thread on t.m.o and the packages page for QA.

In other news, I'll be giving a talk about Maemo.org and Maemo development at the Metalab Vienna on the 22nd of January. This is in preparation of the Hackathon that's happening on the weekend after the talk (a good opportunity to hack on CLI Sharing, maybe..).

In general, it seems like the N900 seems to get up to speed here in Austria now: The Nokia App Forum Alps is organizing a competition for mobile applications, so hopefully we see some new apps coming out of this. And if you happen to be around Hagenberg in early March, do join the Mobile Developers Conference.

A new gPodder version will be out "very soon now" - just one bug and one feature (my.gpodder.org API) left to do. I hope I'll be able to do it this weekend, so you can all enjoy the #maebar UI updates and new features such as Flickr support.

gPodder "after 2.1" Maemo 5 UI Changes (#maebar)

Quick note about the stable version: Thanks to the hard-working testers, gPodder 2.1 has received its necessary karma points in Extras-Testing before the quarantime time is up, so we are just waiting for some more days to pass before gPodder 2.1 will finally enter the Extras repository.

In the mean time, there have been some important developments in the Git repository, mostly based on ideas from the Barcelona Long Weekend - thanks to all the people who provided valuable input, especially Tuomas (tigert) for all the hard work. I have created a new set on Flickr with some screenshots of the current development version:

The new UI is not set in stone, and still has some rough edges, so I'd like to receive some feedback on what can be improved.

If you want to test the development version interactively, use Git to checkout git://repo.or.cz/gpodder.git on your device, and then run bin/gpodder --fremantle --verbose inside the checkout to start the development version in debugging mode. Make sure to have the current version of gPodder installed to drag in the required dependencies (alternatively, install the dependencies by hand). As with all development versions, if it breaks (or messes with your downloads/subscriptions), you got to keep the pieces.

Thanks in advance for the feedback :)

Imprensa Dormindo no Ponto



Imprensa está dormindo, assim como o Garfield está na foto. Ele pode, a imprensa não. Vejam as noticias abaixo.

Nokia planeja celular Linux e não venderá fábricas

Tanto no Terra quanto no G1, nem o título muda.

Ao limitar a um os aparelhos com Linux em 2010, Nokia reforça apoio ao Symbian

No Idg Now

O Fato é que essa informação já estava disponível nesse POST, de dezembro de 2008, algo que foi amplamente reiterada no Nokia Camp 09.

Estratégia de longo prazo da Nokia não mudou, o que prova que ela tem uma estratégia de longo prazo, ao contrario de outras companhias que mudam de S.O como se muda de roupa.

O Fenômeno não é novo, é simplesmente a busca insana do novo, que impede as pessoas de buscarem nos arquivos aquilo que elas falaram anteriormente.

Experimental Maemo 5 UI: Alternative Portrait Mode

The usual way to do rotation to portrait mode in Maemo 5 is to set special flags on a window and let the window manager rotate our window and relayout after the switch. It's not as fast as it could be, and task switching (even between two portrait mode apps) is only possible by switching to landscape mode. Apart from that, things like the system menu don't work in portrait mode.

For some applications, an alternative could be to stay in landscape mode and simply rotate widgets without the window manager even knowing...

It's probably best described in a short demo video of how a simple media player could look like (sorry for the sloppy video, forgot my digital camera, so the webcam had to act as a replacement) - have a look, and tell me what you think. (For comparison, have a look at the older Panucci rotation video that uses the "normal" way of going into and leaving portrait mode.)

Search-as-you-type in gPodder and a tag cloud

The uni semester is in full swing again, so development has slowed down a bit again compared to September. At least we are able to work on the my.gpodder.org webservice as a project in one of the courses (so expect some new development there soon). Anyway, here are some thing I've been working on recently:

gPodder has gained search-as-you-type filtering for both the podcast list and the episodes list. This allows you to make good use of the hardware keyboard, and text searches temporarily override the current view mode (e.g. only podcasts with unplayed epiosdes or hide deleted episodes), so you will always find the podcast or episode you are searching for (independent of the current view mode). This will obviously also be available for Maemo 4:

In non-gPodder news, I have been working on a tag cloud widget. It will allow developers to provide a set of tags and a weight for each one, and the tag cloud will display something like this:

The tags displayed act as buttons and can be used as an alternative to long lists of items (depending on the kind of data that is to be displayed and selected). This tag cloud might come in handy in a future project..