User and Group APIs

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-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