{"action":"created","issue":{"url":"https://api.github.com/repos/owncloud/core/issues/16849","labels_url":"https://api.github.com/repos/owncloud/core/issues/16849/labels{/name}","comments_url":"https://api.github.com/repos/owncloud/core/issues/16849/comments","events_url":"https://api.github.com/repos/owncloud/core/issues/16849/events","html_url":"https://github.com/owncloud/core/issues/16849","id":86683250,"number":16849,"title":"Move legacy / deprecated APIs into a separate app","user":{"login":"PVince81","id":277525,"avatar_url":"https://avatars.githubusercontent.com/u/277525?v=3","gravatar_id":"","url":"https://api.github.com/users/PVince81","html_url":"https://github.com/PVince81","followers_url":"https://api.github.com/users/PVince81/followers","following_url":"https://api.github.com/users/PVince81/following{/other_user}","gists_url":"https://api.github.com/users/PVince81/gists{/gist_id}","starred_url":"https://api.github.com/users/PVince81/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PVince81/subscriptions","organizations_url":"https://api.github.com/users/PVince81/orgs","repos_url":"https://api.github.com/users/PVince81/repos","events_url":"https://api.github.com/users/PVince81/events{/privacy}","received_events_url":"https://api.github.com/users/PVince81/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/owncloud/core/labels/discussion","name":"discussion","color":"fbca04"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-06-09T18:05:39Z","updated_at":"2015-06-09T18:23:41Z","closed_at":null,"body":"Idea:\r\n\r\nInstead of keeping the deprecated classes, Javascript, APIs in core, how about moving them to a separate app called \"compatibility\" or \"legacy\" ?\r\nThe app's purpose would mostly be to keep ownCloud compatible with older apps that were not ported to the new APIs. It has the advantage of not cluttering the main project with older classes.\r\nFor many APIs, it would be a wrapper/adapter that provides classes and endpoints that internally call the new APIs, but still show the proper facade as expected by older apps.\r\n\r\nThis came to mind when talking with @schiesbn about the share dropdown which might be used by some apps, but is likely to get ported/rewritten differently (for the right hand sidebar #16308), so it wouldn't be compatible with older apps. Yet if we still want older apps to work, we'd need to keep \"OC.Share\" in core forever (and have it loaded at all times!). With the idea of a \"legacy\" app, we could move that JS code there.\r\n\r\nFor people who are using older apps, they could be advised to enable the \"legacy\" app to make them work. Or the app could auto-enable as soon as someone is enabling an app with maxversion < currentversion (or something along these lines).\r\n\r\nIf we say we need to support public APIs forever, then at least the old ones would all be gathered in one place while the new ones can be cleanly implemented in core and have less code clutter.\r\n\r\nThe autoloader could also be optimized: eventually we'd like to have all namespaces work properly with PSR-whatever. So we could just do that in core, also with the public API classes. And only the \"legacy\" app would have its own special custom autoloader to support the older non-compatible namespaces for older public APIs.\r\n\r\nThe app could either be hosted in another repo, or simply be in the core repo but under \"apps/legacyapi\" (with its respective tests, if applicable).\r\n\r\nWhat do you think ?\r\n\r\n@oparoz @DeepDiver1975 @LukasReschke @Raydiation @schiesbn @icewind1991 @MorrisJobke @nickvergessen "},"comment":{"url":"https://api.github.com/repos/owncloud/core/issues/comments/110454876","html_url":"https://github.com/owncloud/core/issues/16849#issuecomment-110454876","issue_url":"https://api.github.com/repos/owncloud/core/issues/16849","id":110454876,"user":{"login":"oparoz","id":323220,"avatar_url":"https://avatars.githubusercontent.com/u/323220?v=3","gravatar_id":"","url":"https://api.github.com/users/oparoz","html_url":"https://github.com/oparoz","followers_url":"https://api.github.com/users/oparoz/followers","following_url":"https://api.github.com/users/oparoz/following{/other_user}","gists_url":"https://api.github.com/users/oparoz/gists{/gist_id}","starred_url":"https://api.github.com/users/oparoz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oparoz/subscriptions","organizations_url":"https://api.github.com/users/oparoz/orgs","repos_url":"https://api.github.com/users/oparoz/repos","events_url":"https://api.github.com/users/oparoz/events{/privacy}","received_events_url":"https://api.github.com/users/oparoz/received_events","type":"User","site_admin":false},"created_at":"2015-06-09T18:23:41Z","updated_at":"2015-06-09T18:23:41Z","body":"I think it's a great idea, but I think you would need to keep it enabled at all times at the beginning as I can see core apps still relying on old APIs simply because they're waiting for a large change to take place before being able to move away from those APIs."}}