-
Notifications
You must be signed in to change notification settings - Fork 0
RFC: Split OCP into Consumable and Implementable to clarify intentions #15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
👍 for it basically document's lived practice |
I love the idea.
I am against having deprecated in there, it should be its own attribute. And removal, I do not understand what it’s for. If the API is removed the attribute is not there anymore? But apart from this bikeshedding, please go for it! |
I cannot find a specific PR or issue, but we tried to include this info before like this in some places: |
Totally right.
My idea would be to add this when it's deprecated so that the attribute could be used by apps as well (steaming from nextcloud/server#52852 (comment)) to have a clear/dedicated timeline for the removal, if the app would follow another deprecation period than the 3y of OCP. |
|
Uh oh!
There was an error while loading. Please reload this page.
What?
OCP\Notification\IApp
OCP\Notification\INotifier
OCP\Notification\IManager
OCP\Notification\INotification
(should only be created withOCP\Notification\IManager::createNotification()
)From my POV it would be good to distingiush them in a way, as they come with different implications.
OCP\Notification\IManager
is only meant to be consumsed, so we can add new methods and it could be considered non breaking as the only implementation is meant to be the one inOC\Notification\Manager
. We can add return types and nothing explodesOCP\Notification\IApp
it's the opposite, basically extending it will break all existing implementations. Similar toOCP\Dashboard\IWidget
back then, new functionality needs to be brought in with a second interfaceIAPIWidgetV2
, etc.Something along the lines:
OCP\AppFramework\Consumable(since: MajorMinorServer, ?removal: MajorMinorServer)
OCP\AppFramework\Implementable(since: MajorMinorServer, ?removal: MajorMinorServer)
Why?
Optional Part2:
To help with the last "Why" we could also allow apps to mark themselves as an exception to such a restriction, which means we "allow it when we are aware" and API can be extended when either adjusting the exception or clarifying a way with the maintainer of the exception how it can be "non-breaking" in the update experience.
Sample:
The text was updated successfully, but these errors were encountered: