Hi devs,
Context
Not long ago we started introducing a User API. We now need a Group API, and we need it fast, before the Unstable annotations on the User API expire, since introducing the Group API can have impact on the User API.
I’ve started a design page for the Group API at https://design.xwiki.org/xwiki/bin/view/Proposal/GroupAPI. For reference the User API page is at https://design.xwiki.org/xwiki/bin/view/Proposal/UserAPI#HIterationNov2020
Proposal
I’ve had a discussion yesterday with Manuel and Simon and we agreed that we prefer option 4 for the Group API (from https://design.xwiki.org/xwiki/bin/view/Proposal/GroupAPI).
Basically it means having 3 APIs: one for Users, one for Groups and one for Actors (common between Users and Groups). The 3 APIs will be same (with different class name but essentially similar).
In term of modules and packaging it would mean:
- xwiki-platform-actor
- xwiki-platform-actor-generic
- xwiki-platform-actor-generic-*
- xwiki-platform-actor-user
- xwiki-platform-actor-user-*
- xwiki-platform-actor-generic
- xwiki-platform-actor-group
- xwiki-platform-actor-group-*
In term of java packages it would mean:
- org.xwiki.actor.*
- org.xwiki.actor.user.*
- org.xwiki.actor.group.*
This means:
- moving to legacy all non-Unstable classes from the current xwiki-platform-user modules.
- adding back, with an Unstable annotation, the classes that don’t have a new api yet (so that they can be used). It also means making sure we finish writing the new APIs before this Unstable expires
WDYT? Any better idea?
Thanks