Talk:Editor campaigns/Persistence and domain layer notes

Domain design
Really thorough docs, nice work! My feedback is mostly minor stuff:

Interfaces

 * The web API should return ID references to campaigns and users, but don't you think the PHP API should return objects?
 * "UrlId" is difficult to grok because it looks parallel to the other IDs. Maybe call that "UrlKey" or something?
 * I think we have to spec out the welcome page thing a bit more--it just occured to me that campaigns are probably used across wikis. For the same reason, the API should probably return a relative-protocol URL or something.  Interwiki references are still unstable across wikis.
 * How will you use the "exists-" functions? Seems like that is inviting race conditions.
 * I forget the use case for removeParticipant. Same with getTimeLeft.
 * I still think the "fields" argument to getters is overkill, and we should just return all columns.
 * Did you have any thoughts about namespacing campaigns so the same short key can be reused in different contexts? I fear a situation where people have to start using crazy, long strings in search of a unique name.

Design

 * DataMapper or ActiveRecord are probably overkill here, at least until we try to integrate with a semantic store, so you might want to explicitly state that you're trying to illustrate general improvements to the MW persistence layer.

Adamw (talk) 00:01, 29 March 2014 (UTC)