MicroB ships as the official browser for IT OS 2008
Some people may have noticed, but I'm confirming it for everyone else: MicroB
has shipped as the only (and hence default...) browser with IT OS 2008.
I'd like to say this is a win for open source. MicroB is the engine used by
/usr/bin/browser on IT OS and it is based on Mozilla Gecko.
There are some high points and some low points for this release.
Good news
- The default start page is now useful. Many thanks to Kevin Zhang,
Tuukka Tolvanen, disq, and TPC
for helping with the page. Thanks to
Alicia Patterson, John Lilly, and others at mozilla.org
for the art work.
Thanks to Erkko Anttila and again to Jorma Virkkunen for letting us fix up
the page.
- The Browser default plug-in has been renamed to
Default plug-in, RealPlayer, Windows Media and the description has been
changed to Default plug-in. Supports RealPlayer and Windows Media.
Because of this, you can now load BBC News
Video,
Radio, and French TV stations, e.g.,
France2.
Thanks to Marc-Andre Lureau for complaining about this. Thanks also to
Jens Wilke who has been helping us investigate web compatibility and get
fixes to Nokia
properties for MicroB.
- There is a project to help enhance MicroB, called
browser-extras which is
busy porting and packaging content and extensions to improve your browsing
experience as well as reduce the pressure on our in house developers. Thanks to
their contributors there for settings it up and working on it.
Bad news
- If you like Yahoo! Music (which includes
Music Videos), or many Internet Radio stations (e.g., ABC Radio affiliate
WMAL630
in Washington, D.C.), you will unfortunately get an
error from Media player when you try to use it. Yahoo's content supports at
last Windows Media and Flash plug-ins. Yahoo's content also properly favors
Windows Media. Unfortunately the Media player does not properly support ASF
playlist files unless their file extension is .asf. In order to listen to Yahoo
content, you will have to disable the Default Plug-in. To do that:
- Open the application menu > View > Show toolbar. Make sure the toolbar is
visible for the mode you're in (Full screen / Normal screen). -- Yes, I just
noticed that "Normal screen" appears in the user interface. This is the least
of my language worries, I am quite embarrassed by the quality of the text.
- Click the bottom right button in the toolbar (it looks like a magnifying
glass, but it's really an overloaded kitchen sink button) > Components >
Default plug-in, RealPlayer, Windows Media.
- Try loading your Yahoo media property again. You should now get Flash based
media delivery.
- We're now using Nokia sponsored text for all languages, including English US
and English GB. In the betas we shipped Mozilla's text for English. This is a
very mixed bag. Unfortunately it meant that we didn't get very good testing
coverage of the text we're shipping. And it really shows in a number of places.
I take the blame for this. It meant that our beta testers could test the engine
as the localizations we were given were generally so broken that you, e.g. got
a famous yellow/red error indicating Gecko couldn't render the error page when
you could not reach your proxy. Unfortunately the localizers are not familiar
with localizing XML text and consistently generated text which was invalid, and
until the very end we didn't have any tools to help them recognize this problem.
Next time, they'll hopefully do better. There are two main places where you
will notice this, again, I'm sorry. We will try to ship a beta release which
fixes the text shortly. I haven't decided if we'll release back ports for the
other platforms in sync with this fix or before we fix this.
- The HTTPS authentication dialogs repeat the server and message in both the
server and message fields (oops). This was not present in any of our betas,
so I didn't notice it while I was traveling with my devices last month.
- The netError messages don't fit Nokia style, specifically the line below the
title should really show just the site/path, and not text.
What's coming?
We have a number of long term projects;
- Upgrading Gecko to a more current version, which will probably include
switching to using Cairo throughout Gecko instead of just for <canvas>.
- Betas and backports. Hopefully within a week of the IT OS 2008 image being
posted I'll be able to announce packaged versions for all the other platforms
for which we've shipped betas, as well as
OS2007HE. There
is a package available, but I felt that its quality was not up to snuff (yes,
I know the package I'm announcing here isn't perfect, but what I saw when I
first opened it was more glaring and it wasn't the current version at the
time). We'll try to keep all of our releases in sync so that we don't have to
deal with people complaining about bugs in one system and having people with a
different system say that they don't see the bug (when the reason would have
been because one of the versions was newer).
Changes
This is a list of changes since 4, to the best of my ability. Please
remember that there have been occasional updates since that announcement, and as
I have not had time to review or publish the announcements, there is no specific
changelog for them, which means you may not remember some of these bugs. Note
that I'm only reviewing changelogs for browser related packages, it's possible
that bugs affecting browser have been fixed in packages upon which the browser
depends. There's no easy way for me to learn about such things.
I'm assuming that changes happened after August 9, 2007.
User reported bugs
Multimedia
- Default plug-in now includes mime type when it sends content to handlers,
this fixes problems with RealPlayer audio samples from amazon.com.
Note: This requires the Media player to register the content types
(Editor believes this is fixed in IT OS 2008 on the Media player side,
people trying to take advantage of this fix with MicroB on older releases
will probably need to hack a .desktop file).
- Content of type application/x-mplayer2 should be supported (editor believes
this is fixed in IT OS 2008 on the Media player side, people trying to take
advantage of this fix with MicroB on older releases will probably need to
hack a .desktop file).
- Links to mp3 contents should open Media player
(again because we're passing along the mime type?)
- Links to WVX (and presumably anything else) with query parameters
should be properly sent to Media player
(Editor's note: Media player support for WVX was added in IT OS 2008)
- Loading an mms:// url should work
(Editor's note: There's no bug reference in the changelog,
I can't determine what this means)
- Add support for application/vnd.rn-realsystem-rmj; treat it video/x-real, and
audio/x-real as streamable urls (instead of saving to disk before launching
Media player)
(Editor's note: Media player team claimed to fix something but didn't
explain what, and I don't feel like diff'ing their source tree to figure it
out.)
- Browser default plug-in "Description" field is now very short, useless
and incorrect.
(Editor's note: it seems that some reporter and engineer decided that
it would be better not to show lots of semicolons, so instead we now
make my job a lot harder when it comes to video/audio evangelism.
That will be the subject of a least one blog article.)
Networking
- It should be possible to load a web page saved with images but which requires
some other network resources without going back online. It will almost certainly
require you to select cancel once for each resource which is not stored locally.
Packaging and Building
- tablet-browser-controls now lists a dependency to microb-eal-dev
- microb-eal-dev now lists a dependency to depend on microb-eal
microb-eal-dev should depend on microb-eal
- microb-refui now lists a dependency to depend on libgtkmozembed
microb-refui should depend on libgtkmozembed
- Should build in gregale
- OS 2006 uses a different plug-in directory
(Editor's note: yeah, but what is it?)
- Browser UI is prelinked with microb engine
- Browser is now compiled with -fPIC (thanks to the toolchain sucking
less and to no using maemo-launcher, although in theory they fixed
maemo-launcher).
- At some point in time it built on HILDON2006
(If it doesn't, we'll try to fix it shortly....)
- MicroB uses system cairo (for canvas only!)
- We now include/package/use libsqlite and nssdbm libraries
- mozilla-config symlink is included in system directory
- mozstorage is enabled and built- but probably not very useful (no places)
- microb-refui now lists dependencies
- xulrunner package is available
- Added option to build microb-engine with an SVG backport
(Editor's note: SVG is still disabled in this release)
- Gecko engine is probably approximately equivalent to a pull from 2007-09-29,
this is done via the
debian style
of adding lots of patches on top of a base instead of actually updating the
base.
- added libnspr package which adds some part of gecko to the ld.so.conf library
search path
(Editor's note: this will cause you great pain if you try to run your own
mozilla on the platform.)
User interface
- Settings dialog title text is now properly distinct from the menu item that
opens it. See footnotes.
- Plug-ins has been renamed to Components to reflect the fact that it includes
both Plug-ins and Extensions.
(Editor's note: Name and Description fields in the Component details dialog are
misleading. For plug-ins, the description is actually a concatenated list of
supported mime types and their descriptions - the Name is really its
description. For exensions, I don't really understand what the Name field is,
but it isn't simply the name.)
- Removed unused code (note to self: try to figure out what this means)
- New windows will now appear last in the window list (before they would return
to their previous position if there was one, otherwise they were added to the
top)
- Toolbar "Connecting" indicator will no longer accelerate with each successive
load attempt
- Tapping link should always update toolbar address (note to self: figure out
if this was a regression)
- Rapidly clicking the address bar quickly immediately after opening the first
web browser window will result in the default url showing when it loads,
instead of leaving a blank field. (editor's note: it's unclear that this change
makes sense or is an improvement. the internal bug gives a slightly different
actual result which is indeed slightly strange, however the required shipping
result does appear to be a regression from beta. If someone feels that the new
behavior is bad, please file a
bug
.)
- Windows menu should not be misplaced after loading a page with a very long
title
- The toolbar buttons are no longer focusable (it used to be possible to move
focus into them after interacting with the completion widget, this was
surprising. As it isn't seen to be a useful behavior, it was removed).
- Trying to paste with an empty clipboard in Browser and Bookmarks should now
use the standard system global "Nothing to paste" message instead of "Unable to
paste".
- The Windows submenu should be properly positioned when web pages have long
titles.
- The RSS button is now to the left of the urlbar.
- Restoring a backup from MicroB in OS2007 into an OS2008 device will result in
a browser that crashes instead of just looping infinitely (please don't ask why
this is considered a feature).
- !! Fixed restore plug-ins state if the browser crashes at low memory. !!
(Editor's note: There's no bug reference in the changelog,
I can't determine what this means)
- You can now save the contents of links using the Context Menu.
- about: now has localized text for the about:config link.
make description for about:config localizable
- Set Preference in about:config now works with boolean types
- Deleting an unnamed download should no longer crash
- One of an infinite number of potential crashes in the download manager
should no longer trigger a crash (Editor's note: There's no bug reference
in the changelog, I can't easily determine what this means)
- Resuming downloads should not crash
(Editor's note: There's no bug reference in the changelog,
I can't easily determine what this means)
- Deleting an item from history should leave focus at the next item instead
of lost in the void.
- Pressing hardware right should not scroll the components list of the
components dialog.
- Focus for popup windows is properly tracked so trying to load a url in the
window will not go to the window that had triggered the popup.
- Some possible plug-in crash should be fixed
(Editor's note: There's no bug reference in the changelog,
I can't determine what this means)
- Interrupting a load from Bluetooth will now generate a very annoying and
poorly worded error dialog instead of a standard gecko error page
(Editor's note: I clearly don't approve of this improvement)
- Save target as (using Browser) is now available to all libmime consumers
(well, at least Chat)
- UI should be more responsive while the browser engine loads
(Editor's note: There's no bug reference in the changelog,
and the English is wrong...)
- Requests from an external application (Bookmarks) to "Open" an item in
the "current" window after having closed a recently opened new window.
(Editor's note: the "feature" of opening an item into a random existing
window from an external application is probably a bug and needs to be
reconsidered, usually the result is dataloss)
- Automatic is no longer included as an encoding in the Details dialog.
In Gecko, we will always let Gecko detect an encoding, and the encoding
shown in the dialog should be the encoding Gecko has detected, the user
can choose any alternate encoding but it doesn't make sense to select
automatic since that's always used first.
- Trying to save a page after asking the browser to quit with lots of
windows open shouldn't crash.
(Editor's note: why not? the user wants the browser to quit....
Don't ask me if the file should get saved or if you can actually try
to save anymore.)
- History list should no longer truncate Cyrillic entries
(no one explained if this would affect other non Latin encodings,
the bug reports losing 1 character at the end of titles)
- The password saving dialog was re-implemented.
- Application Switcher now shows favicons with size 64x54 from
gtk_window_set_icon. How this affects the browser on older platforms
is uncertain as it seems we barely got testing for IT OS 2008. I also
have no idea what happens when the only favicon for a site is 64x64,
presumably the icon won't look great.... People are encouraged to
file a
bug
complaining about this behavior (only file one bug, everyone else should just vote for it).
- Toggling Fit Width to View (and starting the Browser?) will now
show an Updating banner
(Editor's note: I have no idea why this is considered a feature,
I know a number of people who have asked me if I'm familiar with
this bug - namely the "Updating" banner when the browser launches)
- Task navigator list for bookmarks should have reasonable widths
and if items are too long they should be truncated with ellipsis.
(This is fallout from some API work core did)
- It's possible to re-enable plug-ins after they are disabled due
to low memory conditions.
- Delete confirmation dialog should now appear in front of the
downloads window.
(Editor's note: the window manager seems to be really flaky.
I've seen similar problems in a number of parts of the browser,
and I walked an even worse variation of this visible in the Map
application to the responsible engineer. Maybe they'll fix this
for IT OS 2010.)
- Find toolbar will remember search string during the session
even if you close and reopen it.
- Opening the find drop down will now highlight the most
recently searched for item (i.e., the one closest to the find bar.
hildon-find-toolbar-example.c
- Saved pages (with long filenames/url parameters?) should include
an html file extension so that File manager will know to use Browser
to open the file.
- OK in settings dialog should really save the settings....
- Control-B will open the bookmarks menu ... at the same location
as if you had tapped the toolbar button.
(Editor's note: I did not approve of this keybinding as it results
in conflicts with Google and other Web Applications....)
- Pressing <escape> will dismiss the bookmarks toolbar menu.
- Switching to full-screen mode while a page is loading will stick,
instead of restoring normal view.
- Enabled support for XBM image format
- Browser is no longer built against maemo launcher, this seems to
result in the best launch times.
- Launching the browser with a url should load it directly without
first loading about:blank.
- Save as with images (for html pages) is now part of the normal
File save as dialog (available as a type field, and only visible
for html documents).
- Mime types were added to the default plug-in to try to fix wave file support.
(Editor's note: However this was all removed later. I believe the only
interesting changes were telling our testers to fix their testcases.)
- Focus should move to the web page when loading a page from the location bar.
- Selecting text in an <input> should have a better chance of working
instead of being treated as a thumb-panning action.
- It should still be possible to trigger the vkb and fkb from <input>s.
(Editor's note: If you don't think the preceding couple of bullets are
juggling conditions, I have a dozen more
egg-citing
conditions you can try juggling, no points for dropping or breaking any
eggs.)
- Restored support for PAC (nsProxyAutoConfig.js was not packaged)
- Restored global-region properties
(Editor's note: letting people who don't understand Gecko remove files from
the distributed set is not recommended.)
- Rephrased error messages for:
- malformedURI
- fileNotFound
- dnsNotFound
- connectionFailure
- netTimeOut
- proxyResolveFailure
- proxyConnectFailure
- redirectLoop
- deniedPortAccess
(Editor's note: upon review of the results, we don't like them, see footnotes.)
- vkb should be able to open on places like www.hotmail.com
because we now process the mouse up instead of the click event (which sites can
choose to swallow).
- tapping an input field that would appear below the vkb might properly scroll
the field into view after showing the vkb (or it might not, an extra fix got
posted around the time of this announcement and it looks like it wasn't
accepted for the release).
- Enter key in fkb should not be detected by web sites, e.g.
www.hotmail.com
- Completing a download should be handled better
(Editor's note: the changelog for this item just says it's cleaning something.)
- Frame details page size should show the size of page in the frame, and not
the frameset containing it.
- Page load should succeed even if interrupted to save a new connection if you
picked one in response to a select connection dialog.
- Fit width to view is disabled by default
(Editor's note: it's not a very good feature anyway.)
- Fit width to view should work slightly better
(Editor's note: the comment gives no indication about how/why/under what
circumstances.)
- Fit width to view will try harder to avoid a horizontal scrollbar
(Editor's note: at least for praca.monsterpolska.pl)
- Opening a new window shouldn't affect the ability to activate/deactivate Fit
width to view in the original window.
- RSS content should be indicated when pages finish loading
(Editor's note: this doesn't mean it works in all cases, and given the lack
of a bug report or change set, there's no guarantee it means anything at all.)
- Loading an unrecognized protocol should result in some "friendly" error.
(Editor's note: the error message is not friendly, and the Connecting bar
doesn't stop until you click OK.)
- Plug-ins should not be deleted (!?) if they're disabled and the browser quits
unexpectedly (crash/kill/battery removed)
(Editor's note: the bug doesn't explain the fix or what actually happened at
the file system level, I only speculated based on the description.)
- EAL should launch without system DBUS
- Save as should work from the frame CSM submenu.
- Clicking mailto: links will no longer leave the toolbar stuck in the
connecting state.
- Unrequested pop-up windows should now trigger an information banner
when Enable pop-up windows: is set to Only requested.
- Found and fixed some instances of using freed memory relating to opening
and closing browser windows.
- Loading an image directly will result in a scaled down version if it's bigger
than the window.
browser.enable_automatic_image_resizing
- Browser shouldn't crash when quit if there are no plug-ins....
- Start page should be shown with a url of Home.html
(Editor's note: yes, this isn't a url, and yes your home page might be
something else. Yes, I'd rather call it Start.html, yes, I lost.)
- Hardware keys will trigger mouse move events, and those coordinates will
probably relate to the center of the selected element.
(Editor's note: why? answer: because we're specified to do so)
- Tabbing will now focus links because using
accessibility.tabfocus = 7 meant that
hardware navigation would not work on pages without textareas.
- Disabled indirect threading in spidermonkey because it seems to cause
frequent random crashes at various sites.
(Editor's note: We suspect gcc3.3/arm toolchain is buggy. Given that
JS_THREADED_INTERP is only supposed to be a performance improvement,
it's a good thing to drop.)
- Focus shouldn't leave a <select> element prematurely while navigating using
the hardware navigation keys.
- Each page in back/forward history should remember its zoom level
- Pages with HasUnloadListeners will now have their zoom state preserved if
the page is scrolled.
(Editor's note: Otherwise it isn't. These are edge cases, if you care,
you're welcome to learn Gecko or write your own layout engine.)
- Native theming for <select> widgets is mostly implemented.
- Native theming for <input type=checkbox> and <input type=radio>
- Height of <input type=file> should be reasonable
- Imported fix for
Hang with display: table-caption, large padding and left float inside it
- Uninitialized value used in nsTypedSelection::AddRange()
- Holding hardware arrows to trigger scrolling should result in fairly
continuous scrolling (no link navigation, and focus should be cleared)
- Pressing a hardware arrow key when there is no focus on the screen should
result in focus being inserted according to cardinal locations (up = top of
screen, etc.)
(Editor's note: The entire hardware arrow key handling is a waste of effort and
resources. I'd appreciate it if people contacted me indicating how often they
try to use it, and why.)
- RSS channel items should not be duplicated
(Editor's note: this change is odd, it definitely fixes the testcase,
but what does it break?)
- Entering multiple words into the location bar will now trigger Google's
"I'm feeling lucky" search.
- Pages that serve RSS content with XSLT (i.e., BBC) should trigger the RSS
toolbar button.
- Trying to get a context menu on an automatically resized image should not
result in continuous swaps between resized and normal image states.
Similarly, it should be possible to pan non resized images, instead of just
having them toggle between states.
(Editor's note: ah, the wonders of our flaky XServer/touch-screen. This code
is 100% pure hackery. It also indicates a design flaw. We should just remove
the feature and offer the Microsoft floating toolbar style instead.)
- One potential crash involving an incremental download test over https
should not happen
- Save as web page, complete should now include a proper charset
(Editor's note: subject to bugs documented in
Incorrect meta tag is used by Save As "Web, page complete" (character encoding specified incorrectly)
)
- Documents in designMode will suppress the ability to open the fkb, you will
need to configure the select button to activate the thumb keyboard.
- You can disable spatial navigation by setting
snav.enabled to false
- Note that you shouldn't use more than 4 browser windows
(Editor recommends 3), unfortunately a related preference
browser.sessionhistory.max_entries
was tuned from 50 (desktop value) to 31 (random value).
People are advised to tune it to 8.
- Removed code to add extra scrollbars (this
code
doesn't exist in
CVS)
- Network error pages will not show horizontal scrollbars (inner content will
probably have such scrollbars, but that's different)
- Added support for WMODE plug-ins (thanks to karlt for the work)
Windowless plug-in support for X (WMODE)
(Editor's note: at this time there are no NPAPI plug-ins for Maemo support this
feature. I hope to find someone to package a WMODE enabled DiamondX plug-in so
people can see how pretty it is.)
- We should no longer be violating NPAPI to talk to Flash.
(Editor's note: well, the changelog didn't say that, but the engineer said
that this changed and I'm assuming that entry is what he meant)
- When you visit an image directly in the web browser, if it's bigger than the
available window size, you can tap it to shrink it to fit. If you had zoomed it
before tapping, when you tap again, the zoom level will be restored. This zoom
out will try to ensure the area you clicked on is visible close to where you
clicked.
(Editor's notes:
1. If the image at 100% would fit in the window, and you zoom it
to e.g., 240% so that it no longer fits in the window, you can't click to zoom
out -- This seems reasonable.
2. In testing it seems that if your window is zoomed and you then load an
image without a webpage and you want to use tap to zoom, you will first have
to change your zoom.
3. On the N810 with the toolbar visible and shrink to fit active, opening the
keyboard tray will result in the image shrinking again. The keyboard indicator
is awful and needs to be redesigned, this is one of many ways that it breaks
the web browser.)
- Network errors should be properly skinned (including an exclamation mark)
- Back/Forward should remember vertical position even when Fit width to view is
enabled
- CSM shouldn't be triggered when you simply click on an element in a
page that uses mouse event handlers
- Pressing hardware select while the focussed element is offscreen will blur
the object instead of triggering it
(Editor's note: web pages can do interesting things in response to Blur, but
our UI spec demands that conceptually it not be possible for focus to be on an
offscreen element)
- Using spatial navigation on yahoo.com might not crash
(Editor's note: the
patch
alters a "fix" for navigating google.com, but invalidates the
comment)
- Undid a change to improve the contrast for text in disabled <textareas>s
(Editor's note: the reporter complained that the texarea was unreadable, but
worry not, while the beta included a "fix", it was reverted
because of a specification, so you too can
see the unreadable textarea
- of course the engineer shouldn't have touched the bug, but we work by
"fixing" bug reports - so
file
bug reports!)
- You might be able to use the hardware navigation keys in
docs.google.com
Known Issues
- Opening the vkb for a <textarea> will probably ignore autocapitalization mode
and just use lowercase.
(Editor's note: this seems to be rocket science, and the APIs involved don't
seem to be particularly useful/workable.)
- Due to X or the touch driver or something being oversensitive, it is basically
impossible to tap on a single pixel and expect an application not to hear mouse
move events.
(Editor's note: I'm sorry, but there's really nothing anyone can do.
If you think
this
problem is hard, imagine having at least five dimensions
(That's the problem here), anyway, here's what the one dimensional problem
looks like:
- CSM animation doesn't always go away
(Editor's note: the bug report sucks, it talks about a "dialog", but it
probably means a web application emulated dialog. The problem probably relates
to imperfect accounting of click targets.)
Footnotes
For people wondering about User Interface style, the general rule is:
- A menu item to perform a given task should have ellipsis (...) only if there
is a need to ask the user for additional information in order to complete the
task.
- The Nokia style unfortunately differs and basically says all menus that
trigger dialogs should have ellipsis (...).
(See also Apple's rules)
For people curious about general rules for writing localizable code, here are a
a couple of basic rules:
- Never use the same identifier for terms that appear in different contexts.
- If you're going to give localizers text to translate, make certain that the
text is not grammatically incorrect in the original language. It should also
use the clearest and most common/popular words to describe terms and concepts,
unless you have explicitly defined terms for your localizers.