Fact-checked by Grok 2 weeks ago

Processing

Processing is an open-source programming language and integrated development environment (IDE) designed to facilitate the creation of visually oriented software, particularly for electronic arts, new media, and visual design. Developed by Ben Fry and Casey Reas in 2001 at the MIT Media Lab as a successor to earlier projects like Design By Numbers, it emphasizes simplicity and accessibility to promote software literacy within the visual arts and visual literacy in technology. Originally conceived as a software for programming fundamentals through interactive and , Processing has evolved into a versatile tool used by artists, designers, educators, and students worldwide. Its syntax, inspired by languages like and , allows beginners to quickly prototype ideas with code that generates dynamic visuals, such as shapes, colors, and motion, while supporting more advanced applications through community-contributed libraries for areas like data visualization, , and hardware integration (e.g., with ). The platform runs cross-platform on macOS, Windows, and , and its free availability has made it a staple in art schools, universities, and high schools, where studies have shown it can double student interest in . The Processing Foundation, established in 2012, oversees its ongoing development and fosters a global community of contributors, ensuring the project's emphasis on diversity and open-source principles. Notable applications include interactive installations in major museums, educational curricula, and professional creative coding projects, highlighting its role in bridging art and technology.

Overview

Description

Processing is an open-source programming language and integrated development environment (IDE) designed for electronic arts, new media art, and visual design communities. It functions as a flexible software sketchbook that enables users to create visual and interactive applications through a simplified programming approach. Initiated in 2001 by Casey Reas and Ben Fry, who were graduate students at the MIT Media Lab under John Maeda's Aesthetics and Computation Group, Processing emerged as a tool to bridge programming with creative expression. At its core, Processing is built on the platform, compiling sketches into for execution while providing a streamlined syntax that makes it accessible even without prior Java knowledge. This syntax draws inspiration from languages like and to simplify coding for visual outputs, supporting features such as 2D and graphics rendering, animation through frame-based drawing functions, and interactivity with input devices like the and . The sketch-based organizes programs into lightweight, modular files—typically called "sketches"—that emphasize and immediate visual feedback, allowing users to focus on artistic experimentation rather than complex setup. Processing primarily targets artists, designers, educators, and programming beginners who seek to produce without requiring deep knowledge of underlying systems or advanced concepts. It is widely used in art schools, universities, high schools, and by professionals in design, , and to foster software and skills. This focus traces back to influences like John Maeda's Design By Numbers project from 1999, which pioneered accessible programming for visual thinkers and informed Processing's emphasis on intuitive, graphics-oriented development.

Purpose and Applications

Processing is designed to lower the barriers for non-programmers entering the field of by providing a simple, visual-oriented environment that facilitates the creation of interactive graphics, animations, and prototypes. Its primary goals include promoting software literacy within the and fostering in technology, allowing users—particularly beginners—to experiment with programming concepts through immediate visual feedback rather than abstract syntax. This approach, inspired by accessible languages like and , enables rapid iteration and encourages creative exploration over rigorous practices. Key applications of Processing span , where algorithms produce evolving visual forms; data visualization, transforming complex datasets into intuitive graphics; sound visualization, mapping audio inputs to dynamic displays; and interfaces, often integrated with hardware like to control sensors and actuators in . It serves as an educational tool for teaching programming fundamentals through visual outcomes, making abstract ideas tangible and engaging for students in art, design, and courses. In impact areas, Processing has been employed in museums for interactive exhibits, such as those at the , the (MoMA), and the , where it powers immersive installations that respond to visitor interactions. In , it has been integrated into curricula at universities, art schools, and high schools worldwide, with studies showing it doubles student interest in pursuing further courses. Within industry, particularly UI/UX and prototyping, Processing supports quick development of interactive mockups and visualizations, aiding architects, designers, and engineers in conceptualizing user experiences.

History and Development

Origins

Processing originated in spring 2001 when Casey Reas and Ben Fry, graduate students at the MIT Media Lab's Aesthetics and Computation Group, sought to create a programming environment tailored for visual artists and designers. As members of John Maeda's research group, Reas and Fry built upon Maeda's earlier Design By Numbers (DBN) project from 1998, which aimed to make programming accessible to non-technical creatives but was limited by its proprietary nature and basic graphical capabilities. They addressed these constraints by leveraging Java's flexibility while simplifying its syntax and setup, enabling rapid prototyping of visual and interactive works without the complexities of traditional software development. The project emerged as part of Reas and 's thesis work at , focusing on bridging with artistic expression to empower users untrained in programming. This initiative reflected a broader motivation to democratize technology, drawing from the Media Lab's legacy in exploratory computing tools like the Workshop founded in 1975. By fall , Processing was sufficiently developed for initial public engagement, with Fry teaching the first at Musashino Art University in . At its core, Processing was founded on principles of simplicity, open-source collaboration, and the integration of and to foster creative experimentation. Reas and emphasized intuitive tools that prioritized immediate visual feedback over verbose code, encouraging a culture of sharing sketches and libraries to build a supportive for learners and practitioners alike. This approach not only lowered barriers for artists engaging with code but also positioned Processing as a catalyst for and design innovation.

Milestones and Releases

Processing's development began with its initial alpha release on August 9, 2001, marking the start of a project initiated by and Ben Fry at the . The first stable version, Processing 1.0, was released on November 24, 2008, after years of beta testing and community feedback, providing a mature and language for programming. This release solidified Processing as an accessible tool, with subsequent minor updates like 1.5.1 on May 15, 2011 focusing on stability for legacy users. Major version updates introduced significant enhancements. Processing 2.0 launched on June 3, 2013, emphasizing improved through better rendering and syntax support, alongside expanded for broader creative applications. Version 3.0 arrived on October 1, 2015, shifting to a modular that facilitated easier extensibility and added native support for platforms like with . Processing 4.0 was finalized on August 9, 2022, incorporating 17 compatibility, a redesigned for modern workflows, and optimizations for cross-platform deployment. The latest stable release, 4.3.1 on November 12, 2024, included bug fixes for core functionality and accessibility improvements such as better , followed by 4.4.10 on October 14, 2025, which addressed maintenance issues in the build system. Organizationally, Ben Fry served as the long-term lead developer since the project's inception, guiding its evolution until his resignation from the Processing Foundation in October 2023 due to disagreements over the organization's priorities and use of donation funds for software development. Fry has continued to contribute to the Processing software independently since then. The Processing Foundation, established in , formalized the shift to fully , enabling community-driven development. Since the , contributions via have grown, with the main repository fostering collaborative bug fixes, feature additions, and mode enhancements through pull requests and issues. From 2020 to 2025, developments emphasized steady maintenance over radical changes, with updates to web export tools improving mode compatibility for browser-based sketches. Integration with modern hardware, including , saw refinements in Processing 3 and later for seamless embedded applications. A notable derivative milestone was the launch of p5.js in 2013, a extending Processing's principles to .

Technical Components

Language Features

Processing is a programming language that functions as a simplified subset of , optimized for visual and interactive applications within and fields. Its syntax adopts an imperative style, consisting of straightforward statements to declare variables, perform calculations, and issue drawing commands that render directly to a digital canvas. Central to its structure are predefined functions such as setup(), which runs once at startup to configure initial parameters like canvas size and , and draw(), which executes in a continuous loop to handle updates and animations at a consistent , typically 60 frames per second unless adjusted. This looping mechanism provides real-time visual feedback, distinguishing Processing from static programming environments and facilitating rapid iteration in creative workflows. The language incorporates event-driven paradigms to manage user interactions, featuring built-in handlers like mousePressed() for detecting clicks, mouseMoved() for tracking cursor position via variables such as mouseX and mouseY, keyPressed() for input, and keyReleased() for release events. Graphics form a core capability, with extensive libraries for primitives including ellipse(x, y, width, height) to draw ovals and rect(x, y, width, height) for rectangles, alongside shapes like box(size) and sphere(radius). Transformation functions such as rotate([angle](/page/Angle)) and translate(x, y) enable spatial manipulations, while color systems support RGB as the default mode and HSB via colorMode(HSB), with utilities like fill(c) and stroke(c) to apply hues, saturation, and brightness values. These elements allow for immediate visual experimentation without complex . Data handling emphasizes simplicity, supporting primitive types (integers, floats, booleans), arrays declared as int[] values = {1, 2, 3};, strings for text manipulation, and PImage objects for loading and processing images with functions like loadImage("filename.jpg"). Basic mathematical operations are accessible through functions such as sin(radians) for trigonometric sine and random(low, high) for generating values within a range, supporting procedural patterns and randomness in visuals. Although sketches typically avoid object-oriented constructs for quick prototyping, Processing fully supports Java's object-oriented features, including definitions, with extends, and object using new, enabling modular code organization for larger projects. This blend of imperative sketching and extensible paradigms underscores Processing's role in fostering accessible, frame-rate-driven animations and interactive experiences.

Integrated Development Environment

The Processing Development Environment (PDE) serves as the primary for developing sketches in Processing, offering an intuitive layout designed to facilitate of visual and interactive applications. Key elements include a tabbed that supports multiple files per sketch for organizing , a message area that highlights syntax errors and feedback in , a console section for displaying output from functions such as print() and println(), and a dedicated preview window that launches automatically to render or upon execution. This setup emphasizes simplicity, allowing users to focus on without complex setup. At its core, the PDE integrates essential tools for , , and distribution. The built-in leverages the to process .pde files into when the is activated, ensuring seamless with Processing's Java-based . Basic features enable setting breakpoints to pause execution and inspect states, accessible through the Debug > Enable option. functionalities, invoked via File > Application, generate standalone executables or web-optimized outputs, supporting deployment across platforms without additional configuration. The workflow in the PDE is centered on efficient sketch management and . Sketches are stored in a dedicated folder, initiated by File > New, with tabs allowing easy switching between files like the main .pde and supporting assets. Auto-completion for built-in functions and variables activates via Ctrl+Space (after enabling in Preferences > Editor), streamlining code entry. Integrated reference access, through Help > Reference or in-editor search, provides instant documentation for libraries and commands, while adding resources like images occurs via Sketch > Add File to populate the data subfolder automatically. The editor also offers to support Processing's constructs, aiding readability during development. Updates in Processing version 4.0 and subsequent releases have enhanced the PDE's usability and consistency. A new Theme Selector (Tools > Theme Selector) introduces customizable color schemes, including dark mode, to reduce and align with modern development preferences across Windows, macOS, and installations. Cross-platform support has been refined for better consistency, with native compatibility for and architectures, alongside hundreds of bug fixes for interface stability. Font rendering benefits from updated tools like Create Font (Tools > Create Font) and the createFont() function, which generate vector-based fonts for sharper, more efficient on-screen display in the preview window. Workflow improvements include relaxed sketch folder naming rules, configurable via Preferences, to better accommodate version control systems like .

Modes and Extensibility

Processing offers several programming modes that extend its core -based environment, allowing users to write code in alternative languages while maintaining access to the IDE's visual feedback and tools. The default Mode provides the standard Processing syntax built on , but additional modes can be installed through the Contribution Manager. Mode, developed via the Processing.py project, enables sketches using syntax and leverages for compatibility with Processing's underpinnings, making it suitable for users preferring 's readability for prototyping visual ideas. The p5.js Mode integrates support, allowing code written in Processing's style to be exported and run in web browsers via the p5.js library, which translates Processing functions to and rendering. This mode facilitates seamless transition to web-based without altering core logic. Mode, another official extension, adapts Processing sketches for mobile development on devices, incorporating device-specific features like touch input and sensors while compiling to files. These modes are managed through the IDE's "Manage Modes" menu, introduced in Processing 4 for streamlined installation and updates. Extensibility in Processing is primarily achieved through its robust library system, which allows integration of community-contributed code to add functionalities beyond the core and capabilities. Libraries are installed via the IDE's Contribution Manager under "Manage Libraries," which connects to a centralized repository of approved contributions. Notable examples include Minim, an audio library for real-time sound synthesis, analysis, and playback, and ControlP5, which provides customizable components like sliders and buttons for interactive applications. Over 200 official and unofficial libraries exist, spanning categories such as , networking, and ; for instance, GSVideo handles video capture and playback using libraries like or . Users can further extend Processing by developing custom libraries in , which are structured as JAR files with accompanying documentation and examples. These user-defined libraries integrate directly into sketches via import statements and can be shared through the community. The contribution process involves submitting proposals via issues to the Processing Foundation's contributions repository, where maintainers review and add them to the official list for inclusion in the Contribution Manager. An example of such extensibility is the integration of ml5.js for in the p5.js , enabling accessible features like image classification and pose detection in browser-based sketches without requiring external servers. From 2020 to 2025, Processing 4 introduced enhancements to mode stability, including better compatibility with 17 and fixes for runtime errors in non-Java modes, ensuring more reliable execution across platforms. Updates also refined the system, with improved download handling and validation scripts to support growing contributions. While core renderers like P3D already leverage for 3D graphics, recent community libraries have expanded capabilities for advanced visual effects, and efforts toward accessibility include better high-DPI rendering and tooltips in the . These developments, detailed in , underscore Processing's ongoing evolution to support diverse creative workflows.

Practical Usage

Basic Examples

Processing provides a straightforward for beginners through simple that leverage its core structure: the setup() function for initialization and the draw() function for continuous rendering at a specified . These functions form the backbone of every Processing program, allowing users to create visual output without complex .

Hello World Example

A quintessential starting point is drawing a basic shape, such as an , to verify the environment is functioning correctly. The following minimal illustrates this:
processing
ellipse(50, 50, 80, 80);
When executed in the Processing IDE, this single line produces a centered at coordinates (50, 50) with a of 80 pixels on a default gray background. The setup() and draw() functions are implicitly handled by the for such basic cases, running the code once in setup() to set the and repeatedly in draw() for static output. To understand the structure, consider an expanded version that explicitly clears the background for consistent rendering:
processing
void setup() {
  size(640, 360);
}

void draw() {
  background(255);
  ellipse(50, 50, 80, 80);
}
Here, setup() establishes a 640 by 360 pixel window, while draw() sets a white background (255 represents full white in RGB values from 0 to 255) and draws the ellipse each frame, preventing artifacts from prior renders. The output is a static white canvas with a black circle in the top-left quadrant. Common pitfalls for beginners include omitting the semicolon at the end of statements, which triggers syntax errors displayed in red in the IDE's message area, or forgetting background() calls, leading to overlapping drawings in looped executions. Running the sketch via Ctrl+R (Cmd+R on macOS) displays the result in a new window; stopping it requires clicking the square stop button or closing the window.

Interactivity Basics

Processing excels in enabling immediate interaction, such as responding to mouse movements, which introduces dynamic behavior without advanced event handling. A fundamental example tracks the position to draw a following shape, demonstrating variables like mouseX and mouseY that automatically update with cursor coordinates relative to the window's top-left origin. Consider this sketch for a color-changing circle:
processing
void setup() {
  size(480, 120);
}

void draw() {
  if (mousePressed) {
    fill(0);
  } else {
    fill(255);
  }
  [ellipse](/page/Ellipse)(mouseX, mouseY, 80, 80);
}
In setup(), the window size is set to 480 by 120 pixels. The draw() loop, executing approximately 60 times per second by default, checks if the mouse button is pressed using mousePressed; if so, it fills the black (0), otherwise white (255). The ellipse() is then positioned at the current mouseX and mouseY. The result is an interactive that trails the mouse cursor and toggles color on click, providing visual feedback. Beginners often overlook the need for a background() call if persistence is desired (e.g., to trail the path), as omitting it causes shapes to accumulate; adding background(204); at the start of draw() would clear the canvas each frame. Additionally, mouseX and mouseY remain at their last values if the cursor leaves the window, avoiding erratic jumps. For drawing lines based on mouse movement, a simpler variant uses pmouseX and pmouseY to connect previous and current positions:
processing
void setup() {
  size(640, 360);
  stroke(255);
}

void draw() {
  background(51);
  line(mouseX, mouseY, pmouseX, pmouseY);
}
This sets a dark gray background (51) and white stroke, drawing a short line segment from the prior frame's mouse position to the current one, creating a trail effect when moved quickly. The output simulates freehand drawing, with line thickness controlled by default settings (1 pixel). A frequent error is not initializing stroke() or background(), resulting in invisible or cluttered lines; testing in the IDE reveals these issues promptly.

Animation Introduction

Animation in Processing arises naturally from the draw() loop's repetition, combined with time-based variables like frameCount, which increments each frame starting from after setup(). This enables smooth motion by updating positions or properties incrementally, typically at 60 frames per second unless adjusted via frameRate(). A basic example animates a circle's horizontal position using the sine function for oscillatory movement:
processing
void setup() {
  size(640, 360);
}

void draw() {
  background(255);
  float x = sin(frameCount * 0.01) * 100 + width / 2;
  ellipse(x, height / 2, 80, 80);
}
The setup() creates a standard window, and draw() clears to white before calculating x as the window's center (width / 2) plus a sine wave offset: sin() takes radians derived from frameCount * 0.01 (a slow multiplier for smooth cycling) scaled by 100 pixels for . The ellipse centers vertically at height / 2 and oscillates left-right. The output shows a circle waving sinusoidally across the canvas, completing a full cycle roughly every 628 frames (since 2π radians ≈ 6.28, and 0.01 scaling yields 628 steps). To set a consistent pace, add frameRate(30); in setup() for 30 . Pitfalls include choosing too large a multiplier (e.g., 0.1 causes rapid flickering) or neglecting background(), which leaves a growing trail; beginners should experiment with values in the to observe effects, using println(frameCount); in draw() to monitor timing in the console.

Advanced Applications

Processing has been extensively applied in data visualization to handle and render complex datasets, leveraging built-in functions like loadTable() for files and loadJSONObject() for parsing to create dynamic charts and graphs. For instance, a typical involves loading a containing fields such as species names and population metrics, extracting values with methods like getString() and getInt(), and plotting them as interactive bar charts or scatter plots using Processing's drawing primitives; this approach enables real-time updates based on user input or live data streams. In interactive installations, Processing integrates seamlessly with hardware like to create responsive environments, where sensor data drives visual outputs. A representative is an ultrasonic sensor-based project where captures distance measurements via , mapping them to parameters such as speed and line thickness in a Processing that generates spiraling geometric patterns; user proximity alters the artwork in , demonstrating Processing's role in bridging digital visuals with physical interaction. Generative art in Processing often employs advanced techniques like recursion and Perlin noise to produce organic, evolving patterns without explicit user control. An advanced sketch might use recursion to draw self-similar structures, such as branching trees, by defining a function that calls itself with scaled-down parameters until a base case is reached, combined with Perlin noise for natural variation— for example, generating terrain-like forms where noise values, computed as noise(x * 0.01), modulate branch angles or densities to mimic fluid, non-repetitive growth. Notable projects highlight Processing's impact in artistic practice. Jared Tarbell's Substrate (2003) simulates crystal growth on a computational grid using iterative perpendicular line extensions governed by simple rules, structured around loops that spawn and propagate line segments until a density threshold is met, resulting in intricate, city-like emergent structures across resolutions like 900x900 pixels with 350 objects. Similarly, Joshua Davis's works, such as those utilizing his HYPE library for Processing, explore algorithmic image-making through vector-based interactions and dynamic frameworks, enabling early web art experiments with randomized particle systems and layered compositions that evolve based on procedural rules.

Ecosystem

Several software projects have extended Processing's visual programming paradigm to web browsers, other programming languages, and hardware platforms, enabling broader accessibility and integration.

Web and JavaScript Adaptations

p5.js, released in 2013 and led initially by Lauren Lee McCarthy, provides a JavaScript library for creating browser-based interactive sketches inspired by Processing's simplicity, targeting creative coding in web environments without plugins. In 2021, Qianqian Ye and evelyn masso assumed co-leadership of the project, continuing its development under the Processing Foundation. Earlier, Processing.js, introduced in 2010 by John Resig, translated Processing sketches to JavaScript for web execution but was deprecated in 2017 due to native browser support for technologies like Canvas and WebGL.

Python Implementations

Processing.py, launched in 2012 by Jonathan Feinberg, integrates with using , allowing sketches to leverage 's libraries while maintaining Processing's syntax for graphics and interactivity. More recent alternatives include P5Py and py5, both developed as CPython-based ports that avoid Jython's limitations; py5, created by Jim Schmitz in 2020, notably supports Jupyter notebooks for interactive coding and data visualization.

Bindings for Other Languages

Quil, a wrapper developed starting in 2011, ports Processing's to Clojure, enabling approaches to and animations on the . JRubyArt (formerly ruby-processing), initiated by Jeremy Ashkenas in 2009, adapts Processing for via , facilitating rapid prototyping with Ruby's expressive syntax for visual applications. Similarly, Spde, a project from 2009, provides a development environment and library for Processing-style coding in Scala, emphasizing type safety and concurrency in creative projects.

Hardware and Mobile Extensions

Wiring, introduced in 2005 by Hernando Barragan as a precursor to , offered a simplified programming environment for microcontroller-based prototyping that integrated directly with Processing for data and control. Processing supports through Firmata, a protocol established in 2007, which allows desktop sketches to send and receive data from boards without custom firmware. Fritzing, an open-source tool released in 2010, complements Processing by enabling circuit diagramming and prototyping, often used to design interfaces visualized in Processing sketches. For mobile development, Processing supports through an official mode since around 2010, and third-party efforts like Processing-iOS enable limited support for , allowing touchscreen-based interactive applications with Processing's core libraries.

Community and Education

The Processing Foundation, established in as a 501(c)(3) non-profit organization, oversees the ongoing development and stewardship of the Processing project, fostering its growth through , fellowships, and support programs. The foundation promotes software literacy in the and in , drawing on a global of tens of thousands of students, artists, designers, researchers, and hobbyists who engage with the platform. This collaborates via dedicated forums on for discussions and troubleshooting, as well as the project's repository, where users submit pull requests to enhance libraries, tools, and core functionality under the open-source model. Contributions from the extend beyond to creative outputs, with users sketches and projects through exhibitions and galleries featured on the official Processing website, showcasing and visualizations. Collaborative events such as hackathons, game jams, and workshops encourage collective experimentation in , often centered on themes of , , and social issues. The annual Processing Community Day, initiated by the , brings together participants worldwide for workshops, lectures, and discussions on computational , with events held in cities like , , , and to promote accessible learning and networking. In education, Processing is integrated into curricula at institutions such as the (RISD) and (NYU), where it supports courses in , , and computational arts, enabling students to prototype ideas through visual programming. Free resources bolster this role, including online tutorials, example sketches available on the Processing site, and textbooks like Learning Processing by , which provides a beginner-friendly introduction to programming concepts through and . From 2020 to 2025, the community has seen increased emphasis on , particularly through p5.js—a JavaScript library derived from Processing—that facilitates web-based education and broadens access for remote learners and educators. As of 2025, updates to libraries like p5.js (reaching version 1.9) continue to enhance the ecosystem. The Processing Foundation has advanced diversity initiatives by investing in programs that expand access to technology and arts communities for underrepresented groups, including fellowships and advocacy for equitable participation in . These efforts underscore sustained engagement, reflected in the platform's role as a foundational tool for teaching across diverse educational settings.

Recognition

Awards

In 2005, Casey Reas and Ben Fry received the Golden Nica in the Net Vision category at the Prix for their development of Processing, recognizing its innovative approach to enabling through programming. That same year, the Processing project also earned the Interactive Design Prize from the Tokyo Type Directors Club, highlighting its impact on and . In 2011, Ben Fry was awarded the National Design Award for Interaction Design by the Cooper Hewitt, Smithsonian Design Museum, for his contributions to data visualization and tools like Processing, which he co-created with Reas. Casey Reas has received further recognition in art-technology fields, including the 2020 Lumen Prize Moving Image Award for his audiovisual work exploring generative processes, building on the foundations of Processing. Established in 2012, the Processing Foundation has provided ongoing grants and fellowships to artists, educators, and technologists, supporting projects that advance creative coding and software literacy within underrepresented communities. These initiatives, such as the annual Processing Fellowships, have funded dozens of multidisciplinary works since inception, fostering innovation in digital arts. These accolades underscore Processing's pivotal role in democratizing access to digital art and programming, bridging technical and creative domains for broader audiences.

Cultural and Media Impact

Processing has significantly influenced generative and movements by providing artists with accessible tools for creating dynamic visual works based on algorithms and real-time interaction. Developed in 2001 by and Ben Fry, it has empowered creators to explore computational , fostering a shift toward software-based practices that blend with visual expression. This influence is evident in major festivals, where Processing sketches have been showcased in art programs, including primers and generative installations that demonstrate its role in computational arts education and exhibition. Similarly, interactive installations at events like have utilized Processing to produce immersive, algorithm-driven experiences in public settings. The language has received notable media coverage that highlights its role in democratizing creative coding. Featured in books like Daniel Shiffman's The Nature of Code (2012, revised 2024), which uses Processing to simulate natural systems and has become a cornerstone for teaching algorithmic design, it underscores the tool's pedagogical impact on digital creativity. Documentaries such as Hello World! Processing (2013) explore its contributions to creative coding, examining how process, experimentation, and algorithms shape artistic output within global communities. Interviews with creators Reas and Fry in Wired magazine, including discussions on Processing as the "lingua franca of creative coding" (2015) and its evolution in version 2.0 (2013), have further amplified its cultural significance in bridging art and technology. Beyond art, Processing has inspired broader applications in data visualization and , with co-creator Ben Fry leveraging it for innovative infographics that inform public discourse on complex datasets. Its integration into promotes hands-on experimentation, while initiatives by the Processing Foundation, such as fellowships emphasizing inclusive toolkits, support underrepresented groups in and by fostering belonging through . In recent years (2020–2025), Processing's adaptability has driven its use in NFT art, where generative sketches on platforms like OpenProcessing enable on-chain creation of unique digital collectibles, aligning with blockchain-based artistic economies. During the , it facilitated virtual exhibitions, allowing artists to develop interactive online installations amid physical closures. Collaborations involving the Processing Foundation, including Casey Reas's involvement in MoMA's 2021 Modern Dream project with —which interpreted the museum's collection via and NFTs—highlight its ongoing role in institutional initiatives.

Licensing and Availability

License Details

Processing's core library, which includes the language libraries essential for visual and interactive programming, is released under the GNU Lesser General Public License version 2.1 (LGPL-2.1). This license allows users to modify and distribute the library freely, link it with without requiring the entire application to be open-sourced, but mandates that any changes to the library itself be made available under the same terms. In contrast, the Processing Development Environment (PDE), , along with other components such as tools and examples, falls under the GNU General Public License version 2 (GPL-2.0). The GPL requires that derivative works based on these components be distributed under the same license, ensuring availability and promoting collaborative development. This setup supports free use, modification, and redistribution, including for commercial purposes, provided the conditions—such as sharing modifications—are met. Additionally, the reference documentation, including comments, is licensed under the Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) , permitting non-commercial and with attribution while requiring derivatives to use the same terms. While the core components adhere to these licenses, some contributed libraries within the Processing ecosystem may operate under alternative open-source licenses, such as the 2.0, allowing for varied compatibility in extensions and integrations. The Processing Foundation maintains oversight to ensure overall compliance and consistency in the project's open-source ethos.

Platforms and Distribution

Processing is distributed as free, , available for directly from the official at processing.org. Installers are provided for major operating systems, including Windows (via . or .zip files), macOS (via .dmg files supporting both and architectures), and (via .tar.gz archives or packages for distributions like and ). Portable versions are supported through zip and tar.gz s for Windows and , allowing users to run the without a traditional by extracting the archive and launching the executable. The primary supported platform is desktop environments on Windows, macOS, and , where the Processing Development Environment (PDE) runs natively. Sketches created in Processing can be exported to the web using p5.js, a derived from Processing for browser-based execution. For mobile and embedded systems, support is available through related projects such as Processing for (enabling exports) and modes for , though these require additional setup beyond the core desktop distribution. The IDE bundles 17 for 64-bit systems, ensuring compatibility with 8 and later versions for sketch compilation and execution, while maintaining backward compatibility for older Java features in user code. Installation is streamlined for ease of use, typically involving a one-click : users the appropriate installer, execute it (e.g., running the .msi on Windows or dragging the app to the Applications folder on macOS), and the bundled runtime is automatically included, eliminating the need for separate JDK . Updates to the core are handled by ing and installing new releases from the official site or , with the built-in Contribution Manager facilitating updates for libraries, modes, and tools within the . Archives of older versions, such as Processing 4.3 and earlier, are maintained on for users requiring legacy compatibility or specific features. Accessibility features include the IDE's intuitive designed for , with available in multiple languages through the Processing and resources, though the PDE itself is primarily in English. The Processing Foundation supports ongoing development through voluntary donations, which can be made via their official site to fund maintenance and enhancements. For developers, source code and pre-release builds are hosted on , with the latest stable release being version 4.4.10 from October 2025, enabling custom builds and contributions.

References

  1. [1]
    Overview / Processing.org
    Initially created to serve as a software sketchbook and to teach programming fundamentals within a visual context, Processing has also evolved into a ...
  2. [2]
    Download Processing / Processing.org
    Processing is open source and is available for macOS, Windows, and Linux. Projects created with Processing are also cross-platform.<|control11|><|separator|>
  3. [3]
    Welcome to Processing! / Processing.org
    Processing is a flexible software sketchbook and a language for learning how to code. Since 2001, Processing has promoted software literacy within the visual ...Download Processing · Examples · Download · Reference
  4. [4]
    Processing Overview / Processing.org
    Processing is a simple programming environment that was created to make it easier to develop visually oriented applications with an emphasis on animation.
  5. [5]
    Visualization with Arduino and Processing
    Processing is an open source integrated development environment (IDE) like the Arduino IDE and is used by designers and artists alike! With Processing, you can ...Missing: physical computing
  6. [6]
    A Modern Prometheus. The History of Processing by Casey Reas…
    May 29, 2018 · The original mission of Processing was to create software that made learning to code accessible for visual people (designers, artists, architects)Missing: creators | Show results with:creators
  7. [7]
    Coding with Processing Release 0001 Alpha -- Happy 20th!
    built 9 August 2001 in Japan, 6:01:26pm (5am Eastern).” In this live stream I will ...Missing: 1.0 | Show results with:1.0
  8. [8]
    Processing Launches Version 1.0 - WIRED
    Nov 25, 2008 · Today, on November 24, 2008, we launch the 1.0 version of the Processing software. Processing is a programming language, development ...
  9. [9]
    Releases / Processing.org
    Stable Releases · Version 4.4.10 -(October 14, 2025) · Version 3.5.4 -(January 17, 2020) · Version 2.1.2 -(August 21, 2014) · Version 1.5.1 -(September 1, 2016).Missing: programming language milestones
  10. [10]
    Processing 2.0 released - WIRED
    Jun 3, 2013 · We're thrilled to announce the launch of Processing 2.0—the latest incarnation of the programming language, development environment, and online ...
  11. [11]
    Processing 3.0 has been released - WIRED
    Oct 1, 2015 · This document summarizes major changes in Processing between versions 2.0 and 3.0. If you are updating code from 1.x to 2.x, use this page.
  12. [12]
    Announcing the latest version of Processing, Processing 4! - Medium
    Sep 30, 2022 · On the 21st anniversary of the very first Processing release (revision 0001), Ben Fry announced the final release of Processing 4.0 (revision ...
  13. [13]
    Announcing the Release of Processing 4.3.1! - Medium
    Dec 17, 2024 · We're thrilled to share that Processing 4.3.1 is now available! You might not notice big changes, but this version makes Processing easier to maintain and ...<|separator|>
  14. [14]
    Ben Fry resigning from the Processing Foundation - Community
    Oct 4, 2023 · I have made the extremely difficult decision to resign from the Processing Foundation. I am absolutely heartbroken, and have not slept well ...
  15. [15]
    processing/processing4 - GitHub
    Welcome to Processing 4.4! We're excited to announce the release of Processing 4.4! This update modernizes Processing under the hood to make future development ...
  16. [16]
    Releases · processing/processing4 - GitHub
    Version 4.4.4 is a stable release that includes the latest bug fixes for the Gradle-based build system. It builds on the improvements introduced in 4.4.2 and ...
  17. [17]
    installing processing - Raspberry Pi Forums
    Processing 3 will be the first version of processing with official raspberry pi support with full hardware acceleration. Gottfried Haider, gohai, is working ...
  18. [18]
  19. [19]
  20. [20]
  21. [21]
    Reference / Processing.org
    Processing is an open project initiated by Ben Fry and Casey Reas. It is developed by a team of contributors around the world.Libraries · Second() · Rect · Millis()
  22. [22]
    Objects / Processing.org
    Object-oriented programming allows us to take all of the variables and functions out of the main program and store them inside a car object.Missing: support | Show results with:support
  23. [23]
    Environment / Processing.org
    The Processing Development Environment (PDE) consists of a simple text editor for writing code, a message area, a text console, tabs for managing files.
  24. [24]
    Changes in 4.0
    ### Summary of PDE Changes in Processing 4.0
  25. [25]
    createFont() / Reference / Processing.org
    This function allows Processing to work with the font natively in the default renderer, so the letters are defined by vector geometry and are rendered quickly.
  26. [26]
    Python Mode for Processing
    Processing is a programming language, development environment, and online community. Since 2001, Processing has promoted software literacy within the visual ...Reference · Tutorials · Examples
  27. [27]
    fathominfo/processing-p5js-mode: A simple editor for p5.js ... - GitHub
    A simple editor for p5.js code that runs inside the PDE. Starting in 2022, Processing 4.0 is required. Major changes in Java 17 make backwards compatibility ...
  28. [28]
    Libraries / Processing.org
    Libraries extend Processing beyond graphics and images into audio, video, and communication with other devices.
  29. [29]
  30. [30]
    processing/processing-contributions - GitHub
    This repo holds the list of user contributed libraries, tools, modes, and examples and the scripts to convert this list to the appropriate format for the PDE ...Missing: count | Show results with:count
  31. [31]
  32. [32]
  33. [33]
    Getting Started / Processing.org
    To begin, download the latest version of Processing. After the installation is complete, launch Processing by double-clicking the icon.
  34. [34]
    mouseX / Reference
    ### Summary of mouseX Reference from https://processing.org/reference/mouseX.html
  35. [35]
    frameCount / Reference
    ### Summary of frameCount from https://processing.org/reference/frameCount.html
  36. [36]
    sin() / Reference
    ### Extracted Example Code for sin() in Animation
  37. [37]
    loadTable() / Reference
    ### Summary of loadTable() for Data Visualization
  38. [38]
    loadJSONObject() / Reference
    ### Summary: Parsing JSON for Data Visualization in Processing
  39. [39]
    Interactive Art Project - Arduino
    In this project we are going to control a Processing sketch with the Arduino via serial communication. Processing is free, open source software based on Java.Code · Arduino Sketch · Example Sketch
  40. [40]
  41. [41]
    Substrate | Gallery of Computation - Complexification.net
    Lines likes crystals grow on a computational substrate. A simple perpendicular growth rule creates intricate city-like structures.
  42. [42]
    Joshua Davis on The Great Discontent (TGD)
    Sep 17, 2013 · Joshua Davis is a New York-based artist, designer, and technologist ... Joshua currently maintains an open source library for processing, HYPE ...
  43. [43]
    Processing Foundation — Grants
    The Processing Foundation is a 501(c)(3) non-profit organization established in 2012. We cultivate creative coding software and communities to empower ...
  44. [44]
    Announcing New Roles at Processing Foundation - Medium
    Feb 16, 2021 · The Processing Foundation is pleased to announce some recent changes in our staff. In 2012, after more than a decade of the Processing ...Missing: shift | Show results with:shift
  45. [45]
    Processing Community Day @ Worldwide - Processing Foundation
    The duration can be as short as a two-hour programming tutorial, or as long as an all-day event that includes workshops, discussions on network culture, and ...
  46. [46]
    Processing Community Day Copenhagen 2021
    When? November 11th, 2023 11:00 - 16:00. Afterparty at Åben Brewery. Where? University College Copenhagen Department of Didactics and Digitalisation
  47. [47]
    2024 Learning To Teach Creative Technologies with Generative AI
    Jan 19, 2024 · Documentation of previous Learning to Teach events can be found on the Processing Foundation site. NYU Integrated Digital Media (IDM).
  48. [48]
  49. [49]
    Books / Processing.org
    Processing: A Programming Handbook for Visual Designers, Second Edition. by Casey Reas and Ben Fry. Published November 2014. The MIT Press. 720 pages. Hardcover ...Missing: original | Show results with:original
  50. [50]
    Education Resources - p5.js
    By documenting and sharing p5.js educational resources, such as workshops and classes, we aim to better connect the p5.js learner and educator communities ...Missing: growth 2020-2025
  51. [51]
    Processing Foundation
    Let's build open-source and accessible creative coding software projects together! Support Us with Crypto, DAFs, or Stock. Learn more about our recent work! Our ...Fellowships · Projects · Donate · PeopleMissing: shift 2012
  52. [52]
    Prix Ars Electronica 2005: Statement of the Jury in the Net Vision ...
    The timing of our Golden Nica award to the Processing initiative could not be more significant or appropriate. Three days before our jury meeting in March 2005 ...
  53. [53]
    Casey Reas + Ben Fry|Processing|AWARD - Tokyo TDC
    Reas is an artist and educator exploring process and abstraction through diverse digital media. Reas has exhibited and lectured in Europe, Asia, and the United ...
  54. [54]
    2011 National Design Award Winners
    With Casey Reas, he founded the Processing Project, an open-source programming environment for teaching computational design and sketching interactive-media ...
  55. [55]
    Professor exhibits artwork focused on creative artificial intelligence
    Nov 30, 2020 · Earlier this year, Reas received the 2020 Lumen Prize Moving Image Award for his audiovisual work, “Compressed Cinema.” He worked with composer ...
  56. [56]
    Processing Foundation — Fellowships
    Our multidisciplinary program supports artists, coders, and educators to create technical and socially engaged projects.Pr05 Grant · Fellowships 2024 · Fellowships 2023Missing: 2012 | Show results with:2012<|control11|><|separator|>
  57. [57]
    It only took 162 attempts, but Processing 1.0 is here! - writing | ben fry
    The Processing community was awarded the 2005 Prix Ars Electronica Golden Nica award and the 2005 Interactive Design Prize from the Tokyo Type Director's Club.
  58. [58]
    Bridging the gap between art and code - Newsroom | UCLA
    Apr 25, 2016 · In 2001, Reas and collaborator Ben Fry created Processing, an open-source programming language and environment that catered to visual artists, ...
  59. [59]
    Muse in the Machine | National Endowment for the Arts
    Supported by the National Endowment for the Arts, Processing Foundation Fellowships support artists, coders, and anyone else interested in taking Processing ...
  60. [60]
    “Processing.org: Programming for Artists and Designers” by Reas ...
    ACM SIGGRAPH HISTORY ARCHIVES. “Processing.org ... Technical Paper: Entries ... “Processing.org: Programming for Artists and Designers” by Reas and Fry ...
  61. [61]
    The Art of Code. How to turn your coding skills into art - Anna Carey
    Feb 11, 2020 · Paraluna, an art and sound installation at Burning Man in 2019. Try it For Yourself with Processing. Hopefully these examples give you a sense ...
  62. [62]
    Daniel Shiffman - NYU Tisch School of the Arts
    ... Processing: A Beginner's Guide to Programming Images, Animation, and Interaction and The Nature of Code, an open source book about simulating natural ...
  63. [63]
    Hello World! Processing on Vimeo
    Feb 28, 2013 · Processing is a documentary on creative coding that explores the role that ideas such as process, experimentation and algorithm play in this ...Missing: digital | Show results with:digital
  64. [64]
    Meet Processing, the Lingua Franca of Creative Coding | WIRED
    Jun 13, 2015 · Reas was a gifted University of Cincinnati grad who had a background in graphic design and a passionate desire to understand computation; as ...
  65. [65]
    Processing 2.0, a short introduction - WIRED
    Oct 21, 2013 · "Processing was started by Ben Fry and Casey Reas in the spring of 2001,while both were graduate students at the MIT Media Lab within John ...
  66. [66]
    Processing: A Programming Handbook for Visual Designers and ...
    REAS is a professor in the Department of Design Media Arts at UCLA. With Ben Fry, he initiated Processing in 2001. Processing is an open source programming ...
  67. [67]
    Announcing Processing Foundation Fellowship 2023 Mentors!
    Jul 21, 2023 · Their goal is to build an inclusive STEM tool kit, an open-source learning tool to make STEM more accessible for learners and practitioners ...
  68. [68]
    Fellowships 2021 - Processing Foundation
    ... underrepresented in fields like engineering and CS, to feel a sense of belonging. Angi will be mentored by Saber Khan, Processing Foundation's Education ...Missing: STEM | Show results with:STEM
  69. [69]
    How generative artists are coding NFTs - OpenProcessing
    Aug 28, 2025 · " When you mint a generative art NFT, you're not simply purchasing a finished piece—you're triggering its creation, becoming an essential ...
  70. [70]
    Modern Dream: How Refik Anadol Is Using Machine Learning and ...
    Nov 15, 2021 · MoMA curators Paola Antonelli and Michelle Kuo sat down with Anadol and Casey Reas, the artist-founder of Feral File, to talk about the ...
  71. [71]
  72. [72]
  73. [73]
  74. [74]
    Questions regarding open source licensing - Processing Forum
    The GPL (General Public License) is less permissive but more 'free'. The GPL gives you the same rights to reuse, remix, redistribute, etc. as the BSD/MIT ...
  75. [75]
    Download Processing
    ### Summary of Processing Download Information (2025)
  76. [76]
    benfry/processing4: Processing 4.x releases for Java 17 - GitHub
    Processing 4 is 64-bit only. This is the overwhelming majority of users, and we don't have the necessary help to maintain and support 32-bit systems.
  77. [77]
  78. [78]