On Fri, Oct 8, 2010 at 9:17 PM, Dirk Pranke <[email protected]> wrote:

> On Fri, Oct 8, 2010 at 11:28 AM, John Zabroski <[email protected]>
> wrote:
> > JavaScript also doesn't support true delegation, as in the Actors Model
> of
> > computation.
> >
> > Also, Sencha Ext Designer is an abomination.  It is a fundamental
> > misunderstanding of the Web and how to glue together chunks of text via
> > "hyperlinks".  It is the same story for any number of technologies that
> > claim to "fix" the Web, including GWT... they are all not quite up to
> par,
> > at least by my standards.
> >
> > The fundamental problem with the Web is the Browser.  This is the
> monsterous
> > bug.
> >
> > The fundamental problem with Sencha Ext is that the quality of the code
> > isn't that great (many JavaScript programmers compound the flaws of the
> > Browser by not understanding how to effectively program against the
> Browser
> > model), and it also misunderstands distributed computing.  It encourages
> > writing applications as if they were still single-tier IBM computers from
> > the 1970s/80s costing thousands of dollars.
> >
> > Why are we stuck with such poor architecture?
> >
>
> Apologies if you have posted this before, but have you talked anywhere
> in more detail about what the "monsterous bug" is (specifically),


I have not discussed this much on the FONC list.  My initial opinions were
formed from watching Alan Kay's 1997 OOPSLA speech, The Computer Revolution
Hasn't Happened Yet (available on Google Video [1]).  One of Alan Kay's key
criticisms from that talk was that "You don't need a Browser."  I've
mentioned this quote and its surrounding context on the FONC list in the
past.  The only comment I've made on this list in the past, related to this
topic, is that the View Source feature in the modern Browser is an
abomination and completely non-object-oriented.  View Source is a property
of the network, not the document.  The document is just exposing a
representation.  If you want to build a debugger, then it needs to be based
on the network, not tied to some Browser that has to know how to interpret
its formats.  What we have right now with View Source is not a true Source.
It's some barf the Browser gives you because you don't know any better to
demand something better, richer.  Sure, it's possible if View Source is a
property of the network that a subnet can always refuse your question.
That's to be expected.  When that happens, you can fallback to the kludgy
View Source you have today.

99% of the people in this world to this point have been happy with it,
because they just haven't thought about what something better should do.
All they care about is if they can steal somebody else's site design and
JavaScript image rollover effect, because editing and stealing live code is
even easier than googling and finding a site with these "Goodies". And the
site they would've googled probably just used the same approach of seeing
some cool effect and using View Source.  The only difference is the sites
about DHTML design decorated the rip with an article explaining how to use
it and common pitfalls the author encountered in trying to steal it.

For some context, to understand Alan's criticisms, you have to know Alan's
research and his research groups.  For example, in the talk I linked above,
Alan makes an overt reference to Tim Berners-Lee's complete
non-understanding of how to build complex systems (Alan didn't call out Tim
directly, but he said the Web is what happens when physicists play with
computers).  Why did Alan say such harsh things?  Because he can back it
up.  Some of his work at Apple on the Vivarium project was focused on
something much better than Tim's "Browser".  Tim won because people didn't
understand the difference and didn't really care for it (Worse Is Better).
To be fair, Tim had the right idea with a Uri.  Roy Fielding's Ph.D. thesis
explains this (and hopefully if you're working on Chromium you've read that
important thesis, since it is probably as widely read as Claude Shannon's on
communication).  And both Alan and Tim understood languages needed good
resource structure.  See Tim's talk at the first-ever JavaOne in 1997 [2]
and Tim's criticism of Java (where he admits never having seen the language,
or used it, just stating what he thinks the most important thing about a VM
is [3]) But that's all Tim got right at first.  Tim got distracted by his
Semantic Web vision.  Sometimes having too huge a vision prevents you from
working on important small problems.  Compare Tim's quote in [3] to Alan's
comments about Java in [1] where Alan talks about meta-systems and
portability.


> or
> how programming for the web misunderstands distributed computing?
>

I've written on my blog a few criticisms, such as a somewhat incoherent
critique of what some developers called "SOFEA" architecture. For an
introduction to SOFEA, read [4].  My critique, which again was just me
rambling about its weaknesses and not meant for widespread consumption, can
be found at [5].  I also got into a lengthy debate on LtU with Google
employees about the design of GWT code splitting [6]. Eventually, one of the
architects of GWT got involved.  I was not satisfied by their answer.  A lot
of my other comments aren't public and focused in private e-mails with
authors of these frameworks.  From experience, most people don't want to
discuss this because they're happy with Good Enough and scared of testing
something better.  They are always male, probably 40'ish, probably have a
wife and two kids.  We're on two different planets, so I understand
different priorities.  But I also saw more researchy people (now selling
their ML-based web framework) admit to changing the Wikipedia definition of
"Web Application" in a presentation they gave.  Seriously.  It makes sense I
guess: If your software can't do something, just change the definition of
that something so that You Win.  And most people don't realize Wikipedia is
really one of the best ways to spread propaganda, so it works.  My friend
and I once edited the Wikipedia page on Buttoxes and put a hilarious fake
quote in there under the section on synonyms for Buttox... and nobody
noticed until I pointed it out two years later in an IRC chat it was still
there, and some anonymous channel surfer deleted the fake quote.

It is somewhat well-known that popular JavaScript libraries like jQuery are
and have been implemented poorly.  For whatever reason these problems get
fixed slowly -- I guess Alan is right, it's hard to leapfrog yourself when
you have customers (especially as many as jQuery).

Every browser vendor also knows that these extremely popular libraries can
effectively influence how every browser implements a feature.  So bad
programming increases complexity and implementation cost.  There was a paper
at OOPSLA a few years ago -- Design Fragments -- that basically showed that
bad code examples get copied if they're available, and end up in production
systems.  Especially if the code comes from an authoritative source like Sun
Microsystems Learn Java tutorials.  For example, back in 2005 there was a
bug in Chapter 11 of the Hibernate manual that showed incorrect HQL
examples.  So there were DOZENS of bug reports complaining that Hibernate
was "broken", even though the query didn't make any sense from the
perspective of a query language that operates on entities!  They simply
couldn't understand why HQL was designed in such a way that they couldn't
express the query they wanted.

"Programming for the web" doesn't "program for the web".  That's the point.
The Browser really has only one sane way to program to its interface, and
the amount of code that does so effectively is miniscule.  Programming for
the web means everything is dynamically distributed, and may connect to
non-Web stuff like corporate Intranets (or vice versa).  If it's
distributed, then you're affected by the Fallacies of Distributed
Computing.  How many tools try to work around those fallacies by ignoring
them?  Basically all.  Every generation forgets the same lessons.  Very few
programmers can learn a general principle and apply it everywhere.  Maybe
they use Erlang correctly on the server-side, but then if they have to write
a GUI then can't apply the same principles in JavaScript.  They simply
can't.  They get caught up in notation.  Unless somebody teaches them that
the best way to do things is the same in all cases, that you can build
things from very simple ideas and not have to find new techniques in new
settings, then they will never figure it out.  They get caught mesmerizing
what pop culture is doing, and follow that instead.



[1] http://video.google.com/videoplay?docid=-2950949730059754521#
[2]
http://web.archive.org/web/20010212031105/http://java.sun.com/javaone/javaone96/TimBerners-Lee.html
[3] Tim Berners-Lee quote from 1997 JavaOne (note how everything Tim assumed
about Java was wrong, it's hilarious; I wish I could've attended that talk
to see the dumbfounded expression on the faces of the audience):

> I'm also assuming that Java classes are first class objects. There's a
> little worrying note I have that there's a namespace out there for Java
> classes and it's not an URL space, but it's a different namespace. Whereas
> in the Web, we have this rule that if you have a namespace or an address
> space, if it's a good one, then you think of a prefix for it, and you put
> the prefix and the colon on "my new namespace:-MNSP:" and then you can put
> whatever you like after it. And so we like to assume that everything about
> the system, the Java classes, objects that define everything about them,
> where you can get implementations and everything you can find out there, are
> listed like everything else

[4] http://dailyjs.com/2009/11/10/sofea-soui/
[5] http://z-bo.tumblr.com/post/246854981/what-is-sofea-what-is-soui
[6] http://lambda-the-ultimate.org/node/3707
_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc

Reply via email to