Stablilizing the API

Hi all,

after some busy weeks I can now concentrate on using jME again.



Notice first: this post is not meant as some sort of bashing, just as a request. Maybe my english is a bit clumsy, so I better mention this first.



Something I have noticed during these last months is that often the API has changed. getXYZState has been renamed to createXYZState, the InputAction has a different performAction method, plus several other points I currently cannot recall. This is quite normal, as jME is a subject to ongoing work.



But most of the changes mean that work based on the current jME version is broken afterwards, so you need to fix it after a cvs update. Which leads to (at least) three possible views on this:

a) spend an amount of time fixing the broken parts after updating

b) do not update jME, as this may require additional work; only do so on released versions, which means you may miss important fixes or improvements

c) do not use jME currently, as it changes too often



I know that if I choose to use a cvs based version of a lib whose release nr is below 1.0, this means that I have to live with the consequences of that. I totally agree with the need for fixes and enhancements. In fact I asked for several of them myself.



The question I do have is: in order to minimize the service work after updating the cvs, would it be possible to stabilize the API in some way? In case of the renaming of methods eg. the old ones could have been deprecated for a while before removing.



Additionally, does someone of the developers know areas/features etc. in the current jME lib, which are likely to change massively in the future and therefore should not be relied on too much currently? I am sure the widget api is about to be either changed or removed. Are there other points like that?

Well as you said, this is an ongoing product, and by no means a full release. So, things are going to change that break peoples code. If we want to make the best product we can we have to do that. In turn, LWJGL is in the same boat, each release of LWJGL we gnash our teeth at them, but go through and update jME to work with it, and after awhile see the benefits of those changes (in some rare cases, request things be reverted back). Every change to the public interface will break things, and we don’t particularly like doing it, but we have reasons.



the getXYZ, createXYZ changes were deprecated for a full release before we removed the get versions. We will continue to do that. The old method name will be deprecated for a single release.



I know that somethings have created some headache, input in particular. Renanse has been away for about 2 weeks and missed the whole thing. So, after coming back his Dirt game was broken. We sat down together and worked through it and got it working again in an hour or so. We’d be happy to help anyone else work through the same thing.



The items that are on the shakiest ground is definately widget and gui. Still not sure what we are going to do about that, Cep, Renanse and I are going to have to have a long discussion. But changes will be made (I feel you’ll be safer working with GUI). Other than that, nothing else is planned to be majorly rewritten at the moment. And we do try to keep the external interface changes to a minimum.