[e-lang] E research topics

Mark S. Miller markm at cs.jhu.edu
Sat Apr 14 19:55:29 CDT 2007


Stephan van Staden wrote:
> I'm planning to do a PhD over the following three years. I've read 
> MarkM's PhD dissertation and am interested in research topics involving 
> E. My primary interests are
> 
>     * Programming languages
>     * Compilers, interpreters & virtual machines
>     * Distributed systems
>     * Networks & security
>     * Operating systems
>     * Mathematical stuff
> 
> Of course, my interests are not limited to these areas (e.g. my MSc 
> dissertation involved data mining). If you have any future research 
> requests or ideas involving E, please state them.


Hi Stephan, glad to hear about your interests!

First, I'd like to say that all the suggestions so far sound good. You could 
also do a great service to the e-lang community by gathering the research 
topics you find interesting, whether for you or someone else to pursue, and 
adding pages to our wiki explaining each. This strikes me as an ideal use for 
a wiki: a possibly interesting idea might gather a diversity of elaborations 
until it becomes a compelling research topic.

In any case, here are some pointers to additional possible research topics you 
might consider. In each case, the work we've done so far, IMO, barely 
scratches the surface. I believe each needs to be elaborated into a 
substantial investigation. I will postpone further elaborations until we get 
some reactions.


* Auditing <http://www.erights.org/elang/kernel/auditors/>. Note that the 
E-on-CL auditing system is quite different from the one documented here, with 
interesting advantages and disadvantages. The current E-on-Java is slowly 
working towards yet another take on an auditing architecture, but it's much 
less far along. Joe-E special cases some built-in auditors, but we've talked 
about generalizing it to an openly extensible static auditing framework.

During the Waterken security review, we found that around 25% of the classes 
in the Waterken system were Powerless. In other words, they had passed the 
Joe-E static checker assuring that they were authority-free. As a result, we 
were able to ignore these regarding many security-relevant questions during 
the review. This demonstrates that the auditing idea has a lot of value.


* Safe Serialization Under Mutual Suspicion 
<http://erights.org/data/serial/jhu-paper/>. AFAIK, the issues involved in 
serializing a graph of mutually suspicious objects is otherwise unexplored. At 
these pages, I think we raise more questions than we answer. The need for a 
good serialization framework meeting these goals seems to come up over and 
over again in different contexts. The notion (due to Jonathan Rees) of 
serialization as un-evaluations seems like a very rich starting point.

In a recent conversation with Alan Karp and Marc Stiegler, we arrived at a new 
perspective on un-evaluation. At one simple extreme, we have the literal 
realism of orthogonal persistence, where objects simply get to keep whatever 
rights they acquired. We assume that a held permission can only be acquired 
"legitimately", so the holding of a permission is an adequate demonstration of 
a the right to continue holding that permission.

At a hypothetical simple opposite extreme approximated by SPKI, the entire 
delegation chain by which a permission was actually acquired is recorded, and 
is presented afresh each time the permission is exercised, effectively as a 
chain of title (sharings, not transfers), enabling a fresh check each time 
that the permission was acquired legitimately. When these two give extremes 
always give the same answer, the difference is uninteresting. However, if the 
"rules" change, the first "historyless" system can only grandfather-in all 
permissions acquired so far by the old rules. OTOH, the SPKI-like system can 
determine whether to accept as legitimate, under the new rules, the means by 
which the permissions were acquired under the old. (Note: in general, and 
especially in the human world, I generally prefer historyless rights systems 
over retro-active re-evaluations. But both have a place.)

Un-evaluation is a complex expressive mid-point between these two. In order 
for the object to retain its rights across a serialization boundary, i.e., to 
reconstitute an object like itself with permissions like those it currently 
holds, it must be able to construct from its current state a rationalization 
(the uncall), i.e., a simplified story about how it could have gotten these 
permissions. In the world in which this expression is evaluated, it may or may 
not succeed at re-obtaining permissions like those it held.


* Quasi-literals <http://erights.org/elang/grammar/quasi-overview.html>. See 
especially the end of that page for some possible directions.


* Trying to adapt E-like concurrency control models for making use of 
multi-core systems. I think the re-introduction of the Joule multi-channel 
into E will help us to introduce data parallelism into E.


* David Hopwood is working towards an exception-handling-as-backtracking 
proposal for E.


* I hope that the "programming as plan coordination" perspective is itself 
thought provoking. I do think most bugs can be understood in terms of plan 
interference due to assumption mismatch. It would be wonderful to find a way 
to investigate these topics.


* Part IV of my thesis on Emergent Robustness suggests a framework -- the 
fractal access matrix as attack surface -- with which one could make 
quantifiable arguments about relative robustness. A paper recently mentioned 
on LtU, The Structure and Value of Modularity in Software Design 
<http://lambda-the-ultimate.org/node/2190> suggests an economic framework, 
using options valuation, for making quantifiable arguments about relative 
modularity of different architectures. Do these frameworks have a similar 
underlying structure? Is there a unified way of looking at both issues? How 
might one measure or empirically investigate any of this?


* A soft/gradual/hybrid type system for E, or for an E-like language.


* Agorics and Smart Contracting, of course. These topics remain wide open. The 
global economy is held together by a fabric of contracts, all of which 
currently are interpreted only by humans. I think, in the long run, Smart 
Contracting is what will be seen as really important about our work. The 
access control, concurrency control, protocols, and object language 
foundations we're currently spending so much time on will only be remembered 
as a stepping stone for getting there.


-- 
Text by me above is hereby placed in the public domain

     Cheers,
     --MarkM


More information about the e-lang mailing list