Education/Projects/ProcessingForTheWeb: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Expand material further)
(Expand material further)
Line 49: Line 49:


* 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, and any Processing implement
* 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.
* Bespin. applications of [http://labs.mozilla.com/projects/bespin/ Bespin] and similar technologies, and others.



Revision as of 04:28, 1 August 2009


This is a draft in progress describing a proposed project to bring a complete implementation of the Processing language to the open web.

Summary

"Processing for the Web" is a proposed Mozilla-sponsored initiative to take the Java-based Processing language and environment (popular for art, design, and visualization applications) and port it to the open web using standard technologies such as JavaScript, Canvas, etc.

The goals motivating the initiative are as follows:

  • to enable Processing users to leverage the full power of the open web, and help spark a new wave of innovative uses
  • to serve as a forcing function to drive improvements in key aspects of Mozilla products and technologies, including JavaScript performance, Canvas functionality, applications of Bespin, and others
  • to reach out to and increase cooperation with the design, art, and new media communities, both as part of the existing Mozilla Education program and as a key component of a proposed Mozilla Media program

The initiative will incorporate the following activities:

  • extending and improving the core functionality of the current processing.js port of Processing to JavaScript
  • implementing a web equivalent of the current Processing development and run-time environment, with additional features to leverage the full power of the web (e.g., to support collaborative development)
  • encouraging creation of new Processing applications explicitly designed for the web
  • improving the underlying Mozilla infrastructure technologies required to support a powerful, robust, and conformant Processing implementation for the web

Some activities in the initiative, in particular working on the required Mozilla technology infrastructure, would be carried out by existing Mozilla core contributors. Other activities would be done in cooperation with others; in particular we propose to package many of the needed tasks as student projects to be done by design, programming, and other students under the auspices of the Mozilla Education program

What is Processing?

To quote from the Processing project home page:

Processing is an open source programming language and environment for people who want to program images, animation, and interactions. It is used by students, artists, designers, researchers, and hobbyists for learning, prototyping, and production. It is created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool.

Processing arose out of work in the Aesthetics and Computation Group at the MIT Media Lab. It has attracted a user base of artists, designers, people doing data visualizations, and others.

Processing language syntax is based on Java, and the original Processing environment requires an underlying Java run-time. The Processing language includes standard functions for doing drawing and related operations, and the Processing environment offers a straightforward and simple way to edit and run Processing programs ("sketches") without the complexity of Java compilers and other tools.

Why Processing for the Web?

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.

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:

  • 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.
  • Last but not least, it could also help enable easier collaboration on development of Processing applications, given suitable support in the underlying web-based Processing development environment.

A high-quality web-based Processing implementation could help spark a new wave of innovative uses of Processing. These would be valuable both for their own sake and also for demonstrating and promoting the power of the open web technologies that made Processing for the web possible.

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.

  • 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 Tracemonkey, Squirrelfish, and 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 functionality and performance. The heart of Processing is image creation and manipulation; the current Processing implementation features no less than 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 3D support).
  • Bespin. applications of Bespin and similar technologies, and others.

It's good for the Mozilla community

  • to reach out to and increase cooperation with the design, art, and new media communities, both as part of the existing Mozilla Education program and as a key component of a proposed Mozilla Media program

Notes

  • Should address the question of why bring Processing to the web, from the perspective of why this is good for Processing and its users, why it is good for the web in general, etc.
  • Address educational tie-in explicitly.
  • Need to address objection of why we shouldn't just focus instead on JavaScript + Canvas, perhaps with new toolkits. (i.e., Processing API but with JavaScript control logic, not Java syntax)
  • Should lay out high-level tasks in the project, and how each one might be addressed.