Changes

no edit summary
Line 1: Line 1:  
{{TOCright}}
 
{{TOCright}}
[backup proposal]
+
[This was a backup proposal, I got accepted for the other one.]
 
====About you====
 
====About you====
   Line 6: Line 6:  
Lucian Branescu Mihaila
 
Lucian Branescu Mihaila
 
* '''What is your email address'''?
 
* '''What is your email address'''?
lucian dot branescu at gmail dot com
+
lucian dot braNOSPAMnescu at gmail dot com
 
* '''What is your Sugar Labs wiki username'''?
 
* '''What is your Sugar Labs wiki username'''?
 
lucian
 
lucian
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 refactored to use the new Hulahop API 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
Line 77: Line 77:  
I'm not familiar with schools near where I live, as I am an international student. [Any suggestions?]
 
I'm not familiar with schools near where I live, as I am an international student. [Any suggestions?]
 
* '''What will you do if you get stuck on your project and your mentor isn't around?'''
 
* '''What will you do if you get stuck on your project and your mentor isn't around?'''
Google, check sugarlabs/olpc forums/mailing lists/wikis. Ask on #sugar/mailing list.
+
Google, check Sugar Labs/OLPC forums/mailing lists/wikis. Ask on #sugar/mailing list.
 
Ask other mentors and GSoC students or developers of related open source software.
 
Ask other mentors and GSoC students or developers of related open source software.
 
* '''How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? '''
 
* '''How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? '''
Line 85: Line 85:  
====Miscellaneous====
 
====Miscellaneous====
 
[[Image:lucian-dev-env.png|thumb|right|My development environment with the small hack.]]
 
[[Image:lucian-dev-env.png|thumb|right|My development environment with the small hack.]]
* '''We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of "Restart." See the image on the right for an example. It's normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.'''
+
* '''We want to make sure that you can set up a [[Development Team#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of "Restart." See the image on the right for an example. It's normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.'''
 
Picture to the right.
 
Picture to the right.
 
* '''What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)'''
 
* '''What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)'''
158

edits