I agree, what Tom said in the other thread.
In order to warrant a move to 4.0.0 we need a game plan… a set of features that are major enough.
I am not even sure, if things like Maven migration or dropping Java 5/6 support requires a major version update. I like what is described in http://semver.org/ and according to this, the major version is for API changes only.
The minor version (e.g. 3.10) would indicate new features and the patch version (e.g. 3.9.3) would be for bug fixes only.
I know it wasn’t done like this in the past, but it would make sense. If we would do it right, the next planned release would be 3.10 and 3.9.3 would only be for critical bug fixes, which prevents people from using 3.9.2 properly.
Personally I’d like to see a Maven migration and a Java 6 drop asap. I don’t really care if we call it 4.0 or 3.10.
But releasing 4.0.0 at some time in the future and say “we moved to Maven, fixed 10 (minor) bugs and added 5 new features” doesn’t make much sense.
Dropping Java 6 in 3.10 could mean we can change some API, which would then eventually warrant a 4.0.
E.g. Guus said in http://community.igniterealtime.org/thread/50809 we could replace the XML parsing (while he also wants to drop Java 6 for 4.0 only, so it’s kind of against what I just said).
For a 4.0 release we could also think about some more API changes. There are probably many things which could be refactored, rewritten and cleaned up.