Closed michaelsevilla closed 8 years ago
Before mentioning how your framework is implemented, you should first mention that you define (blah blah) our principles/concepts of programmability (if possible). So the reader knows you are describing a new set of ideas, then create a framework to implement and demonstrate those ideas in Ceph.
Proposal for refining the definition: "storage system that exposes existing basic internal abstractions and services so that users can specialize them to define new domain-specific functionality".
Should we add something like the following? "A programmable system guarantees these interfaces provide exactly the same functionality as when used internally (i.e. exposing them has no implications on their correctness)". What I'm trying to say is that exposing them doesn't change the code paths that they take.
There's an issue of how basic are the abstractions that get exposed. In principle, if consensus is correctly exposed, one could implement versioning and capabilities on top of it. So it seems that we have first-, second-, third-order type of abstractions. Should we make the distinction?
Other things that can be exposed:
"Expose to enable re-use" -- maybe throw in "interface" -- Peter
Addressed in 575c91015a489369afb161e4d0ae7b633b5f06cd.
This should be as "ceph independent" as possible.