1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
## Schema / Alignment / Scope
- switch a bunch more primary keys to UUID: revs, editor ids, edit numbers
- abstracts! as files? separate table? format (latex, html, etc)?
- work_type, release_type, release_status
- multiple URLs
- other identifiers (just in extra?)
- make "raw" fields in release_ref/release_contrib JSON?
- wikidata IDs are first-class identifiers
name ref: https://www.w3.org/International/questions/qa-personal-names
## High-Level Priorities
- bulk loading of releases, files, containers, creators
- manual editing of containers and releases (web interface)
- accurate auto-matching matching of containers (eg, via ISSN)
- full database dump and reload (import/export)
## Performance
x have release creation auto-create works if one isn't specified
- write pure-rust "benchmark" scripts that hit, eg, lookups and batch
endpoints. run these with auto_explain on, then look in logs on dev machine
- batch inserts automerge: create editgroup and changelog, mark all edits as
accepted, all in a single transaction
## Other
- kong or oauth2_proxy for auth, rate-limit, etc
- "authn" microservice: https://keratin.tech/
- PUT for mid-edit revisions
- 'parent rev' for revisions (vs. container parent)
- "submit" status for editgroups?
api:
- all files for a given release
review
- what does openlibrary API look like?
- add a 'live' (or 'immutable') flag to revision tables
CSL:
- https://citationstyles.org/
- https://github.com/citation-style-language/documentation/blob/master/primer.txt
- https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html
- https://github.com/citation-style-language/schema/blob/master/csl-types.rnc
- perhaps a "create from CSL" endpoint?
|