"Bleah, Layers are too complicated!" (was: Updated State of the Specialization)

Brian Goetz brian.goetz at oracle.com
Sun Dec 21 16:57:03 UTC 2014

I can understand why everyone is inclined to jump all over layers as 
being "too complicated"; we have our own concerns there too, which I 
think we've been honest about.  But, you're all getting ahead of 
yourselves; it feels like you're having a collective panic attack of 
"OMG, they're going to kill Java with complexity, so I'd better freak 

So everyone ... relax.

Right now, we're still *figuring out the problems* (which includes 
separating the real problems from the perceived ones).  The one thing I 
know is that the final solution will almost certainly look very 
different.  (Everyone says they want us to work more openly, rather than 
emerging from our cave with the final answer -- but you have to do your 
part by showing some awareness that what we're sharing is work-in-progress.)

We've only thought about these issues for maybe a thousand hours so far; 
that's not enough to get a good answer to hard problems like this.  So 
*of course* the solutions we've got so far are half-baked.  How could 
they be anything else?

Until we fully understand the problems, we are going to focus on the 
theoretical characteristics of the possible solution, how well it solves 
the problem, and how the solutions fit in with how the language actually 
works (i.e., the type system, overload selection, method dispatch, etc). 
  The fact that it looms too large in the user model or the syntax is 
weird or has a lot of surface for what feels like corner cases can't be 
our top priority now; focusing on the surface aspects distracts from 
figuring out whether we're even on the right track or not.

Now, it's common that the solutions one ends up with after the first or 
second or third round is still more complicated than you'd like, so then 
begins the agonizing slow process of peeling back perceived requirements 
in order to simplify how the solutions fit into the user perception of 
the language.  It seems that people want to "help" by jumping right to 
that end stage by saying "this problem isn't important to solve".  But 
unexamined opinions of which problems can be punted on is not really 
that helpful to us.

The thoughts we're sharing are very much work in progress.  Please 
engage accordingly; at this stage, constructive help looks like 
generating better understanding of the problems.

More information about the valhalla-dev mailing list