Changes

Jump to navigation Jump to search
no edit summary
Line 27: Line 27:  
Webkit backend for Hulahop
 
Webkit backend for Hulahop
 
* '''Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?'''
 
* '''Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?'''
I will be attempting to write a [http://webkit.org/ Webkit] backend for Hulahop. This will require minimal modifications of Hulahop's APIs where they expose PyXPCOM or xulrunner internals, thereby further abstracting Hulahop.
+
I will be attempting to write a [http://webkit.org/ Webkit] backend for Hulahop. This will require minimal modifications of Hulahop's APIs where they expose PyXPCOM or xulrunner internals (mostly just a few renames).
    
Hulahop has a rather nice, simple, python API for integrating browsers in PyGTK applications. It embeds XULrunner with a small [http://kb.mozillazine.org/Chrome_URLs chrome] and provides simple enough interaction between Python and the DOM inside the chrome. It is built on [https://developer.mozilla.org/en/PyXPCOM PyXPCOM], which allows interaction between Python and XPCOM components.
 
Hulahop has a rather nice, simple, python API for integrating browsers in PyGTK applications. It embeds XULrunner with a small [http://kb.mozillazine.org/Chrome_URLs chrome] and provides simple enough interaction between Python and the DOM inside the chrome. It is built on [https://developer.mozilla.org/en/PyXPCOM PyXPCOM], which allows interaction between Python and XPCOM components.
   −
This project, [http://code.google.com/p/pywebkitgtk/ PyWebkitGTK] that unsurprisingly provides a PyGTK widget with a browser inside. It's API is lower level than Hulahop and more specific to Webkit, so it should be both feasible and beneficial to the community at large to wrap PyWebkitGTK in Hulahop's API, where it makes sense.
+
[http://code.google.com/p/pywebkitgtk/ PyWebkitGTK] unsurprisingly provides a PyGTK widget with a browser inside. It's API is lower level than Hulahop and more specific to Webkit, so it should be both feasible and beneficial to the community at large to wrap PyWebkitGTK in Hulahop's API..
   −
I intend to provide an alternative WebView implementation for Hulahop that embeds Webkit.  Hulahop's API does have places where PyXPCOM bleeds through, but the I will attempt to provide a WebView class with as little dependency on a specific engine as possible.
+
I intend to provide an alternative WebView implementation for Hulahop that embeds Webkit.  Hulahop's API does have places where PyXPCOM bleeds through, so I will attempt to provide a WebView class with as little dependency on a specific engine as possible.
This project is not aimed at providing a complete a drop-in replacement for the current (Gecko) version of hulahop. Firstly, activities (like Browse) that use hulahop do not restrict themselves to an engine-independent subset of the API, so they will have to be modified in order to work with hulahop-webkit.
+
This project is not aimed at providing a complete a drop-in replacement for the current (Gecko) version of hulahop. Firstly, activities (like Browse) that use hulahop do not restrict themselves to an engine-independent subset of the API, so they will have to be modified in order to work with hulahop-webkit. Secondly, XUL extensions only work on Gecko, not on Webkit.
 
<br />
 
<br />
 
The motivation for this project is the fact that there is a lot of empirical data that shows Webkit is significantly faster and uses significantly less memory than Gecko. Some [http://www.j5live.com/2007/08/02/webkit-and-xulrunner-mozilla-side-by-side-on-the-xo/ experimentation] was already done on the XO. I have made some of my own tests that confirm most of these results, both [http://dl.getdropbox.com/u/317039/webkit%20vs%20gecko.txt on OS X natively] and [http://dl.getdropbox.com/u/317039/webkit%20vs%20gecko%20soas.txt on linux in VirtualBox]. Webkit ends up being anywhere from 1.2 to 9 times faster than Gecko on benchmarks.
 
The motivation for this project is the fact that there is a lot of empirical data that shows Webkit is significantly faster and uses significantly less memory than Gecko. Some [http://www.j5live.com/2007/08/02/webkit-and-xulrunner-mozilla-side-by-side-on-the-xo/ experimentation] was already done on the XO. I have made some of my own tests that confirm most of these results, both [http://dl.getdropbox.com/u/317039/webkit%20vs%20gecko.txt on OS X natively] and [http://dl.getdropbox.com/u/317039/webkit%20vs%20gecko%20soas.txt on linux in VirtualBox]. Webkit ends up being anywhere from 1.2 to 9 times faster than Gecko on benchmarks.
Line 48: Line 48:     
* '''How about XUL extensions?'''
 
* '''How about XUL extensions?'''
Hulahop can load some Firefox extensions right now, and this ability would be lost for the Webkit version. However, it's not that big a problem because 1) many XUL extensions target the Firefox chrome, which does not exist in Browse and 2) [http://userscripts.org/ userscripts] (GreaseMonkey) are lighter-weight extensions that work in many browsers (GreaseMonkey for Firefox, GreaseKit for Safari, Opera, Chrome, etc.). Although userscripts do not have the same access to browser and native APIs as XUL extensions, they are still very capable. [http://softwareas.com/for-browser-extensions-grease-is-the-word Some] even envision userscripts getting APIs to supplement some of the capabilities they are lacking.
+
Hulahop can load some Firefox extensions right now, and this ability would be lost for the Webkit version. However, it's not that big a problem because 1) many XUL extensions target the Firefox chrome, which does not exist in Browse and 2) [http://userscripts.org/ userscripts] (GreaseMonkey) are lighter-weight extensions that work in many browsers (GreaseMonkey for Firefox, GreaseKit for Safari, Opera, Chrome, etc.). Although userscripts do not have the same access to browser and native APIs as XUL extensions, they are still very capable. [http://softwareas.com/for-browser-extensions-grease-is-the-word Some] even envision userscripts getting APIs to supplement some of the capabilities they are currently lacking.
    
* '''What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it's good to have a plan at the beginning so you have an idea of where you're headed.) Note that you should probably plan to have something "working and 90% done" by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.'''
 
* '''What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it's good to have a plan at the beginning so you have an idea of where you're headed.) Note that you should probably plan to have something "working and 90% done" by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.'''
Line 54: Line 54:  
Milestones:
 
Milestones:
 
# Replacement WebView class instantiates and displays google.com successfully
 
# Replacement WebView class instantiates and displays google.com successfully
# hulahop-webkit works with [http://wiki.laptop.org/go/Sugar_Code_Snippets#WebView this snippet], adjustments as necessary for the reworked Hulahop API.
+
# hulahop-webkit works with [http://wiki.laptop.org/go/Sugar_Code_Snippets#WebView this snippet], with adjustments if necessary
# Browse modified to use the the Hulahop API with the modifications can load google.com
+
# Browse modified to use the the Hulahop API with can load google.com
 
# Browse can browse history and make/load bookmarks
 
# Browse can browse history and make/load bookmarks
 
# Browse can save/restore to/from the Journal
 
# Browse can save/restore to/from the Journal
158

edits

Navigation menu