What is L5?
L5 is a creative coding library built in Lua, but ported from Processing and p5.js. Lua1 is an exceptionally lightweight and fast scripting language with the ability to work cross-platform.
In an email written by Mike Pall in 2007
Subject: Re: Lua on cell phones
- Lua is small: the Lua interpreter easily fits in under 100 kilobytes including the base libraries.
- Lua is simple, but not simplistic: Lua has a simple, yet powerful syntax which fits on a single page. The semantics are consistent and intuitive.
This is particularly desirable in an age where versioning feels out of control2 and Lua has only had minor updates since 2003.
From https://www.lua.org/images/timeline.png
So it can run super-crazy fast on a modern machine, but it also works with low-power and older machines. Not only that, but think about what you could do with a microcontroller!
L5 built with Permacomputing Philosophies
Permacomputing is both a concept and approach to handling resilience in technology. It is a philosophy centered around limiting e-waste through sustainable development and usage of these tools.
My mentor and core contributor of the L5 project, Lee Tusman, wrote about it here:
These regenerative practices stem from permaculture3, a resource-sensitive agricultural design. For computers, this centers the material contexts in which technology is derived. As we become increasingly "modern", the physicality of a device (or person) becomes increasingly abstracted. So, it becomes ever more important of highlighting and building software that is mindful of material.
Lee also organizes the NYC permacomputing meetups. Although we are on hiatus for the summer, this past meetup discussed energy and material led by speaker Alex Nathanson, who built Solar Protocol.
What's my deal?
Yeah, who am I? As a creative coding educator, I spend a lot of my time teaching and exploring JavaScript and p5. This summer I will be working on L5 with Lee and the Processing Foundation, funded through Google Summer of Code.
Although typically targeted towards students, the program through Google is designed to introduce new contributors to projects in open source communities. By submitting a proposal to a specific project (L5) that is affiliated with an organization (Processing Foundation), you (I) can get paid for your (my) open source contributions. They do this every summer with the intention of increasing interest and development of open source projects.
Official GSoC Proposal (+ Updates)
There are three central arcs to the summer:
- 1.
Building out L5 tooling, experimenting with a VSCode extension4, packaging and build tools
- 2.
Building out community infrastructure to share and develop L5 projects
- 3.
Expand the L5 website with emphasis on first-time setup and usability.
From my original proposal, I refined the timeline with Lee and Kit to solidify more of the weekly objectives.
Weekly Schedule
Week 1:
Make GitHub issues to handle feedback from usability testing surveys
Identify and track existing issues in website documentation
Send out surveys among current p5.js students
Week 2:
Build out community guidelines based off of: p5.js community, ml5.js community, and permacomputing (including the L5 page on it).
Look at other open-source references, such as Arduino, Hydra Live Coding.
Co-lead L5 workshop and surveying at ITP camp.
Week 3:
Analyze survey responses and set up meetings to see what other changes could be made.
Start with quick wins on documentation updates from week 1 issues. This will likely focus most on “getting started” changes.
Get early community feedback on changes so far.
Week 4:
Start listing out tutorials that need to be added.
Begin work on VS Code Extension with the following objectives:
- 1.
Compile and run L5 for local development
- 2.
Bundle L5 and Love2D into a single executable for sharing.
Week 5:
Continue work on VS Code Extension.
Tooling experiment #1: Test LoveJS to run L5 in the browser. Test with VSCode integration and whether or not LoveJS is a viable tool for sharing in the browser or to continue with sharing executable.
Begin planning on a week-long jam to be run by the end of the summer. Set up itch.io page to host L5 as a tool and start building assets for the jam promotion
Week 6:
Get feedback on VS Code extension and iterate on feedback.
Write tutorials using VS Code extension.
Tooling experiment #2: Create a repository for apt or homebrew package install for L5.
Week 7:
Facilitate Github issues and delegate contributors. Update new issues based on technical tests in week 6.
Tooling experiment #3: Fork Love2D to build a single executable with a program loader screen.
Week 8:
Make changes based on feedback from VS Code extension
Tooling experiment #4: Based on viability from week 5 research, fork LoveJS to build an executable for the web.
Week 9:
Document existing experiments.
Research into community project sharing:
Mastodon bot (potential server: genart.social)
Sharing via a form and an approval
Online computational magazines (https://randomwalk.club/)
Translating to p5 for browser integration
Uploading to itch.io
Week 10:
Begin community jam (7-10 days long hosted on itch.io) and assist with needs from the community. Sam will be facilitating the jam, assisting with any L5 issues.
Tooling experiment #5: Test using Codeberg as the code repository and if Codeberg pages is a better platform to host.
Make updates for the L5 website and research into other Static-Site Generators that will have better long-term support.
Week 11:
Adjust tutorials as needed based on feedback from the jam. Any documentation updates, tutorial changes, or other quick fixes will be implemented and create Github / Codeberg issues for larger projects to encourage community development.
Week 12:
Write up a blog on documentation updates, make guidelines for documentation contributions, and create handoff guide for future contributions.
A Call for Contributors
If you got to the end here and you are interested or want to get involved in this process there are a couple ways.
Follow the website documentation updates. You are welcome to contribute to the code base based on any issues you have found (or issues that I have made!)
Follow the tooling updates. These will probably not be in the L5 code base itself, but will be a new repository under the L5 organization.
If you want to be contacted about new features or want to beta-test some upcoming changes, please fill out this form:
Anyway
That's all for now! I will be making some longer posts on this Leaflet about this project that will be tagged
But am also trying be better about a public writing practice.
xx smh