I am one of the moderators of this forum, in charge of tracking and deleting spam (and banning spammers), and to move around threads if they are placed in the wrong section of the forum.
The latter task is taking some time, because apparently lot of users don't read the forum descriptions or don't understand them (some users struggle to understand English).
I see that when making a new topic, we have a list of forums without descriptions, perhaps it is one of the source of confusions. The descriptions can be seen in the All Forums page. I will repeat them (in the state they are at the time of writing) here.
So I thought I should make a sticky post describing these sections with more details. At least, it will give a reference to point to when (gently) pointing out repeated breaks of these rules.
Note that some questions can legitimately be posted in several sections, in general I put them in the most specific one.
Forum Descriptions
Share your Work (was Exhibition)
Share and discuss your Processing programs.
Programming Questions
Ask questions about a Processing program you are writing. If using a library, hardware or special environment/system, check the other forums.
Core Library Questions
Questions about programs using the Video, Network, OpenGL, Serial, PDF, Minim, or DXF Export libraries.
Contributed Library Questions
Questions about a contributed library: http://processing.org/reference/libraries/
Android Processing
Questions and discussions about programs and development for Processing for Android: http://wiki.processing.org/w/Android
Processing with Other Languages (was Processing Implementations)
Discussions about other programming languages: Processing.js, Processing and Ruby, Python, ActionScript, Scala, etc.
Integration and Hardware
Discuss system (Linux, Mac, etc.), environment (Eclipse, MySQL, etc.) and hardware (Arduino, video cards, etc.) related Processing issues
Library and Tool Development
Discuss creating Processing libraries, extensions to the code, and tools, extensions to the environment.
Events and Opportunities
Promote Processing-related conferences, courses, workshops, books, concerts, articles, jobs, etc.
General Discussion
Open conversations about Processing and related subjects.
Detailed Rules and Common Errors
Some sections are quite self-explaining and get few misplaced threads, but I will explain them anyway.
Events and Opportunities
Most threads here has the Discussion topic type, as no question should be asked here. It is the place where to post job offers (including "I pay somebody to do this sketch") and to announce events related to Processing.
Share you Work
Again, Discussion type here: you show what you did with Processing, and you collect praises (and criticisms!). Don't ask questions here. If you have one, create a topic in another section, and you can point to a thread here.
Android Processing
Little errors here... Sometime I see Android-related questions outside, OK if they are not tied to the platform. Some people post Android Exhibition topics here, OK again, and OK in Exhibition section too. Of course, if you have questions about Processing not directly tied to Android, you can ask them elsewhere.
Library and Tool Development
Not too much errors too. To be clear: this is the section to announce new tools and libraries (better than in the more generic Exhibition section) and to discuss them. This section is NOT for asking questions about a library, there is the Contributed Libraries section for that.
Processing with Other Language
One of the most misunderstood section! Perhaps because the old name (Processing Implementations) was a bit ambiguous: some people think they can discuss Processing itself (its implementation!) here.
See annex A to understand what exactly are these Processing implementations.
If you use the PDE (Processing's IDE) or Processing's libraries in Java, this is NOT the place to ask questions!
If you post a topic here, ALWAYS indicate which language you are using. Even if a snippet of code can make us guess, it is better to be explicit.
Programming Questions
Let's be realistic: the vast majority of questions on this forum are programming questions!
This doesn't mean they should end here...
We made specialized forums to allow easier searches and following: somebody who wrote a library might want to keep an eye on the Contributed Libraries Questions section, to watch if a question is about their library. Somebody dabbling a lot of Arduino will look in the Integration and Hardware section for questions needing answers... People not using these might want to skip such questions. Etc.
You should look at your code and ask yourself what it needs:
- If it uses an external system or a specific hardware, it belongs to Integration and Hardware. It will use a core library (eg. serial) or a specific library, but still needs the hardware to run.
- If it uses an import statement, it probably belongs to Xxx Library section (Core or Contributed), unless it is a java.xxx or a javax.xxx package (or similar built in JVM package).
- If you use an
import processing.xxx.*;
statement or animport ddf.minim.xxx.*;
one, it belongs to the Core Libraries section, unless it also uses a different import as below. - If you use a non-Processing import, eg.
import hypermedia.video.*;
orimport controlP5.*;
or similar, it belongs to the Contributes Libraries section.
Moreover, some questions aren't even about programming: if it is about an exported applet, it belongs to Integration and Hardware. Idem if you have an issue with the PDE.
And some questions are too generic, not showing code at all. For example, I tend to move questions like "How do I fill an area with color" or "How do I detect hands" to the General Discussion section, as they are not about an issue with an existing code, but more about generic algorithms. I see Programming Questions more about concrete questions about your code (that you show).
Core Library Questions
As said, and as described, if you use (only) one of the libraries described on top of the Libraries page, needing an import, you post here.
Contributed Library Questions
If you use a library you had to add to the
libraries
folder of your sketchbook (see
How to Install a Contributed Library) or in the
code
folder of your sketch (eg. by drag'n'dropping a jar on the PDE), post here.
Integration and Hardware
It is a kind of "catch all" technical section, as it spawns several sub-categories.
You post here if your question:
- Is related to some hardware (Arduino, Wiimote, Kinect, a specific peripheral (scanner, webcam, etc.).
- Is about a given system (Windows, Mac OS, Linux...).
- Is about interaction with an external system: database, PHP (or other language) script on a server, interaction of applet with JavaScript, etc.
- Is about the PDE, from tab handling to export sketches. If you have an issue with an exported applet or application, post here.
- Is about using Processing (its jars) in another environment / IDE (like Eclipse, NetBeans, Idea...) in Java.
General Discussions
If you post here, you cannot really be wrong... But sometime, I feel a topic here belong more to another section (Exhibition, Programming, etc.), so I can move them.
General Advice
The more specialized your code is (using hardware, contributed library, etc.), the harder it will be to run / test your code.
Even if you use core libraries, it can be hard to test if you use files like images, sounds, etc.
So, if your question is not about these libraries or don't absolutely need these files, strip your sketch to the absolute minimum to reproduce your issue.
It is quite some work for you, but don't forget: if anybody is welcome to answer here, a large percentage of answers is given by a few dozen of people looking at all questions. So they have little time to spend on each question. If you simplify the work for them, you will save lot of their time, and thus will increase your chance of getting an answer: a win-win situation!
Beside, experience shows that sometime, when doing such simplification, people get a better view of their code, and might even solve themselves the problem!
Typical example of simplification: you made a simple game using Minim for sound effects and controlP5 for a control to set a number of elements. You have an issue with array lists in your code, so you ask for help and post your code.
If you post it as it is in its current state, I might move it to Contributed Library section, because of the presence of controlP5. So it reduces the number of potential people able to answer, as lot of people can skip the thread as not having / knowing the library, even if it isn't part of the problem.
Now, if you go ahead and make a copy without sound effects and with a fixed number of elements (so no controlP5), everybody can test the code and give an advice.
In general, try and reduce the issue to a minimal code able to reproduce the problem, that's less code to scrutinize and people can focus on the real issue.
Related advice: avoid vague problem reports like "it doesn't work", "the sketch crashes", "I have an error".
If you have an error, report it carefully and completely. If you have a stack trace (several error lines), copy / paste it in your message. If an error is reported and highlight a given line, point out which line has the problem.
As said, often we cannot run your code (or doesn't have time to try it), but we can spot errors quickly if precisely pointed out, just by looking at the code.
People tend to reproduce always the same errors, so we usually watch for these common mistakes. Don't forget to read the Technical FAQ in the wiki, to see if your error is one of these common ones.
Annex A: Processing Implementations / with Other Languages
As a reminder, Processing is, at its core, three things (I omit the PDE here):
- a language; it is a simplified dialect of Java. Processing generates a full Java class out of your sketch before compiling it.
- a library; the core.jar and its satellite jars and shared native libraries can be used as a library in Java or other JVM languages.
- an API; lot of people learned programming with Processing, because it is simple and with immediate visual feedback. The API organize code around setup() and draw() (and event handlers) and is about simple graphics primitives (ellipse(), image(), etc.).
Processing has been reimplemented in various programming languages.
The most spectacular implementation is Processing.js, able to run most example sketches unaltered without using the library, interpreting the language and re-implementing the API / algorithms. It allows to show sketches in a lightweight, portable way.
Other implementations keep the spirit of Processing, mostly its API and ease of use, while re-implementing most of it, but keeping the syntax specific to the target language.
Implementations in JVM languages, like JRuby, Jython or Scala, for example, could use the library (or also re-implemented it) while adapting the API to the specificities of the language. The advantage of the JVM-based languages is that they can use most Processing and Java libraries.
Annex B: How to show your code
Short code: paste it in the message. Hint: in the PDE, hit Ctrl+T (or go to Edit > Auto Format) before doing the copy, it will make code more readable (unless you are already careful about indentation).
You can select the code pasted in the message, then click on the third (from the left) icon of the message toolbar ("Insert Code" tooltip) to get a "code" format (numbered lines, gray background) and a Copy code link. Alas, this operation often removes empty lines (unless you have spaces in them).
You can also use PasteBin.com or similar sites (PasteBin.ca, PasteSite.com, etc.) for larger bodies of code. Don't forget to make these snippets permanent, as they are part of your message which can be found back years later.
As last resort, if you need to share data (images, sounds, etc.), you can zip the sketch and post it on a site like MediaFire, but lot of people will just avoid to download it, as they are often annoyed by ads or artificial delays, they can fear viruses, they can't bothered to do the download and the unzipping, etc.
Annex C: How to make proper subject lines
In general, avoid subjects like: "Help me please!!!", or "URGENT HELP NEEDED".
First, a vast majority of messages is about asking for help. Imagine if most of them used such subject: it would be a hell to find back a message, to browser for known topics, etc.
Second, avoid multiple exclamation marks or all caps subjects: they are perceived as yelling for attention, which isn't welcomed.
Last, most help requests are urgent, anyway, and most people answering do it as soon as they can: they might sleep (around the world!), they might work or study, or even be offline!
Annex D: Other remarks on etiquette:
- Avoid to post multiple times the same message. Particularly in different sections. It is rude, as different people can post answers in different places, duplicating work and diluting information. Duplicates will be removed.
- If nobody answers your message, don't repost it, identical or slightly different. Try and edit the original message to improve it (giving more details), answer your own thread to bump up the topic, check if you were clear enough.
- Don't delete a thread if somebody took the time to make a meaningful answer. This is rude to the helpful people. And don't forget people search the forum for previous answers, so any topic can be useful.
- Use the search before posting! In lot of cases, your question might have been asked previously. Pro tip: don't use Google as "Processing" is a term too generic in the computing world. Don't use this forum's search, as it searches only this forum. Don't forget there was previous forums, with still useful information and code snippets. And a wiki full of tricks. And the reference! And the learning section. If you use the search box on the Processing site, it will use Google but only on the site itself, narrowing the search while extending it to all these pages.