Principles for Robustly Interoperable Digital Objects
I have been ruminating on core values in service of stewardship of evolving scientific knowledge.
Specifically, what principles can I lean upon to guide me in the design of robustly interoperable digital objects?
Here is what has jelled so far for me:
rectifies and amplifies formal modeling
facilitates machine action
requires that both bits and semantics are accessible
constrained interpretation promotes interoperability
lower barrier to support diverse and unanticipated use cases
behavior is more likely to be understood and predicted with high confidence
small deviations from intended sequence-of-processes (i.e. task path) does not require large compensating efforts to reach intended outcome.
emphases monotonicity, smooth steering, and suitable granularity of progress.
emphasizes resilience of desired budget over desired schedule rather than minimization of initial budget over initial schedule.
facilitates declarative programming
facilitates flexibility in choices of performance tradeoffs
promotes reuse
facilitates provenance
facilitates revision control
facilitates pub/sub for selective search and retrieval