Let me start by saying that since I started using IDEA in version 2, I've thought it's the greatest desktop Java app ever written, and up til now, the most innovative and amazing IDE ever written. (And I've used a lot of IDEs over the past 20 years.)
Certainly 4.0 has a lot of great features in it. However, I have to say that the transition to 4.0 is uncharacteristically rocky, and I'm afraid this may really hurt IDEA's future.
Transitioning to v 3.0 was completely painless. Moving my projects to 4.0, however is taking MANY HOURS (see below). My fear? the poor experience of moving to 4.0 is going to drive a lot of users to try Eclipse, which I assume is the main competition. Purely as a business decision, the time & aggravation spent moving to 4.0 makes it worth my while to go see if Eclipse has improved since I gave up on it a year or so ago as not being "ready."
I actually feel bad for Intellij, because they've really earned their stripes, and then the Eclipse steamroller shows up and basically copies all the innovative IDEA features. If there's justice in the world, someone should buy Intellij for a billion dollars and make them rich, before Eclipse takes over the world.
Back to the 4.0 transition. First, various project settings simply didn't get carried over (I've seen other posts saying the same thing.) Things like code styles, color schemes, etc. This is huge, since there are so many settings to keep track of, the last thing I want to do is go through all the settings pages and try to remember what my "normal" settings are, and which ones were carried over and which ones weren't. This isn't major, but it sure is aggravating.
Secondly, the new "module" concept I guess is fine for more complex project configurations, but what percentage of cases use it? We already lay out our own modules, one project-per-ANT file, with no "embedded" modules. The poor documentation makes it very confusing to figure out what this feature really does. Content Roots? Source Path designations? The biggest barrier to using any IDE is figuring out what is needed to configure a project, and IDEA just got a lot more complicated. Worse, it can be dangerous - as I found out the hard way, if you deselect the "Source" folder designation in the very confusingly designed Path / Content Root dialog, everything seems to work the same way except major menu items are disabled (like "Reformat Code") with no way of knowing why! Ok, perhaps this just proves my stupidity, but it took me a long time to figure out why all these features were disabled. My stupidity didn't get in the way when moving to 3.0.
More serious is the loss of "local" mode for CVS users, with no transition plan. Maybe there are only a few of us, so Intellij could afford to just drop us. There are a lot of "gotchas" setting up CVSNT, and certainly a lot of time involved that I wasn't expecting to have to spend, since all of a sudden you're dealing with (Windows) networks, permissions, etc. Worse, I see that I wasn't the only one that ran into the problem that IDEA would connect properly to the CVSNT server ("test connection" would work, and "check out", etc.), but when you'd do more significant commands, you'd get "invalid root" errors, with no explanation. Most of my time has been spent resolving the CVS issue.
I should add that moving to CVSNT also exposed some real errors with 3.0's local-mode CVS support. Many directories that I had previously moved/deleted (and committed) have all re-appeared, so I'm having to go "fix" all my projects. Ugh.
Tonight I ran into yet another silly problem. I tried to run my JUnit tests to make sure I had everything right, and bang, an exception: "can't find class junit/textui/ResultPrinter". Huh? No other explanation? Where the hell did that class come from? How could they release a product that breaks everyone's tests? (Or at least, everyone who has been using a standard Junit library.) Now I have to use a custom IDEA Junit library? Whose brilliant idea was it to put a custom IDEA class in the standard "junit/textui" package? Sheesh! At least call it "junit/intellij" or something so I know where this is coming from.
Having to include a custom IDEA library in my project classpath just sucks. It screws up my ANT files (or makes my ANT files different from my IDE configuration), and doesn't let me upgrade to use standard Junit releases (with the corresponding API documentation, etc.). Just how did Intellij expect me to figure this out, other than searching this forum? Do they really think it's acceptable to be so intrusive in our configuration?
I'm sorry to sound like a whiner, and you're probably thinking I'm just an idiot, but please remember how much I've loved IDEA in the past. These problems just seem so uncharacteristic for Intellij. I'm really regretful that they've released a product with such a horrible initial experience, not just because they're wasting many valuable hours of mine, but I think it's really going to hurt them economically. IDEA's loss is Eclipse's gain.
Please take this in the constructive spirit in which it is intended...