@Ryan - I have heard this claim a number of times -- that only sloppy plugins and themes will break in an upgrade -- but I strongly disagree with it. The simple fact of the matter is that the WordPress development team cannot test every use of the API or other customizations to WordPress. It is up to plugin authors and theme developers and technical users to test that and make fixes; it gets wearisome having to re-test all these things on many live sites every three or four months.

Here are just a few examples that I don't think are the result of sloppy coding:

* WordPress provides $wpdb for executing queries. Sometimes the data needed is not available in supported API call, so the database must be queried directly. Many category-related plugins broke from 2.2 to 2.3. I don't think plugin authors are sloppy if they use $wpdb to retrieve data that is not available any other way.

* I wrote some CSS in a theme that styled one of the default widgets. After the upgrade from 2.7 to 2.8 with the overhaul of widgets, the HTML for the widget had changed enough that my CSS no longer styled the widget at all.

* I wrote a custom plugin that generated multiple shortcodes together, one after the other: [shortcode][shortcode][shortcode]. In WordPress 2.7, this worked fine; after my upgrade to WordPress 2.8, only every other shortcode was processed. Trying to fix it, I added spaces in between the shortcodes ... and then everything worked fine. I don't think this was sloppy on my part; there's nowhere in any shortcode or plugin documentation that I could find that clearly states that shortcodes have to be separated by a space.

Every time I upgrade a site, I find issues like these. I don't think that they can all be blamed on sloppy coding, but -- even if they could -- I think it would be a mistake simply to dismiss them. These issues keep people from upgrading, regardless of whose to blame for them.