Difference between revisions of "Features/WebKit"

From Sugar Labs
Jump to navigation Jump to search
(Created page with "<noinclude>{{TOCright}} Category:Feature Page Incomplete WebKit <!-- You can add categories to tie features back to real deployments/schools requesting t...")
 
Line 5: Line 5:
 
[[Category:Features requested by School Xyz|<Feature Name>]] (the |Feature Name option sorts the entry on the category page under the first letter of <Feature Name>). -->
 
[[Category:Features requested by School Xyz|<Feature Name>]] (the |Feature Name option sorts the entry on the category page under the first letter of <Feature Name>). -->
 
</noinclude>
 
</noinclude>
 
'''Comments and Explanations:'''
 
 
There are comments (in italic) providing guidance to fill out each section, see also the [[Features/Policy|Feature Policy Page]] for a more detailed explanation of the new-feature process. '''Copy the source to a ''new page'' named Features/''Your Feature Name'' before making changes!  DO NOT EDIT THIS TEMPLATE.'''
 
 
<!-- All fields on this form are required to be accepted.
 
We also request that you maintain the same order of sections so that all of the feature pages are uniform.  -->
 
 
<!-- The actual name of your feature page should look something like: Features/Your Feature Name.  This keeps all features in the same namespace -->
 
  
 
== Summary ==
 
== Summary ==
Due to an increasing of support for building applications around the Mozilla web browsing technologies, this feature proposes that Browse is switched to [http://www.webkit.org/ WebKit] as its back-end technology provider.
+
Browse and related components are switching to [http://www.webkit.org/ WebKit] as its back-end technology provider. (this is just a proposal, for now)
  
 
== Owner ==
 
== Owner ==
''This should link to your home wiki page so we know who you are''
 
 
* Name: [[User:DanielDrake|Daniel Drake]]
 
* Name: [[User:DanielDrake|Daniel Drake]]
  
Line 28: Line 18:
  
 
== Detailed Description ==
 
== Detailed Description ==
''Expand on the summary, if appropriateA couple of sentences suffices to explain the goal, but the more details you can provide the better.''
+
 
 +
Browse and related components currently embed Mozilla XUL/Gecko as their backend, however, Mozilla embedding has typically been neglected and buggy, causing a maintenance headache for us. It is now [https://groups.google.com/forum/#!topic/mozilla.dev.embedding/c_NMcO-N8wo/discussion actively discouraged] by Mozilla developers, who are focusing all their efforts on Firefox. From the perspective of a fairly regular open-source project, Mozilla's direction is also [http://lists.sugarlabs.org/archive/sugar-devel/2011-June/031865.html questionable on other points].
 +
 
 +
WebKit is a promising alternative, which is (by nature) an embeddable web engine. It is used in Apple Safari and Google Chrome and various other projects.
 +
 
 +
=== Existing prototype: Surf ===
 +
 
 +
The pywebkitgtk-based Surf activity can be used as a prototype. Possible areas that need work are:
 +
* Downloads - originally missing due to [http://www.mail-archive.com/sugar-devel@lists.sugarlabs.org/msg08959.html no support in pywebkitgtk] but now landed?
 +
* persistant history - not saved across sessions (or journal entries)
 +
* clipboard/undo/redo - should be simple
 +
* back and forward buttons - you can go back and forward through your history, but autocomplete and skipping back or forward in the history is not implementedshouldn't be too hard to complete
 +
* arrow key navigation in textbox
 +
* No cookie support
 +
 
 +
pywebkit is seen as deprecated, [http://janalonzo.wordpress.com/2010/01/18/using-introspected-webkitgtk-in-gwibber/ even by the author himself]. PyGI is the solution, allowing direct calls into pywebkitgtk with no static bindings, and is now mature. Some of the missing features above can't be solved until either pywebkitgtk grows more API, or the switch is made to PyGI.
 +
 
 +
=== Proposed implementation ===
 +
 
 +
Browse should move to WebKitGtk (for GTK+-2.x) using PyGI (gobject-introspection). Even though most applications of PyGI target GTK+ v3, we believe it should work on v2. However, a possible problem here is that sugar-toolkit bindings use static GTK+ bindings, and mixing PyGI calls in the same app might lead to problems ([http://lists.sugarlabs.org/archive/sugar-devel/2011-June/031869.html source]).
  
 
== Benefit to Sugar ==
 
== Benefit to Sugar ==
Line 47: Line 56:
  
 
== Dependencies ==
 
== Dependencies ==
''What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this feature depends?  In other words, does your feature depend on completion of another feature owned by someone else or that you would need to coordinate, which might cause you to be unable to finish on time?  Other upstream projects like Python?''
+
 
 +
pywebkitgtk is already a part of the Sugar platform (for epub support in Read).
  
 
== Contingency Plan ==
 
== Contingency Plan ==

Revision as of 17:43, 14 June 2011


Summary

Browse and related components are switching to WebKit as its back-end technology provider. (this is just a proposal, for now)

Owner

Current status

  • Targeted release: (SUGAR_VERSION)
  • Last updated: (DATE)
  • Percentage of completion: XX%

Detailed Description

Browse and related components currently embed Mozilla XUL/Gecko as their backend, however, Mozilla embedding has typically been neglected and buggy, causing a maintenance headache for us. It is now actively discouraged by Mozilla developers, who are focusing all their efforts on Firefox. From the perspective of a fairly regular open-source project, Mozilla's direction is also questionable on other points.

WebKit is a promising alternative, which is (by nature) an embeddable web engine. It is used in Apple Safari and Google Chrome and various other projects.

Existing prototype: Surf

The pywebkitgtk-based Surf activity can be used as a prototype. Possible areas that need work are:

  • Downloads - originally missing due to no support in pywebkitgtk but now landed?
  • persistant history - not saved across sessions (or journal entries)
  • clipboard/undo/redo - should be simple
  • back and forward buttons - you can go back and forward through your history, but autocomplete and skipping back or forward in the history is not implemented. shouldn't be too hard to complete
  • arrow key navigation in textbox
  • No cookie support

pywebkit is seen as deprecated, even by the author himself. PyGI is the solution, allowing direct calls into pywebkitgtk with no static bindings, and is now mature. Some of the missing features above can't be solved until either pywebkitgtk grows more API, or the switch is made to PyGI.

Proposed implementation

Browse should move to WebKitGtk (for GTK+-2.x) using PyGI (gobject-introspection). Even though most applications of PyGI target GTK+ v3, we believe it should work on v2. However, a possible problem here is that sugar-toolkit bindings use static GTK+ bindings, and mixing PyGI calls in the same app might lead to problems (source).

Benefit to Sugar

What is the benefit to the platform? If this is a major capability update, what has changed? If this is a new feature, what capabilities does it bring? Why will Sugar become a better platform or project because of this feature?

Make sure to note here as well if this feature has been requested by a specific deployment, or if it has emerged from a bug report.

Scope

What work do the developers have to accomplish to complete the feature in time for release? Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?

UI Design

Does the feature have a direct impact on the work flow, or does it need a UI? Link here mockups, or add detailed descriptions.

How To Test

User Experience

If this feature is noticeable by its target audience, how will their experiences change as a result? Describe what they will see or notice.

Dependencies

pywebkitgtk is already a part of the Sugar platform (for epub support in Read).

Contingency Plan

If you cannot complete your feature by the final development freeze, what is the backup plan? This might be as simple as "None necessary, revert to previous release behaviour." Or it might not. If your feature is not completed in time, we want to assure others that other parts of Sugar will not be in jeopardy.

Documentation

Is there upstream documentation on this feature, or notes you have written yourself? Has this topic been discussed in the mailing list or during a meeting? Link to that material here so other interested developers can get involved.

Release Notes

The Sugar Release Notes inform end-users about what is new in the release. An Example is 0.84/Notes. The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns. If there are any such changes involved in this feature, indicate them here. You can also link to upstream documentation if it satisfies this need. This information forms the basis of the release notes edited by the release team and shipped with the release.

Comments and Discussion