0101 arduino

Fix Linux make.sh, etc. scripts
Test on Linux.

AVR

Ethernet library:
 - integrate DHCP support
 - client.connect() returns 0 when connection is successful?  http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238295170
 - call Server.begin() from Ethernet.begin() instead of in user's sketch?
 - add method for receiving notification of new client connections to a server
 - add method for receiving notification of data written to a client
 - add method for receiving notification of client disconnections
Incorporate mikalhart's new SoftwareSerial library.
Consider making abs() not a macro.  See: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1234908504
Improve shiftOut() performance: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1216659239/0
Add String library.
Add Encoder library.
Bootloader:
 - disable watch dog timer
 - fix eeprom writing: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1202157667/15
Support pin change interrupts.
Switch pwm output on pins 5 and 6 to phase-correct mode, if possible.
Add parameter to shiftOut() for specifying a number of bits.
Add parameter to Serial.print[ln](x, BIN) for specifying number of bits.
Support PROGMEM strings in Serial.print(): http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1227919972
Should Serial.print(b) send the ASCII digits of the byte?
Add weak attribute to signal handlers: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1203798214
Floating point support in the map() function.
Fix delayMicroseconds(0).
Add sleep function(s).
Add SPI library.
Add OneWire library.
Add pulseOut(), etc. functions from Wiring.
Switch to ServoTimer2 library?  http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1222201226/0#5
Add ContinuousServo class that inherits from Servo?
LiquidCrystal library:
 - support going to the next line with println().
Supporting EEMEM directive by changing compiler command line: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1202157667
Include Arduino as AVR-ISP sketch in hardware/firmwares.
Move type definitions into WConstants.h.
Change core and libraries to use Arduino types (e.g. byte, boolean).

COMPUTER

Clear serial monitor button when the serial monitor opens.
Disable checking for updates.
Test the upload.using parameter to upload with a programmer.
Add keyboard shortcut for opening the serial monitor.
Escape characters with copy as html.
Support libraries in the SKETCH/code folder?
Test bootloader burning w/ an AVRISP.
Enable verbose output if shift (or alt?) is held down when pressing run or upload.
Add support for third-party boards in the user's sketchbook folder.
Add support for third-party cores in the user's sketchbook folder.
Re-enable (and fix) the Commander.
Move selection of Linux look and feel from Base.java to arduino.sh script.
Check RAM usage of sketches: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1224729260/0#0
Improve preprocessing of sketches:
 - Better determine which header files are included (not commented out).
 - Remember the original locations of function prototypes to highlight the correct line on error.
Multiple sketch windows.
Avoid library conflicts by only linking in the library whose name matches that of the #included header file.
Easier library discovery and installation ("Add library..." menu item).
Easier board installation ("Add board..." menu item)
Comprehensive board management:
 - Enabled and disabled boards.
 - Dialog for enabling, disabling, adding, deleting, and possibly editing boards.
 - Board descriptions (e.g. explaining differences between boards).
Allow for libraries in <SKETCHBOOK>/libraries.
Allow for boards in <SKETCHBOOK>/boards.
Divide boards.txt into multiple text files.
Allow for core in <SKETCHBOOK>/cores.
Clean up Library and LibraryManager.
Compile libraries dynamically (with compilation of sketch and core files).
Library builds should respect build.verbose.
Detect dependencies between libraries.
Byte-based serial monitor.
Line termination options in the serial monitor.
Clear character should clear serial monitor.
Incorporate serial-net proxy.
Changing font size should change serial monitor font size.
Deal with shorter screens (e.g. ASUS EEPC).
Investigate method for auto-detecting serial port on Windows (javax.usb?)
 - http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1225226642
Guess serial port on the Mac and Linux.
Automatic detection of baud rate for serial monitor (based on the call to Serial.begin() in the current sketch).
Improve, generally, the upload experience (e.g. faster program start after upload, keep-alive messages to bootloader from IDE, shorter bootloader timeout if possible, progress bar)
Allow uploading of .hex files.
Allow for arbitrary compilation command line arguments.
Find in reference should give same message for missing page as for missing page association.
Test find in reference on libraries.
Change background color while using external editor: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1229567785

Compiler.java
 - Eliminate the need to pass a Target into the compiler by having the Compiler determine the current target (by checking the preferences directly)?
 - Delete the unneeded static functions (for classpath translation, etc.) from the bottom of the file. 

Sketch.java
 - add system-wide include path in preprocess()?
 - should find libraries in the code/ sub-folder of the sketch folder
 - do sketches really need to get built in the applet/ sub-folder when uploading?

PreProcessor.java
 - split write() into writeHeader() and write() as in Processing?
 - add getExtraImports() function instead of having Sketch grab them directly.

Base.java
 - add keywords from libraries to the syntax coloring

Editor.java
 - allow the Board and Serial port to differ across editor windows.  This will require creating a separate instance of the menu for each window, and passing the selections into the sketch when compiling or uploading.
 - send the current board and serial port selections to the sketch (which will forward them to the compiler) when compiling or uploading (this should eliminate the need for the Target class, since the compiler will be able to find the target path and its source files itself)
 - remove references to the Runner and runtime

DEVELOPMENT

Revise the icon.
Don't recompile the Processing core if the work/ directory exists.
RXTX version patched to not hang with bluetooth serial ports: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1237179908
Add licenses for included open source libraries: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1234595391
Make run.bat not open a command line window: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1223883872
Update version of the FTDI drivers (Windows).
Remove AVR ISP and giveio drivers (Windows).
Include the executable installer for the FTDI drivers (Windows).
Revise fetch.sh to look for version specific pages (names suffixed with, e.g., "-0007")
Move to ant for build process.

DOCUMENTATION / SITE CONFIGURATION

Multi-language plugin.
Work on opening up website to public editing.
Create form for submitting workshops.
Create form for submitting projects.

DOCUMENTATION / META

Create community section of site.
List of examples we'd like to have.
Style guide for examples, references, and foundations.
Add a Nordic board to the forum.
Add a German board to the forum.

DOCUMENTATION / NAVIGATION

Create About section.
Remove Board page.
Move Environment into the Reference section (which should be renamed Programming).

DOCUMENTATION / FOUNDATIONS

Better documentation of the Arduino BT.
Tutorial about serial communication.

DOCUMENTATION / REFERENCE

Remove parameters from the function links on the reference page.
Document Matrix and Sprite libraries on the Arduino site.
Document Wire.endTransmission() return values: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1228240199

DOCUMENTATION / EXAMPLES

Photos:
 - Loop
 - Analog Input (potentiometer and LDR on analog input 0)
Consistency:
 - ledpin vs. ledPin
 - value vs. val
Add a Brightness example where an analog input controls the analog output.
Graph example should use an intermediate variable.
Button example says pin 7 but uses pin 2.
Split Loop example in two (one that does loops, another that does arrays).
Add LiquidCrystal library examples.
Add Ethernet library examples.
Add Wire library examples.
Add examples using specific hardware (simple analog sensors, optocouplers, etc.)
Examples should demonstrate use of functions.
Add I2C EEPROM example using Wire library.
Update pictures to use Arduino Diecimila.
Create diagrams and schematics for the examples.

DOCUMENTATION / GETTING STARTED

Arduino feature list (in Getting Started > Introduction).
Main "getting started" link should automatically load page for the user's operating system.
Consider deleting many of the pictures in the howto's as they just make it harder to see the instructions without adding much (e.g. the pictures of files in folders).
Tell people not to put the board on a Powerbook.
People don't know what a jumper is.
Add picture of the RX/TX LEDs flashing.
Show a picture of the LED flashing.

DOCUMENTATION / TROUBLESHOOTING

Add explanation of how to work around auto-reset.

DOCUMENTATION / HACKING

Burning bootloader without an AVRISP: http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html
Documentation for moving from Arduino to custom PCBs.
Write advanced library tutorial.
