from py5 import community
--------------------------------------------------------------------------- ImportError Traceback (most recent call last) Cell In, line 1 ----> 1 from py5 import community ImportError: cannot import name 'community' from 'py5' (/home/jim/INSTALL/anaconda3/envs/py5/lib/python3.8/site-packages/py5/__init__.py)
Unlike the py5 library and much of the documentation you see on this website, I cannot write Python code to generate a community. It can only be fostered through the interactions and efforts of people. The Processing Foundation is known for its inclusive and accessible community, and I’d like for the same to be true about py5. In my view, that means providing everyone, regardless of their background, the freedom to learn, experiment, and make mistakes.
Why is this important to me?
To answer that question, I’ll start by explaining my early experiences with Processing and the Processing community.
Before I first heard about Processing or ITP, I worked in the finance industry, mostly doing quantitative research and development. It involved a lot of analytical or scientific programming. I had a background in math and computer programming so it was a good fit.
Contrary to what you might think, my programming and technical knowledge did not always increase from year to year since I graduated from college. Generally it did, but sometimes my skills atrophied during times when my work responsibilities did not involve much coding.
I discovered Processing during one of the times when my technical skills weren’t that great. And I was getting treated poorly at my job because of it. This wasn’t constructive feedback; it was demeaning behavior that I gained nothing from. It was part of a pattern of how management at that company operated. Sadly, the most destructive employees were getting promoted, reinforcing cycles of negativity.
While all of this was happening I was also starting to experiment with Processing. First I made simple sketches, and later I moved on to more complex animations. In time I created two Processing libraries, Camera3D and ColorBlindness. My first library, Camera3D, took months to complete. I rewrote it from scratch several times as I figured out better ways to design and organize the code. It was a joy to create both of them, and I learned a tremendous amount along the way. It was the biggest thrill when I made each publicly available and people in the community started using them.
The community around Processing fosters experimentation and learning, and freedom to experiment includes the freedom to make mistakes. And the reality is I made a lot of mistakes while creating both of those libraries. Mistakes that, had I been operating in the hostile environments I was employed in, would have resulted in the projects being taken away from me or simply terminated. The exact same thing is true for py5. All of these projects simply wouldn’t exist today, which would be a loss, both for me, and for the community as a whole.
Unexpectedly, what I learned through Processing helped me be more successful at work, even though all this was years before I met a person in real life who had heard of it. Processing helped me build confidence in my technical skills at a time when I most needed it.
I have been thinking about these things over the past year or so as I built py5. This won’t be apparent to you now, but the code itself is modular enough that others will be able to contribute to it without first needing to understand the complexities of the entire project. Later, I’ll start showing people how to contribute by creating py5 libraries, similar to the libraries like Camera3D that have been built for Processing. Eventually I’ll also have plenty of documentation and tutorials that people can read and start experimenting with. And most importantly, this concept of community is going to be a part of how I interact with people when I teach people how to use py5.
Few people learn or grow in a hostile environment. Or perhaps what is learned has nothing to do with programming. In any case, I value the Processing community because it is the complete opposite of the hostile environments I used to work in. I want other people to find opportunities to learn and experiment, and make mistakes, just like I did. It is from such an environment where new ideas are conceived, new tools are created, and new applications are developed, bringing value into the world that otherwise would never come to be.