User and Group APIs

Hi devs,


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 For reference the User API page is at


I’ve had a discussion yesterday with Manuel and Simon and we agreed that we prefer option 4 for the Group API (from

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:


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?