View Single Post
Posts: 1,994 | Thanked: 3,342 times | Joined on Jun 2010 @ N900: Battery low. N950: torx 4 re-used once and fine; SIM port torn apart
#85
What's the state of the project? Trying to summarise the problems and solutions, but the post is too long...

1. Done : Find the version of mainline Gecko that matches with the Gecko version being shipped on the N900 (in the microb-engine package)
2. Done: Identify any patches on top of mainline in the N900 Gecko version (whether they be patches that ended up in mainline Gecko later or whether they were Nokia-specific or otherwise dropped)
3. Ongoing (slowly): Figure out which of the patches from #2 are actually necessary and forward port those to a more modern Gecko version
4. Identify: Make the other changes to the modern Gecko required to get it to function as a replacement for microb-engine and make it work as a browser
5. Too huge to do: Reverse engineer the pieces that talk to the browser (flash player, maps, a couple others) and see if they are tied to the browser's APIs in ways that will break with a newer Gecko
6. Using reverse engieering and whatever else, find a way to make the stuff in #5 work.

First is dealing with things that newer Gecko needs that Fremantle doesn't provide (i.e. kernel changes, GTK stuff etc) and figuring out how to work around those (or how to bring them into Fremantle)

If they are not really needed, disable them (like SVG was disabled in MicroB?). If they are really needed, update them (freemangordon was doing something with newer kernel within FPTF?).

Second is dealing with Maemo/Fremantle specific functionality and changes (e.g. the stuff that deals with network connectivity via various Maemo libraries or e.g. various dialogs and bits present in microb-engine) and identifying all the things that were removed but need to be brought back.

Part of the maemo-specific patches as in 2-3?

Third is dealing with ABI incompatibilities between old plugins and newer Gecko (with the exception of Flash and maybe Maps, we can probably clone all the plugins if we need to)

Flash: better to use the newer one? Adobe provides Flash plugin for Linux, right? Does it provide .deb package built for arm-whatever architecture that could be just dropped into Maemo 5 and work?
Maps... If Ovi Maps are not going to be provided-updated anymore, let's drop them?
If we need to use Flash: not sure if it better to bring NPAPI back in (using Seamonkey code, maybe, if they are still supporting NPAPI? or does it have to be based on old-Firefox-NPAPI-maemo-speicific-code?), or get PPAPI (like Chrome does).

And last is dealing with the external interface used by other things (browser ui, maps, messaging etc) to talk to the browser and making sure we are ABI compatible with that interface.

Originally Posted by jonwil View Post
Things we need to identify in order to proceed with this work:
1.Any and all bugs in bugzilla.mozilla.org that refer to removed/changed functionality (a few have been linked already but there are no doubt more that haven't been found yet)
2.Any changes to public header files (the ones in microb-engine-dev on Maemo) that break the ABI in ways that affect us (figuring out if a change affects us will rely on reverse engineering the closed plugins and we can figure out what has changed by looking at the commit history for the header files in question). If the Maemo version of a header file says an interface is "frozen" I think we can assume its not going to be incompatible in the latest Gecko (after all, thats the point of "frozen" status for an interface)
and 3.Which of the local patches actually get used when compiling the Fremantle binaries using the same configs Nokia used and of those patches, which ones matter for us (we especially need to see if any such patches change the public header files)

For item #1 we need someone who knows their way around bugzilla.mozilla.org and can find all those bugs.
For item #2 we need someone who knows how to program npapi and Gecko APIs.
And for item #3, we need someone who knows their way around the Gecko codebase and knows how to read/understand patches.
I do not remember exactly the location, but there is a human-readable file (script?) which defines the Ovi-Maps integration into abook (at least, part of the integration). Similar plugin can be written for Marble or Modrana.
 

The Following 16 Users Say Thank You to Wikiwide For This Useful Post: