2012/11/10 Federico "Lox" Lucignano federico@wikia-inc.com:
Concerning versioning, despite I agree that no system is able to keep backwards compatibility forever (as any software solution reaches the end of its' lifecycle sooner or later depending on how manageable it is to keep updating/improving it), how you implement versioning in an API is actually a very important factor for ensuring future backwards compatibility: when an hypothetical /rest/v2/xyz resource would be made available, the previous /rest/v1/xyz would be left intact, where the v2 xyz resource could be a direct descendant of v1 to avoid code duplication and simplify maintenance tasks.
You could also add a "api" URL parameter to the current API that would default to "v1", and possibly accept other values like "v2" for new versions. ("version" parameter is already taken; I think we could live with it.)
No need to change the entire URL format.
-- Matma Rex