DECISION for v1:
- Go ahead with option 1: leave it as it is (meaning we use a global DB), which means we will need to:
- Always redirect the users to the wiki where the event registration was created, for any action the organizer can perform:
- Special:EventDetails
- Send message to participants
- Remove participants
- Search participants
- Special:EditEventRegistration
- Special:EventDetails
- Since on Special::MyEvents we need to list all the events of the user, we still need to save the Global user ID
- Always redirect the users to the wiki where the event registration was created, for any action the organizer can perform:
- In parallel, we will get more information from DBAs to prove our decision & logic around it is sound
The database of events can be configured to be central (i.e., shared by multiple wikis), and we implemented it this way because we thought it would bring some advantages to users (like a single event calendar). Another reason was (I believe) the fact that we were also considering implementing it outside MediaWiki.
As I already explained to @ifried, I'd like to reconsider this decision. While it's definitely true that a central DB has some advantages, it also means that we're often hit by the many limitations stemming from a lack of proper support for "global user accounts". Here are some examples of things that would be much easier to do with a local database, and that caused us problems in the past and in the present:
- More complicated schema: we need to store the wiki ID of event pages, as well as the full title of the event page (including the formatted namespace) - T307358 and all the related tasks like T311582 and T307108, as well as the related core that you can find in the "mentions" section of T307358;
- Cannot easily implement talk page and email messaging features - T318378
- Filtering usernames by participants is impossible to do in pure SQL - no task for it
- Probably more that I can't think of right now...
Even in contexts where having a central DB would be useful, like the event calendar, there would be some things to figure out; for instance, you'd need a way to filter events that are relevant to you.
All in all, at this point I'm no longer convinced that a central DB is a good idea, and would like to discuss/brainstorm this with the team. I've been thinking about this for a while and firmly believe that we should talk about this before it's too late. Speaking for myself, I have the feeling that we've already entered the territory of sunk cost fallacy, and want to GTFO of it ASAP.
Just to be clear, I'm not saying we shouldn't leave it central. Again, I think it has its pros. But I do want to be convinced that it's still a good idea. I want to be convinced that we can make it work, and that things will be better in the future. I want to be convinced that we're not just leaving it central because of the sunk cost fallacy.
Brainstorming on meta: https://meta.wikimedia.org/wiki/Campaigns/Foundation_Product_Team/Central_vs_local_database