diff --git a/.all-contributorsrc b/.all-contributorsrc
new file mode 100644
index 0000000000..64d183d6ad
--- /dev/null
+++ b/.all-contributorsrc
@@ -0,0 +1,1389 @@
+{
+ "projectName": "processing4-carbon-aug-19",
+ "projectOwner": "processing",
+ "files": [
+ "README.md"
+ ],
+ "imageSize": 120,
+ "contributorsPerLine": 6,
+ "commit": true,
+ "contributors": [
+ {
+ "login": "benfry",
+ "name": "Ben Fry",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1623101?v=4",
+ "profile": "https://fathom.info",
+ "contributions": [
+ "code",
+ "ideas",
+ "infra",
+ "mentoring",
+ "maintenance",
+ "content",
+ "talk"
+ ]
+ },
+ {
+ "login": "REAS",
+ "name": "Casey Reas",
+ "avatar_url": "https://avatars.githubusercontent.com/u/677774?v=4",
+ "profile": "http://reas.com",
+ "contributions": [
+ "code",
+ "ideas",
+ "infra",
+ "mentoring",
+ "content",
+ "talk",
+ "tutorial"
+ ]
+ },
+ {
+ "login": "codeanticode",
+ "name": "codeanticode",
+ "avatar_url": "https://avatars.githubusercontent.com/u/62246?v=4",
+ "profile": "http://andrescolubri.net/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Manindra29",
+ "name": "Manindra Moharana",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1686425?v=4",
+ "profile": "http://mkmoharana.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "JakubValtar",
+ "name": "Jakub Valtar",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3177098?v=4",
+ "profile": "https://jakubvaltar.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "sampottinger",
+ "name": "A Samuel Pottinger",
+ "avatar_url": "https://avatars.githubusercontent.com/u/110391?v=4",
+ "profile": "http://gleap.org/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "gohai",
+ "name": "Gottfried Haider",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4945451?v=4",
+ "profile": "http://twitter.com/mrgohai",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Akarshit",
+ "name": "Akarshit Wal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7762605?v=4",
+ "profile": "https://github.com/Akarshit",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "peskal",
+ "name": "Peter Kalauskas",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1523978?v=4",
+ "profile": "https://github.com/peskal",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "shiffman",
+ "name": "Daniel Shiffman",
+ "avatar_url": "https://avatars.githubusercontent.com/u/191758?v=4",
+ "profile": "https://thecodingtrain.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "joelmoniz",
+ "name": "Joel Moniz",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4526417?v=4",
+ "profile": "http://joelmoniz.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "lonnen",
+ "name": "Lonnen",
+ "avatar_url": "https://avatars.githubusercontent.com/u/21467?v=4",
+ "profile": "https://github.com/lonnen",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "fjenett",
+ "name": "Florian Jenett",
+ "avatar_url": "https://avatars.githubusercontent.com/u/59608?v=4",
+ "profile": "http://bezier.de/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "scotthmurray",
+ "name": "Scott Murray",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1034002?v=4",
+ "profile": "https://github.com/scotthmurray",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "federicobond",
+ "name": "Federico Bond",
+ "avatar_url": "https://avatars.githubusercontent.com/u/138426?v=4",
+ "profile": "https://federicobond.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "pvrs12",
+ "name": "pvrs12",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6956401?v=4",
+ "profile": "https://github.com/pvrs12",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "GKFX",
+ "name": "George Bateman",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5357642?v=4",
+ "profile": "https://github.com/GKFX",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "mckennapsean",
+ "name": "Sean McKenna",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1406149?v=4",
+ "profile": "http://mckennapsean.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "kfeuz",
+ "name": "kfeuz",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2780385?v=4",
+ "profile": "https://github.com/kfeuz",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "sansumbrella",
+ "name": "David Wicks",
+ "avatar_url": "https://avatars.githubusercontent.com/u/81553?v=4",
+ "profile": "https://sansumbrella.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "wirsing",
+ "name": "Wilm Thoben",
+ "avatar_url": "https://avatars.githubusercontent.com/u/938075?v=4",
+ "profile": "https://github.com/wirsing",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Anadroid",
+ "name": "Ana",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1826278?v=4",
+ "profile": "https://github.com/Anadroid",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "AmnonOwed",
+ "name": "Amnon Owed",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4075846?v=4",
+ "profile": "http://vimeo.com/amnon",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "galsasson",
+ "name": "Gal Sasson",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3430521?v=4",
+ "profile": "https://github.com/galsasson",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "scollovati",
+ "name": "scollovati",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20740642?v=4",
+ "profile": "https://github.com/scollovati",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "ybakos",
+ "name": "Yong Joseph Bakos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5502?v=4",
+ "profile": "https://yongbakos.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "crazymaster",
+ "name": "Kenichi Ito",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1528093?v=4",
+ "profile": "https://github.com/crazymaster",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Efratror",
+ "name": "Efratror",
+ "avatar_url": "https://avatars.githubusercontent.com/u/19653269?v=4",
+ "profile": "https://github.com/Efratror",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "aengelke",
+ "name": "Alexis Engelke",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4236689?v=4",
+ "profile": "https://github.com/aengelke",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "tyfkda",
+ "name": "tyfkda",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7347125?v=4",
+ "profile": "https://tyfkda.github.io/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "juniperoserra",
+ "name": "Simon Greenwold",
+ "avatar_url": "https://avatars.githubusercontent.com/u/125713?v=4",
+ "profile": "https://github.com/juniperoserra",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "runemadsen",
+ "name": "Rune Skjoldborg Madsen",
+ "avatar_url": "https://avatars.githubusercontent.com/u/192021?v=4",
+ "profile": "https://github.com/runemadsen",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "inkwellsiesta",
+ "name": "Leslie Watkins",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6732005?v=4",
+ "profile": "https://github.com/inkwellsiesta",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "rzats",
+ "name": "Rostyslav Zatserkovnyi",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13783592?v=4",
+ "profile": "https://www.linkedin.com/in/rostyslav-zatserkovnyi/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "trikaphundo",
+ "name": "Dan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/24832650?v=4",
+ "profile": "https://github.com/trikaphundo",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "dhowe",
+ "name": "Daniel Howe",
+ "avatar_url": "https://avatars.githubusercontent.com/u/737638?v=4",
+ "profile": "https://github.com/dhowe",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "joshgiesbrecht",
+ "name": "Josh Giesbrecht",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3434564?v=4",
+ "profile": "https://github.com/joshgiesbrecht",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "liquidev",
+ "name": "liquidex",
+ "avatar_url": "https://avatars.githubusercontent.com/u/16415678?v=4",
+ "profile": "https://liquidex.house/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "bgc",
+ "name": "bgc",
+ "avatar_url": "https://avatars.githubusercontent.com/u/516129?v=4",
+ "profile": "https://github.com/bgc",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "omerjerk",
+ "name": "Mohammad Umair",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3191547?v=4",
+ "profile": "https://umair.io/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "mtsio",
+ "name": "T Michail",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8008901?v=4",
+ "profile": "https://github.com/mtsio",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "ohommos",
+ "name": "ohommos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3680307?v=4",
+ "profile": "https://twitter.com/omarhommos",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "google-feinberg",
+ "name": "Jonathan Feinberg",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2643627?v=4",
+ "profile": "https://github.com/google-feinberg",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "davidfokkema",
+ "name": "David Fokkema",
+ "avatar_url": "https://avatars.githubusercontent.com/u/917137?v=4",
+ "profile": "https://github.com/davidfokkema",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "liquidzym",
+ "name": "liquid",
+ "avatar_url": "https://avatars.githubusercontent.com/u/51957?v=4",
+ "profile": "https://github.com/liquidzym",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "kisarur",
+ "name": "Kisaru Liyanage",
+ "avatar_url": "https://avatars.githubusercontent.com/u/23295399?v=4",
+ "profile": "https://github.com/kisarur",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "boubpopsyteam",
+ "name": "BouB",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3597918?v=4",
+ "profile": "https://github.com/boubpopsyteam",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "5atk6",
+ "name": "atk",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8381460?v=4",
+ "profile": "https://twitter.com/ijkxy",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "xranby",
+ "name": "Xerxes Rånby",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1233011?v=4",
+ "profile": "http://twitter.com/xranby",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "WillRabalais04",
+ "name": "Will Rabalais",
+ "avatar_url": "https://avatars.githubusercontent.com/u/69363495?v=4",
+ "profile": "https://github.com/WillRabalais04",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "iamutkarshtiwari",
+ "name": "Utkarsh Tiwari",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6258810?v=4",
+ "profile": "https://github.com/iamutkarshtiwari",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Prince-Polka",
+ "name": "Prince-Polka",
+ "avatar_url": "https://avatars.githubusercontent.com/u/29307694?v=4",
+ "profile": "https://github.com/Prince-Polka",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jamesjgrady",
+ "name": "jamesjgrady",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2600893?v=4",
+ "profile": "https://github.com/jamesjgrady",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "SableRaf",
+ "name": "Raphaël de Courville",
+ "avatar_url": "https://avatars.githubusercontent.com/u/290261?v=4",
+ "profile": "https://github.com/SableRaf",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "satoshiokita",
+ "name": "Satoshi Okita",
+ "avatar_url": "https://avatars.githubusercontent.com/u/16870334?v=4",
+ "profile": "https://github.com/satoshiokita",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "rocha",
+ "name": "Carlos Andrés Rocha",
+ "avatar_url": "https://avatars.githubusercontent.com/u/51551?v=4",
+ "profile": "https://github.com/rocha",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "vijnv",
+ "name": "Vincent Vijn",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1311387?v=4",
+ "profile": "https://github.com/vijnv",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "dzaima",
+ "name": "dzaima",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5551338?v=4",
+ "profile": "https://github.com/dzaima",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "mingness",
+ "name": "mingness",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5671413?v=4",
+ "profile": "https://github.com/mingness",
+ "contributions": [
+ "infra"
+ ]
+ },
+ {
+ "login": "doradocodes",
+ "name": "Dora Do",
+ "avatar_url": "https://avatars.githubusercontent.com/u/140831752?v=4",
+ "profile": "https://doradocodes.com/",
+ "contributions": [
+ "infra"
+ ]
+ },
+ {
+ "login": "Stefterv",
+ "name": "Stef Tervelde",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4988953?v=4",
+ "profile": "https://steftervel.de/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "allcontributors[bot]",
+ "name": "allcontributors[bot]",
+ "avatar_url": "https://avatars.githubusercontent.com/in/23186?v=4",
+ "profile": "https://github.com/apps/allcontributors",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "datguy",
+ "name": "Dave",
+ "avatar_url": "https://avatars.githubusercontent.com/u/131480?v=4",
+ "profile": "http://www.linkedin.com/in/davidtregay/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "TN8001",
+ "name": "TN8001",
+ "avatar_url": "https://avatars.githubusercontent.com/u/28250188?v=4",
+ "profile": "https://github.com/TN8001",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Sardtok",
+ "name": "Sigmund Hansen",
+ "avatar_url": "https://avatars.githubusercontent.com/u/613667?v=4",
+ "profile": "https://github.com/Sardtok",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "rbonifacio",
+ "name": "Rodrigo Bonifácio",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1269433?v=4",
+ "profile": "http://rbonifacio.github.io/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Plastix",
+ "name": "Aidan Pieper",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1526881?v=4",
+ "profile": "https://github.com/Plastix",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Minimaximize",
+ "name": "Liam James",
+ "avatar_url": "https://avatars.githubusercontent.com/u/12061276?v=4",
+ "profile": "https://www.minimaximize.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "kazimuth",
+ "name": "james gilles",
+ "avatar_url": "https://avatars.githubusercontent.com/u/555667?v=4",
+ "profile": "https://github.com/kazimuth",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "prisonerjohn",
+ "name": "Elie Zananiri",
+ "avatar_url": "https://avatars.githubusercontent.com/u/119702?v=4",
+ "profile": "http://www.prisonerjohn.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "cosimoc",
+ "name": "Cosimo Cecchi",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13906?v=4",
+ "profile": "http://blogs.gnome.org/cosimoc",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "liam-middlebrook",
+ "name": "Liam Middlebrook",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3920942?v=4",
+ "profile": "https://github.com/liam-middlebrook",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "myrjola",
+ "name": "Martin Yrjölä",
+ "avatar_url": "https://avatars.githubusercontent.com/u/36122?v=4",
+ "profile": "https://github.com/myrjola",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "urbanskimichal",
+ "name": "Michał Urbański",
+ "avatar_url": "https://avatars.githubusercontent.com/u/18449680?v=4",
+ "profile": "https://tajnyprojekt.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "pacoelayudante",
+ "name": "Paco",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9141115?v=4",
+ "profile": "https://github.com/pacoelayudante",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "pjryan93",
+ "name": "Patrick Ryan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7769635?v=4",
+ "profile": "https://github.com/pjryan93",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "qiubit",
+ "name": "Paweł Goliński",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8190751?v=4",
+ "profile": "https://mimotaurs.pl/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "rupeshkumar22",
+ "name": "Rupesh Kumar",
+ "avatar_url": "https://avatars.githubusercontent.com/u/46577873?v=4",
+ "profile": "https://iamrupesh.me/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "suheb",
+ "name": "Suhaib Khan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4609293?v=4",
+ "profile": "https://suhaibkhan.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "yblake",
+ "name": "Yves BLAKE",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9674161?v=4",
+ "profile": "https://github.com/yblake",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "ernestum",
+ "name": "M. Ernestus",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1250234?v=4",
+ "profile": "https://github.com/ernestum",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "francisli",
+ "name": "Francis Li",
+ "avatar_url": "https://avatars.githubusercontent.com/u/140766?v=4",
+ "profile": "https://github.com/francisli",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "PARAG00991",
+ "name": "Parag Jain",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8044561?v=4",
+ "profile": "https://github.com/PARAG00991",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "rouxpz",
+ "name": "roopa vasudevan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1497519?v=4",
+ "profile": "http://roopavasudevan.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "kiwistrongis",
+ "name": "kiwistrongis",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2838640?v=4",
+ "profile": "https://github.com/kiwistrongis",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "alranel",
+ "name": "Alessandro Ranellucci",
+ "avatar_url": "https://avatars.githubusercontent.com/u/594957?v=4",
+ "profile": "https://www.linkedin.com/in/alessandro-ranellucci/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "villares",
+ "name": "Alexandre B A Villares",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3694604?v=4",
+ "profile": "https://abav.lugaralgum.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Arty2",
+ "name": "Heracles",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3519269?v=4",
+ "profile": "http://heracl.es/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Arya-Gupta",
+ "name": "Arya Gupta",
+ "avatar_url": "https://avatars.githubusercontent.com/u/84087089?v=4",
+ "profile": "https://github.com/Arya-Gupta",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "ddf",
+ "name": "Damien Quartz",
+ "avatar_url": "https://avatars.githubusercontent.com/u/141640?v=4",
+ "profile": "https://github.com/ddf",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "GABBAR1947",
+ "name": "Shubham Rathore",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9786291?v=4",
+ "profile": "https://rathoresaab.wordpress.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "gtitaev",
+ "name": "Grigoriy Titaev",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6291442?v=4",
+ "profile": "https://github.com/gtitaev",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "guilhermesilveira",
+ "name": "Guilherme Silveira",
+ "avatar_url": "https://avatars.githubusercontent.com/u/51391?v=4",
+ "profile": "https://www.alura.com.br/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "HectorCarral",
+ "name": "Héctor López Carral",
+ "avatar_url": "https://avatars.githubusercontent.com/u/26223377?v=4",
+ "profile": "https://hectorcarral.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jeremydouglass",
+ "name": "Jeremy Douglass",
+ "avatar_url": "https://avatars.githubusercontent.com/u/798570?v=4",
+ "profile": "http://jeremydouglass.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "whackashoe",
+ "name": "Jett LaRue",
+ "avatar_url": "https://avatars.githubusercontent.com/u/855581?v=4",
+ "profile": "https://jettlarue.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "hx2A",
+ "name": "Jim",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4044283?v=4",
+ "profile": "https://github.com/hx2A",
+ "contributions": [
+ "code",
+ "bug"
+ ]
+ },
+ {
+ "login": "jperals",
+ "name": "Joan Perals",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1257272?v=4",
+ "profile": "https://perals.io/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "oseph",
+ "name": "Josh Holinaty",
+ "avatar_url": "https://avatars.githubusercontent.com/u/23200117?v=4",
+ "profile": "https://github.com/oseph",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "cathiecode",
+ "name": "Keito Takeda",
+ "avatar_url": "https://avatars.githubusercontent.com/u/74973441?v=4",
+ "profile": "https://catherine.superneko.net/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "vepo",
+ "name": "Victor Osório",
+ "avatar_url": "https://avatars.githubusercontent.com/u/353569?v=4",
+ "profile": "https://github.com/vepo",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "letorbi",
+ "name": "Torben",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1268015?v=4",
+ "profile": "https://letorbi.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "TobiPristupin",
+ "name": "Tobias Pristupin",
+ "avatar_url": "https://avatars.githubusercontent.com/u/22137035?v=4",
+ "profile": "https://github.com/TobiPristupin",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "thomasleplus",
+ "name": "Thomas Leplus",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1929743?v=4",
+ "profile": "https://www.leplus.org/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "arnoudvanderleer",
+ "name": "Arnoud van der Leer",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6382058?v=4",
+ "profile": "https://github.com/arnoudvanderleer",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "knupel",
+ "name": "Stanislas Marçais / Knupel",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3332269?v=4",
+ "profile": "http://knupel.art/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "DarkPrince304",
+ "name": "Sanchit Kapoor",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9005407?v=4",
+ "profile": "https://github.com/DarkPrince304",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "hazmatsuitor",
+ "name": "Miles Fogle",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6372134?v=4",
+ "profile": "https://github.com/hazmatsuitor",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "mvaladas",
+ "name": "Miguel Valadas",
+ "avatar_url": "https://avatars.githubusercontent.com/u/120122?v=4",
+ "profile": "https://github.com/mvaladas",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "mglst",
+ "name": "Maximilien Tirard",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13157227?v=4",
+ "profile": "https://github.com/mglst",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Clarvel",
+ "name": "Matthew Russell",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4959627?v=4",
+ "profile": "https://github.com/Clarvel",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "dcuartielles",
+ "name": "dcuartielles",
+ "avatar_url": "https://avatars.githubusercontent.com/u/40865?v=4",
+ "profile": "https://github.com/dcuartielles",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jaysonkh",
+ "name": "Jayson Haebich",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1037665?v=4",
+ "profile": "https://github.com/jaysonkh",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jordirosa-p5",
+ "name": "jordirosa",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4674664?v=4",
+ "profile": "https://github.com/jordirosa-p5",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jshrake",
+ "name": "Justin Shrake",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3046816?v=4",
+ "profile": "https://github.com/jshrake",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "kevinstadler",
+ "name": "Kevin",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7602414?v=4",
+ "profile": "https://github.com/kevinstadler",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "kgtkr",
+ "name": "kgtkr",
+ "avatar_url": "https://avatars.githubusercontent.com/u/17868838?v=4",
+ "profile": "https://kgtkr.net/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "markluffel",
+ "name": "Mark Luffel",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13292?v=4",
+ "profile": "https://github.com/markluffel",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "nking07049925",
+ "name": "Никита Король",
+ "avatar_url": "https://avatars.githubusercontent.com/u/11886663?v=4",
+ "profile": "https://github.com/nking07049925",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "montardon",
+ "name": "raguenets",
+ "avatar_url": "https://avatars.githubusercontent.com/u/238749?v=4",
+ "profile": "https://github.com/montardon",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "robog-two",
+ "name": "robog-two",
+ "avatar_url": "https://avatars.githubusercontent.com/u/77205106?v=4",
+ "profile": "https://github.com/robog-two",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "teddywing",
+ "name": "teddywing",
+ "avatar_url": "https://avatars.githubusercontent.com/u/342964?v=4",
+ "profile": "https://github.com/teddywing",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "tiwawan",
+ "name": "chikuwa",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4486076?v=4",
+ "profile": "https://github.com/tiwawan",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "QazCetelic",
+ "name": "ಠ_ಠ",
+ "avatar_url": "https://avatars.githubusercontent.com/u/51381523?v=4",
+ "profile": "https://github.com/QazCetelic",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "hamoid",
+ "name": "Abe Pazos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/108264?v=4",
+ "profile": "https://hamoid.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "sashashura",
+ "name": "Alex",
+ "avatar_url": "https://avatars.githubusercontent.com/u/93376818?v=4",
+ "profile": "https://github.com/sashashura",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "alexanderghurst",
+ "name": "Alexander Hurst",
+ "avatar_url": "https://avatars.githubusercontent.com/u/34695105?v=4",
+ "profile": "https://github.com/alexanderghurst",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Xwhn",
+ "name": "Anıl",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8299732?v=4",
+ "profile": "https://github.com/Xwhn",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "setanarut",
+ "name": "Barış",
+ "avatar_url": "https://avatars.githubusercontent.com/u/36481442?v=4",
+ "profile": "https://github.com/setanarut",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "bsapozhnikov",
+ "name": "Brian Sapozhnikov",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5421484?v=4",
+ "profile": "https://github.com/bsapozhnikov",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "charlesbones",
+ "name": "Carlos Mario Rodriguez Perdomo",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3228784?v=4",
+ "profile": "https://github.com/charlesbones",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "CyberFlameGO",
+ "name": "CyberFlame",
+ "avatar_url": "https://avatars.githubusercontent.com/u/24910512?v=4",
+ "profile": "https://github.com/CyberFlameGO",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "dhruv13J",
+ "name": "Dhruv Jawali",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4868174?v=4",
+ "profile": "https://github.com/dhruv13J",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "FlorisVO",
+ "name": "FlorisVO",
+ "avatar_url": "https://avatars.githubusercontent.com/u/29863403?v=4",
+ "profile": "https://github.com/FlorisVO",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "frankleonrose",
+ "name": "Frank Leon Rose",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1261725?v=4",
+ "profile": "https://github.com/frankleonrose",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "atduskgreg",
+ "name": "Greg Borenstein",
+ "avatar_url": "https://avatars.githubusercontent.com/u/165?v=4",
+ "profile": "http://gregborenstein.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "libasoles",
+ "name": "Guillermo Perez",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8009070?v=4",
+ "profile": "https://github.com/libasoles",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "hkiel",
+ "name": "Henning Kiel",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9904830?v=4",
+ "profile": "https://github.com/hkiel",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jdeisenberg",
+ "name": "J David Eisenberg",
+ "avatar_url": "https://avatars.githubusercontent.com/u/160096?v=4",
+ "profile": "http://catcode.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "JEphron",
+ "name": "Jordan Ephron",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1817241?v=4",
+ "profile": "https://github.com/JEphron",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "therewasaguy",
+ "name": "Jason Sigal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/504124?v=4",
+ "profile": "https://jasonsigal.cc/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jordanorelli",
+ "name": "Jordan Orelli",
+ "avatar_url": "https://avatars.githubusercontent.com/u/400255?v=4",
+ "profile": "https://orel.li/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "karlre",
+ "name": "Kalle",
+ "avatar_url": "https://avatars.githubusercontent.com/u/22083320?v=4",
+ "profile": "https://github.com/karlre",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "kamedin",
+ "name": "Laureano López",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5443113?v=4",
+ "profile": "https://github.com/kamedin",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "LesleyWagner",
+ "name": "Lesley Wagner",
+ "avatar_url": "https://avatars.githubusercontent.com/u/33584486?v=4",
+ "profile": "https://github.com/LesleyWagner",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "mcslee",
+ "name": "Mark Slee",
+ "avatar_url": "https://avatars.githubusercontent.com/u/597850?v=4",
+ "profile": "http://mcslee.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "martinleopold",
+ "name": "MARTIN LEOPOLD GROEDL",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1692826?v=4",
+ "profile": "https://groedl.xyz/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "monkstone",
+ "name": "Martin Prout",
+ "avatar_url": "https://avatars.githubusercontent.com/u/86850?v=4",
+ "profile": "https://monkstone.github.io/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "hbs",
+ "name": "Mathias Herberts",
+ "avatar_url": "https://avatars.githubusercontent.com/u/236594?v=4",
+ "profile": "https://github.com/hbs",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "diyaayay",
+ "name": "Diya Solanki",
+ "avatar_url": "https://avatars.githubusercontent.com/u/110971977?v=4",
+ "profile": "http://www.diyasolanki.com",
+ "contributions": [
+ "infra"
+ ]
+ },
+ {
+ "login": "neilcsmith-net",
+ "name": "Neil C Smith",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3975960?v=4",
+ "profile": "https://www.codelerity.com/",
+ "contributions": [
+ "infra"
+ ]
+ }
+ ],
+ "repoType": "github",
+ "repoHost": "https://github.com",
+ "skipCi": true,
+ "commitConvention": "angular",
+ "commitType": "docs"
+}
diff --git a/.github/ARM32.md b/.github/ARM32.md
new file mode 100644
index 0000000000..c0801efd6e
--- /dev/null
+++ b/.github/ARM32.md
@@ -0,0 +1,42 @@
+# Processing 32-bit Linux
+
+For the Raspberry Pi 3 and older we'd need to create an 32-bit arm version of
+processing.
+
+Github Actions do not support creating 32 bit runners so we need to host one
+ourselves.
+
+## Instructions
+
+### Gathering your Tools
+
+You will need:
+
+- A Raspberry Pi
+- A micro SD card
+- An SD card reader
+- A computer
+
+### Flashing the SD Card
+1. Install and open [**Raspberry Pi Imager**](https://www.raspberrypi.com/software/) on your computer
+2. In **Raspberry Pi Imager**:
+ - Select your Raspberry Pi model
+ - Select "Raspberry PI OS lite (32bit)" as the OS (you may need to look into the sub-menus)
+ - Select your SD card
+ - Click NEXT
+3. Edit the OS settings:
+ - Set a hostname (e.g. `processing.local`)
+ - Set a username and password
+ - Go to the SERVICES tab and enable SSH with password authentication
+ - Click SAVE and Apply the OS customisation settings
+
+### Configuring the Raspberry Pi
+1. Take the written SD card and put it into the Raspberry PI
+2. Power it up and wait for it to boot
+3. SSH into the Raspberry Pi using the hostname, username, and password you set earlier
+4. Follow Github's [instructions on how to set up a self-hosted runner](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners). _Note: In the `./config.sh` setup step, you will be prompted to enter a name and other settings. Use default settings by pressing ENTER for each prompt._
+5. Verify that the new runner appears in the list of runners on GitHub.
+6. Quit the the runner in the terminal (we will set it up to run automatically on boot).
+7. Use Github [instructions to setup the runner as a services](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/configuring-the-self-hosted-runner-application-as-a-service) so it runs on boot.
+
+Done.
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 0153d5fc49..42fdd39f45 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -1,4 +1,4 @@
-blank_issues_enabled: false
+blank_issues_enabled: true
contact_links:
- name: 🌐 Processing Website Issues
url: https://github.com/processing/processing-website/issues
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 9f2d641203..29e165a392 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,17 +1,17 @@
-name: Build
-on: [push]
+name: Pre-releases
+on:
+ push:
+ paths-ignore:
+ - '**/*.md'
+ - '.all-contributorsrc'
jobs:
test:
runs-on: ubuntu-latest
name: Run Tests
steps:
- - name: Checkout
+ - name: Checkout Repository
uses: actions/checkout@v4
- - name: Update apt
- run: yes | sudo apt-get update
- - name: Install rsync
- run: yes | sudo apt-get install rsync
- name: Install Java
uses: actions/setup-java@v4
with:
@@ -21,89 +21,56 @@ jobs:
- name: Build
run: >
cd build;
- ant clean;
- ant build
- - name: Test
- run: >
- cd build;
- ant test
- linux:
- runs-on: ubuntu-latest
- name: Build Linux
- needs: [test]
+ ant -noinput build test;
+ build:
+ name: Create Pre-release for ${{ matrix.os_prefix }} (${{ matrix.arch }})
+ needs: test
+ runs-on: ${{ matrix.os }}
+ permissions:
+ contents: write
+ strategy:
+ matrix:
+ include:
+ # compiling for arm32 needs a self-hosted runner on Raspi OS (32-bit)
+ - os: self-hosted
+ os_prefix: linux
+ arch: arm
+ - os: ubuntu-latest
+ os_prefix: linux
+ arch: x64
+ - os: windows-latest
+ os_prefix: windows
+ arch: x64
+ - os: macos-latest
+ os_prefix: macos
+ arch: x64
+ - os: macos-latest
+ os_prefix: macos
+ arch: aarch64
+ - os: macos-latest
+ os_prefix: linux
+ arch: aarch64
steps:
- - name: Checkout
+ - name: Checkout Repository
uses: actions/checkout@v4
- - name: Update apt
- run: yes | sudo apt-get update
- - name: Install rsync
- run: yes | sudo apt-get install rsync
- - name: Install Java
- uses: actions/setup-java@v4
- with:
- java-version: '17'
- distribution: 'temurin'
- architecture: x64
- - name: Build linux
- run: >
- cd build;
- ant clean;
- ant build
- - name: Add artifact
- uses: actions/upload-artifact@v3
- if: ${{ github.ref == 'ref/head/main' }}
- with:
- name: linux
- path: ./build/linux/work
- mac:
- runs-on: macos-latest
- name: Build Mac
- needs: [test]
- steps:
- - name: Checkout
+ - name: Checkout Examples Repository
uses: actions/checkout@v4
- - name: Install brew
- run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- - name: Install rsync
- run: brew install rsync
- - name: Install Java
- uses: actions/setup-java@v4
- with:
- java-version: '17'
- distribution: 'temurin'
- architecture: x64
- - name: Build mac
- run: >
- cd build;
- ant clean;
- ant build
- - name: Add artifact
- uses: actions/upload-artifact@v3
- if: ${{ github.ref == 'ref/head/main' }}
with:
- name: macos
- path: ./build/macos/work
- windows:
- runs-on: windows-latest
- name: Build Windows
- needs: [test]
- steps:
- - name: Checkout
- uses: actions/checkout@v4
+ repository: processing/processing-examples
+ path: processing-examples
- name: Install Java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- architecture: x64
- - name: Build
- run: >
- cd build;
- ant clean;
- ant build
+ architecture: ${{ matrix.arch }}
+ - name: Setup Ant
+ uses: cedx/setup-ant@v3
+ - name: Build Release
+ run: ant -noinput -buildfile build/build.xml ${{ matrix.os_prefix }}-dist -Dversion="${{ github.sha }}"
- name: Add artifact
- uses: actions/upload-artifact@v3
- if: ${{ github.ref == 'ref/head/main' }}
+ uses: actions/upload-artifact@v4
with:
- name: windows
- path: ./build/windows/work
+ name: processing-${{github.sha}}${{ matrix.os_prefix }}-${{ matrix.arch }}
+ path: ./build/${{ matrix.os_prefix }}/processing-${{github.sha}}-${{ matrix.os_prefix}}-*
+ retention-days: 1
diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml
new file mode 100644
index 0000000000..08ae3c8c5d
--- /dev/null
+++ b/.github/workflows/pull_request.yml
@@ -0,0 +1,64 @@
+name: Pull Requests
+on:
+ pull_request:
+ paths-ignore:
+ - '**/*.md'
+ branches:
+ - main
+
+jobs:
+ build:
+ name: Create Pull Request Build for ${{ matrix.os_prefix }} (${{ matrix.arch }})
+ runs-on: ${{ matrix.os }}
+ permissions:
+ pull-requests: write
+ contents: read
+ strategy:
+ matrix:
+ include:
+ # compiling for arm32 needs a self-hosted runner on Raspi OS (32-bit)
+ - os: self-hosted
+ os_prefix: linux
+ arch: arm
+ - os: ubuntu-latest
+ os_prefix: linux
+ arch: x64
+ - os: windows-latest
+ os_prefix: windows
+ arch: x64
+ - os: macos-latest
+ os_prefix: macos
+ arch: x64
+ - os: macos-latest
+ os_prefix: macos
+ arch: aarch64
+ - os: macos-latest
+ os_prefix: linux
+ arch: aarch64
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@v4
+ - name: Install Java
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ architecture: ${{ matrix.arch }}
+ - name: Setup Ant
+ uses: cedx/setup-ant@v3
+ - name: Build Release
+ run: ant -noinput -buildfile build/build.xml ${{ matrix.os_prefix }}-dist -Dversion="${{ github.sha }}"
+ - name: Add artifact
+ uses: actions/upload-artifact@v3
+ id: upload
+ with:
+ name: processing-${{github.sha}}${{ matrix.os_prefix }}-${{ matrix.arch }}
+ path: ./build/${{ matrix.os_prefix }}/processing-${{github.sha}}-${{ matrix.os_prefix}}-*
+ retention-days: 5
+ # TODO: Merge into one comment and fix the link
+ # - uses: mshick/add-pr-comment@v2
+ # with:
+ # message-id: "build-artifact ${{ matrix.os_prefix }} ${{ matrix.arch }}"
+ # message: |
+ # Build artifacts for ${{ matrix.os_prefix }} (${{ matrix.arch }}) have been created.
+ # Download the artifacts [here](${{ steps.upload.outputs.artifact-id }}).
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000000..76c98cd57d
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,83 @@
+name: Releases
+on:
+ release:
+ types: [published]
+ push:
+ tags:
+ - processing-*
+
+jobs:
+ version:
+ runs-on: ubuntu-latest
+ outputs:
+ build_number: ${{ steps.tag_info.outputs.build_number }}
+ version: ${{ steps.tag_info.outputs.version }}
+ steps:
+ - name: Extract version and build number
+ id: tag_info
+ shell: bash
+ run: |
+ TAG_NAME="${GITHUB_REF#refs/tags/}"
+ BUILD_NUMBER=$(echo "$TAG_NAME" | cut -d'-' -f2)
+ VERSION=$(echo "$TAG_NAME" | cut -d'-' -f3)
+
+ # Set outputs for use in later jobs or steps
+ echo "build_number=$BUILD_NUMBER" >> $GITHUB_OUTPUT
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
+ build:
+ name: Publish Release for ${{ matrix.os_prefix }} (${{ matrix.arch }})
+ runs-on: ${{ matrix.os }}
+ needs: version
+ permissions:
+ contents: write
+ strategy:
+ matrix:
+ include:
+ # compiling for arm32 needs a self-hosted runner on Raspi OS (32-bit)
+ - os: self-hosted
+ os_prefix: linux
+ arch: arm
+ - os: ubuntu-latest
+ os_prefix: linux
+ arch: x64
+ - os: windows-latest
+ os_prefix: windows
+ arch: x64
+ - os: macos-latest
+ os_prefix: macos
+ arch: x64
+ - os: macos-latest
+ os_prefix: macos
+ arch: aarch64
+ - os: macos-latest
+ os_prefix: linux
+ arch: aarch64
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@v4
+ - name: Install Java
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ architecture: ${{ matrix.arch }}
+ - name: Setup Ant
+ uses: cedx/setup-ant@v3
+ - name: Install Certificates for Code Signing
+ if: ${{ matrix.os_prefix == 'macos' }}
+ uses: apple-actions/import-codesign-certs@v3
+ with:
+ p12-file-base64: ${{ secrets.CERTIFICATES_P12 }}
+ p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
+ - name: Build Release
+ run: ant -noinput -buildfile build/build.xml ${{ matrix.os_prefix }}-dist -Dversion="${{ needs.version.outputs.version }}"
+ env:
+ PROCESSING_APP_PASSWORD: ${{ secrets.PROCESSING_APP_PASSWORD }}
+ PROCESSING_APPLE_ID: ${{ secrets.PROCESSING_APPLE_ID }}
+ PROCESSING_TEAM_ID: ${{ secrets.PROCESSING_TEAM_ID }}
+ - name: Upload binaries to release
+ uses: svenstaro/upload-release-action@v2
+ with:
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
+ file: ./build/${{ matrix.os_prefix }}/processing-${{ needs.version.outputs.version }}-${{ matrix.os_prefix}}-*
+ file_glob: true
diff --git a/.gitignore b/.gitignore
index 8c37b714f1..dde7936ffd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -94,6 +94,10 @@ bin-test
.project
.vscode/
+# Processing examples
+processing-examples
+
+# Maven ignores
.gradle
core/build/
gradlew
diff --git a/CODE-OF-CONDUCT.md b/CODE-OF-CONDUCT.md
index 517eea276a..2ce63905ac 100644
--- a/CODE-OF-CONDUCT.md
+++ b/CODE-OF-CONDUCT.md
@@ -6,7 +6,7 @@ Processing is a flexible software sketchbook and a language for learning how to
We make room for people to get involved in the project at any point they wish. This means that we:
-* Welcome contributors at any stage of their programming journey, from newcomers to professionals;
+* Welcome contributors at any stage of their journey, from newcomers to professionals;
* Do not assume knowledge or imply there are things that somebody should know;
* Understand that people are the experts of their own experiences, and bring a variety of valid perspectives to the development of open source projects;
* Know that contribution is not just limited to code, and can also include working on documentation, filing issues and bug reports, and other important forms of input;
@@ -14,7 +14,7 @@ We make room for people to get involved in the project at any point they wish. T
## Our Standards
-All developers who contribute to the Processing project agree to abide by the following code of conduct.
+All contributors to the Processing project agree to abide by the following code of conduct.
### Respect other people
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6af6e5b702..8676bf662b 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,5 +1,15 @@
## Welcome to Processing!
+Thanks for your interest in contributing to Processing! Processing is a collaborative project with contributions from many volunteers. Our community is always looking for contributors and appreciates involvement in all forms. We acknowledge that not everyone has the capacity, time, or financial means to participate actively or in the same ways. We want to expand the meaning of the word “contributor.” Whether you're an experienced developer or just starting out, we value your involvement. Your unique perspectives, skills, and experiences enrich our community, and we encourage you to get involved in a way that works for you. It includes documentation, teaching, writing code, making art, writing, design, activism, organizing, curating, or anything else you might imagine. The [p5.js contribute page](https://p5js.org/contribute/) gives a great overview of different ways to get involved and contribute.
+
+The Processing project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification, recognizing all types of contributions, not just code. We use the @all-contributors bot to handle adding people to the README.md file. You can ask the @all-contributors bot to add you in an issue or PR comment like so:
+
+```
+@all-contributors please add @[your GitHub handle] for [your contribution type]
+```
+
+We usually add contributors automatically after merging a PR, but feel free to request addition yourself by commenting on [this issue](https://github.com/processing/processing4-carbon-aug-19/issues/839).
+
## Found a Bug?
First, please visit our [troubleshooting](https://github.com/processing/processing/wiki/Troubleshooting) page for common issues—you might find the answer there!
@@ -8,11 +18,7 @@ For coding questions or help getting started, our [online forum](https://discour
If your issue remains unresolved after exploring these options, we'd appreciate it if you could [file a bug report](https://github.com/processing/processing4/issues). Your feedback is crucial as it helps us address issues we might not be aware of yet.
-Remember, Processing is a labor of love, run by volunteers and offered free of charge. We're here because we believe in this community and genuinely enjoy contributing to it. We always welcome constructive feedback—just keep it friendly and helpful, please! For more tips on how to communicate within the project, take a peek at our Code of Conduct (coming soon).
-
-## Interested in Contributing?
-
-We're glad to hear that! [Our team is small](https://github.com/processing/processing4/graphs/contributors), and with the large number of users, every extra hand makes a big difference! Here’s how you can start:
+## Making Your First Contribution
* **Help Wanted** – Most [issues marked help wanted](https://github.com/processing/processing4/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) are a good place to start. Issues are marked with this tag when:
diff --git a/README.md b/README.md
index 2ea2ad584b..b74d6d49d2 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,6 @@
+
+
+
Processing is a flexible software sketchbook and a programming language designed for learning how to code.
@@ -12,19 +15,24 @@ If you're interested in *using* Processing, head over to the [download page](htt
For assistance with your own sketches, projects, or code, please post your question on the Processing forum: https://discourse.processing.org/. Our community is full of experienced developers and knowledgeable users who are eager to help. Before you post, please take a moment to read the [guidelines on asking questions](https://discourse.processing.org/t/guidelines-asking-questions/2147) to make sure you get the best possible help. We’re incredibly grateful for the support and knowledge shared by everyone on the forum over the years.
## Contributing to Processing
-If you want to fix a bug that's been bothering you or want to give back to the project, you're in the right place!
+We welcome new contributors. If you want to fix a bug that's been bothering you or want to give back to the project, you're in the right place! Please see our [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines on how to contribute.
+
+## Building Processing
-To get started, clone this repository to your machine and build the code. For instructions, check out our guide on [How to Build Processing](build/README.md).
+Building Processing locally on your machine will let you troubleshoot and make sure your contributions work as intended before submitting them to this repository. It also gives you the flexibility to experiment and learn more about how Processing is structured.
-We welcome new contributors. The work on Processing 4.0 was done by a [tiny number of people](https://github.com/processing/processing4/graphs/contributors?from=2019-10-01&to=2022-08-09&type=c). Every contribution helps!
+For a quick start:
+1. Fork and clone the repository.
+1. Open it in IntelliJ IDEA.
+1. Install the required [Ant plugin](https://plugins.jetbrains.com/plugin/23025-ant).
+1. Hit Run.
-### Structure of the Repository
-The Processing software consists of two main parts:
+For more information and detailed instructions, follow our [How to Build Processing](build/README.md) guide.
-1. **The Core Library:** This includes essential components such as the graphics renderer, event handling, input/output (I/O) functions, and mathematical utilities.
-2. **The Processing Development Environment (PDE):** This includes a text editor, a pre-processor, a contributions manager, and other tools to assist with writing and managing code.
+## Expected Behavior
+Remember, Processing is a labor of love, run in large part by volunteers, and offered free of charge. We're here because we believe in this community and genuinely enjoy contributing to it. We always welcome constructive feedback. Just keep it friendly and helpful, please! For more tips on how to communicate within the project, take a peek at our [Code of Conduct](https://github.com/processing/processing4-carbon-aug-19?tab=coc-ov-file).
-### About the Processing 4.0 release
+## About the Processing 4.0 release
We've moved to a new repository for the 4.0 release so that we could cull a lot of the accumulated mess of the last 20 years. This made `git clone` (and most other `git` operations) a lot faster.
@@ -37,10 +45,14 @@ With any luck, many changes should be transparent to most users, in spite of how
As with all releases, we did [everything possible](https://twitter.com/ben_fry/status/1426282574683516928) to avoid breaking API. However, there were still tweaks that we had to make. We tried to keep them minor. Our goal is stability, and keeping everyone's code running.
## Contact Information
-For more details about Processing itself, feel free to reach out to us. Here are the best ways to contact us:
+For technical support or troubleshooting with your project, please post on the [Processing Forum](https://discourse.processing.org/).
+
+For bug reports or feature requests, please [create an issue](https://github.com/processing/processing4/issues).
-- **Email**: For inquiries about the Processing software, contact [hello@processing.org](mailto:hello@processing.org).
-- **Processing Foundation**: For anything else, please reach out to [foundation@processingfoundation.org](mailto:foundation@processingfoundation.org).
+For non-technical inquiries, here’s how to get in touch:
+
+- For press inquiries, general information about the Processing software, or other non-technical questions, contact [hello@processing.org](mailto:hello@processing.org).
+- For anything related to the Processing Foundation or broader topics beyond the software, please reach out to [foundation@processingfoundation.org](mailto:foundation@processingfoundation.org).
## License & Copyright
@@ -53,3 +65,223 @@ For complete licensing information about the Processing core library and softwar
For licensing information about the Processing website see the [processing-website README](https://github.com/processing/processing-website/blob/main/README.md#licenses).
Copyright (c) 2015-now The Processing Foundation
+
+## Contributors
+
+Add yourself to the contributors list [here](https://github.com/processing/processing4-carbon-aug-19/issues/839)!
+
+
+
+
+