
On Aug 12, 2015, at 10:28 AM, Stephen J. Turnbull wrote:
The big problem is that as Simon points out we no longer have a truly centralized database. Each component now keeps user information related to itself, but it's not communicated across the components very well.
This is true, and it bites us via the user database. This recently came up in a conversation about the authenticating proxy[1]. There has been discussion about a centralized user database, and I think eventually we'll need something like that, whether it's part of the core or a separate component.
ISTM the core exports pretty good information, but it has no ability to grant privileges in the other components. The other components are in a "pull" relationship with core, so core isn't really able to get information from them. We need to think about providing better communication among the components.
Agreed. Within the core, we have a set of events that get triggered when certain things happen, like a user gets subscribed to a mailing list, etc. What we could do is set up a pubsub that gets notified when these events happen, so Postorius or any other component can be notified when the user database gets updated.
I wonder if we might not have been better off using an object-oriented database like MongoDB for the core. That would allow adding components from external sources as the external sources require.
Perhaps, but for now that ship has sailed. It's certainly not a good idea for non-core components to be mucking about in the SQL database. Let's think about the APIs we'd need to build to provide better communication between components.
Cheers, -Barry