Friday, October 31, 2008

Firefox 3.1 development state

Again a week passed by since the previous development state post. This week there not that much interesting bug fixes and no added features. This is also normal, because now it's time to iron every bug out. Notable is that JIT is finally on by default for content. That means is getting more and more stable for daily use. There was also several fixes for the <video> tag. For the testplans, there is an enormous progres. The number of existing testcases almost doubled. To bad there were added some testplans, leaving minor progression in the testplan completion. The passed testcases increased too and is almost at the 50%. (That is the number it should get before release of Firefox 3.1 beta 2).

Proposed beta 2 shedule

Note: This shedule is subject to change. But shows already when to expect the release.

code freezeNovember 4th
builds startNovember 7th
qa startsNovember 10th
release targetedNovember 20th


Testplans state:

Testplan completion %:76.52% (last week: 70,45%)
Estimated testcases:762 (last week: 469)
Testcase completion %:44.05% (last week: 28,33%)


Various bug fixes and recently added features

Bug 456439add about:rights and a "Know Your Rights" infobar to Firefox.
Bug 462378Cache video/audio downloads to file
Bug 462294Add "View Video" to context menu for >video> elements.
Bug 459567reuse the Session Restore page's window for restoring the session;
Bug 459950Polish about:sessionrestore;
Bug 459546Make about:sessionrestore look good on all platforms, Mac part. Also fixes Bug 459740.
Bug 448909Need more controls WHATWG Video tag (followup patch)
Bug 448680Starting <video> playback causes master volume to jump to max
...Enable JIT by default for content
Bug 461281CPU usage goes to 100% after playing some Ogg files

Wednesday, October 29, 2008

Android status update

We are now 9 days after Google brought Android into the opensource community and many people are eager to see the Android on a Neo FreeRunner. There are also many people busy with making this wish reality. Let's look at what's already done.

In short

  1. Make compatible Linux kernel (done)
  2. Replace ARMv5 specific code (almost)
  3. Replace hardware specific code
  4. Adding additional software, like on-screen keyboard
In depth
The Linux kernel was almost directly made compatible by McNeil, because he had early access to the Android source code and could start (in complete silence) with porting it onto the Neo FreeRunner. So most of this work was already done when the Android became open source.

After that Leslie and McNeil started the second phase. They had to find all ARMv5 code and replace it by other. Luckely for them, there exists tools like grep. So they could easily locate the files that had to be changed and they made a nice spreadsheet about their progress. That phase is almost done, only 2 files need to be changed.

So now we are balancing between phase 2 and phase 3. In theorie the whole android can now be compile and thrown into an image. And that's what Benno is trying to do. He started and verly early he noticed he had to change the default filesystem (YAFFS) of android and turn it into jffs2. That was because the YAFFS filesystem doesn't want to mount. After he had more trouble with the filesystems, he was forced to put a part of the system into a YAFFS partition and a part into a jffs2 partition.

After that horror was done, he could make some images and throw it onto his Neo FreeRunner and test if all the theory and coding has paid off. He could let the system boot and go trough the init. It started most of the system services, but failed at some graphics code with an out-of-memory error.

So we have almost a working android. In the next phase, they will try to replace the hardware specific code. So they will for example replace the specific gsm modem code by code that the Neo FreeRunner modem understands.

For really in-depth story about what benno did, look here

Monday, October 27, 2008

FDOM and it's FDOMizer

Some history
FDOM was announced a little while ago and had a specific main purpose. It wanted to be a distribution image with many applications applied to it. Just to make the Om 2008.8 more than just a mobile phone image. It fulfills that role very good and it's name was chosen for accentuating that purpose. FDOM stands for 'Fat and Dirty' distribution.

It was created by David-Reyes Samblas Martinez. He just picked the om2008.8 distribution and applied some patches and installed almost all applications, he could find on the wiki. After that he made an backup of the image and FDOM was born.

What's the problem?
FDOM was called a distribution by many people, while it doesn't want to be a separate distribution. FDOM was a default Om 2008.9 installation with many addons. Because FDOM was a separate image, people got confused and begun to thing that FDOM was another distribution.

There were also people that knew FDOM was based on Om 2008.9 and were asking how to upgrade their Om 2008.9 to FDOM. Solely for having the applications of FDOM and don't have to lose their contact or messages. (Or don't want to go reflashing). They would plough trough the wiki without finding a cure.

Introducing FDOMizer
With the new release of FDOM on 13 okt, the team behind FDOM has introduced a script named FDOMizer. It's a script that will turn your Om 2008.9 into FDOM. So it will install all the applications and fixes that are default installed in a fresh FDOM installation.

Turn your Om2008.9 into FDOM

  • ssh into your Om2008.9
  • wget http://files.tdobson.net/openmoko/freerunner/fdom/FDOMizer20081023.tar.gz
  • tar -xzvf FDOMizer20081023.tar.gz
  • FDOMizer/FDOMizer
  • follow the script
And now you are owner of FDOM.

Openmoko: 'Base' image status review

Because yesterday was a theoretic review, just by watching the trac bugs that are in testing mode, today I found the time for doing a practical review.

Base image: info - install instructions

previous review

Solved issues

  • #2071 The base image cannot be started and stops when the WIFI driver is initialized.
  • #2082 There are no icons on the home screen, so you could not launch anything.
  • #1024 If my FreeRunner isn't in suspend, my gsm keeps on reregistering to my phone company. I noticed it by the interference it give by putting my Neo FreeRunner close to a speaker. Because of that, I'm often not available for calls.
  • #1718 I couldn't run mofi after I had installed it, because there is a problem with the python-pygtk packet. Solution: There is only one character wrong in that packet, so I've manually edited line 82 /usr/lib/python2.5/site-packages/gtk-2.0/gtk/_init_.py. Replaced 'init()' with '_init()'.
Newly found issues
  • I couldn't connect to a Wifi spot with the Settings interface. It said only 'unknown' next to the Wifi. Solution: Connect with the terminal, more information.
  • Connecting through Mofi was not doable, because Mofi doesn't call the keyboard. Also the qwerty symbol on top of the page is gone and cannot be installed. Solution: Connect with the terminal, more information.
  • The standard theme of Gtk programs is really ugly. It's just white and the text is to big. Solution: Copy http://alasal.be/openmoko/gtkrc into /usr/share/themes/Raleigh/gtk-2.0
Still an issue
  • #1832 For getting the state on how much money there's left on my prepaid sim card, I have to call #121#. The caller application crashes on these calls.
  • #1267 The people calling a Neo FreeRunner hear an echo of their own voice.

Getting started with the 'Base' image

What is the 'Base' image?
The 'Base' image is a distribution that isn't meant to be released. It's a really basic distribution that Openmoko uses for testing the fixes. Because the Openmoko team is now putting their effort into the low-level issues, most likely you will find here the new fixes of these issues.

Install the 'Base' image

Configuring the 'Base' image
  • Suspend off: We will put suspend off, because there are to many bugs. For example, you may not get any phone calls anymore. Also it isn't handy for using automatic suspend if you're ssh into you're phone. The connection gets interrupted and cannot be restored again. We put suspend off by opening settings and clicking on the suspend item until it says 'off'.
  • Restarting device: The first time I started my 'Base' image, I was unable to ssh into it. After I restarted my Neo FreeRunner, I could ssh into it.
  • Updating opkg: Because the list of applications that opkg can install is outdated, we will have to update opkg by doing:

    opkg update

  • Install nano: We will install nano, because it's an easier editor and most people can work with it. You just have to do the following command:

    opkg install nano

    If you encounter an problem with packagekit, do:

    pkill packagekit

  • Install calculator: what is a modern gsm without a calculator. It's like a little computer that is unable to calculate while the calculator was the predecessor of a computer. So we open installer (by pressing the bottom bar) and goto Miscellaneous and install qtopia-phone-x11-calculator.
  • Install phone software: Now we have our base system. But we want to use our base system for calling and sending sms's. So we need to install some phone software. I will go for the phone software that's are also in the 'Om 2008.8' image and is Qtopia based.

    opkg install task-openmoko-qtopia-x11

Now we are ready.
Have a nice FreeRunner time.

Edit: The last step will probably fail with the warning he could not satisfy a dependency. You can overrule that by doing 'opkg install task-openmoko-qtopia-x11 -force-depends'.

Sunday, October 26, 2008

Openmoko: 'Base' image status review

Today I wake up and saw bug #2071 was solved by Openmoko. A couple of minutes later, the newest 'base' images was on my Neo FreeRunner. Here is my review.

Base image: info - install instructions

previous review - next review

Solved issues

  • #2071 The base image cannot be started and stops when the WIFI driver is initialized.
  • #2082 There are no icons on the home screen, so you could not launch anything.
  • #1267 The people calling a Neo FreeRunner hear an echo of their own voice.
  • #1024 If my FreeRunner isn't in suspend, my gsm keeps on reregistering to my phone company. I noticed it by the interference it give by putting my Neo FreeRunner close to a speaker. Because of that, I'm often not available for calls.
Nice enhancements
  • You can now switch between the Illume and Qtopia keyboard by going into the Illume settings and changing the keyboard settings.
  • The new Illume is installed with the new beautifull theme.
New issues found
  • #2087 The icons and Illume top bar are to small for finger usage.
  • #2088 Settings application cannot be started

Friday, October 24, 2008

Back to basics: Update

In my previous blogpost, I was saying nothing was done last week and I'm very glad to announce I was wrong. Because nobody of Openmoko had released any details of what happened, I though nothing was done. Apparently wrong conclusion.

What are the main things they did?

  • The boottime of Om2008.9 is reduced by 55 seconds. From 2:35 to 1:40. So it's interesting, that the boot time is reduced by a minute in a week. The changes aren't in any image, but will be merged in the future.
  • #1267: The qtopia echo problem was already solved, but now it's included in testing. Hopefully the base image will boot fully again after they smashed bug #2071, So we can test it. But they already have confirmed to be working on it.
  • Openmoko has started to look into the touchscreen of the FreeRunner, So they can optimize it for finger usage. They created a program to analyse the finger touches. Analyses were posted to the mailing list. Also a video made it to youtube.
And they did many more and you can read it in a post of John Lee on the mailling list.

Firefox 3.1 development state

When the previous development state post got posted Firefox 3.1 beta 1 was just released. Now we are again a week further, so it is time to look to the changes. The eye catcher this time is that the work on the video-tag that has landed. Context menu should now be available. Seeker will not take to long to be available. When it happens I will inform you. Most of the backend of private browsing landed too. Thought it will still not work in the nightly releases. The progress on the testplans are going forward too. It needs to, because when beta 2 comes out the testplan completion should be 100% and the testcase completion should be 50%. So some extra work is needed here.

Testplans state:

Testplan completion %:70.45% (last week: 66,43%)
Estimated testcases:469 (last week: 424)
Testcase completion %:28.33% (last week: 27,37%)


Various bug fixes and recently added features
Bug 364315Speculatively load referenced files while "real" parsing is blocked on a <script src=> load
Bug 449159Refactor Ogg backend and implement seeking
Bug 426629"table-layout: fixed" is not invoked if width changes from auto to fixed dynamically
Bug 248970(PrivateBrowsing) Private Browsing mode (global toggle for saving/caching everything
Bug 324121(EM Patch) Extensions with available updates for the next version of the app should not be listed in app update extension will be disabled warning.
Bug 456002Dragging and dropping a tab from a window with 1 tab is broken.
Bug 460751Progress events should use long long, not long for .total and .loaded
Bug 449522Context menu for HTML5 <video> elements
Bug 396816Location bar should be self-describing: "Search Bookmarks and History"

Thursday, October 23, 2008

Changes of XMLHttpRequest in Firefox 3.1

The XMLHttpRequest has undergone an enormous change in Firefox 3.1 (atm not released, the release is for begin 2009) and I would like to let you know what the differences are. Actually XMLHttpRequest has undergone two major changes. One is the support for cross-site XMLHttpRequest. The other new feature is the ability to add progress events to the XMLHttpRequest.

Cross-site XMLHttpRequest

Let's start with Cross-site requests. Until now it was prohibited to get content from other sites then the site it was on. That was because of security raisons. In development that was sometimes a pain in the ass. It happened that you wanted to get data from a server you own yourself, but didn't had the same domainname. Therefor implemented Firefox 3.1 a special way to make it possible to have XMLHttpRequest across different domains.
On the coding part nothing changes for JavaScript. You just change the url to the webpage you want to fetch. On the webpage itself you need to change some bits. You need to let to know that it is alright that the page can be fetched with an cross-site XMLHttpRequest. You need to add an access-control header to the page. There you can specify if it is possible to fetch the page and which domains can fetch it. I will list here some examples of acces-control headers:

// Anyone is allowed to access this resource - no restrictions
Access-Control: allow <*>

// Everyone is denied access to this resource - no exceptions
Access-Control: deny <*>

// Only sites that are hosted on 'mozilla.org' may access this resource
// (this includes sub-domains as well)
Access-Control: allow <mozilla.org>

// All sub-domains but developer.mozilla.org, of mozilla.org, can access this resource
Access-Control: allow <mozilla.org> exclude <developer.mozilla.org>

// Only this domain, on this port, with this request method can access the resource
Access-Control: allow <developer.mozilla.org:80> method GET, POST


more examples can be found in the W3C Acces Control working draft

Progress events

As of now it is much easier to monitor the state of an XMLHttpRequest. You are now easily able to monitor the percentage that is done. You can run an function when the transfer is complete. The same for when the download is canceled or failed. All that is with the use of eventListener on the XMLHttpRequest. This demands some example code that is coming now...

var req = new XMLHttpRequest();

req.addEventListener("progress", updateProgress, false);
req.addEventListener("load", transferComplete, false);
req.addEventListener("error", transferFailed, false);
req.addEventListener("abort", transferCanceled, false);

req.open();

...

function updateProgress(evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
...
} else {
// Unable to compute progress information since the total size is unknown
}}
}

function transferComplete(evt) {
alert("The transfer is complete.");
}

function transferFailed(evt) {
alert("An error occurred while transferring the file.");
}

function transferCanceled(evt) {
alert("The transfer has been canceled by the user.");
}


And now hopefully the other browser will adapt this soon, so it gets very easy to monitor the state of XMLRequests.

Is Openmoko working on their 'back to basics' plan?

Openmoko has announced their 'Back to basics' plan a week ago. It's time to review. Has they stick to their plan to reduce boot time and started to fix the suspend/resume problems?

I've followed the Git branches, mailing lists and trac changelogs closely and I can only say I'm deeply disappointed. There was a hooray of almost 98 messages, when Openmoko announced they would work on the low-level issues. It's sad that they will have to dissapoint them. This week Openmoko has worked on Qi (A replacement of u-boot) and Gta03 (The next openmoko cell phone)

At Openmoko: Please explain me. Am I overlooking things or are you forgotten your own plan? We (the community) hoped, you heard us clear. We want you to handle the lowlevel things. That's our main concern right now: Getting you to handle the things most of us can't.

Answer of Openmoko (John Lee): We are working on multiple issues including the two subjects you mentioned. There will be public update to the mailing list, wiki page update (Improving user experience), etc. Please just be patient.

ps. There is an update of openmoko on their progress with the 'back to basics' strategy, please read.

Phase one of porting Android: Done

You probably know already that the android platform has become opensource 2 days ago. Else check my previous blog post. Now there are 4 big phases in porting the android to our beloved Neo FreeRunners.

  1. First there has to be made a compatible linux kernel. This is kernel with all the necessary modules for letting the android platform work.
  2. Secondly all the platform specific ARMv5 code has to be replaced by ARMv4 code. That's just because our Neo FreeRunner runs another processor and isn't fully compatible with a newer ARMv5 processor. So basicly Android is written for talking in ARMv5 code to the processor, while our ARMv4 processor in the Neo FreeRunner doesn't understand that.
  3. Thirdly all the hardware-specific code has to be replaced by function for calling the Neo FreeRunner hardware. Because the code in Android thinks he's talking to a HTC G1.
  4. Fourthly we will have to make additional software or change software, before we can fully use the Android. For example an on screen keyboard isn't included in the default stack of the Android.
How far is the port?
Phase 1 (Done): Now 2 days after the release of the sources, phase 1 is almost finished. There is a working kernel with the extras modules necessary located at Koolu (You will have to register). The patches against the Openmoko kernel are already submitted and are ready to be included in the stable kernel branch. Maybe some patches will be rewritten for making the integration into the Openmoko kernel a little easier.

Phase2 (Busy): There are already some people busy with looking into porting the special ARMv5 commands to ARMv4, but nobody has yet reported their result.

So keep up the good working. I want to thank Bricode from koolu.org and Sean McNeil for the patches and work they already have done. It's very appreciated. If anyone wants to help with porting, these are the guys to contact.

Wednesday, October 22, 2008

Headup on the Android platform

For the people living in a shelf: Android is an platform including operating system (Linux), middleware (Similar to what the framework of FSO will become eventually) and applications almost all made by Google. So basically an all in one software solution for a mobile phone.

Why doesn't it run on my FreeRunner yet?
The main problem was that Android wasn't opensource. (Although Google had promised it would be opensource) Another problem was that the Neo FreeRunner runs on another architecture (an older one) than where Android was compiled for. Thought this would not be a problem, if Android was opensource. Because then people could start changing on the source and make it work for the FreeRunner. Luckely for us, Google has kept it's promise.

And where can I find the images for flashing it onto my FreeRunner?
You will not find them (yet). But many persons in the community are earerly hacking there way into the Android code, mainly to get it ported onto the FreeRunner. So has Sean McNeil already reported on the mailling list, that he some patches for letting Android work on the Neo FreeRunner.

Whaoooo, finnaly a fully working distribution!
I would say don't exargerate. Most likely, the core bugs like the one when the FreeRunner keeps reregistring will also be in the android. Just because the android will use the same drivers as all other distributions. Luckely for us, Openmoko has decided to target these basic bugs. (more information). Also the android is programmed with in mind that the phone has a reel keyboard. So I expect problems with typing with the android on the FreeRunner. But for every problem, there is a right solution. So we will see, if the android becomes just another distribution or can lift the FreeRunner to a new level.

Monday, October 20, 2008

Fennec Alpha Walkthrough


Fennec Alpha Walkthrough from Madhava Enros on Vimeo.

First impression of private browsing in Firefox 3.1 nightly's

One big relief, as of now it is visible that private browsing will probably make it in Firefox 3.1. This feature already suggested for Firefox 3.0 didn't made it because the lack of time and for Firefox 3.1 it almost happened again. Normally should every new feature already be in the browser before the beta 1 is released. After that only bug fixes are allowed anymore to get a solid and stable version. Luckily private browsing was one of the features that was agreed to come later. Yesterday the first bits of private browsing were checked in. Still you won't see a change on the nightly builds. That's because the changed parts are getting ignored in absence of the Private Browsing service.

So what should be possible with private browsing? The idea is to have a state where the browser doesn't record data and doesn't store anything local on where you have been. So something like surfing off record. History, passwords, cookies, favorites ... will not get saved. The implementation that is chosen for now in Firefox 3.1 is that when you put private browsing on it will never write something to the disk (to update DB containing all the information) and all the rest will happen in the RAM. When going back to your normal state, it will just get everything back from the disk. So the information saved in the RAM are lost, like intended.

To start private browsing you need to go to Tools and just under 'Clear Private Data' you will find 'Private Browsing'. On click you will get a prompt which mode you want. At the moment it is implemented in two modes. Or you can choose that the private browsing mode starts with your current tabs open or you can choose that a new instance need to start. Your current tabs get saved and hided. Whenever you stop with private browsing the browser will restore the tabs you were busy with.

Like I told you it is still not possible to test this feature in the nightly releases, but there are build made where it is available. You can try the builds of the try server, where I can confirm the private browsing is already working.

link to the tryserver

note: this is still considered as non-stable

Community Updates: 04-19 October 2008

There's another fantastic unofficial community update from MinhHaDuong. Enjoy!

Sunday, October 19, 2008

Getting Pingus on your Neo FreeRunner

Pingus is an open-source clone of the Lemmings game. Basically you have to guide as many creatures as you can to the finish point, by letting them dig, jump, build brigdes,... So fun guarantied. Luckily for us, it's now ported to the FreeRunner.

Installation:

  • ssh into your FreeRunner
  • opkg install http://downloads.openmoko.org/repository/testing/armv4t/libsdl-1.2-0_1.2.11-r6_armv4t.opk
  • opkg install libpng3
  • opkg install http://alasal.be/openmoko/repo/pingus_0.7.2-r0_armv4t_DolfFix2.ipk
How to play:
  • You can move around the place by hitting map-overview.
  • For the rest: point and click.

Thanks to Sander Van Grieken to port and package Pingus for the Neo FreeRunner. I've just changed his package a bit. Now the screen rotates automaticly, it starts with the right screen resolution and it uses the slowmode, so it should work a little faster. Also i've muted the sound, because it was regurarly hanging. And it starts in fullscreen, so you can enjoy it fully.

Saturday, October 18, 2008

First mobile version of Firefox is here

Fennec alpha 1 just released. This will be the mobile version of Firefox that will get released around 2010 for mobile phones. It is still a very early developer release, but it shows already where the mobile version is going too. The focus for now was implementing a new intuitive and user friendly interface. Later releases will focus on security and performance, like implementing Tracemonkey and speculative parsing.


So important in this release is the user interface. It is quite different then normal browsers, even quite different then mobile browsers. The user interface is heavenly based on use with touchscreen. The buttons are rather big so they are easy hittable and there is made an ingenious system to have as much as possible screen available for the site itself. That's why the back and forward buttons are invisible by default. You need to swipe to the left to show the buttons. The same to the right to view the different tabs. If you scroll down the urlbar goes up, like it is on top off the page. So most of the time, the page covers the whole screen.

Fennec will eventually available for the Maemo software platforms. So not for Iphone or other devices for now. So if you have a N810 you can install it and see how it shapes up. If you don't have that and are eager to try it, there are also builds made for Windows, Linux and Mac to try it.

So for the ones interested: download link

Openmoko: 'Base' image status review

After installing and configuring my 'Base' image this week, I did opkg update && opkg upgrade today. Here's my status review.

next review

New issues found:

  • #2071 After doing upgrade, the base image will not start anymore. Apparently Wifi initializing is blocking a proper startup.
ps. So my advice is: don't upgrade your base image (except if you want to help with fixing the bug), because it makes that image unusable. I will report when the issue is solved.

Edit: Sorry, I had written 'Stable' image instead of 'Base' image. Thanks to the replies that has put me to thinking. Sorry for my mistake.

Friday, October 17, 2008

Howto install VirtualBox 2.0.2 Guest Additions in Ubuntu 8.04 and 8.10

EDIT: I noticed a lot of people using the newly Ubuntu 8.10 are visiting this page to get their VirtualBox working properly. These instructions should still work.

If you use VirtualBox you probably are very curious to use the Guest additions, because they make it possible to have seamless windows, auto-resize screen, mouse pointer integration, better display drivers ... If your guest OS is Ubuntu, you probably had some trouble with installing them. Normally you only need to go to devices and press 'Install Guest Additions' (when the OS is up an running) and it should get installed without problems.

Now with Ubuntu it doesn't work like that. A cdrom get's attached, but it doesn't run automatic. So first I will explain it for Ubuntu 8.04 how to run it.
1. Open a terminal (goto 2 if you know your own way)
1.1. Press Alt-F2
1.2. Type 'gnome-terminal' and hit enter
2. Type 'cd /media/cdrom/' and hit enter
3. Type 'sudo ./VBoxLinuxAdditions-x86.run'
4. Now you need to type your password (the install needs root-rights)
5. Like the message says, afterwards you need to restart the computer to let the changes take effect

For Ubuntu 8.10 beta 1 it is almost the same. But first you need to be sure you're working with VirtualBox 2.0.2. Prior versions will not work with Ubuntu 8.10. If you got that you need to do the same as above. After the restart you will still need to do some things, because the screen driver isn't activated by default.

1. Open a terminal (look above if you don't know how)
2. Type 'sudo gedit /etc/X11/xorg.conf'
3. Type your password (needs root-rights again and afterwards a text editor should appear )
3. Find:
Section "Device"
Identifier "Configured Video Device"
EndSection

4. Change to:
Section "Device"
Identifier "Configured Video Device"
Driver "vboxvideo"
EndSection

5. Save (press ctrl+s)
6. log out and log back in (restarting also works)

The road ahead: Even more basic

In a previous blog post, I explained Openmoko was trying to focus on a stable 'Base' image. An image that contains only the linux stack, a settings application and an install application. But last week the FSO team were gathering at the main site at Taipei. They have talked about the framework and how some new services should work. But that was not the only thing they talked about...

Did they have a chat about cows?
No, they talked about the future of Openmoko and how they would obtain the goal of a working phone that is totally opensource. We, the community has complained enough that there were to many 'basic' problems. Like suspend not working. Wrong coordinates on a rotated screen. Echo when someone called us. So they wanted to solve that by going 'back to basics'. And that was the slogan that emerged from that meeting.

But what is 'Basic'?
'Going back to basics' means something different to many people. That can be seen on the posts that came on the mailing lists. For some people 'Basic' is making all phone functionality work reliable. Others sees it as making new phone software. Others don't want the basics blablabla, but want the framework in the basic image as soon as possible and go further from there. What Openmoko sees as 'Basic' can found on different places, like the 41th weekly engineering news. They think 'base' as something that isn't GUI. So the settings and install application from the 'Base' image will be de-prioritized. They want to optimize Linux for the openmoko and improve the user experience without making or introducing new functionality.

So much blabla, what exactly are they focusing on?
At the moment, they are focusing on the following things:

  • They want to reduce boot time, so the phone is also handy in emergency cases. Because an cell phone that's off and is only useble after 5 minutes booting, isn't very handy when you want to call an ambulance.
  • Optimize the touch screen driver on the Neo FreeRunner. The driver was written without thinking about finger usage and could have some improvement in that area.
  • An generic python loader. So will Openmoko optimize the startup time of python applications. Python is commonly used for small applications, so it should be handy to optimize this. Also the next-generation application (like tichy and paroli) will be using python.
  • They also want to improve the suspend and resume system, because many bugs are related to some suspend or resume failure.
But now they want to hear from the community, which 'Basic' problems should be solved. (Apparently Openmoko has heard our complaints about not involving the community in the process and want to improve on that issue. Big bravo for Openmoko)

So they are stopping to work on FSO?
No, The people working on the framework will still be working on the framework. For openmoko the framework is one of the most important things. It will eventually give developers/hackers the opportunity for talking to the phone's hardware, with nice and easy dbus messages. Almost all other people involved with the kernel will be executing the 'back to basics' thought. Openmoko has also hired some new people. So together with the community they will try to get the next milestone.

Firefox 3.1 development state

Firefox 3.1 beta 1 is released a couple of days back. Still development keeps going. The next development release 'beta 2' is coming approximately mid November (conducted out the fact the code freeze is the 4th November). Nexto the handful features that may land then, stability fixes and bug fixes are extremely important in this state of the development, especially for new features.
Therefor there are made features testplans to check if the features behave like they were mend to do. Afterwards they get checked and all the testplans should pass. Now for 'beta 2' it is stated that 100% of the testplans should be ready and the development release should pass at least for 50%. (For the Release Candidate 90% should pass).

Testplans state:

Testplan completion %:66,43% (last week: 58%)
Estimated testcases:424 (last week: 382)
Testcase completion %:27,37% (last week: 18%)


Various bug fixes and recently added features
Bug 450939 - Add -moz-window-shadow CSS property
Bug 450944 - Implement -moz-window-shadow functionality on Mac OS X
Bug 377439 - Make scrollbars live to scrollbar style changes in the system prefs
Bug 237592 - Bookmarks/RSS items should always show tooltip when hovering with mouse
Bug 414728- statusbar not using cool new embossed text-shadow-effect-thing for statusbar text
Bug 394611 - Always prompt the user before changing a stored password
Bug 459300 - JSON should use internal JS functions where it makes sense.
Bug 457906 - browser.cache.disk.capacity MBs are calculated incorrectly.
Bug 448976 - turn the Session Restore prompt into an error page

Some usefull tools

This are some of the tools I use daily to manage all different distribution and the applications that are already ready for the FreeRunner.

Neotool: A great tool for flashing to your Neo FreeRunner or backup the adapted images. It's handy because you don't have to remember all the different command line utilities.

Opgk: A website that's trying to list all the different applications that can be installed on the different distro's.

Wednesday, October 15, 2008

Weekly Engineering News 41/2008

Weekly Engineering News: Index, Source

everybody,
back to the basics!

That's the main news from Taipei last week. We decided to focus our
engineering on just the basics, even less eye candy: Robust kernel,
fast boot time, basic telephony with great audio quality, powerful
configuration from the command line, hardware quality. That's it.
We will stop working on our Installer, Locations, Diversity and
Settings applications. We will get back to all this when the rest is
rock solid, but now is not the time. Feel free to pickup any of these
projects in the meantime, it's a great way to get affiliated with
Openmoko as we will surely get back to them later - hardware features
of GTA03 remain as currently planned.
To support the new strategy, we have made some organizational changes.
The way we are funding freesmartphone.org and Mickey's framework team
has been changed (http://www.vanille-media.de/site/index.php/2008/10/14/ci61-0650-fra/
), John Lee will form a group of Taiwanese software engineers whose
focus will be on optimizing various parts of the software stack. We
are working on a new way to empower Andy and have him build and lead a
kernel team.

Some lighter news from the office: Sean found an article about Pixar's
"Collective Creativity" and we are now creatively interpreting the
article for our Taipei office life :-)
See the article: http://harvardbusinessonline.hbsp.harvard.edu/hbsp/hbr/articles/article.jsp?articleID=R0809D&ml_action=get-article&print=true
Somewhere it mentions "inadvertent encounters", so we randomly
shuffled everyone's seats! A lot of fun! There are indeed lots of new
inadvertent encounters in the office now, as everybody is scrambling
to find their colleagues...

The head of our testing team, Regina Kim, moved to Australia and will
continue to work from there.
We hired a new IT person, Ray Chao, to work full-time in Taipei. He
will co-work with roh + gismo in Berlin. One of his first big tasks
will be to take over responsibility to keep our automated daily builds
running.
We hired Christopher Hall, a very experienced engineer who will start
in production testing software and may later help us a lot on bigger
tasks.

More next week, everybody here stays focused on GTA02 bug fixing and
GTA03 development...
Best Regards,
Wolfgang & Marek

Firefox 3.1 beta 1 is out


Firefox 3.1 beta1 is released. I will not bug you with an enormeous post about what is new. I provide you the download link so you can play with it and find the new features yourself. If you need some help with finding the new features. I found an excellent post describing the new things.


download: link
information: link

Tuesday, October 14, 2008

Openmoko: SHR status review

Not long ago, the first images of the SHR were hitting the road. They still say it's in alpha, but I was curious enough for taking the risk. And here is my report.

New issues found:

  • #7 The top bar and the icons in the home application are to small. You need a stylus to handle it.
  • #5 Some application listed in the home application are missing icons.
  • #1 The application for sending sms's is in place, but can't send sms's. It will never complain that something failed, but the receiver will never get the sms.
  • #27 I couldn't put SHR into some sort of silent mode, so it only vibrates when there is a sms or phone call.
  • #28 SHR doesn't include fixes for the echo that people are experiencing when calling to a FreeRunner.
  • #29 It always suspend 1 second after screen blank, even when you change the settings.

Improved session restore manager for Firefox 3.1 beta 2

Session restore manager just got an update to fix a whole bunch of bugs. It will be included in the release of Firefox 3.1 and is already in the nightly releases. Instead of showing a popup message to restore the tabs when you crashed, you will get redirected to a page where you can choose if you want to restore the tabs and which tabs you want to restore. One note, this is only if the browser crashes, else it will show the normal session restore popup.


One of the major bugs that get fixed due to this is that if a web-page let the browser crash it will restart asking you to restore the tabs. If you choose yes the web-page will let the browser crash again, because the page get opened again. So actually you can only choose between: Yes, I want to restore my tabs and let my browser crash again or No, I want a clean session. With the improved restore manager you can restore every page, except the buggy web-page. That way Firefox doesn't crash again, but do you have your tabs back.

bug: #448976

Monday, October 13, 2008

Getting started with the 'Base' image

There is a new getting started, please read.

What is the 'Base' image?
The 'Base' image is a distribution that isn't meant to be released. It's a really basic distribution that is targetting for getting linux, illume (user interface), an installer application and a settings application very stable. And that basic image will be used for making new releases of 'FSO' or 'Om 2008.*'. It will also be the basic for whenever the framework of FSO will be merged into the 'Om 2008.*' distribution (But now we are speaking in the far feature).

The 'Base' image is where the developers of Openmoko are putting their effort. Almost every day you can update your base system. That's an advantage, but also an disadvantage, because fixes can break other stuff. So if you are willing to use this image, you will have the bleeding edge (and also the newest bugs).

You can find a more in depth explanation in my previous blogpost.

Install the 'Base' image

Configuring the 'Base' image
  • Suspend off: We will put suspend off, because there are to many bugs. For example, you may not get any phone calls anymore. Also it isn't handy for using automatic suspend if you're ssh into you're phone. The connection gets interrupted and cannot be restored again. We put suspend off by opening settings and clicking on the suspend item until it says 'off'.
  • Restarting device: The first time I started my 'Base' image, I was unable to ssh into it. After I restarted my Neo FreeRunner, I could ssh into it.
  • Setting DNS: Also we have to set our dns, because else we can't use the installer on your phone. We can do that by ssh into your Neo FreeRunner (I assume you already have set all your configuration on the host side, else look at Usb networking) and use the editor vi for editing /etc/network/interfaces and add the following under the usb0 section:

    up echo nameserver 208.67.222.222 > /etc/resolv.conf

    up echo nameserver 208.67.220.220 >> /etc/resolv.conf

    And now we have to restart our Neo FreeRunner, so it sees the new DNS settings. But a restart takes to long, so we are doing a shortcut. Doing the following commands, will set the dns until you reboot.

    echo nameserver 208.67.222.222 > /etc/resolv.conf
    echo nameserver 208.67.220.220 >> /etc/resolv.conf


  • Updating opkg: Because the list of applications that opkg can install is outdated, we will have to update opkg by doing:

    opkg update

  • Install nano: We will install nano, because it's an easier editor and most people can work with it. You just have to do the following command:

    opkg install nano

    If you encounter an problem with packagekit, do:

    pkill packagekit

  • Install calculator: what is a modern gsm without a calculator. It's like a little computer that is unable to calculate while the calculator was the predecessor of a computer. So we open installer (by pressing the bottom bar) and goto Miscellaneous and install qtopia-phone-x11-calculator.
  • Changing illume theme: Now we are using the default 'Om 2008.8' theme, but we want the standard illume theme. This include the 'qwerty' toggle button and will add a new configuration icon.

    sed -i -e s,asu,illume, /etc/enlightenment/default_profile

    You will have to restart your x before the changes are visible.

    /etc/init.d/xserver-nodm restart

    Now we will have to turn Suspend off (yet again). You can change it by clicking at the new settings icon on the top bar. Then you will find power and in the second section you will find 'Suspend After Blank' and there you will choose 'Off'.
  • Install phone software: Now we have our base system. But we want to use our base system for calling and sending sms's. So we need to install some phone software. I will go for the phone software that's are also in the 'Om 2008.8' image and is Qtopia based.

    opkg install task-openmoko-qtopia-x11

    Because there is a small problem with starting the command necessary for qtopia applications to work, we will have to do a quickfix. Add the following command at the last but one
    line in the file /etc/X11/Xsession.d/89qtopia, between the modem power on and the qpe startup.

    ldconfig

    After a restart, you can now use the 'Base' image for mobile phone purposes, like calling and sms's.

Now we are ready.
Have a nice FreeRunner time.

Sunday, October 12, 2008

What needs still to be done for Firefox 3.1 beta 2

Now the developer release of Firefox 3.1 beta 1 is almost hitting the road, it's time to look what's coming next. Together with the release of beta 1 code freeze is active now. New features may not land in beta 2, because they can bring new bugs and instability. Still some important new features hasn't landed yet. Of most features the backend is already ready, but there is stil need for UI changes or minor code changes. Therefor there is made a list of features that may land in beta 2. Some highlighted in this post.
First of the features that will get finalysed is the <video> tag. The backend is as good as done. Now it is time to get neutral default controls cross platform and they need to be themeable aswell. Beta 2 should also contain the possibility to seek/scrub.
Another feature that still needs to get some UI design is the private browsing mode. The backend is also as good as done, UI design still didn't started yet.
A lot of changes in the field of plugins is also allowed to get a little bit later. There is already a way to 'prevent users from running out of date plugins that represent security risks ' and 'prohibit users from using plugins known to be vulnerable ', but there should come a nice warning on startup of the browser. Also the developers want to bring back the expierence of plugins discovered and installed for the user like in Firefox 2.0 back.
So there is still alot of work before the release of Firefox 3.1, but it will be an enormous improvement and completion of Firefox 3.0.

Saturday, October 11, 2008

The first images of SHR are hitting the road

SHR stands for 'Stable Hybrid Release' and is a community based distribution. It was created because the community liked 'Om 2007.2' more than 'Om 2008.2'. The 'Om 2007.2' had stable software, that did not crash that often. In the same period, FSO was hitting the road. It tripled the available distribution from 1 to 3. So some of the community wanted to build a hybrid release. They wanted the base of 'Om 2008.8', add the stable software of 'Om 2007.2' and port it to the handy framework of FSO. So a hybrid release that would combine the best of three.

But things has changed. Porting the 'Om 2007.2' applications to the framework is harder than just writing new applications. Also supporting absolute software, isn't that easy. And thirdly it's always more fun to write your own applications. So SHR will now combine the best of two. They will release images based on 'Om 2008.*' with the handy framework of FSO and make their own application that will be using the framework.

That's all history, what's new?
SHR has made his first image. Now you can taste what SHR will be. You can flash it onto your Neo FreeRunner. Also good news for the Neo 1973 holders, because there are also images for them. You can find all the images here

Install SHR

SHR review
General
  • The icons of the home-screen are to small
  • The top bar is to small and almost not accessible without a stylus
  • Nice background copy from the FSO distribution
Sms
  • I can receive sms's, they will popup on front of everything
  • The messages that I get don't appear in the inbox of the 'Messages' application
  • I can't send sms's. That's because there's no application for sending sms's.
Phone
  • Cannot call someone, because the 'Dialer' applications fails.
  • Other people can call me and I can choose to answer, but the sound isn't working. So other people don't hear me and I don't hear them.
Conclusion
So the first images are hitting the road, but there are still many things to do. But for the first image, I'm even surprised it even starts. (And It feels like it starts faster than all the other images) So if you're interested into diving into the FSO framework and want to help the community in making a frontend, this is your chance.

Friday, October 10, 2008

The road ahead. From om 2008.8 to a working phone!

As many people already know, Openmoko has stopped (or at least reduced) their updates for the om 2008.9. That's because om 2008.9 is considered pretty usable. Don't get me or Openmoko wrong. They don't say om 2008.9 is stable.

Are they in hibernation now?
No, Openmoko is now putting effort into the 'base' image. That's an image only containing the settings and installer application. They want to build a rock solid base for om 2008.* and FSO. Because up till now, the changes that were made on the installer/settings or other lowlevel stuff had to be imported into the 2 stacks. They had to check if everything still worked and not all updates that went into om 2008.9 was available on FSO. So they ended up with 2 images and had to do almost everything twice.

There is another reason why the 'base' image was born. Because the FSO stack contains an framework for handling the gsm/bluetooth/audio/gps/network/..., it is meant to be merged into the om2008.* distribution. At that point all (or almost all) the qtopia stuff will be replaced with the backends of FSO. So that step is easier when the two (om 2008.* and FSO) already have the same base.

The road ahead...
In far dreams, Openmoko is trying to mix the framework of FSO into the 'om 2008.*' (That will be 'om 2009.*' at the time). So anyone who wants to make an application for the Neo FreeRunner, will have an easy library to speak to the underlying hardware. Then they will also remove all the qtopia stuff (because FSO and Qtopia would fight over the ownership of the hardware) and mix another frontend into it, that will be called Paroli.


ps. This post is an mix of everything I've read on the mailling lists, the chat and the wiki. So this is no opinion of Openmoko and Openmoko hasn't correct or helped with this post. So if you find any wrong assuptioms (What I doubt), please post a comment.

Thursday, October 09, 2008

Openmoko: Compiling on your om 2008.9

Sometimes it can be handy to compile your applications directly on your Neo FreeRunner. A great advantage is that you don't have to copy the files back and forth anymore. Also you don't have to use the Toolchain that can be cumbersome. Also setting you're development environment with MokoMakefile can take very long. At last compiling directly on the Neo FreeRunner is an easy step for beginning to develop your own applications or change other applications.

But when you try to compile your first c-file, you will notice something. You will be stuck without the utilities needed for compiling. The following command will install these basic utilities you need for successful compiling on the FreeRunner.

opkg install coreutils binutils gcc make cpp python-devel python-setuptools cpp-symlinks gcc-symlinks libc6-dev
Now you will have the necessary utilities to use 'make' into the directory you want to compile.

Monday, October 06, 2008

Web-based protocol handlers in FF3.0

Still a feature more or less unknown for most persons is the Web-based protocol handlers. Available since Firefox 3.0 it integrates Web 2.0 applications more in the browser. So what is it about. Normally if you use a protocol handler (like mailto: or irc: ...) you usually will get asked if you want to start the appropriate program or to select the appropriate program. Now it is possible to use a Web 2.0 application as protocol handler. So for example now is it possible to open gmail, whenever you click a 'mailto:' link.

As example I will show you how to set gmail as your default email client.
1. You go to tools
2. Click on options
3. Navigate to the 'Applications' tab
4. There you search for 'mailto'
5. In the second column you can select 'gmail'
Now every time you click on a 'mailto' link, gmail will get opened.

For Web Application developers I would recommend to read the following link, because there is some more information to let your web application being used by protocol handlers. Be careful by default it isn't allowed to register your application using JavaScript. So you will need to add the instruction to do it by hand.

Wednesday, October 01, 2008

Firefox 3.1 will have native JSON support

For those unaware of what JSON (JavaScript Object Notation) is. JSON is a method to exchange data (think more about the content of variables) across multiple programming languages. At first it was only available for JavaScript, but now almost every language has its parser. It started as way to improve the use of 'eval' in JavaScript to parse data obtained through Ajax or other ways. The big problem with 'eval' was it is very easy to create a security hole. JSON eliminates that and it is possible to exchange data without fear.

So what's the buzz? Firefox 3.0 already contained native JSON support! Yes it did, but it was only available for code with elevated privileges. So only add-on developers could use it. Also it isn't too easy to remeber the code.

<script>
// encode to string using native implementation
var Ci = Components.interfaces;
var Cc = Components.classes;

var nativeJSON = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON);
var testNative = nativeJSON.encode(testObj);
</script>
So you could without problems say the native JSON support was limited and only for testing it for further releases. Normally the developer release of Firefox 3.1 beta 1 will give native support for JSON available for web developers. Just like Internet Explorer 8.0 beta 2 already supports JSON natively. Also Webkit is already looking to implement JSON natively.

So it will not take to long, before you just can parse and serialize data natively. Here is also the code that would do the job.
<script>
var jsObjString = "{\"memberNull\" : null, \"memberNum\" : 3"};
var jsObjStringParsed = JSON.parse(jsObjString);
var jsObjStringBack = JSON.stringify(jsObjStringParsed);
</script>

Firefox 3.1 Beta 1 Testday

In preparation of the developer release of Firefox 3.1 Beta 1, there will held a testday on Friday the 3th. I would request everyone to test it, to get a solid beta 1 release or to know where the problems are before the Firefox browser get released offically.

Hey Everyone!

It's time to test the Firefox Nightly Trunk Build in preparation of the
Firefox 3.1 Beta 1!


Join us Friday, October 3, 2008 in #testday on IRC from 7am - 5pm PDT.
Here is how you can help us:


We are on the road to Firefox 3.1 Beta 1, so there is plenty to test! If
you want to test your your
favorite Firefox Feature,great! But you can also run some more tests in
Litmus (http://litmus.mozilla.org)
and try out the Nightly Build and the other great new Firefox
improvements ! For the Firefox 3.1 Feature List
please see https://wiki.mozilla.org/Firefox3.1/Features.


How to prepare for Test Day:


* Download a Firefox Nightly Build from
http://ftp.mozilla.org/pub/firefox/nightly/latest-trunk/
* Save your profile data! You should either back up your profile or use
the profile manager to
create a new profile for testing.


Getting started on Test Day:


First join us in #testday on irc.mozilla.org so you can chat with the
Mozilla QA team and community.
There are always people in the channel to meet, work with, and get help
from.


Then choose one or more of the following things to do:


* Run various test cases on Litmus! Ask for help in the #testday channel
if you're not familiar with Litmus.
If a testcase is terribly unclear, mark it as such. When you have
questions about using Litmus, please ask the
moderators in the testday channel or see the Litmus tutorial .


For more general information about Test Days, visit
http://quality.mozilla.org/events/test-days


* If you want to help us test various pre-releases early and often
(alphas, betas, release candidates), join our betatesters mailing list!
* If you are interesting in specific Testing on Mac (10.4 and also
Leopard) and Vista please see http://quality.mozilla.org/node/287.


Hope to see you on Friday !


Thanks,


Tomcat
Team Mozilla QA