An overview of the Minimo (Mini Mozilla) project
May 19, 2004 — by LinuxDevices Staff — from the LinuxDevices Archive — viewsForeword — This article by Minimo project leaders Doug Turner and Chris Hofmann provides an overview of a relatively new project to produce a fully functional, embeddable version of the popular Mozilla browser. Enjoy! . . .
Mozilla, the browser, is arguably one of the best desktop browsers. Mozilla is used in many desktop applications: Netscape 7, CompuServe, AOL for Mac, Ximian GNOME, Galeon, and Nautilus. There also have been a few ports to make Mozilla run on various devices such as the Nokia Media Terminal and the AOL/Gateway. With the release of Minimo, a slimmed down version of Mozilla, we offer a minimalist browser that may be the best browser in the embedded space.
Minimo has two aims. First and foremost, Minimo is for embedders. The application layer of Minimo is small, and offers only the required pieces that a browser should have. This application layer will most likely be removed and replaced with an embedders application logic and UI. In this sense, Minimo is just a configuration of the Mozilla browser that is targeted at the Linux device space.
The second aim is to show off the Minimo. We have been releasing an application for the GPE Palmtop Environment on the Familiar distribution. Minimo does not require any GPE specific libraries or functionality. We chose GPE as a vehicle because it is well supported and quite easy to install on many of the IPAQ devices.
Requirements: Memory usage and toolkits
RSS
RSS is what is known as the "Resident Set Size.” This value is a key indicator of how much memory a process takes up. On machines that have virtual memory, RSS indicates how much physical memory has been used to map to the virtual page tables. At any given point, you can tell exactly how much a process costs in terms of real memory. In fact, this value is sometimes referred to as “Real” memory. This value sums the size of in-use code, data, stack, and allocated heap memory. Although it probably doesn't matter for measuring Minimo's performance, I should mention that RSS doesn't take into account any memory that is shared between processes. For example, if you have two process of Minimo running on a device, the actually memory usage would be less than the sum of RSS values reported for the two processes. |
Minimo requires about 25 MBs of RSS (see sidebar) on ARM. Before you think that this is too high, you must remember that this is a modern web standards complaint browser. Alternative browsers do not offer you the same level of web standards support.
Figure 1 shows memory usage of Minimo against an automated page loader test. The page loader loads forty popular websites during a cycle and we run this test for five cycles. There are no shortcuts — during each load, we download the page and render the complete content. (Some tests shortcut the drawing cycle to produces impressive page load times.) As you can see, we effectively level out at 25MB of RSS.
Figure 1: Minimo memory usage
(Click to enlarge)
Under the hood, the Mozilla functionality is isolated in a GTKWidget. This makes it quite easy for any developer familiar with GTK to use Minimo. Other toolkits are a possibility. Many commercial deployments are using QT. There has been work to make Mozilla work with QT, but currently there is no one exclusively working this.
Problems on small devices
One of the problems that all devices that display web pages have is a very small screen. There have been many proposed solutions to this problem. We believe that the two most promising are CSS (Cascading Style Sheets) manipulation and direct magnification.
Minimo provides what is known as Small Screen Rendering (SSR) that uses CSS to massage web pages into a format that looks better on small displays. On most web pages this works great. The page is reduced so that there is no horizontal scrollbar, allowing the content to be scrolled in one direction. Main content is usually moved to the top to allow you to see what is most important without having to scroll all over the page.
The second promising solution is the ability to scale a web page. Currently, most browsers (even on the desktop), only have a way to increase the font size of a page. So, when you "zoom" in a page, you are merely increasing the size of the text. An alternative to this is to do the actual scaling of all elements on a page. This will allow you to zoom out of a page and see the entire content, then with a click of the pointer, zoom in on the most interesting part of the page.
Competition
Our target for Minimo is a Linux device with around 64 MB of physical memory. As we mentioned above, Minimo runs at around 25MB of RSS. Above this, you will need a Linux distribution, GTK, and X Windows. We have been using Familiar and GPE with much success in this configuration.
We have run the same tests using Opera and Pocket IE on 32MB device form factors, and neither can make it though the page load test based on their lack of browser content and standards support, or they just simply run out of memory trying to display the pages.
64MB is really the form factor that is needed to create any useful browser for handheld devices; and in that space we look very good next to the competition. From discussions we have had with device makers it appears that most of the next generation cell phones and PDA devices will provide the kind of spec's you see in the current devices like the iPAQ with 64 MBs, so we are encouraged that the future is bright for Minimo being used in a variety of different handheld products.
What's next
We have just completed the first three milestones of the project where the focus has been:
- Iron out build configuration to strip Mozilla down to barebones requirements and focus on stamping out memory leaks and footprint use during browsing sessions
- Get the Minimo configuration ported and running on the iPAQ device and handhelds.org's familiar linux distribution
- Do a bunch of testing and evaluation to check out the feasibility of minimo to be used on current handhelds and devices we see being used in the future
After finishing up milestone three, things are looking very good. We have received some great feedback from individuals and companies that are following the project, with a lot of good ideas on the next round of things to work on. We are in the middle of evaluating those ideas and building a plan for the next stages of the project. We have some partners that sound very interested in funding continued development, porting, distribution, and integration of Minimo into products, so we are very encouraged about things on the horizon.
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.