<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
      <title>2022 Week 3: Creative coding and Processing — CCS Working Group</title>
      <link>https://wg.criticalcodestudies.com/index.php?p=/</link>
      <pubDate>Sat, 11 Apr 2026 07:26:10 +0000</pubDate>
          <description>2022 Week 3: Creative coding and Processing — CCS Working Group</description>
    <language>en</language>
    <atom:link href="https://wg.criticalcodestudies.com/index.php?p=/categories/2022-week-3/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>Week 3: Code Critique - describeElement()</title>
        <link>https://wg.criticalcodestudies.com/index.php?p=/discussion/121/week-3-code-critique-describeelement</link>
        <pubDate>Mon, 31 Jan 2022 03:48:20 +0000</pubDate>
        <category>2022 Week 3: Creative coding and Processing</category>
        <dc:creator>QianqianYe</dc:creator>
        <guid isPermaLink="false">121@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>From the essay <a rel="nofollow" href="https://medium.com/processing-foundation/making-p5-js-accessible-e2ce366e05a0" title="Making p5.js Accessible">Making p5.js Accessible</a>,  Luis Morales-Navarro and Mathura Govindarajan wrote:</p>

<blockquote><div>
  <p>Trying to make the p5.js web editor and p5.js sketches accessible came with its own set of challenges, the main one being that the canvas is probably the single, most inaccessible element in HTML. While it’s possible for a screen reader to recognize the element, it cannot identify all of the elements on it. The reason for this is simple: the canvas behaves just like a physical canvas, once you put paint on it, it covers up what’s behind it. It’s easy to see the color of each pixel but not understand how the pixels comprise shapes and elements. This poses a problem when you are trying to describe the elements on the canvas through code.</p>
</div></blockquote>

<p>There has been an ongoing discussion about <a rel="nofollow" href="https://github.com/processing/p5.js/issues/4721" title="next steps for web accessibility">next steps for web accessibility</a> on p5.js GitHub. In 2020, <a rel="nofollow" href="https://github.com/processing/p5.js/pull/4654" title="describe() and describeElement()">describe() and describeElement()</a> were added to p5.js. The describeElement() function creates a screen-reader accessible description for elements —shapes or groups of shapes that create meaning together— in the canvas. The first paramater should be the name of the element. The second parameter should be a string with a description of the element. The third parameter is optional. If specified, it determines how the element description is displayed. Below are the reference code snippet of describeElement() and an example of how to use it.</p>

<h2>p5.js describeElement() Reference</h2>

<p>Source:  <a href="https://p5js.org/reference/#/p5/describeElement" rel="nofollow">https://p5js.org/reference/#/p5/describeElement</a></p>

<pre><code>describe('Heart and yellow circle over pink background');
noStroke();
background('pink');
describeElement('Circle', 'Yellow circle in the top left corner');
fill('yellow');
ellipse(25, 25, 40, 40);
describeElement('Heart', 'red heart in the bottom right corner');
fill('red');
ellipse(66.6, 66.6, 20, 20);
ellipse(83.2, 66.6, 20, 20);
triangle(91.2, 72.6, 75, 95, 58.6, 72.6);
</code></pre>

<h2>p5.js describeElement() Example</h2>

<p>Author: Luis Morales-Navarro<br />
Source:  <a href="https://github.com/lm-n/p5-describe-prototypes/blob/f82fcc3cba923d2590d83aef338d22072b99ab2d/describeElement/example1/sketch.js" rel="nofollow">https://github.com/lm-n/p5-describe-prototypes/blob/f82fcc3cba923d2590d83aef338d22072b99ab2d/describeElement/example1/sketch.js</a></p>

<pre><code>function setup() {
  createCanvas(300, 200);
  describe('a red wheelbarrow beside the white chickens inspired by &quot;The Red Wheelbarrow&quot; by William Carlos Williams',LABEL);
}

function draw() {
  background('skyblue');
  noStroke();
  fill('#a67b60');
  rect(0,120,300,100);
  //red wheelbarrow
  describeElement(&quot;wheelbarrow&quot;,&quot;A red wheelbarrow whith a gray wheel rests on the brown ground.&quot;,LABEL);
  fill('#706a58');
  ellipse(35,137,30,30);
  strokeWeight(3);
  stroke('gray');
  line(135,105,130,140);
  line(124,110,130,140);
  line(35,137,44,100);
  noStroke();
  fill('red');
  quad(30, 75, 60, 130, 140, 105, 140, 76);
  strokeWeight(5);
  stroke('brown');
  line(35,137,200,84);
  //chicken
  let cC= [[200,140],[250,100], [100,150]];
  for (i=0; i&lt;cC.length; i++){
    let x = cC[i][0];
    let y = cC[i][1];
    noStroke();
    fill('red');
    arc(x-12, y-8, 18, 20, radians(180), radians(0), PIE);
    fill(255);
    arc(x, y, 40, 40, 0, PI + QUARTER_PI, PIE);
    arc(x-15, y, 20, 30, radians(180), radians(0), PIE);
    fill('orange');
    triangle(x-25,y,x-36,y,x-23,y-7);
    strokeWeight(3);
    stroke('orange');
    line(x-5,y+20,x-5,y+30);
    line(x+5,y+20,x+5,y+30);
  }
  describeElement(&quot;chicken 1&quot;,&quot;A white chicken infront of the wheelbarrow.&quot;,LABEL);
  describeElement(&quot;chicken 2&quot;,&quot;A white chicken to the right of the wheelbarrow.&quot;,LABEL);
  describeElement(&quot;chicken 3&quot;,&quot;A white chicken standing between chicken 1 and chicken 2.&quot;,LABEL);
}

</code></pre>

<p>Below is the poem mentioned in the code:</p>

<blockquote><div>
  <p>The Red Wheelbarrow <br />
  BY WILLIAM CARLOS WILLIAMS<br />
  so much depends<br />
  upon</p>
  
  <p>a red wheel<br />
  barrow</p>
  
  <p>glazed with rain<br />
  water</p>
  
  <p>beside the white<br />
  Chickens</p>
</div></blockquote>

<p>Below is a screenshot of the code run on <a rel="nofollow" href="https://editor.p5js.org/Q/sketches/ZlerbYf0b" title="p5.js web editor">p5.js web editor</a><br />
<img src="https://wg.criticalcodestudies.com/uploads/editor/6c/b9ouzs4r6gn3.png" alt="" title="" /></p>

<p>There also has been this ongoing discussion on p5.js GitHub, initiated by Lauren Lee McCarthy, about potentially requiring a describe() line in order for a p5 sketch to run. Below is the screenshot of the <a rel="nofollow" href="https://github.com/processing/p5.js/issues/5427" title="GitHub issue">GitHub issue</a>.<br />
<img src="https://wg.criticalcodestudies.com/uploads/editor/ks/iihr3dat29sb.png" alt="" title="" /></p>

<h2>Discussion Questions:</h2>

<p>Please feel free to add your question in the thread.</p>

<ul>
<li>How can the community form around the creation of functions like ‘describe()’ and ‘describeElement()’?</li>
<li>What should we do about web accessibility in languages other than English? The functions describe() and describeElement() will support any language but library generated descriptions with textOutput() and gridOutput() as of now will be limited to the English language. We believe these features should be accessible in other languages supported by p5.js.</li>
<li>How should we expand library generated descriptions?</li>
</ul>
]]>
        </description>
    </item>
    <item>
        <title>Week 3: p5.js and Access - Discussion Starter</title>
        <link>https://wg.criticalcodestudies.com/index.php?p=/discussion/120/week-3-p5-js-and-access-discussion-starter</link>
        <pubDate>Sat, 29 Jan 2022 21:09:31 +0000</pubDate>
        <category>2022 Week 3: Creative coding and Processing</category>
        <dc:creator>QianqianYe</dc:creator>
        <guid isPermaLink="false">120@/index.php?p=/discussions</guid>
        <description><![CDATA[<h1>Discussion leaders</h1>

<p><a rel="nofollow" href="https://www.qianqian-ye.com/" title="Qianqian Ye">Qianqian Ye</a> (they/she), p5.js co-lead<br />
<a rel="nofollow" href="https://outofambit.format.com/" title="evelyn masso">evelyn masso</a> (she/they), p5.js co-lead</p>

<h1>🌸Introduction</h1>

<p>Open source toolkits for the arts such as <a rel="nofollow" href="https://p5js.org/" title="p5.js">p5.js</a> play a critical role in promoting software literacy and arts literacy; they are fixtures in educational spaces, having supported millions of students to get started in arts, open-source, and technology fields. Among these tools, p5.js is at the forefront of making concepts and tools accessible and available to people who are historically and systemically excluded from technology and the arts.</p>

<p>p5.js aims to model what it means to be a more accessibility-aware open source community. In 2019, we made the decision that “p5.js will not add any new features except those that increase access.”  The p5.js community has made strides toward making learning how to code more inclusive, through the development of accessible creative-coding tools and learning resources, and a more accessibility-aware open source community. Our aim as a community is not only to  promote and incorporate established best practices, but push the bounds of accessibility and creative practice.</p>

<p>The p5.js community published <a rel="nofollow" href="https://github.com/processing/p5.js/blob/main/contributor_docs/access.md" title="a statement about its focus on access">a statement about its focus on access</a> in mid-2020 as a guiding document. Access can take many forms. It can mean providing accessible tools for creating accessible works on the web, investing in robust documentation offered in many languages, staying free of cost for non-commercial use, highlighting the work of marginalized people in the project, and more.</p>

<p><strong>Access</strong> here means making p5.js better for:</p>

<ul>
<li>People with disabilities or illness</li>
<li>People who speak languages other than English</li>
<li>Black people, Indigenous peoples, and People of Color</li>
<li>People who are lesbian, gay, bisexual, trans, or queer</li>
<li>People with marginalized genders</li>
<li>People who lack opportunities and/or resources to engage with creative coding due to class or income</li>
<li>People with little or no prior experience in open source and creative coding</li>
<li>and other people who are systemically excluded and historically underrepresented</li>
</ul>

<p>Our group discusses access in <a rel="nofollow" href="https://github.com/CreativeInquiry/OSSTA-Report#v-field-definition" title="Open-Source Software Toolkits for the Arts (OSSTA),">Open-Source Software Toolkits for the Arts (OSSTA),</a> like p5.js, Processing, openFrameworks, Cinder, three.js, and more. This discussion will provide space for contributors and users of p5.js and practitioners from outside OSSTA projects to share their knowledge, perspective, and dreams for building greater access to technical and arts spaces with the public.</p>

<h1>Discussion</h1>

<p>We invite you to join us in exploring these and other issues in accessibility, with these questions in mind:</p>

<ul>
<li>What are barriers you’ve experienced in using, working in, or contributing to open source software? What resources or strategies were helpful in navigating these barriers?</li>
<li>How can access in open source software for the arts/creative expression be radically expanded?</li>
<li>How can accessibility in open source software contribute to web accessibility in large?</li>
<li>What successful (or promising) practices have you seen used to increase access to open source software?</li>
<li>What can we learn from some of the good practices for increasing access outside of OSSTA projects?</li>
<li>At what social levels (e.g. individuals, projects, organizations, industry, etc) do you think change would be most transformative to these issues?</li>
</ul>
]]>
        </description>
    </item>
   <language>en</language>
   </channel>
</rss>
