This year I'm writing my master thesis on mobile web browsers. In first part I will mention history of Internet browsers and mobile Internet access. Second part will be comparison of browsers available freely (open-source) for Neo FreeRunner phone (which runs Linux/X11, Linux/Android and Linux/QtE distributions). In the third part I will explain my practical work which is building a mobile web browser for Linux/X11 (for example for Neo FreeRunner).
My browser will be named Arora-mini and will be based on Arora. Its source will be open and available at http://github.com/gabrys/arora-mini. Arora is build on Qt4 and QtWebKit (which is distributed as a part of Qt4, but developed somewhat separately).
I'm going to strip down GUI, implement finger-scrolling and play with the network access layer to increase responsiveness of the browser. I'm going to disable some of the eye-candy and performance-needing features that WebKit engine supports (most of them being certain CSS properties like opacity, position: absolute and similar). I'm going to make zooming easier (with the modified GUI) and apply to webpages a custom CSS stylesheet, that'll make text (almost) always fit on the screen horizontally even on high magnification (so only vertical scrolling will be needed).
The heart of Arora (and Arora-mini) project is QtWebKit and in the near time, there will be next major version released, being QtWebKit 2.0. It's meant to have many performance improvements, so once it's released I'll try to update my application to use the new engine.
As a result I want to deliver arora-mini packaged for SHR (the distribution most often used on Neo FreeRunner). I also want to deliver a binary statically compiled against the latest working Qt and QtWebKit (so I can use their latest features without them being a dependency for my browser). Also a package for QtMoko would be great thing. QtMoko is a popular (and very usable) distribution for Neo FreeRunner derived from QtExtended (former Qtopia).
17 JUNE 2010: Trying to get newest Qt (4.7 beta) and QtWebKit (2.0-trunk) compiled on the phone, so I can compile my browser statically against those libs. If this fails, I'll try cross-compilation :-).
24 JUNE 2010: Work on improving basic tasks continues. Today I tracked down an error that made the display not refreshing when writing stuff from keyboard. The reason was faulty (and actually not working) frame flattening function. It should make all iframes and frames expand, so they can fit all the contents they have, so that no separate scrolling is needed on page. It did not do this and also broke refreshing screen when writing on keyboard.
Then, I worked around a bug also introduced in QtWebKit 2.0, which is not keeping the zoom factor between URL changes. That was not really a problem, but the problem was Arora remembered zoom it set so zooming was completely inconsistent. I changed the behaviour of zooming in/out to not rely on previously set value, but on value read from the engine. Zoom is still not preserved between URL changes, but zoom buttons work correctly now.
Also I hacked around creating new tabs, so that only one tab is ever active (I want it for memory, UI simplicity and performance reasons).
For testing I'm faking the User-agent string sent by browser. It now states it's an Android Browser. This makes some sites (especially Google ones) more fit to small screen.
This all was done after compiling fresh QtWebKit from the repository.
Unfortunately I registered reproducible crashes when trying to log in to Wikidot. I think it's my fault. I'll investigate it later. I finally managed to log in and this update is written from the Arora-mini browser :-).
30 JUNE: I managed to compile the latest QtWebKit weekly (in fact I built Debian package from its sources, so I was even smarted). It took me quite a long time, to finally have it up and running, but I have it now.
As the library was finally compiled, I have done a few other things which used communication between web and application content — home page showing history (bookmarks to come) and styling improvements (browser style changes when zooming, to keep paragraphs of text fit on screen).
I commented out some code responsible for keyboard navigation in hope to speed the browser up.
Still to do some home page tweaks, shortening the startup time, removing unused Arora parts and much testing, but browser is more and more ready each day :-).
24 JANUARY 2011: I almost have my master degree diploma in my hands. The browser finally was rewritten from scratch. The website about it is: ffbrowser.com