[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