Education/Projects/ProcessingForTheWeb: Difference between revisions

Added mention of "Visualize the Web", links to status info
(Added mention of "Visualize the Web", links to status info)
 
(8 intermediate revisions by 4 users not shown)
Line 1: Line 1:
__NOTOC__
__NOTOC__


'''This is a working draft describing a proposed project to bring a complete implementation of the Processing language to the open web.'''
'''This is a project to bring a complete implementation of the Processing language to the open web, building on the existing processing.js port and other technologies.'''


== Summary ==
== Summary ==


Processing for the Web is a proposed Mozilla-sponsored initiative to create a complete and robust port of the Java-based [http://processing.org/ Processing] language and environment (popular for art, design, and visualization applications) to the open web, using standard technologies such as JavaScript, [http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html Canvas], etc.
Processing for the Web is a initiative (under the auspices of the [[Education|Mozilla Education]] program) to create a complete and robust port of the Java-based [http://processing.org/ Processing] language and environment (popular for art, design, and visualization applications) to the open web, using standard technologies such as JavaScript, [http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html Canvas], etc. It builds on the existing [http://processingjs.org/ processing.js] port of Processing to JavaScript.


The goals motivating the initiative are as follows:
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 of Processing
* to enable Processing users to leverage the full power of the open web, and help spark a new wave of innovative uses of Processing
* 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
* 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], Ubiquity, Multi-Touch and others
* 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 component of possible future Mozilla outreach efforts directed at those communities


The initiative will incorporate the following activities:
The initiative will incorporate the following activities:
Line 18: Line 18:
* improving the underlying Mozilla infrastructure technologies required to support a powerful, robust, and conformant Processing implementation 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
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 will 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? ==
== What is Processing? ==
Line 62: Line 62:
* Due to the roots of Processing in the arts and visualization, the Processing for the Web project offers an entry point into the Mozilla project for students studying design and related topics. This includes not only creating and testing new Processing applications on top of Processing for the Web, but also helping to design and build the user experience for the Processing on the Web development environment.
* Due to the roots of Processing in the arts and visualization, the Processing for the Web project offers an entry point into the Mozilla project for students studying design and related topics. This includes not only creating and testing new Processing applications on top of Processing for the Web, but also helping to design and build the user experience for the Processing on the Web development environment.


Processing for the Web offers an opportunity to strengthen existing Mozilla Education initiatives directed at faculty and students in computer science programs, and also to leverage Mozilla Labs initiatives (most notably the [http://labs.mozilla.com/2009/01/introducing-the-design-challenge/ Design Challenge series]) of interest to faculty and students in design programs. The Processing for the Web program could also be a key initial component in a possible new "Mozilla Media" program to reach out and work with artists, filmmakers, musicians, and other creative individuals working with the open web and open media.
Processing for the Web offers an opportunity to strengthen existing Mozilla Education initiatives directed at faculty and students in computer science programs, and also to leverage Mozilla Labs initiatives (most notably the [http://labs.mozilla.com/2009/01/introducing-the-design-challenge/ Design Challenge series]) of interest to faculty and students in design programs. Given the popularity of Processing within the digital art and data visualization communities, the Processing for the Web program could also provide a key component for use in the [[Drumbeat/Challenges/Visualize_the_Web|Visualize the Web]] project proposed as part of the [[Drumbeat|Mozilla Drumbeat]] initiative.


== Technical strategy ==
== Technical strategy ==
Line 69: Line 69:
The starting point for Processing on the Web is the existing [http://processingjs.org/ processing.js] JavaScript port of Processing originally created by John Resig of Mozilla and now being developed by a  [http://processingjs.org/community growing community]. Processing.js provides support for the Java-based Processing language syntax, along with an implementation of the various Processing library functions.
The starting point for Processing on the Web is the existing [http://processingjs.org/ processing.js] JavaScript port of Processing originally created by John Resig of Mozilla and now being developed by a  [http://processingjs.org/community growing community]. Processing.js provides support for the Java-based Processing language syntax, along with an implementation of the various Processing library functions.


Processing.js is usable for many Processing applications but is [http://processingjs.org/reference/articles/comparing-processing not yet fully compatible] with the original Processing implementation. It also does not provide a web-based development environment, though projects like Robert O'Rourke's [http://www.sanchothefat.com/blog/53/hascanvas HasCanvas] provide an initial take on what such an environment might look like.
Processing.js is usable for many Processing applications but is [http://processingjs.org/reference/articles/comparing-processing not yet fully compatible] with the original Processing implementation. A list of what still needs to be done is available [[Education/Projects/ProcessingForTheWeb/Tasks|here]].  It also does not provide a web-based development environment, though projects like Robert O'Rourke's [http://www.sanchothefat.com/blog/53/hascanvas HasCanvas] provide an initial take on what such an environment might look like.


The [https://bespin.mozilla.com/ Bespin] project could provide the underlying technology to support online creation and editing of Processing code. The challenge is to provide a Processing for the Web environment that is simple enough for complete novices to pick up quickly, compatible enough with the original Processing environment that existing Processing users can be immediately productive, and powerful and extendable enough to provide good support for advanced tasks such as debugging and performance optimization.
The [https://bespin.mozilla.com/ Bespin] project could provide the underlying technology to support online creation and editing of Processing code. The challenge is to provide a Processing for the Web environment that is simple enough for complete novices to pick up quickly, compatible enough with the original Processing environment that existing Processing users can be immediately productive, and powerful and extendable enough to provide good support for advanced tasks such as debugging and performance optimization.
Line 77: Line 77:


[http://opencode.media.mit.edu/tool/open_code/info OpenCode] (by Kyle Buza and Takashi Okamoto) is an alternative attempt to create a web equivalent of the Processing desktop environment. To quote from the website, "What Processing has done for simplified graphics programming, OpenCode hopes to do for simplified access and interaction with Web-accessible content." It can be thought of as a Java-based Processing environment "in the cloud"; Processing sketches are based to a server to be compiled into applets, and the resulting applets are run in the user's browser using the Java plugin. The environment includes special libraries to enable interaction with web services, and advanced users can write their own libraries in Java.
[http://opencode.media.mit.edu/tool/open_code/info OpenCode] (by Kyle Buza and Takashi Okamoto) is an alternative attempt to create a web equivalent of the Processing desktop environment. To quote from the website, "What Processing has done for simplified graphics programming, OpenCode hopes to do for simplified access and interaction with Web-accessible content." It can be thought of as a Java-based Processing environment "in the cloud"; Processing sketches are based to a server to be compiled into applets, and the resulting applets are run in the user's browser using the Java plugin. The environment includes special libraries to enable interaction with web services, and advanced users can write their own libraries in Java.
=== High-level tasks ===
The following are some possible high-level tasks for this project:
* Address outstanding bugs and feature deficiencies for processing.js vs. the original Java-based Processing implementation. For more information on what needs doing see [http://processing-js.lighthouseapp.com Processing.js Lighthouse tickets]. The [[Education/Projects/ProcessingForTheWeb/Tasks|old task list]] is being transcribed into Lighthouse tickets.
* Surface and address [[Education/Projects/ProcessingForTheWeb/Performance|bugs or performance]] issues in the Mozilla JavaScript engine and/or Canvas that prevent processing.js from offering comparable performance to the Java-based implementation of Processing.
* Look at Bespin architectural or other changes that would be needed in order to support a web-based development environment for Processing.
* Design and implement a first-cut prototype for a full web-based Processing environment.
* (Longer-term) Create a full Canvas 3D implementation and hook it into processing.js.
* (Longer-term) Look at possibilities for adding web-centric functionality to Processing (e.g., new functions to access web-based services from Processing sketches).
* (Longer-term) Look at possibilities for adding collaborative capabilities to a web-based Processing environment.
=== Current status and project team ===
[http://www.hyper-metrix.com/ Al MacDonald] (F1LT3R on IRC) is providing advice and support to the project and is serving as the de facto technical lead.
[http://vocamus.net/dave/ Dave Humphrey] (humph on IRC) has recruited [http://zenit.senecac.on.ca/wiki/index.php/Processing.js#Project_Leader.28s.29 several students] at Seneca College to work on this project, as well as talking to faculty at other institutions who'd also like their students to be involved. Thus far several students at the [http://www.univ-evry.fr/en/index.html Université Evry Val d'Essonne] in France are also participating, as part of the "[http://comete.info.univ-evry.fr/ Course on Mozilla Education and Technologies @ Evry]" (CoMETE) taught by Didier Courtaud (desiderious on IRC).
For the project status as of December 1, 2009, see Dave Humphrey's blog post "[http://vocamus.net/dave/?p=910 Update on the Processing for the Web Project]". For ongoing information about the project, including how to get involved, check out the [http://processingjs.org/community processing.js community page].


== Notes ==
== Notes ==
Confirmed users
610

edits