Making networking easier for average Processing users

Hey Processing folks, and of course other Google summer of Coders!

My name is Nick Confrey, and I'm a sophomore at the University of Chicago. I LOVE processing, and I can truly say it was one of the tools that sparked my love of programming. Back in highschool, I used it to create an augmented reality program that would use a webcam to recognize QR codes and display 3D objects above them. Now that I'm farther along in my coding experience, I am super excited to have the chance to return to where I began, see how far I've come, and help an amazing program inspire new coders like myself.

Since proposals are now being accepted, I thought I should run mine by the general community quickly to get some initial feedback before I submit the final version. My summer would take three stages:

1) Extend the existing network library. (Quick aside - it has been mentioned to me that building a new library is generally easier for GSoC than adding onto a core library. What are the extra limitations and challenges of adding to the core library, and does it make sense to create a new library for these changes?). Additions could include event based network notifications (network timers sending messages on a regular interval, keyboard or mouse movements being directly communicated to the server) or chat and image sending. All of these features would ideally make it easier for the average processing user to begin making multi-computer programs. Any new features added here would include extensive documentation and tutorials.

2) Create a new, more advanced network library. This will focus on multi-threaded servers, shared network objects with built-in synchronization primitives (useful in gaming or maintaining a shared program state across different computers).

3) Explore and implement other ways to get network data into processing, including outside sources like easy webscraping or implementing udp to have faster connections (which in turn could allow things like video calling or audio streaming).

That lays out my general plan of attack: get familiar with processing libraries and you guys while extending a library, and then get more advanced as time allows. What do you think, is this something that would add value to processing? I think that network programming can be daunting, and my libraries and tutorials could allow some pretty amazing new uses of processing. Let me know what you all think!

-Nick Confrey


  • edited March 2015

    An in between possibility is to develop ideas that extend Processing's core network library in a separate library as a "trial run" for having it included in core. One of the reasons why working on a standalone library for GSOC works well is that it can be developed on its own schedule separate from the Processing releases. This makes debugging, testing, and releases easier to manage.

    Out of your ideas, I think functionality that helps users send and receive different kinds of data (images, video streams, audio, data streams) would be of particular use for Processing users.

  • Good point about the external library first, I think that makes a lot of sense. That will also free me to to prioritize image sending, followed by video streaming, and then tackling audio streaming and generalized data streaming. Unless there are any other nuances I should be aware of, I'm super excited to start writing my proposal!

Sign In or Register to comment.