Actually a "set release" is a good idea.
For example, developers could say "we'll release in june, and in november" (since Kier does not like releasing on december holidays)
Then, whatever features are ready for that release, are released (meaning fully coded, tested, everything). If something is not ready, it would just move to the next release cycle.
It is a really stable method, developers plan for either the mid-year release or full-year release of a feature. If it is not ready it is delayed not by an unknown time but by a controlled time (6 months).
For admins, it is great because then you can plan your updates, exactly twice a year. You know when to expect an update.
For XF, it is great because they can plan for increased support on those dates, they can plan for a release plan that day.
Someone may say "a feature is ready, just release that", but I fall back to the fact that, is there some feature that someone must absolutely have now and cannot wait for 5 months? On top of that, we don't really know anything at this point anyway.
I think that is an interesting compromise, knowing that the next release is XX, and it will have whatever features the developers would have finished.
Just an idea to think about. Oh, and that is actually used by software companies.