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
