Education/Projects/ProcessingForTheWeb: Difference between revisions

Expand material further
(Expand material further)
(Expand material further)
Line 33: Line 33:
Why do "Processing for the Web"? Given Processing's Java syntax and heritage, wouldn't it make more sense to encourage people to move to using web technologies like JavaScript and Canvas directly, perhaps supplemented by JavaScript toolkits where appropriate? And even if porting Processing to the web is a good idea, why should Mozilla get involved?
Why do "Processing for the Web"? Given Processing's Java syntax and heritage, wouldn't it make more sense to encourage people to move to using web technologies like JavaScript and Canvas directly, perhaps supplemented by JavaScript toolkits where appropriate? And even if porting Processing to the web is a good idea, why should Mozilla get involved?


We believe that this project can bring real benefits to the Processing community, to Mozilla products and the Mozilla community, and ultimately to the open web, for the reasons discussed below.
For the reasons discussed below, we believe that this project can bring real benefits to the Processing community, to Mozilla products and the Mozilla community, and ultimately to the open web.


=== It's good for the Processing community ===
=== It's good for the Processing community ===


First, Processing has a large and enthusiastic community of people who have demonstrated a great deal of creativity and innovation. Doing a complete and robust implementation of Processing using web technologies benefits that community in multiple ways:
Processing has a large and enthusiastic community of people who have demonstrated a great deal of creativity and innovation. Doing a complete and robust implementation of Processing using web technologies benefits that community in multiple ways:
* It helps get more people involved in using Processing by lowering the barrier to entry: potential Processing developers would not have to download and install the Processing envronment, but could develop and run Processing sketches directly in their browsers. The resulting sketches could also be viewed in any modern browser, without the need for browser Java plugins.
* It helps get more people involved in using Processing by lowering the barrier to entry: potential Processing developers would not have to download and install the Processing envronment, but could develop and run Processing sketches directly in their browsers. The resulting sketches could also be viewed in any modern browser, without the need for browser Java plugins.
* It would help enable new types of Processing uses that leverage the power of the web, for example to access web-based data and services, enable web-based user interaction and collaboration, and so on.
* It would help enable new types of Processing uses that leverage the power of the web, for example to access web-based data and services, enable web-based user interaction and collaboration, and so on.
Line 46: Line 46:
=== It's good for Firefox and other open web products and technologies ===
=== It's good for Firefox and other open web products and technologies ===


Second, the Processing for the Web initiative could serve as a forcing function to drive improvements in key aspects of Firefox and other open web products and technologies from Mozilla and others.
The Processing for the Web initiative could serve as a forcing function to drive improvements in key aspects of Firefox and other open web products and technologies from Mozilla and others.
 
* JavaScript performance. In order to compete with the traditional Java-based Processing implementation the web-based implementation of Processing will need to have performance for basic language operations that is comparable to that of Java—which means comparable to C/C++ performance, given the capabilities of today's Java compilers. Recent advances in JavaScript performance provided by the [http://hacks.mozilla.org/2009/07/tracemonkey-overview/ Tracemonkey], [http://webkit.org/blog/214/introducing-squirrelfish-extreme/ Squirrelfish], and [http://code.google.com/p/v8/ V8] JavaScript engines have helped narrow the performance gap in modern browsers like Firefox, Safari, and Chrome. The process of testing a wide variety of existing Processing applications on a JavaScript-based Processing implementation will likely provide a wealth of information on potential areas where further performance improvements are needed.
* JavaScript performance. In order to compete with the traditional Java-based Processing implementation the web-based implementation of Processing will need to have performance for basic language operations that is comparable to that of Java—which means comparable to C/C++ performance, given the capabilities of today's Java compilers. Recent advances in JavaScript performance provided by the [http://hacks.mozilla.org/2009/07/tracemonkey-overview/ Tracemonkey], [http://webkit.org/blog/214/introducing-squirrelfish-extreme/ Squirrelfish], and [http://code.google.com/p/v8/ V8] JavaScript engines have helped narrow the performance gap in modern browsers like Firefox, Safari, and Chrome. The process of testing a wide variety of existing Processing applications on a JavaScript-based Processing implementation will likely provide a wealth of information on potential areas where further performance improvements are needed.
* Canvas [https://developer.mozilla.org/en/Drawing_Graphics_with_Canvas functionality] and [http://ajaxian.com/archives/rendering-performance-in-canvas-compared-to-svg-and-vml performance]. The heart of Processing is image creation and manipulation; the current Processing implementation features no less than [http://processing.org/reference/environment/#Rendering_modes four different rendering modes] to enable developers to achieve the fastest graphics performance possible for their particular uses of Processing. Adopting Canvas as the underlying graphics interface for Processing on the Web could help drive improvements to Canvas performance and functionality (e.g., adding [https://wiki.mozilla.org/Canvas:3D 3D support]).
* Canvas [https://developer.mozilla.org/en/Drawing_Graphics_with_Canvas functionality] and [http://ajaxian.com/archives/rendering-performance-in-canvas-compared-to-svg-and-vml performance]. The heart of Processing is image creation and manipulation; the current Processing implementation features no less than [http://processing.org/reference/environment/#Rendering_modes four different rendering modes] to enable developers to achieve the fastest graphics performance possible for their particular uses of Processing. Adopting Canvas as the underlying graphics interface for Processing on the Web could help drive improvements to Canvas performance and functionality (e.g., adding [https://wiki.mozilla.org/Canvas:3D 3D support]).
* Bespin. applications of [http://labs.mozilla.com/projects/bespin/ Bespin] and similar technologies, and others.
* Applications of [http://labs.mozilla.com/projects/bespin/ Bespin] and similar technologies. As noted above, one of the nice things about the Processing environment is that it offers a simple straightforward interface for novices to start creating Processing "sketches". Any Processing for the Web implementation will need to duplicate this ease of use, and could also add other features enabled by the web environment, such as storing code in the close and providing easy but powerful ways to collaborate with others on sketch development. Processing on the Web could be a significant "customer" for Bespin, "a Mozilla Labs experiment that proposes an open, extensible web-based framework for code editing", and could help spur Bespin's transition from an experimental prototype to an actual product.
 
Just as a previous generation of advanced web applications drove browser vendors to improve browser performance and functionality, we believe that Processing for the Web can be a real-world application that can spur Mozilla and other browser vendors to provide solid high-performance implementations of the HTML5 family of technologies.


=== It's good for the Mozilla community ===
=== It's good for the Mozilla community ===
As has been said many times, Mozilla products like Firefox are not ends in themselves but rather a means to an end, namely creating an open web that is open, transparent, participatory, distributed, and hackable, and otherwise embodies the ideals of the Mozilla Manifesto.


* to reach out to and increase cooperation with the design, art, and new media communities, both as part of the existing [http://education.mozilla.org Mozilla Education] program and as a key component of a proposed Mozilla Media program
* to reach out to and increase cooperation with the design, art, and new media communities, both as part of the existing [http://education.mozilla.org Mozilla Education] program and as a key component of a proposed Mozilla Media program


Confirmed users
610

edits