I think deleting WProgram.h was a bad idea

I personally didn't like the decision to completely remove WProgram.h. It's easy to keep a WProgram.h which merely includes Arduino.h. I've done this and much more in my support for Teensy (see below). Ideally, a warning would be printed if WProgram.h is used, but that's not so easy since gcc is run with "-w", so #warning does not work in Arduino.

Clearly keeping a WProgram.h was considered:

http://code.google.com/p/arduino/issues/detail?id=609

I think a bigger problem is that the 4 beta tests and 2 release candidates were never widely available. Unless you follow the developer mail list, which is often has a high ratio of chatter about coding philosophy to actual people working on real code, you probably never would have known about these 6 releases over the last several months. Their purpose was to give people time to adapt to 1.0's changes. But not showing them on the main download page kept them in relative obscurity.

Then again, I've exchanged messages with several library authors over the last year. The general sentiment was to not worry about porting to 1.0 until it was official. So perhaps no amount of pre-release access would have helped?

In Teensyduino, I added as much backwards compatibility as possible. Both WProgram.h and Arduino.h work in both 0023 and 1.0. print(n, BYTE), Wire's original functions, and many other little things all work perfectly in 1.0. At least they do on Teensy, where I can publish an alternate core. I have no control over Arduino. Even the patches I contribute only seem to get used when they're small bug fixes.

Another very unfortunate issue (which was reported to me only yesterday... I working on a fix now) involves the naming of Udp in Arduino 1.0. If you try to make a core library that is compatible with both new and old sketches and libraries (maybe I'm the only person crazy enough to attempt that?), the fact that these headers with the same names as 0023's ethernet library are now part of the core library is a major headache. There does not seem to be any solution using only the compiler's preprocessor, because of the way the include paths are built. My next update to the Teensyduino installer will include a check for these when installing on 0022 or 0023.

If there's interest from the Arduino Team to provide backwards compatibility with 0023 in the next release, I will certainly contribute patches. I've already solved almost all the compatibility issues that prevent code designed for 0023 from working on 1.0. I've also managed to back-port nearly all 1.0 features to 0023. It's really not that difficult... if you care about preserving compatibility.

Of course, there are a couple 0023->1.0 compatibility issues are impossible by design, like the intentionally different function of Serial.flush() and Serial.print() using unsigned char printing as base 10 number instead of a single byte.