← Back to team overview

launchpad-dev team mailing list archive

Re: Removing attributes and web service backwards compatibility

 

On Sat, Jun 4, 2011 at 8:16 AM, Brad Crittenden
<brad.crittenden@xxxxxxxxxxxxx> wrote:
> Hi,
>
> I recently worked on bug 186660, which called for the removal of the wiki_names attribute from Person.  In doing so, I realized the attribute was exported to the web service and completely removing it from the interface and database would break our existing contract for beta and 1.0 versions of the API.
>
> At first Gary and I discussed changing the get method for the Person attribute to return an empty results for the wiki_names collection.  This approach is insufficient as the attribute has been writable too and any scripts attempting to patch it would error.
>
> It would be nice to mark the attribute as deprecated in devel, allowing for removal when beta and 1.0 EOL, but there is currently no lazr-restful declaration analogous to 'operation_removed_in_version' that works with attributes.
>
> For now I have deployed a branch that simply removes references to wiki names for Person from the web UI but leaves the database alone and continues to export the attributes.
>
> So my question is: what is our policy for API backwards compatibility for exported attributes we wish to remove?  Has this been addressed in the past?

I think if we no longer support using an attribute at all, we should
remove it from the API - the decision to remove it is incompatible by
definition. So we should:
 - think twice before exposing attributes
 - think about users of things before removing them once exposed.

IOW: nuke from orbit.

-Rob


Follow ups

References