# Merge Python Categories

**URL:** <https://discourse.processing.org/t/merge-python-categories/36103>\
**Category:** Site Feedback\
**Created:** [April 4, 2022, 4:34am UTC](https://discourse.processing.org/t/merge-python-categories/36103 "2022-04-04T04:34:26Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![tabreturn](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/tabreturn/32/3697_2.png) [@tabreturn](https://discourse.processing.org/u/tabreturn)\
**Post date:** [April 4, 2022, 4:34am UTC](https://discourse.processing.org/t/merge-python-categories/36103/1 "2022-04-04T04:34:26Z")

</div>

The forum has categories for [Processing.py](https://discourse.processing.org/c/processing-py/) and [p5py](https://discourse.processing.org/c/p5py). But there are other Python variants that people discuss – for example, py5 seems to be growing in popularity, then there’s pyp5js, too. Some posts [span multiple Python categories](https://discourse.processing.org/t/what-is-the-future-of-processing-python-mode/35009/22), and some are more ‘general’ Python discussions/questions.

Perhaps we should merge everything into a single _Python Processing_ category (I’m open to suggestions for a better title) that provides tags for selecting processing.py/p5py/py5/… when composing a post.

This seems more elegant than continuing to add additional Python categories?

---

<div class="post-metadata">

**Author:** ![hx2A](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/hx2a/32/14322_2.png) [@hx2A](https://discourse.processing.org/u/hx2A)\
**Post date:** [April 4, 2022, 11:12am UTC](https://discourse.processing.org/t/merge-python-categories/36103/2 "2022-04-04T11:12:02Z")

</div>

Hmmm, merging into one category seems like a better approach than continuously adding categories that could also be addressed with tags. I like this idea.

---

<div class="post-metadata">

**Author:** ![javagar](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/javagar/32/11434_2.png) [@javagar](https://discourse.processing.org/u/javagar)\
**Post date:** [April 4, 2022, 11:40am UTC](https://discourse.processing.org/t/merge-python-categories/36103/3 "2022-04-04T11:40:11Z")

</div>

> [@tabreturn](#):
>
> … merge everything into a single _Python Processing_ category (I’m open to suggestions for a better title) that provides tags for selecting processing.py/p5py/py5/…

Yes, it is a good idea, so let’s do that. The name _Python Processing_ would be fine.

---

<div class="post-metadata">

**Author:** ![solub](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/solub/32/333_2.png) [@solub](https://discourse.processing.org/u/solub)\
**Post date:** [April 4, 2022, 12:54pm UTC](https://discourse.processing.org/t/merge-python-categories/36103/4 "2022-04-04T12:54:07Z")

</div>

+1

I’ve seen on another discourse forum (can’t remember which one) the possibility to select “Python” as a main category and then specify which version in the “optional tags” window. Could be an idea.

---

<div class="post-metadata">

**Author:** ![tabreturn](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/tabreturn/32/3697_2.png) [@tabreturn](https://discourse.processing.org/u/tabreturn)\
**Post date:** [April 5, 2022, 4:46am UTC](https://discourse.processing.org/t/merge-python-categories/36103/5 "2022-04-05T04:46:02Z")

</div>

[@moderators](https://discourse.processing.org/groups/moderators) – if there’s consensus, how do we action this?

---

<div class="post-metadata">

**Author:** ![tabreturn](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/tabreturn/32/3697_2.png) [@tabreturn](https://discourse.processing.org/u/tabreturn)\
**Post date:** [May 4, 2022, 9:43pm UTC](https://discourse.processing.org/t/merge-python-categories/36103/6 "2022-05-04T21:43:46Z")

</div>

\*bump\* @jeremydouglass @lmccart @montoyamoraga @fjenett

---

<div class="post-metadata">

**Author:** ![villares](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/villares/32/3166_2.png) [@villares](https://discourse.processing.org/u/villares)\
**Post date:** [December 1, 2022, 1:47am UTC](https://discourse.processing.org/t/merge-python-categories/36103/7 "2022-12-01T01:47:08Z")

</div>

Cheers @sableraph! Could you have a look at this proposal?

---

<div class="post-metadata">

**Author:** ![sableraph](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/sableraph/32/251_2.png) [@sableraph](https://discourse.processing.org/u/sableraph)\
**Post date:** [December 1, 2022, 1:19pm UTC](https://discourse.processing.org/t/merge-python-categories/36103/8 "2022-12-01T13:19:11Z")

</div>

Hi @villares. I agree it would be a good idea in theory but it seems less trivial than we might like, requiring to move all previous topics to the new category, with the potential to take the forum down and require rebuilding from a backup. I’m not sure the benefit is worth the risk 😕

> **[How merge categories?](https://meta.discourse.org/t/how-merge-categories/90693/4)**
>
> You can bulk select all topics in a category and move them in another category. Moving thousands of topics is not a simple job, before proceeding be sure to save a site backup. Note that if you have migrated from another platform you could first...

---

<div class="post-metadata">

**Author:** ![villares](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/villares/32/3166_2.png) [@villares](https://discourse.processing.org/u/villares)\
**Post date:** [December 1, 2022, 3:58pm UTC](https://discourse.processing.org/t/merge-python-categories/36103/9 "2022-12-01T15:58:31Z")

</div>

I see, it is risky business indeed…

Some other ideas… Could we rename the largest of the categories, or create a new one, and archive/freeze the others?

Could someone manually move each post between the categories afterwards?

---

<div class="post-metadata">

**Author:** ![GoToLoop](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/gotoloop/32/86_2.png) [@GoToLoop](https://discourse.processing.org/u/GoToLoop)\
**Post date:** [December 1, 2022, 7:36pm UTC](https://discourse.processing.org/t/merge-python-categories/36103/10 "2022-12-01T19:36:47Z")

</div>

> [@villares](#):
>
> Could we rename the largest of the categories,

Rather than merging them, choose better detailed names for them, like:

1. “p5py” → “p5py (Python 3)”
2. “Processing.py” → “Python Mode (Java/Jython)”

---

<div class="post-metadata">

**Author:** ![villares](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/villares/32/3166_2.png) [@villares](https://discourse.processing.org/u/villares)\
**Post date:** [December 1, 2022, 8:41pm UTC](https://discourse.processing.org/t/merge-python-categories/36103/11 "2022-12-01T20:41:00Z")

</div>

It does make sense @GoToLoop, but I think we could have more “critical mass” converging on a single category… I’m not sure.

As @tabreturn mentioned, there are also people using pyp5js and [py5coding.org](http://py5coding.org)…

---

<div class="post-metadata">

**Author:** ![GoToLoop](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/gotoloop/32/86_2.png) [@GoToLoop](https://discourse.processing.org/u/GoToLoop)\
**Post date:** [December 2, 2022, 2:54am UTC](https://discourse.processing.org/t/merge-python-categories/36103/12 "2022-12-02T02:54:12Z")

</div>

I did some research on Python syntax for Processing and I think they can be split in 3 categories:

1. Java Mode API based flavors (lowerCamelCase):

2. Pythonic API based flavors (snake\_case):

3. p5js API based flavors (also lowerCamelCase, runs online):

* * *

1st group is about flavors that most resemble the API from the original Processing’s Java Mode:

> **[Reference](https://processing.org/reference/)**
>
> Find further documentation of the Processing language

Among those 3, Python Mode (Processing.py) is the most important, b/c it’s 1 of the 4 official project flavors from Processing Foundation:

> **[Processing Foundation](https://processingfoundation.org)**
>
> Our mission is to promote software literacy within the visual arts, and visual literacy within technology-related fields — and to make these fields accessible to diverse communities.

And b/c it’s Jython-based, it has limited access to actual Python libraries, relying on Java libs instead:

> **[Home](https://www.jython.org/)**
>
> The Python runtime on the JVM

A category renaming suggestion for it: “Python Mode & Trinket (Java/Jython libraries)”.

* * *

Next group is about flavors that chose a more pythonic snake\_case naming for its API.  
And integration w/ actual Python libraries in place of Java 1s.  
A category renaming suggestion for it: “p5py & p5 (Python 3 libraries)”.

* * *

Last group can access both Python & JS libraries and runs on a browser, powered by the p5js flavor.

We could create a p5js subcategory for it: “Python Syntax (pyp5js & PyScript)”.

* * *

BtW, PyScript isn’t a Processing/p5js flavor, but a cool way to run Python code on the browser.

PyScript can use both Python & JS libraries, including p5js, q5js, pjs, etc.

Here’s a sketch version I did for PyScript:

> [@Converting coding challenge 'Self-avoiding walk backtracing' from p5.js to Processing (Java)](https://discourse.processing.org/t/converting-coding-challenge-self-avoiding-walk-backtracing-from-p5-js-to-processing-java/35047/21):
>
> Python is now a full browser client language w/ PyScript: So again I couldn’t resist converting my previous RapydScript sketch “Self Avoiding Walk II” to PyScript. I’ve also added Python type hints to the whole code: All 3 JS Processing flavors run on PyScript just like CoffeeScript & RapydScript previous versions: You can [click here](https://api.glitch.com/project/download/?authorization=3d2d3e71-2277-421f-9d6a-38d0f41b0522&projectId=3dc3a6ae-9818-441a-8f7e-b1d50e7199c3) to download the full sketch so you can edit & run it somewhere else. And go to the link below to view it fullscreen: [https://Self-Avoiding-Walk-II-PyScrip…](https://Self-Avoiding-Walk-II-PyScript.Glitch.me/)

* * *
