This outlines some of the changes to be made over time. No particular order though some depend on others.
Api changes
Change the api to use response objects throughout. No exceptions. Allows for a better networked api.
No db interactions in public (read-only) client.
The public client is read-only and could do all its interactions with elasticsearch. A small amount of work is needed to add more information to ES to enable this. Most interactions are already with ES. The back end needs refactoring into a db + ES version and ES only. Benefits are a much more lightweight client with faster responses.
Limit interactions with db for updates.
Do all interactions with ES - connect to and update db only as needed - use timestamps to ensure db correctness. Benefits are shorter db interactions only at point we update. Less complexity in web clients - no need to have conversations stretching across multiple requests.
Move business logic out of webapps into core
Move as much as possible out of the current webapps module into the core APi implementation - this potentially allows a more RESTful style of client - possibly using the new jmap style interface being developed.
Categories
Use a larger category scheme as the basis for categories. Use SKOS based representation so that they are RDF friendly. Will allow for sub-categorization by event submitters.
Locations
Allow for use of external location sources such as geonames. Will allow good locations on external events.
Searching improvements
Searches of other entities such as locations. Search for events near a geo-location (requires locations to have geo)
Deployment
Finish off the deployment process - it's THAT close (is there an emoticon for 2 fingers very close together?) to allowing deployers to just replace the ears from prebuilt ears on the site. No builds required - server can detect an update is available.
Networked client api
Subset of svci but can be used for web client interactions.
Groups
Directory interface to directly interact with grouper for user and admin groups. Allow consumer only approach for external management of groups. Use extra ldap attributes to allow admin groups to be maintained in ldap.
General work needed
- Upgrade ES to latest - changes the query structure
- Upgrade all libraries to latest
- Preprocess the xsl to build the deployable language specific versions.