EPrints4
E N D
Presentation Transcript
EPrints4 Sébastien François, EPrints Lead Developer EPrints Developer Powwow, ULCC
Main objectives • Separation of the code and the UI elements • Possibility to deploy other types of repositories • Disentangle the spaghetti code into lasagna • Generalisation & Simplification • Code normalisation (“session” etc.) • Easier for dev’s (hence increasing their life expectancy) • Modern UI for interactive workflows
Code generalisation • Code generalisation: datasets, controllers, acl, storage, crud • Datasets: a number of new properties have been added: • Flow: states and transitions (“eprint_status”) • Revision/History • Security contexts: “owner”, “editor”, “co-author”, etc • Lastmod/datestamp • ACL/Security • Read-only
Code generalisation (2) • Controller Plug-ins: CRUD, Storage, UI, Static Pages • ACL: security-context (“owner”..) & action based (“view”, “edit”…) • Storage: arbitrary files can be stored against any data-obj, separate storage paths, isolated thumbnails • Authentication: generalised, hidden behind “user-sessions” (Similar to logintickets), trigger-based
Code simplification & improvements • Removed XHTML, any render method in Repository, DataObj, MetaField -> MVC-ish approach • Memcached for single data-obj (could be extended to List) • InnoDB (default on MySQL 5.5+): transactions and foreign keys definition (cascade) • Removed many data entry-points in favour of CRUD: REST, Toolbox, CGI’s (show CRUD on wiki) • (review EPrints4_Status on wiki)
Future Directions for UI Elements • Current limitations of EPrints: Prototype, XHTML, citations, workflows, !MVC • Good opportunity to modernise the UI: Bootstrap, jQuery(-ui) • What has been tested, what to keep/discard: • Server-side Mustache templating • Strict MVC frameworks: AngularJS, EmberJS • jQuery, jQueryUI > EPrints JS API