0242 (3.0b4)
X Fix NullPointerException with some sketches that have no size() command
X   https://github.com/processing/processing/issues/3585
X Invalid OS X code signature
X   https://github.com/processing/processing/issues/3575
X canceling "create folder, move sketch, and continue?" will cause crash
X   throws an NPE and then forces a quit
X   https://github.com/processing/processing/issues/3586
X   also showError() there shouldn't die if other Java windows open
X move Platform into its own class, also Messages and others
X   https://github.com/processing/processing/issues/2765
X Pass command line arguments to sketches
X   https://github.com/processing/processing/issues/2552
X 'handleTweak' variable implemented strangely
X ctrl+r not restarting sketch when debug is enabled
X   hitting Run while a sketch is running should restart the sketch
X   https://github.com/processing/processing/issues/3623
X should Platform be a static instance?
X   lots of platform stuff in base, but might be better handled elsewhere

jakub
X Parsing generic fails when package is specified (also problem with Map.Entry)
X   https://github.com/processing/processing/issues/918
X   https://github.com/processing/processing/pull/3638

api changes
X Make fields and functions in PdeKeywords protected
X   https://github.com/processing/processing/issues/2383
X Added "EditorException", which is thrown when loading bad sketches
X   createEditor() now throws this when something goes wrong
X   rather than handleOpenInternal() returning false (and being ignored)
X Several platform-oriented features have moved to Platform
X   i.e. Platform.isWindows(), Platform.openURL(), Platform.getJavaPath()
X Base.showXxxx() and Base.log() have moved to Messages.showXxxx()

gsoc
X Second round of arm patches (v5)
X   https://github.com/processing/processing/pull/3583
X Third bunch of arm patches
X   https://github.com/processing/processing/pull/3622
X Contribution Manager GUI updates
X   https://github.com/processing/processing/pull/3596
X Sorting by author name inplemented
X   https://github.com/processing/processing/pull/3615
X CM needs minimum window size enforced
X   https://github.com/processing/processing/issues/3600
X   https://github.com/processing/processing/pull/3607
X Deactivate install button when incompatible
X   https://github.com/processing/processing/issues/3603
X   https://github.com/processing/processing/pull/3611
X CM "Updates" badge appears even when there are no updates
X   https://github.com/processing/processing/issues/3597
X   https://github.com/processing/processing/pull/3625
X Ignore accented characters when filtering in the CM
X   https://github.com/processing/processing/issues/3627
X   https://github.com/processing/processing/pull/3633
X CM: Enable arrow keys for navigating list
X   https://github.com/processing/processing/issues/3610
X   https://github.com/processing/processing/pull/3631
X CM filter input glitchy
X   https://github.com/processing/processing/issues/3612
X   https://github.com/processing/processing/pull/3630
X Set font correctly in Contribution Manager dialog
X   https://github.com/processing/processing/issues/3601
X   https://github.com/processing/processing/pull/3626
X Add method to JavaMode for search path
X   https://github.com/processing/processing/pull/3648

earlier
X closing the color selector makes things freeze (only Linux and Windows?)
X   https://github.com/processing/processing/issues/2381
X Comment/Uncomment should ignore leading whitespace
X   https://github.com/processing/processing/issues/1961
X Export unsaved sketch > agree to save prompt > export doesn't finish
X   https://github.com/processing/processing/issues/2724
X Add disconnectEvent() to Server 
X   https://github.com/processing/processing/issues/2133
X False positive for mixing active/static mode in Tweak Mode 3.0 alpha 5
X   https://github.com/processing/processing/issues/3140
X Determine shortcut for Export vs Use Selection for Find
X   https://github.com/processing/processing/issues/2985
X PDE erroneously detects changes in non-sketch files
X   https://github.com/processing/processing/issues/2759

more cleaning
X make sure "PDF Export" is showing for the library name
X we've lost arrow keys to expand items in the examples window
X   sketchbook window too?
X 'ant clean' not removing old versions created by dist
o add span screens pref (near the display pref)
o   add checkbox for spans to export dialog
X   use fullScreen(SPAN) instead
o default display set to a second, then gets confused when monitor doesn't exist
o   is this not resetting the preference?
X   https://github.com/processing/processing/issues/1457
o add last revision used / max revision used settings?
o move the language stuff to the settings folder
o   that way people can modify and test w/o recompiling
X   https://github.com/processing/processing/issues/2938
o   how was this resolved? just implemented overrides?
X   instead, working from the sketchbook folder
X   write docs about it


known issues
_ launch4j doesn't work from folders with non-native charsets
_   anything in CP1252 on an English Windows system is fine
_   but anything else reports "font sadness" b/c it's using the system JRE
_   https://github.com/processing/processing/issues/3543
_   move to javapackager or another option?
_   http://www.excelsiorjet.com/kb/35/howto-create-a-single-exe-from-your-java-application
_ mouse events (i.e. toggle breakpoint) seem to be firing twice
_ JNA errors on startup when run from an account w/ non-ASCII characters
_   set jna.tmpdir (or java.io.tmpdir) to another location
_   https://github.com/twall/jna/issues/124
_   https://github.com/twall/jna/issues/238
_   Sun says they won't fix: user locale and system locale probably different:
_   https://bugs.openjdk.java.net/browse/JDK-8017274
_   https://bugs.openjdk.java.net/browse/JDK-4958170
_   https://github.com/twall/jna/blob/master/test/com/sun/jna/JNALoadTest.java
_   http://happygiraffe.net/blog/2009/09/24/java-platform-encoding/
_   fix: get sun.jnu.encoding and make sure the user name is supported in it?
_     and if not, put up a warning for the user?
_   http://www.oracle.com/us/technologies/java/locale-140624.html


3.0 final
_ Contributions Manager UI design
_   https://github.com/processing/processing/issues/3482
_ Ready to add contributed example packages?
_   https://github.com/processing/processing/issues/2953
_ processing-java isn't working in OS X 10.11 El Capitan
_   https://github.com/processing/processing/issues/3497
_   probably have to add the script/Processing.app location to user's path
_   move processing-java inside the Java Mode? 
_   make a Tool that installs it for all platforms, not just OS X
_   not really part of the 'build' anymore


gui
_ fix red in sidebar, the squiggly line beneath code
_ Error/warning location visualisation not updating when editor resizes
_   https://github.com/processing/processing/issues/3619
_ show hover text when the mouse is over the 'debug' button
_ show number of updates available in the footer
_   https://github.com/processing/processing/issues/3518
_ make breakpoints more prominent
_   https://github.com/processing/processing/issues/3307
_ import suggestions box needs design review
_   https://github.com/processing/processing/issues/3407
_ Fix placement and visual design when showing error on hover
_   https://github.com/processing/processing/issues/3173
_ distinguish errors and warnings
_   https://github.com/processing/processing/issues/3406
_ finish the gui
_   https://github.com/processing/processing/issues/3072
_ see notes in the 'dialogs' section below, implement our own option panes?
_ tiny trail of dots when moving the selection bar up/down on retina
_ need 'actively pressed' version of 'play' and 'stop'
_   could do rollover as well, but do other apps use them?
_   iTunes has no rollover state but has a 'down' state
_     swaps to stop after release
_ deactivate step, continue, stop when not running?
_ update EditorButton rollover label when pressing shift or alt
_ disable the debug toggle menu while running
_   otherwise could run in one mode, then try to stop in another
_ recent menu gets huge with other p5 versions on osx
_ move processing.mode.java.pdex.XQErrorTable to processing.ui.ErrorTable
_   need to make the list abstract, also "scroll to line" feature
_   fix up the UI, oy
_ show compiling/startup animation after clicking run
_   or maybe show an animation for starting up
_   rather than post-compile
_   https://github.com/processing/processing/issues/136


fonts
_ fonts are still really ugly (on non-retina)
_   may need to drop use of Source Sans
_   what do these do, and are we doing it already?
_   System.setProperty("awt.useSystemAAFontSettings","on");
_   System.setProperty("swing.aatext", "true");
_ how are we going to handle fonts for other languages? 
_   two new fonts have been added, other languages will need more
_   need a decent sans with with Unicode coverage
_   i.e. https://github.com/processing/processing/pull/3025
_ Non-western language hint text for toolbar buttons not correctly displayed
_   https://github.com/processing/processing/issues/2886


pde/build
_ ignore-tools in build.xml not being called for some reason
_ can't install processing-java into /usr/bin with El Capitan
_   https://github.com/processing/processing/issues/3497
_ dim out the Run button if there are compile errors detected
_   the AST checker has better error message handling for those cases
_   and hitting Run replaces the useful error with something weird
_   https://github.com/processing/processing/issues/3408
_ when variables used in size(), getting exceptions instead of any warning
_   https://github.com/processing/processing/issues/3311
_ crashed on startup w/ JavaScript mode as default b/c PdeKeyListener not found
_   because it's in the other ClassLoader, can no longer rely on it
_ remove JavaMode.errorLogsEnabled and JavaEditor.writeErrorsToFile()
_ continue clearing out ProgressFrame
_   also hook up the statusNotice() when done
_ break out Mode-specific options to their own panels in prefs
_   Mode should just provide a panel for their prefs
_ make the build fail if git pull on processing-docs fails
_ remove "save before running" message
_ pass through the source to update licenses
_   add Processing Foundation as 2012-15
_   update license info to state gplv2 not v3
_   run through that online license checker


crashing
_ fix appbundler problems due to rollback
_   appbundler is no longer being developed by Oracle, switch to "packager"
_   this re-introduces two bugs (serial export and scrolling)
_   and any other changes later than 16 November 2015:
_   https://github.com/processing/processing/commits/master/build/macosx/appbundler.jar
_   https://github.com/processing/processing/commits/master/build/macosx/appbundler/native/main.m
_ another possible culprit
_   https://github.com/processing/processing/commit/fa27b983e76fdbc5c4c1451a1f0d854c652b1639
_ EXC_BAD_ACCESS inside AppleIntelHD5000GraphicsGLDriver when starting 3.0a8+
_   https://github.com/processing/processing/issues/3359
_ Hard crash on startup inside strlen call when using 3.0a8+ on OS X
_   https://github.com/processing/processing/issues/3360


breakage
_ remove deprecated methods
_ do the right thing on passing around List vs ArrayList and others
_ PreferencesFrame is a misnomer (not a frame itself)
_   change to PreferencesDialog, and make it a dialog?
_ move Library to LibraryContribution and into contrib?


from the todo list
_ reas: comments go nasty when auto-formatted
_ reas: code coloring sometimes disappears
_ me: undo not in the correct location
_ implement the new gui
_ drop XP support (but improve Windows 8 support? ouch)
_ improve error message when creating a tab with the same name
_   right now it's generic, based on "a file exists"
_ don't allow users to create 'blah.java' when 'blah.pde' already in sketch


3.0 beta/final
_ wonder if "Save As" is causing the problems with auto-reload
_ look at the sound library https://github.com/wirsing/ProcessingSound
_   sound is not yet supported on Windows
_ clean out the repo
_   https://github.com/processing/processing/issues/1898
_ search the source for 'applet' references (i.e. SVG docs)
_ update list of option JRE files
_   https://github.com/processing/processing/issues/3288


sketchbook
_ Mode.rebuildLibraryList() called too many times on startup? 
_   and when sketches saved as well?
_   makes saving *really* slow with a lot of libraries
_ need to handle the 2.x to 3.x sketchbook transition
_   prefs are the same file, but sketchbook location pref is different
_ New/Rename/Save As is reloading the whole sketchbook, argh
_ sketchbook window doesn't update when sketches are added, renamed, etc
_   https://github.com/processing/processing/issues/2944
_ possible PR for updating sketchbook stuff
_   https://github.com/processing/processing/pull/3081
_ improve start time by populating sketchbook/libraries on threads
_   https://github.com/processing/processing/issues/2945
_ longer PR about sketchbook stuff, but closed
_   https://github.com/processing/processing/pull/3178
_ disable the Export button if no platforms selected on Export to Application


help me
_ "String index out of range" error
_   https://github.com/processing/processing/issues/1940
_ problems with non-US keyboards and some shortcuts
_   https://github.com/processing/processing/issues/2199
_ clean up 'ant doc' target to remove warnings
_   https://github.com/processing/processing/issues/1492
_ fix encodings, line endings, and mime types in the repo
_   https://github.com/processing/processing/issues/2955
_ Add support for localizing contributions
_   https://github.com/processing/processing/pull/2833
_   https://github.com/processing/processing/issues/3154
_   https://github.com/processing/processing/pull/3337
_ export application ubuntu -> windows not working (2.2.1)
_   https://github.com/processing/processing/issues/2698
_   might be something with libraries (native or otherwise)


_ Determine shortcut for Export vs Use Selection for Find
_   https://github.com/processing/processing/issues/2985
_ Determine new keyboard shortcut for Step Out
_   https://github.com/processing/processing/issues/3538


medium
_ remove toolbar menu references and code to rebuild
_ fix single instance server on OS X to load double-clicked files
_   when run from Eclipse, the single instance thing punts
_ 'recent' menu needs to recognize the p5 app folder
_   also should recognize the user's home dir
_ possibility of libraries folder inside a particular sketch?
_ display "1" is not correct in 2.1.2
_   https://github.com/processing/processing/issues/2502
_ add font fixes to the rest of the API
_   https://github.com/processing/processing/commit/eaff673d173b2d27f276cf5c59e3abf6c0fab86b
_   g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
_                       RenderingHints.VALUE_FRACTIONALMETRICS_ON);
_ should default to the local Java on Windows and Linux
_   have export apps default to the local JRE
_   Linux is probably using the system JRE if available
_   launch4j may be all set, but double-check
_   um, no--we should use the embedded version, b/c who knows what happens
_ use platformDelete() to remove untitled sketches?
_   would allow us to use the /tmp folder
_ change to using platformDelete() instead of Base.removeDir() where possible
_   verify that the OS X version uses the real call
_   and doesn't just look for .Trash
_ getCoreLibrary() is breaking OpenGL
_   "new Library()" constructor needs to go back to private
_ add .bat file to lib on windows so that we can get better debugging info
_ changing modes brings the PDE back on the second screen
_   the Find window (also the save windows) also have the same problem
_ move old Google Code SVN back to processing.org
_   then cull out the old branches/tags from the Github repo
_   and/or start bundling separate source downloads
_ look through all isPopupTrigger() code 
_   make sure both press/release are implemented
_ emacs style errors in commander aren't quite right
_   https://github.com/processing/processing/issues/2158
_ add documentation for how to run mode development from Eclipse
_   implementation/changes from JDF
_ modes are being loaded multiple times, which can cause trouble
_ add minimum version required (or max version?) to libraries/modes/etc


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 


DOC / Misc

_ find in reference for copy() (on image) tries to open PVector.copy()
_   might need disambiguation pages?
_   if a reference page is missing, throws a bunch of exceptions
_   i.e. PVector.copy() not in the reference
_ local web server to run reference from .zip?
_   no more gazillion file nastiness
_ yahoo search example is out of date (included in the examples? the book?)
_ stop() to shut down a sketch (but not quit/close window)
_   actually pause/resume
_ MIN_FLOAT, MAX_FLOAT, also the difference from the Java functions
_   also MIN_INT and MAX_INT, even though those are more similar
_ update the reference to cover parseXxxx() stuff
_   also add notes about parseInt/Float(blah, otherwise)
_ also parseInt and parseFloat, how they can return another number or NaN
_   should the default be NaN or 0?
_ get/set are faster way draw screen space images, but no tint, no translations
_ make sure the docs include "beginShape() cannot be nested"
_   also add error messages to the renderers
_   also note that ellipse() et al use beginShape()
_   and that java2d should complain if people try it
_ method to go from function name to the included examples where used?
_ encourage use of set() instead of point() in the drawing api
_   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1114204116
_ other projects on which p5 is built 
_   no longer oro matcher and jikes
_   add: quaqua, jna, registry stuff, .. ?
_ noLoop() isn't the same as "finished", though it's sometimes used that way
_   to finish, use exit() (though that will make the window close)
_   add this to ref once halt() is finished
_ errors in pdf/index.html examples
_   probably remove these, move the useful ones to the examples folder
_   that way people will read the reference
_ i can't fix these:
An unexpected error has been detected by HotSpot Virtual Machine:
# EXCEPTION_ACCESS_VIOLATION
all i can do is find things that might trigger them, but it's more likely
than not to be a java problem, and not something that can be fixed
_ explanation of how we see libraries in the PDE
_   We're making an assumption that the idea of a "library" refers to a block of Java-based code. The reasoning is that from within the PDE, we anticipate that it will be Java-compatible versions of other languages (such as Jython, JRuby, or Scala) as opposed to more generic languages. In the future we could open this up, but we'd rather not complicate things for the moment.
_ add to troubleshooting
_   problem with big floats: http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1061302380
_   problem with small floats: http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Programs;action=display;num=1115500448
_ console stored in prefs location
_   console may be useful for debugging
_ untitled folders are stored in temp folder


DOC / Text

_ how to use textMode(SHAPE) with opengl
_   things will be extremely slow (fix later)
_   things will also be very ugly on-screen
_ text being nicer in java2d
_   use createFont() to load the font or use a font from your machine
_   note that createFont() is no good for applets/export to web
_ textMode(SCREEN) for P2D and P3D for nice fast text in screen space
_   currently slow in JAVA2D and OPENGL, but this will improve
_ what is the vlw font file format?
_ shapes from 3D type
_   the way to do it (will improve later) is to use some undocumented features  
_   1) you have to use the OPENGL renderer 
_   2) use textMode(SHAPE); 
_   3) use createFont() (which you already are) 
_   this will convert all the shape data from the fonts for writing. 
_   it will be *extremely* slow, which is part of why it's not documented yet. 
_   but it will work with beginRaw().
_ improve documentation of the pdf stuff
_   be clearer about the font setup stuff
_   fonts by default not working that well?


DOC / Other

_ why adding .0001 to a float doesn't work
_   and how they're imprecise in general (use nf)
_   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1130877990
_ why strong typing? (link also to language thing on main page)
_ we cannot commit to any sort of timeframe on releases
_ under the hood - basic
_   it's all java
_   don't use awt
_   most things are imported by default
_ under the hood - complex 
_   how to get started with coding
_   everything subclasses PApplet
_   if you need a particular name, add it with "extends PApplet"
_   all code from tabs is joined to one sketch
_   if you want it separate, then you have to make .java files
_     in doing so, you'll lose access to 'g'
_   add main() to your app to make it run on its own
_   preproc stuff.. have to make setup() into public void setup()
_     (same for key events and all that)
_ performance 
_   video stinks.. java2d stinks.. macs stink
_   note in the 'drawing in 2d' section of faq
_ fastest machine possible
_   turn off hyperthreading in the bios
_   nice gfx card only helps opengl
_   dual processor not particularly useful, unless you make more threads
_     but making more threads is often more work than is useful
_ is there a way to do xxx?
_   advanced users who are outgrowing the basic reference: 
_   be sure to check the "complete" reference
_ change bugs.html to issues.html
_   and add a redirect in httpd.conf
_ need to document how subclass of pgraphics works
_   what are the necessary bits that need to be subclassed
_   simple handling of colors, what fields are available
_   how to get the matrices
_   simple endshape handler
_ also mention in keyPressed docs that ASCII key codes will not be coded
_   it's just how java is (maybe this is already in there?)
_ add note about adding libraries to the sketchbook to the reference
_ add note in environment reference about how to add something to the sketch
_   (code, .java files, etc)
_ make sure that psound has been removed (from docs, ref, mentions)


DOC / Examples

_ add to key reference a pointer to an example that tracks all keys
_   write simple example that tracks all keys
_ making things fast with pixel operations
_ write a threading example
_   show an example of how to handle callback into the app
X   or handle this some more intelligent way, super.stop() is needed.
X   registerDispose() does the trick
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1083574943
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Syntax;action=display;num=1067383998
_   scripts: how to make a long setup() sleep so that things don't lock way up
_ write an example that uses HashMap (or Hashtable)
_ write an example that uses ArrayList properly
_ get xml library example in there
_ simple method for having a clickable region or sprite with rollover
_ post to web example 
_   particularly for uploading image data
_   along with php script to handle receive
_   this is in hacks, but 
_   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=VideoCamera;action=display;num=1117194066#7


DOC / Hacks

_ write a timer class/example library
_ how do i add gui to a sketch?
_   don't use awt components
_   how to use swing and embed components inside p5
_ explain how to integrate code with swing
_   use a separate environment, call init(), use noLoop(), redraw()
_   use JPopupMenu.setDefaultLightWeightPopupEnabled(false); for zorder
_   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Integrate;action=display;num=1147670059
_ write documentation on general use of processing.core
_   note that applet is itself a Component
_ eclipse
_   document how to properly integrate with eclipse
_   add runtime args to opengl library so that it sets path properly
_   add explanation for using subclipse to get p5
_     make a src folder, data folder location
_   export to eclipse
_     how to do this with subclipse instructions?



////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////

PDE - Processing Development Environment


PDE / Dialogs

_ two-tiered dialogs for everything - use big font/little font style throughout
_   http://javagraphics.blogspot.com/2008/06/joptionpane-making-alternative.html
_ option to suppress warning dialogs
_   starting with the one about modifying the sketch name for spaces
_   also the "some features will be disabled" with .java tabs
_   https://github.com/processing/processing/issues/46
_ add "don't warn me about this" for sketch renaming
_   make sure renamed version doesn't exist already
_ prompt user before nuking applet or application folders
_   along with a "don't ask me later"
_ use macosx dialogs for all of the editor stuff
_   see about doing the same on windows, linux?
_   the others seem to respond ok to the lucida grande since they use defaults
_   vista style dialogs
_     http://msdn.microsoft.com/en-us/library/bb328626.aspx
_   confirmation dialogs (save and don't save.. who'd a thunk it)
_     http://msdn.microsoft.com/en-us/library/aa511273.aspx
_     http://i.msdn.microsoft.com/Aa511273.Confirmations03(en-us,MSDN.10).png
_   scrollable stack trace
_     http://www.javalobby.org/java/forums/t19012.html


PDE / Compiler & Preprocessor

medium (bugs/features)
_ incorporate new preproc
_   https://github.com/fjenett/processing-preprocessor-antlr4
_   https://github.com/processing/processing/issues/3055
_ update grammar for ANTLR
_   https://github.com/processing/processing/issues/3054
_ modify build to insert these after antlr run:
_   @SuppressWarnings({"unused", "cast"})
_   or get the updated ANTLR, which likely would support it
_ omitting a semicolon shows the error on the line after it
_ npe if library is removed before compile
_   always check library folders to make sure they're still valid
_ with additional .pde files, don't allow static mode in front tab
_   e.g. no setup()/draw() block
_ don't allow "for (blah; blah; blah) ;"
_   or if (blah blah blah) ;
_   it's never useful. students can use { } if they want an empty block

low (features)
_ copy running code from /tmp/buildXXxxx on crash of p5
_   should probably make a way to save/recover code
_   make the buildXxxx folders relate to time/date?
_ link out to further documentation (e.g. AIOOBE, NPE)

low (common errors around reserved names/class naming)
_ Saving sketch with the same name as a class or primitive breaks sketch
_   https://github.com/processing/processing/issues/196
_ don't allow people to override methods like paint() 
_   make them final? just improve the error messages?
_   https://github.com/processing/processing/issues/1058
_ Processing chokes if a sketch defines a class with same name as the sketch
_   https://github.com/processing/processing/issues/196
_ don't allow goofy case versions of reserved words
_   keypressed should maybe throw an error
_   https://github.com/processing/processing/issues/44
_ "unexpected token" on anonymous instance of parameterized Comparator
_   https://github.com/processing/processing/issues/533


PDE / Editor

_ [help] Undo does not move to the correct location in the editor window
_   https://github.com/processing/processing/issues/707
_ clean up /tmp folders used during build
_   https://github.com/processing/processing/issues/1896
_ 'recent' menu doesn't respect examples folder of other p5 versions
_   could write that into the file, that it's an example
_   or write the path as shown in the PDE to the file as simpler
_ 'recent' menu paths can get enormous
_ don't let people into the /tmp folder for sketches
o   don't use tmp folder for sketches? 
_   restrict more things like "show sketch folder"
_   don't allow adding files w/o saving
_   others?
_ when creating a sketch within non-Java mode, should write the settings file
_   so that it re-loads in the proper environment
_ remove sketch.properties when moving back to the default?
_   or can we not do this, because it's used to set the 'next' mode
_ add means to import .zip files from file/url into sketchbook, library, etc.
_   super easy given current code implementation, might help usability
_ active editor not being set null
_   in Base.nextEditorLocation(), changed to "editors.size() == 0" 
_   instead of (activeEditor == null), but that's papering over a problem
_   where the active editor is not being set null
_ renaming RGB (.pde) to Rgb.java says "a file named RGB.pde already exists"
_ improve update check message "a new release (1.0.1) is available"
_   be more descriptive, use a second line in latest.txt
_   maybe just include the full text of the update message there?
_ go through other sketch-opening menus to check for disappearing sketches
_ deal with isManagingFocus() warning in the editor src
_ strange NullPointerException problem prevents launch
_   some kind of NPE in handleOpenInternal and friends
_   appears to be a synchronization problem with the loading
_ blank sketch opened even if another opened by double-click
_   add a 150 ms or more lag before opening the untitled window
_   https://github.com/processing/processing/issues/218
_ editors opening up at the same time on load?
_   either synchronize the open (at a minimum)
_   or wait for mac handlers to register an open event
_   can also cause problems with opening multiple copies of same sketch
_ after fixing name of sketch, ensure sketch of that name does not exist
_ add auto-save to the editor
_   https://github.com/processing/processing/issues/131
_ option to just print all code in project
_   https://github.com/processing/processing/issues/50
_   or option to export all the code as colored html?
_ implement better method of showing curly brace closure
_   https://github.com/processing/processing/issues/94
_ problems with file/print
_   https://github.com/processing/processing/issues/213
_ setModified() getting called on Windows (probably Linux) for key cmds


PDE / Editor Toolbar (Buttons)

_ run button issues (unconfirmed)
_   does it unhighlight after compile or runtime errors?
_   also when using draw() instead of loop()
_     applet needs to notify runner that it has terminated
_   check 'finished' via objectreference?
_ EditorToolbar has two TODO items for open menu handling


PDE / Export

_ if the lib folder goes missing from export, give an error
_   also any .jar files that are missing, give an error
_   showing more debug messages (command line?)
_ when exporting to application (or applet) don't copy .java files from folder
_   (they'll be copied as source files later)
_   make .java files and friends go to correct locations on export (app)
_ warn on export when people call their sketches things like Server
_ warn if someone extends PApplet but mis-names the sketch
_   or don't allow it to be exported
_   add bug reference to the faq once added to the db
X   or at least add a note about this to the faq
_ show error when no main() is included but class extends PApplet
_   error can happen or be checked 
_ exporting application copies .java files 
_   .java files are copied to the root folder as well as the source folder


PDE / Find & Replace


PDE / Examples

_ keep examples.zip in a zip file? (5000 files @ 30 MB instead of 15 MB zip)
_   mark examples as untitled (rather than read-only)
_   maybe even pull these directly from the zip file?
_ load examples from zip files
_   https://github.com/processing/processing/issues/182
_ don't make examples read-only
_   just do them from psk filess
_ disallow add file to sketch, export, export application
_   pretty much anything inside the sketch?
_   but don't do this with untitled, cuz it kinda stinks
_   this is too weird--just put examples into individual zip files
_   mark example files as untitled
_   though will that require the sketch to be saved before export?
_   https://github.com/processing/processing/issues/2459
_ examples window sketches should load in proper environment
_ write build.xml file to automatically update the examples
_ see how library installation goes, then possibly do same w/ examples



PDE / Libraries

_ Add a means to specify packages to import in library.properties
_   https://github.com/processing/processing/issues/2134
_ need to deal with classpath conflicts
_   avoid garbage that people have installed on their machines
_   antlr.jar in the classpath will cause trouble.. 
_     http://processing.org/discourse/yabb_beta/YaBB.cgi?board=SoftwareBugs;action=display;num=1138652326
_   jogl jar files, or jogl install will cause trouble
_     /System/Library/Java/Extensions or /Library/Java/Extensions
_     the /System one contains qtjava
_     the /Library one is empty (by default), maybe skip it?
_ classpath conflicts also problem with PDE itself
_   catch antlr conflicts, and put up an error message
_   http://dev.processing.org/bugs/show_bug.cgi?id=1225 (no Google issue)
_ when a conflicting library (bad link w/ core) is found, need to report it
_   altho prolly only when it's actually different (md5hash it?)
_   this seems to be causing a lot of trouble with recent releases
_   (opengl changes and whatnot)
_ jar files like the bad aiexport plugin will cause serious problems
_   need to ignore processing.core classes showing up in other jar files
_   tougher than it looks, because it all depends on what java wants to use
_     i.e. even if not specified, the stuff will be in the classpath
_   need to make classpath code be less promiscuous
_   the order of adding libraries to classpath should be opposite
_     the important local libraries should be first in cp, user contrib later
_   https://github.com/processing/processing/issues/95
_ changing the sketchbook folder will make libraries show up
_   but it won't reload the library mapping table
_ make sure there aren't library jar files named the same thing 
_   i.e. if one library has db.jar, then that's gonna kill another db.jar
_   when the files are copied over
_ versioning info 
_   http://java.sun.com/j2se/1.5.0/docs/guide/extensions/versioning.html
_ java.ext.dirs for /System/Library/Java/Extensions
_   http://java.sun.com/j2se/1.5.0/docs/guide/extensions/spec.html
_   can set java.ext.dirs to something else 
_   on osx, just ignore anything in /Library/Java/Extensions (but not others)?
_ native lib stuff, use native.txt in lib folder, then:
_   String osName = System.getProperty("os.name");
_   String osArch = System.getProperty("os.arch");
_   http://stackoverflow.com/questions/1611357/how-to-make-a-jar-file-that-include-dll-files
_ need better platform designation setup for libs
_ library installation should use the sketchbook folder, not the p5 folder
_   actually enforce this, give users a warning about other libs
_ set DYLD_LIBRARY_PATH to include .dylib and other framework stuff
_   java.library.path will only handle .jnilib stuff
_ need better error messages for broken api / library troubles
_   e.g. ocd is broken in 0125 because of method signature changes
_ could have library developers update compatability note
_   so they would need to test library and say "compatible with 0110"
_   before it would automatically update or show as an update
_ need an "install library" option to deal with urls..


PDE / Manager

_ several TODO items listed in ContributionPanel
_ something to set min/max versions that are supported by a library
_ ability to cancel a download/install
_ we shouldn't use .properties extension for modes, et al
_   because a .properties file is iso8859-1
_ make note that .properties file *must* be utf-8
_   if not it'll make things gross (andre sier flob library)
_ why wasn't Library moved to LibraryContribution?
_   or that LibraryContribution needs to be a wrapper around it?
_ send info on 'check for updates' so we know about libs/modes/etc?
_   how to disclose to users?
_   only send for items that are part of the public list 
_     otherwise we're sending private libraries/installs
_     although this won't pick up old libraries not on the new system
_ classpath conflicts.. 
_   getPackageList.. from Library... maybe others?
_   really need to make sure that a weird core.jar isn't being imported
_   coffeescript was doing this and breaking the pde
_ contrib library examples are not read-only
_   another point for doing .zip files to prevent overwriting
_ add BookContribution?
_ will offer to open the contrib manager even though it's already open
_   though this was looking at libraries, and there may have been modes
_   is there an "all" view for the mgr that shows libs, modes, etc?
_ update button only showing up when item is selected feels awkward
_ "update all" would be useful
_   "Update 4 items" as a button name
_ new libraries not picked up when changing sketchbook location
_ make sure contrib manager can run w/o a network connection
_   or if a bad document comes through, it can recover
_ gracefully recover from proxy problems
_   https://github.com/processing/processing/issues/1601
_ alternating blue/white backgrounds aren't updated after changing filter
_   just need to call a repaint() after a filter change?
_ check with Casey about coloring for error messages
_ test on Windows and Linux
_ font size for "Downloading" on progress bar is too large
_   but changing the size breaks the vertical centering
_ highlight color seems to be incorrect?
_ after installing, the item in the manager list doesn't change color
_ scrolls to bottom of window after updating the list
_   https://github.com/processing/processing/issues/3248
_   https://github.com/processing/processing/pull/3328
_ wheel mouse is super jumpy 
_   something about unit increment in ContributionListPanel
_ arrow keys up/down move scroll bar, not selection
_ fonts/etc need to be set in one place where they can be edited
_   move styling to separate constants that are more accessible


PDE / Preferences

_ Editor.applyFrame() may not have a valid 'editor' object to work with
_   if windows closed, and prefs altered, NPE thrown
_   make sure editor isn't trying to apply prefs when no editor is open
_   (on mac os x, due to the change for no windows open)
_ clear up prefs so that multiple editors don't trash each other's prefs
_   when are prefs saved? could instead save whenever changes are made
_   and then if the file gets modified, it'll put up an error message
_   also, this may be part of why other sketches aren't reloading properly
_ simple prefs implementation to set key/value pairs using a JTable
_ prefs window doesn't swap ok/cancel properly for mac vs. windows/linux
_   don't bother having a "cancel" for the prefs window
_ make prefs dialog modal?


PDE / Runner 

_ if RuntimeException thrown, needs to check if it's a wrapped exception
_   for instance, if there's a crash inside makeGraphics()
_   this inside the handling that comes from the JVM, which makes it tricky
_ draw mode apps do not shut off the run button when finished
_   need to talk to VM and read when 'finished' var is set
_ does closing the window call stop()?
_   need to make sure hitting stop button and closing window explicitly call
_   set finished to true, then join() the animation thread
_ need to set dock icon title on osx


PDE / Sketch & Sketchbook

_ Large number of files in sketchbook folder can cause slow startup 
_   and/or errors with launch4j
_   https://github.com/processing/processing/issues/1190
_ error that sketch is read-only can't be canceled
_   hitting cancel (or ESC?) still brings up the save dialog
_ ArticulatePrint-070103a.pde from ArticulatePrint-070103a loads ok
_   but when opening the sketch, it leaves out the file
_   because there's a dash in the name
_   and instead only loads StemCell.pde
_ show progress dialog during export and save
_ hitting ESC on "create this, move file, continue" opened anyway
_ some type of sketch archive format for posting examples (.psk?)
_   would be nice to open a sketch directly from a zip file
_   https://github.com/processing/processing/issues/73
_   maybe just open from a zip file, since psk doesn't help anything
_   also have a means of importing sketches



////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////



TOOLS / General

_ create default tools folder (just like libraries)
_ for tools, maybe don't run on event thread? (makes the gui hang)
_   but instead, things that affect gui need to be called w/ invokeLater?


TOOLS / Ideas 

_ eclipse import/export
_   simple mechanism to export to eclipse
_     don't worry about subversion stuff, just export with libraries
_   something clever to import back from eclipse
_   could keep the .svn files in with the libs and all
_   then when exporting for eclipse, people can update as necessary
_   -> dan et al say better to do fixed versions and have it work simply
_ import sketch from url (takes a zip from archive sketch)
_ archive sketch direct to bug report
_ shared code
_   Integrator / FloatThing / CameraStuff -- Update
_   to pull code from a local folder
_   update will update classes from shared in the current folder


TOOLS / Auto Format

_ Switch block cases not indented
_   https://github.com/processing/processing/issues/1042
_ do a better job of maintaining cursor 
_ only auto-format a particular section of code
_   set the 'tabs' var based on how many spaces on previous line
_   http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1087227217



////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////


LIBRARIES / General

_ need to unpack InvocationTargetException in xxxxxxEvent calls
_   http://processing.org/discourse/yabb_beta/YaBB.cgi?board=VideoCamera;action=display;num=1116850328#3


LIBRARIES / Net

_ modernize Client/Server code to use synchronized lists
_   do we let people use the public vars in Server and Client?
_   are they documented?



////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////


DIST

How the environment gets packed up, downloaded, and installed.


DIST / General 

_ line ending issues
_   doesn't really help on Windows since we use Cygwin
_     but it would be helpful for people not using it (ant/other LF issues)
_   https://help.github.com/articles/dealing-with-line-endings
_   http://stackoverflow.com/questions/170961/whats-the-best-crlf-handling-strategy-with-git
_ add means to move changes from desktop to Android (and vice-versa)
_ add bootclasspath for 1.6
_   would require --install for command line on OS X
_   and unpacking the JVM earlier in the build process
_   not sure if it's worth the addl complexity
_ add additional caveats about incompletion to javadoc
_ drag and drop
_   including the number of items added to sketch would be especially nice
_ implement automatic update
_   https://github.com/processing/processing/issues/100
_ need .pde document icons
_ need .psk file icon
_ need exported application icons
_ need more comprehensive list of 'known bugs'
_ need more comprehensive list of 'known suggestions'
_ write notes about running p5 on another platforms 
_   this was some feedback from running on bsd:
_     /usr/local/jdk1.3.1/bin/java -cp lib:lib/build:lib/pde.jar:lib/kjc.jar:lib/oro.jar:java/lib/ext/comm.jar PdeBase 
_   need to use the 1.3 vm, and get a fake platform name
_   otherwise, goes looking for lib/pde_.properties or something
_ about box 
_   bring up information about gpl, lgpl, and ibmpl
_   jedit syntax is under mit license
_     http://www.opensource.org/licenses/mit-license.php
_ different name for 'lib' folder because of libraries folder?
_   avoid some confusion for when describing the libraries folder to users
_ add proper copyright and license information for all included projects
_   https://github.com/processing/processing/issues/224
_ write up guidelines for modes
_   i.e. don't mess with Sketch menu, put it in the mode menu
_ p5 assets need to be licensed differently from the source


DIST / Windows

_ PDE and sketches are 2x smaller on high-res Windows 8 machines
_   https://github.com/processing/processing/issues/2411
_ processing-java output as UTF-8 makes Windows unhappy
_   https://github.com/processing/processing/issues/1633
_ does launching p5 from inside the .zip folder cause it to quit immediately?
_   how can we provide an error message here?
_ how to handle double-clicked files on windows?
_   big deal for psk and others
_   this may already work with SingleInstance stuff


DIST / Mac OS X

_ Update QuickLook plugin for Processing 3
_   https://github.com/processing/processing/issues/3261
_ Find a long-term solution for OS X bundler to address signing/symlink issues
_   https://github.com/processing/processing/issues/2967
_ appbundler improvements
_   don't re-copy JRE into work folder if already exists
_   implement a splash screen
_ more OS X-specific hackery for improved appearance
_   https://developer.apple.com/library/mac/technotes/tn2007/tn2196.html
_ possible better option for doing retina?
_   g.getFontRenderContext().getTransform().equals(AffineTransform.getScaleInstance(2.0, 2.0))
_ LWJGL forum discussion 
_   http://lwjgl.org/forum/index.php/topic,4711.225.html
_ change cmd line for OS X to use symlink? 
_   otherwise updates are going to require reinstall..
_   or that it's gonna need to parse and say "update command line?" 
_ look into LCD rendering problems w/ Java (see if Lion still a problem)
_   fonts were showing up with very different fatness
_ cut/copy/paste while saving a sketch on goes to the editor, not save dialog
_   https://github.com/processing/processing/issues/1035
_   problem with focus traversal and native windows on OS X
_   using JFileChooser fixes the problem (but is ugly)
_ we're breaking some mac human interface guidelines
_   should be using a menu factory to create menubar for all sub-windows
_   http://developer.apple.com/technotes/tn/tn2042.html
_   and the general warning dialogs are just ass ugly
_   (i.e. we really need those replacements for JOptionPane)
_ put stdout/stderr into ~/Library/Logs
_   and have a .log extension so it can be browsed properly
_   need to make sure that it's ok to write to logs dir..
_      probably being removed from future OS X versions
_ Exiting a sketch with Command-Q or File > Quit doesn't call stop() on OS X
_   https://github.com/processing/processing/issues/186
_ investigate the sandboxing situation on OS X
_   http://developer.apple.com/library/mac/#documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW1
most sandbox violations are triggered by attempts to read/write to the
filesystem without user intervention (eg. without using an open/save
dialog)  and/or from places outside the container (eg.
~/Library/Containers/yourapp/...).
A violation is also triggered by trying to execute an external process
from Java (ex. using Runtime.exec()).
If you look at the list of entitlements your application can have on
the Apple site(*) you can think whether your application is performing
an operation that would require enabling a specific entitlement, like
connecting to a network, printing, interacting with a usb or bluetooth
device, etc..
I encountered this problem too, I forgot to add it to my guide....
If you sign all the files in the bundle it won't work as codesign
doesn't follow the symlinks.
First sign your bundle:
codesign --verbose -f -s "$SIGNATURE_APP" \
  --entitlements $ENTITLEMENTS \
  $YOUR_APP.app
Then sign all the libraries:
find $YOUR_APP/Contents/ -type f \
  \( -name "*.jar" -or -name "*.dylib"\) \
  -exec codesign --verbose -f -s "$SIGNATURE_APP" \
  --entitlements $ENTITLEMENTS {} \;
Finally you can create the package:
productbuild --component YOUR_APP.app /Applications \
  --sign "$SIGNATURE_INST" YOUR_APP.pkg
You can test if the package work with this command:
sudo installer -store -pkg $YOUR_APP.pkg -target /
You can also verify all libraries have been signed
find YOUR_APP/Contents/ -type f \
   \( -name "*.jar" -or -name "*.dylib"\) \
  -exec codesign --verbose --verify {} \;


DIST / Linux

_ Processing is named processing-app-Base in Gnome 3
_   https://github.com/processing/processing/issues/2534
_ not being able to make a link to the processing app
_   argh.. more path and shell issues..



////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////



FUTURE 

Notes for some indefinite later release...

_ make reference build process part of dist
_   https://github.com/processing/processing-docs/issues/85
_   separate ant target, but only require them for dist
_   as separate targets, folks can build explicitly if they'd like
_   processing-docs/java_generate/ReferenceGenerator/processingrefBuild.sh
_   remove reference.zip from main repo
_ using svg images for res-indep icons/gui
_   http://stackoverflow.com/questions/2495501/swing-batik-create-an-imageicon-from-an-svg-file
_ nurbs or other architecture stuff
_ force indentation - implement an option for beginners especially
_ indents and loops
_   or make the area light up gray as it's being worked on
_ get rid of static mode? only setup/draw mode? or create project that way?
_   pro: simplify internal code, fixes some of the worst errors
_   con: people love it, most of the books use it heavily
_ add === for String.equals()
_   might be problematic since it might be opposite the javascript meaning
_   jer: it's a decent time to start talking abt references/vars
_ Blank sketch opened even if opening an existing sketch by double-clicking
_   https://github.com/processing/processing/issues/218
_ changing number of screens between run causes things to show up off-screen
_   so when running, check to make sure that things are out of the area
_ improve the speed of file copying
_   use FileChannels, see FileInputStream.getChannel(), 
_   and use transferFrom() or transferTo().)
_   could also use FileUtils in Apache's common io
_   http://commons.apache.org/io/api-release/index.html
_ go through libraries and clean things up 
protected void finalize() throws Throwable {
  try {
    close();        
  } catch (Exception e) {
    // do something               
  } finally {        
    super.finalize();
    // more code can be written here as per need of application        
  }
}
