[Opensim-dev] fyi: Some ExternalChecks method changes and a question about public interface policy
Justin Clark-Casey
jjustincc at googlemail.com
Thu Nov 13 21:37:15 UTC 2008
For everybody's information, in the last few commits I renamed the existing ExternalChecks.CanCreateInventory,
CanDeleteInventory, etc. to CanCreateObjectInvnetory, CanDeleteObjectInventory etc.
My justification was that they were accepting an object id argument, so I assumed that they were intended for objects
only rather than user inventories. They also didn't appear to actually be being used anywhere in the code (though I
have just added a call to the create one).
I then added the following set of external hooks specifically for user inventory
bool ExternalChecksCanCreateAvatarInventory(int invType, UUID userID)
bool ExternalChecksCanCopyAvatarInventory(UUID itemID, UUID userID)
bool ExternalChecksCanCopyAvatarInventory(UUID itemID, UUID userID)
bool ExternalChecksCanDeleteAvatarInventory(UUID itemID, UUID userID)
However, I appreciate that there are some external modules that implement the previous CanCreateInventory, etc.
permission checks, even though they aren't yet used in the OpenSim code. In particular, there appear to have been some
interpretations of CanCreateInventory, etc. as applying to both objects and users. In the user case, the objectID
argument passed in would have been null (it would have been helpful to have some code documentation on this assumption,
but I digress :)
But there is a larger issue here. Namely, to what extent should our public interfaces be fixed at this stage? There is
an argument that we should avoid changing these as much as possible. If they do have to be changed, then we should at
least make an announcement before any changes.
The permissions module is particularly sensitive, since a change in semantics may impact people's content.
My personal view is that at this stage in our code evolution (until we reach 1.0 or very near to it), all interfaces are
fair game for changes that aren't completely gratuitous. Third party modules simply have to adapt. I feel that even
having to pre-announce changes is a significant brake on development.
In addition, it's always going to be the responsibility of OpenSim users to make sure they are happy with the code
before they put it into production. At the top of every file we disclaim any liability for its actions. A good set of
unit tests would help build assurance as to the stability of the permission module's functionality.
I'd like to know what views there are on this matter of public interfaces, particularly from other core developers. If
we do want to restrict public changes then I thank that we should have a well-understood written process.
Apologies for the long post.
Regards,
--
justincc
Justin Clark-Casey
http://justincc.wordpress.com
More information about the Opensim-dev
mailing list