Thank you, Matt. It is reasonable to question whether making
capabilities implicit is a good idea or not.
It's a usability problem we conjectured, but the idea is not yet
supported by any empirical evidence --- Jo is an experiment to test
one solution.
The hypothesis that passing capabilities in a program becomes a
usability problem originates from the observation that passing
parameters in an insecure language already poses a problem: that is
why there are many dependency injection frameworks out there. We
conjecture that to make secure programming practical, the usability
problem should be addressed in some ways.
The solution reminds of dynamic scoping in Lisp-family languages, that
is not an accident: the following paper by Lewis(2000) is an attempt
to make dynamic scoping safe in a type system
Implicit parameters: dynamic scoping with static types
https://dl.acm.org/doi/10.1145/325694.325708
Contextual capabilities are similar to Lewis(2000) but different in
that the parameters are not tags, but global names.
Java Scoped values also come from the lisp background:
https://openjdk.org/jeps/506
Dynamic scoping has a bad reputation, and commonly regarded as a bad
programming pattern. Will type-safe dynamic scoping change that? We
still need evidence for that. But nevertheless, I agree that the extra
power should be used sparingly.
>
> --
> You received this message because you are subscribed to a topic in the Google Groups "cap-talk" group.
> To unsubscribe from this topic, visit
https://groups.google.com/d/topic/cap-talk/z6jaSrDq_GQ/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
cap-talk+u...@googlegroups.com.
> To view this discussion visit
https://groups.google.com/d/msgid/cap-talk/CACTLOFo%3DTFnsukEt8caEAD26nz2-rov4GWpBPrzv6g9FfEt9fg%40mail.gmail.com.