Education/Projects/ProcessingForTheWeb: Difference between revisions

Expand material further
(Expand material further)
(Expand material further)
Line 1: Line 1:
__NOTOC__
'''This is a draft in progress describing a proposed project to bring a complete implementation of the Processing language to the open web.'''
'''This is a draft in progress describing a proposed project to bring a complete implementation of the Processing language to the open web.'''


Line 23: Line 25:
<blockquote>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.</blockquote>
<blockquote>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.</blockquote>


Processing arose out of work in the [http://acg.media.mit.edu/ Aesthetics and Computation Group] at the [http://www.media.mit.edu/ MIT Media Lab. It has attracted a user base of digital artists, designers, people doing data visualizations, and others.
Processing arose out of work in the [http://acg.media.mit.edu/ 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 way and simple to edit and run Processing programs ("sketches") without the complexity of Java compilers and other tools.
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 Processing for the Web? ==
Line 31: 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 following reasons:
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 ===
=== 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:
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&mdash;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.
* 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.
* 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.
Line 44: 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 ===


* to serve as a forcing function to drive improvements in key aspects of Mozilla products and technologies, including [http://hacks.mozilla.org/2009/07/tracemonkey-overview/ JavaScript performance], [https://developer.mozilla.org/en/Drawing_Graphics_with_Canvas Canvas functionality], applications of [http://labs.mozilla.com/projects/bespin/ Bespin], and others
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&mdash;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
* Bespin. applications of [http://labs.mozilla.com/projects/bespin/ Bespin] and similar technologies, and others.


=== It's good for the Mozilla community ===
=== It's good for the Mozilla community ===
Confirmed users
610

edits